Blender
V4.3
source
blender
compositor
nodes
COM_DistanceMatteNode.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_DistanceMatteNode.h
"
6
#include "
COM_ConvertOperation.h
"
7
#include "
COM_DistanceYCCMatteOperation.h
"
8
#include "
COM_SetAlphaMultiplyOperation.h
"
9
10
#include "
BLI_math_color.h
"
11
12
namespace
blender::compositor
{
13
14
DistanceMatteNode::DistanceMatteNode
(
bNode
*editor_node) :
Node
(editor_node)
15
{
16
/* pass */
17
}
18
19
void
DistanceMatteNode::convert_to_operations
(
NodeConverter
&converter,
20
const
CompositorContext
&
/*context*/
)
const
21
{
22
const
bNode
*editorsnode = this->
get_bnode
();
23
const
NodeChroma
*storage = (
const
NodeChroma
*)editorsnode->
storage
;
24
25
NodeInput
*input_socket_image = this->
get_input_socket
(0);
26
NodeInput
*input_socket_key = this->
get_input_socket
(1);
27
NodeOutput
*output_socket_image = this->
get_output_socket
(0);
28
NodeOutput
*output_socket_matte = this->
get_output_socket
(1);
29
30
SetAlphaMultiplyOperation
*operation_alpha =
new
SetAlphaMultiplyOperation
();
31
converter.
add_operation
(operation_alpha);
32
33
/* work in RGB color space */
34
NodeOperation
*operation;
35
if
(storage->
channel
== 1) {
36
DistanceRGBMatteOperation
*matte =
new
DistanceRGBMatteOperation
();
37
matte->set_settings(storage);
38
converter.
add_operation
(matte);
39
40
converter.
map_input_socket
(input_socket_image, matte->get_input_socket(0));
41
converter.
map_input_socket
(input_socket_image, operation_alpha->
get_input_socket
(0));
42
43
converter.
map_input_socket
(input_socket_key, matte->get_input_socket(1));
44
45
operation = matte;
46
}
47
/* work in YCbCr color space */
48
else
{
49
DistanceYCCMatteOperation
*matte =
new
DistanceYCCMatteOperation
();
50
matte->set_settings(storage);
51
converter.
add_operation
(matte);
52
53
ConvertRGBToYCCOperation
*operation_yccimage =
new
ConvertRGBToYCCOperation
();
54
ConvertRGBToYCCOperation
*operation_yccmatte =
new
ConvertRGBToYCCOperation
();
55
operation_yccimage->
set_mode
(
BLI_YCC_ITU_BT709
);
56
operation_yccmatte->
set_mode
(
BLI_YCC_ITU_BT709
);
57
converter.
add_operation
(operation_yccimage);
58
converter.
add_operation
(operation_yccmatte);
59
60
converter.
map_input_socket
(input_socket_image, operation_yccimage->
get_input_socket
(0));
61
converter.
add_link
(operation_yccimage->
get_output_socket
(), matte->get_input_socket(0));
62
converter.
add_link
(operation_yccimage->
get_output_socket
(),
63
operation_alpha->
get_input_socket
(0));
64
65
converter.
map_input_socket
(input_socket_key, operation_yccmatte->
get_input_socket
(0));
66
converter.
add_link
(operation_yccmatte->
get_output_socket
(), matte->get_input_socket(1));
67
68
operation = matte;
69
}
70
71
converter.
map_output_socket
(output_socket_matte, operation->
get_output_socket
(0));
72
converter.
add_link
(operation->
get_output_socket
(), operation_alpha->
get_input_socket
(1));
73
74
if
(storage->
channel
!= 1) {
75
ConvertYCCToRGBOperation
*inv_convert =
new
ConvertYCCToRGBOperation
();
76
inv_convert->
set_mode
(
BLI_YCC_ITU_BT709
);
77
78
converter.
add_operation
(inv_convert);
79
converter.
add_link
(operation_alpha->
get_output_socket
(0), inv_convert->
get_input_socket
(0));
80
converter.
map_output_socket
(output_socket_image, inv_convert->
get_output_socket
());
81
converter.
add_preview
(inv_convert->
get_output_socket
());
82
}
83
else
{
84
converter.
map_output_socket
(output_socket_image, operation_alpha->
get_output_socket
());
85
converter.
add_preview
(operation_alpha->
get_output_socket
());
86
}
87
}
88
89
}
// namespace blender::compositor
BLI_math_color.h
BLI_YCC_ITU_BT709
#define BLI_YCC_ITU_BT709
Definition
BLI_math_color.h:23
COM_ConvertOperation.h
COM_DistanceMatteNode.h
COM_DistanceYCCMatteOperation.h
COM_SetAlphaMultiplyOperation.h
blender::compositor::CompositorContext
Overall context of the compositor.
Definition
COM_CompositorContext.h:27
blender::compositor::ConvertRGBToYCCOperation
Definition
COM_ConvertOperation.h:83
blender::compositor::ConvertRGBToYCCOperation::set_mode
void set_mode(int mode)
Definition
COM_ConvertOperation.cc:154
blender::compositor::ConvertYCCToRGBOperation
Definition
COM_ConvertOperation.h:99
blender::compositor::ConvertYCCToRGBOperation::set_mode
void set_mode(int mode)
Definition
COM_ConvertOperation.cc:196
blender::compositor::DistanceMatteNode::DistanceMatteNode
DistanceMatteNode(bNode *editor_node)
Definition
COM_DistanceMatteNode.cc:14
blender::compositor::DistanceMatteNode::convert_to_operations
void convert_to_operations(NodeConverter &converter, const CompositorContext &context) const override
convert node to operation
Definition
COM_DistanceMatteNode.cc:19
blender::compositor::DistanceRGBMatteOperation
Definition
COM_DistanceRGBMatteOperation.h:15
blender::compositor::DistanceYCCMatteOperation
Definition
COM_DistanceYCCMatteOperation.h:16
blender::compositor::NodeConverter
Definition
COM_NodeConverter.h:29
blender::compositor::NodeConverter::add_link
void add_link(NodeOperationOutput *from, NodeOperationInput *to)
Definition
COM_NodeConverter.cc:36
blender::compositor::NodeConverter::map_output_socket
void map_output_socket(NodeOutput *node_socket, NodeOperationOutput *operation_socket)
Definition
COM_NodeConverter.cc:30
blender::compositor::NodeConverter::add_preview
void add_preview(NodeOperationOutput *output)
Definition
COM_NodeConverter.cc:41
blender::compositor::NodeConverter::add_operation
void add_operation(NodeOperation *operation)
Definition
COM_NodeConverter.cc:20
blender::compositor::NodeConverter::map_input_socket
void map_input_socket(NodeInput *node_socket, NodeOperationInput *operation_socket)
Definition
COM_NodeConverter.cc:25
blender::compositor::NodeInput
NodeInput are sockets that can receive data/input.
Definition
COM_Node.h:191
blender::compositor::NodeOperation
NodeOperation contains calculation logic.
Definition
COM_NodeOperation.h:265
blender::compositor::NodeOperation::get_output_socket
NodeOperationOutput * get_output_socket(unsigned int index=0)
Definition
COM_NodeOperation.cc:87
blender::compositor::NodeOperation::get_input_socket
NodeOperationInput * get_input_socket(unsigned int index)
Definition
COM_NodeOperation.cc:92
blender::compositor::NodeOutput
NodeOutput are sockets that can send data/input.
Definition
COM_Node.h:239
blender::compositor::Node
Definition
COM_Node.h:25
blender::compositor::Node::get_output_socket
NodeOutput * get_output_socket(unsigned int index=0) const
Definition
COM_Node.cc:85
blender::compositor::Node::get_input_socket
NodeInput * get_input_socket(unsigned int index) const
Definition
COM_Node.cc:90
blender::compositor::Node::get_bnode
const bNode * get_bnode() const
get the reference to the SDNA bNode struct
Definition
COM_Node.h:65
blender::compositor::SetAlphaMultiplyOperation
Definition
COM_SetAlphaMultiplyOperation.h:16
blender::compositor
Definition
COM_JumpFloodingAlgorithm.cc:20
NodeChroma
Definition
DNA_node_types.h:1172
NodeChroma::channel
short channel
Definition
DNA_node_types.h:1176
bNode
Definition
DNA_node_types.h:357
bNode::storage
void * storage
Definition
DNA_node_types.h:417
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0