47 for (; !it.is_end(); ++it) {
48 it.out[0] = it.out[1] = it.out[2] = *it.in(0);
63 for (; !it.is_end(); ++it) {
64 const float *in = it.in(0);
65 it.out[0] = (in[0] + in[1] + in[2]) / 3.0f;
79 for (; !it.is_end(); ++it) {
94 for (; !it.is_end(); ++it) {
109 for (; !it.is_end(); ++it) {
110 it.out[0] = it.out[1] = it.out[2] = *it.in(0);
124 for (; !it.is_end(); ++it) {
140 for (; !it.is_end(); ++it) {
141 const float *in = it.in(0);
142 it.out[0] = (in[0] + in[1] + in[2]) / 3.0f;
178 for (; !it.is_end(); ++it) {
179 const float *in = it.in(0);
180 rgb_to_ycc(in[0], in[1], in[2], &it.out[0], &it.out[1], &it.out[2], mode_);
220 for (; !it.is_end(); ++it) {
221 const float *in = it.in(0);
224 in[0] * 255.0f, in[1] * 255.0f, in[2] * 255.0f, &it.out[0], &it.out[1], &it.out[2], mode_);
239 for (; !it.is_end(); ++it) {
240 const float *in = it.in(0);
256 for (; !it.is_end(); ++it) {
257 const float *in = it.in(0);
273 for (; !it.is_end(); ++it) {
274 const float *in = it.in(0);
290 for (; !it.is_end(); ++it) {
291 const float *in = it.in(0);
293 it.out[0] =
max_ff(it.out[0], 0.0f);
294 it.out[1] =
max_ff(it.out[1], 0.0f);
295 it.out[2] =
max_ff(it.out[2], 0.0f);
310 for (; !it.is_end(); ++it) {
311 const float *in = it.in(0);
327 for (; !it.is_end(); ++it) {
328 const float *in = it.in(0);
330 it.out[0] =
max_ff(it.out[0], 0.0f);
331 it.out[1] =
max_ff(it.out[1], 0.0f);
332 it.out[2] =
max_ff(it.out[2], 0.0f);
347 for (; !it.is_end(); ++it) {
362 for (; !it.is_end(); ++it) {
381 it.out[0] = it.in(0)[channel_];
404 it.out[0] = *it.in(0);
405 it.out[1] = *it.in(1);
406 it.out[2] = *it.in(2);
407 it.out[3] = *it.in(3);
MINLINE float max_ff(float a, float b)
void hsv_to_rgb_v(const float hsv[3], float r_rgb[3])
void rgb_to_hsv_v(const float rgb[3], float r_hsv[3])
#define BLI_YUV_ITU_BT709
#define BLI_YCC_JFIF_0_255
void hsl_to_rgb_v(const float hsl[3], float r_rgb[3])
void ycc_to_rgb(float y, float cb, float cr, float *r_r, float *r_g, float *r_b, int colorspace)
#define BLI_YCC_ITU_BT601
void rgb_to_ycc(float r, float g, float b, float *r_y, float *r_cb, float *r_cr, int colorspace)
void rgb_to_yuv(float r, float g, float b, float *r_y, float *r_u, float *r_v, int colorspace)
void yuv_to_rgb(float y, float u, float v, float *r_r, float *r_g, float *r_b, int colorspace)
void rgb_to_hsl_v(const float rgb[3], float r_hsl[3])
#define BLI_YCC_ITU_BT709
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
BLI_INLINE float IMB_colormanagement_get_luminance(const float rgb[3])
ColorSceneLinear4f< eAlpha::Straight > unpremultiply_alpha() const
ColorSceneLinear4f< eAlpha::Premultiplied > premultiply_alpha() const
CombineChannelsOperation()
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
virtual void hash_output_params() override
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) final
std::unique_ptr< MetaData > get_meta_data() override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertColorToBWOperation()
ConvertColorToValueOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertColorToVectorOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertHSLToRGBOperation()
ConvertHSVToRGBOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertPremulToStraightOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertRGBToHSLOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertRGBToHSVOperation()
ConvertRGBToYCCOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void hash_output_params() override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertRGBToYUVOperation()
ConvertStraightToPremulOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertValueToColorOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertValueToVectorOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertVectorToColorOperation()
ConvertVectorToValueOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void update_memory_buffer_partial(BuffersIterator< float > &it) override
void hash_output_params() override
ConvertYCCToRGBOperation()
void update_memory_buffer_partial(BuffersIterator< float > &it) override
ConvertYUVToRGBOperation()
a MemoryBuffer contains access to the data
void add_output_socket(DataType datatype)
virtual std::unique_ptr< MetaData > get_meta_data()
NodeOperationFlags flags_
NodeOperation * get_input_operation(int index)
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
void set_canvas_input_index(unsigned int index)
set the index of the input socket that will determine the canvas of this operation
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
SeparateChannelOperation()
@ Vector
Vector data type.
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator