NDK学习笔记(Add.cpp注释)(一)
// Add.C
// Copyright (c) 2009 The Foundry Visionmongers Ltd. All Rights Reserved. static const char* const HELP = "Adds a constant to a set of channels"; #include "DDImage/PixelIop.h" \\导入像素处理器头文件,该头文件用于对像素进行操作
#include "DDImage/Row.h"
#include "DDImage/Knobs.h" using namespace DD::Image; class Add : public PixelIop
{
float value[4]; \\定义一个包含四个浮点类型变量的列表
public: \\定义公有函数
void in_channels(int input, ChannelSet& mask) const; \\定义一个无返回值无类型的in_channels成员函数,该成员函数类型是const
Add(Node* node) : PixelIop(node) \\该Add类继承PixelIop类
{
value[0] = value[1] = value[2] = value[3] = 0; \\初始化value列表
}
bool pass_transform() const { return true; } \\定义公有成员函数
void pixel_engine(const Row &in, int y, int x, int r, ChannelMask, Row & out); \\调用公有函数,该成员函数来自PixelIop类
virtual void knobs(Knob_Callback); \\定义成员函数,该成员函数继承自PixelIop类
static const Iop::Description d; \\定义一个静态函数d,该函数用于描述Add类的属性
const char* Class() const { return d.name; } \\
const char* node_help() const { return HELP; }
void _validate(bool);
}; void Add::_validate(bool for_real)
{
copy_info();
for (unsigned i = 0; i < 4; i++) {
if (value[i]) {
set_out_channels(Mask_All);
info_.black_outside(false);
return;
}
}
set_out_channels(Mask_None);
} void Add::in_channels(int input, ChannelSet& mask) const
{
// mask is unchanged
} void Add::pixel_engine(const Row& in, int y, int x, int r,
ChannelMask channels, Row& out)
{
foreach (z, channels) {
const float c = value[colourIndex(z)];
const float* inptr = in[z] + x;
const float* END = inptr + (r - x);
float* outptr = out.writable(z) + x;
while (inptr < END)
*outptr++ = *inptr++ + c;
}
} void Add::knobs(Knob_Callback f) \\定义一个无返回值的函数来添加colorknob
{
AColor_knob(f, value, IRange(0, 4), "value"); \\添加一个颜色knob
} #include "DDImage/NukeWrapper.h" static Iop* build(Node* node) { return new NukeWrapper(new Add(node)); } \\把Add类打包成节点
const Iop::Description Add::d("Add", "Color/Math/Add", build); \\添加相关属性
NDK学习笔记(Add.cpp注释)(一)的更多相关文章
- NDK学习笔记(三):DynamicKnobs的机制
最近的NDK开发涉及到了动态input及动态knobs的问题. 开发需求如下:建立一个节点,该节点能获取每一个input上游的inputframerange信息. 具体下来就是:需要Node的inpu ...
- NDK学习笔记(四):OutputContext机制
首先NDK文档中的Op.h头文件中已经有了相关概念的解释,摘录翻译如下: /*! \fn const OutputContext& Op::outputContext() const; The ...
- NDK学习笔记-JNI多线程
前面讲到记录到ffmpeg音视频解码的时候,采用的是在主线程中进行操作,这样是不行的,在学习了POSIX多线程操作以后,就可以实现其在子线程中解码了,也可以实现音视频同步了 简单示例 在native实 ...
- NDK学习笔记-使用现有so动态库
前面将的都是如何使用C/C++文件生成so动态库,那么在使用别人的so动态库的时候应该怎么做呢?这篇文章就是使用一个变声功能的动态库,完成对于以有so动态库的说明. 动态库来源 在互联网中,有着许许多 ...
- NDK学习笔记-增量更新
虽然现在有插件化开发和热修复,但为何还需要增量更新?插件化开发和热修复依赖于宿主程序,增量更新适合更新宿主程序. 差分包生成的前提 差分包的生成依赖于BsDiff开源项目,而BsDiff又依赖于Bzi ...
- NDK学习笔记-NDK开发流程
本文主要是说明一下在eclipse下如何对NDK进行配置 配置NDK 虽然现在基本上都使用Android Studio进行Android开发,但一些项目在eclipse中仍有运用,这里讲一讲eclip ...
- NDK学习笔记-C语言
本文简要回顾了C语言的一些注意事项和理解细节,不再赘述C语言的所有语法 头文件 头文件作为引入文件,在编译的时候,加载到源代码,参与编译 在VS2013中可以看到,当引入头文件时候,只能看到函数的声明 ...
- Python爬虫初学者学习笔记(带注释)
一,安装编程工具并进入编程界面 首先去https://www.continuum.io/downloads/网站下载Anaconda工具并安装;打开cmd,输入jupyter notebook并回车( ...
- NDK学习笔记(五)Reader机制
针对每一种后缀名Nuke都提供了对应的模块.为了决定用哪个版本的reader或writer模块,Nuke会先解析文件后缀名再以此为依据调用相关模块. 以JPG为例: 该文件格式有两种后缀名:.jpg和 ...
随机推荐
- 2017-2018-2 20165228 实验四《Android程序设计》实验报告
一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:苏祚堃 学号:20165228 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 3:25 实验序号:实验四 ...
- 2017-2018-2 20165228 实验三《敏捷开发与XP实践》实验报告
2017-2018-2 20165228 实验三<敏捷开发与XP实践>实验报告 相关知识点 (一)敏捷开发与XP 通过 XP准则来表达: 沟通 :XP认为项目成员之间的沟通是项目成功的关键 ...
- ___security_cookie机制
.text:00411500 ; int __cdecl wmainCRTStartup().text:00411500 _wmainCRTStartup proc near ...
- php操作redis(转)
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis支持的数据类型有 Stirng(字符串), Lis ...
- bootstrap 4 pull-right无效
/********************************************************************** * bootstrap 4 pull-right无效 * ...
- useradd密码无效
/********************************************************************** * useradd密码无效 * 说明: * 在测试Ubu ...
- SQL Server导入导出表及备份恢复
1. 导出: 2. 导入
- hdoj-1114 (背包dp)
题目链接 题意:已知n种coin的价值和体积 求装满容量为v背包的最小硬币价值 #include <algorithm> #include <cstdio> #include ...
- java-源文件中可以有多个类,但是最多只能有一个public修饰
1.如果源文件中有多个类,那么只能有一个类是public类:如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是.java. 2.如果源文件中没有public类,那么源文 ...
- java第一节感受
第一节java课考试,感觉自从小学期和实习过了以后就等这个测试了,测试过了以后就是中秋节了,下周再上一节java又放国庆节了. 当时报软工的时候就早早地做好了心理准备,但是当亲身经历一遍后真的有了一种 ...