Blender
V4.3
source
blender
compositor
operations
COM_InvertOperation.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2011 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
5
#include "
COM_InvertOperation.h
"
6
7
namespace
blender::compositor
{
8
9
InvertOperation::InvertOperation
()
10
{
11
this->
add_input_socket
(
DataType::Value
);
12
this->
add_input_socket
(
DataType::Color
);
13
this->
add_output_socket
(
DataType::Color
);
14
color_ =
true
;
15
alpha_ =
false
;
16
set_canvas_input_index
(1);
17
flags_
.can_be_constant =
true
;
18
}
19
20
void
InvertOperation::update_memory_buffer_partial
(
MemoryBuffer
*
output
,
21
const
rcti
&area,
22
Span<MemoryBuffer *>
inputs
)
23
{
24
for
(
BuffersIterator<float>
it =
output
->iterate_with(
inputs
, area); !it.is_end(); ++it) {
25
const
float
value = *it.in(0);
26
const
float
inverted_value = 1.0f - value;
27
const
float
*
color
= it.in(1);
28
29
if
(color_) {
30
it.out[0] = (1.0f -
color
[0]) * value +
color
[0] * inverted_value;
31
it.out[1] = (1.0f -
color
[1]) * value +
color
[1] * inverted_value;
32
it.out[2] = (1.0f -
color
[2]) * value +
color
[2] * inverted_value;
33
}
34
else
{
35
copy_v3_v3
(it.out,
color
);
36
}
37
38
if
(alpha_) {
39
it.out[3] = (1.0f -
color
[3]) * value +
color
[3] * inverted_value;
40
}
41
else
{
42
it.out[3] =
color
[3];
43
}
44
}
45
}
46
47
}
// namespace blender::compositor
copy_v3_v3
MINLINE void copy_v3_v3(float r[3], const float a[3])
Definition
math_vector_inline.c:43
COM_InvertOperation.h
output
#define output
blender::Span
Definition
BLI_span.hh:75
blender::compositor::InvertOperation::InvertOperation
InvertOperation()
Definition
COM_InvertOperation.cc:9
blender::compositor::InvertOperation::update_memory_buffer_partial
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
Definition
COM_InvertOperation.cc:20
blender::compositor::MemoryBuffer
a MemoryBuffer contains access to the data
Definition
COM_MemoryBuffer.h:35
blender::compositor::NodeOperation::add_output_socket
void add_output_socket(DataType datatype)
Definition
COM_NodeOperation.cc:102
blender::compositor::NodeOperation::flags_
NodeOperationFlags flags_
Definition
COM_NodeOperation.h:295
blender::compositor::NodeOperation::add_input_socket
void add_input_socket(DataType datatype, ResizeMode resize_mode=ResizeMode::Center)
Definition
COM_NodeOperation.cc:97
blender::compositor::NodeOperation::set_canvas_input_index
void set_canvas_input_index(unsigned int index)
set the index of the input socket that will determine the canvas of this operation
Definition
COM_NodeOperation.cc:144
blender::compositor::DataType::Value
@ Value
Value data type.
Definition
COM_defines.h:23
blender::compositor::DataType::Color
@ Color
Color data type.
Definition
COM_defines.h:27
blender::color
Definition
BLI_color_mix.hh:21
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
blender::compositor::BuffersIterator
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator
Definition
COM_BuffersIterator.h:179
inputs
static blender::bke::bNodeSocketTemplate inputs[]
Definition
node_texture_at.cc:11
rcti
Definition
DNA_vec_types.h:68
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0