Blender
V2.93
source
blender
compositor
nodes
COM_MathNode.cc
Go to the documentation of this file.
1
/*
2
* This program is free software; you can redistribute it and/or
3
* modify it under the terms of the GNU General Public License
4
* as published by the Free Software Foundation; either version 2
5
* of the License, or (at your option) any later version.
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software Foundation,
14
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15
*
16
* Copyright 2011, Blender Foundation.
17
*/
18
19
#include "
COM_MathNode.h
"
20
#include "
COM_ExecutionSystem.h
"
21
#include "
COM_MathBaseOperation.h
"
22
23
namespace
blender::compositor
{
24
25
void
MathNode::convertToOperations
(
NodeConverter
&converter,
26
const
CompositorContext
&
/*context*/
)
const
27
{
28
MathBaseOperation
*operation =
nullptr
;
29
30
switch
(this->
getbNode
()->custom1) {
31
case
NODE_MATH_ADD
:
32
operation =
new
MathAddOperation
();
33
break
;
34
case
NODE_MATH_SUBTRACT
:
35
operation =
new
MathSubtractOperation
();
36
break
;
37
case
NODE_MATH_MULTIPLY
:
38
operation =
new
MathMultiplyOperation
();
39
break
;
40
case
NODE_MATH_DIVIDE
:
41
operation =
new
MathDivideOperation
();
42
break
;
43
case
NODE_MATH_SINE
:
44
operation =
new
MathSineOperation
();
45
break
;
46
case
NODE_MATH_COSINE
:
47
operation =
new
MathCosineOperation
();
48
break
;
49
case
NODE_MATH_TANGENT
:
50
operation =
new
MathTangentOperation
();
51
break
;
52
case
NODE_MATH_ARCSINE
:
53
operation =
new
MathArcSineOperation
();
54
break
;
55
case
NODE_MATH_ARCCOSINE
:
56
operation =
new
MathArcCosineOperation
();
57
break
;
58
case
NODE_MATH_ARCTANGENT
:
59
operation =
new
MathArcTangentOperation
();
60
break
;
61
case
NODE_MATH_SINH
:
62
operation =
new
MathHyperbolicSineOperation
();
63
break
;
64
case
NODE_MATH_COSH
:
65
operation =
new
MathHyperbolicCosineOperation
();
66
break
;
67
case
NODE_MATH_TANH
:
68
operation =
new
MathHyperbolicTangentOperation
();
69
break
;
70
case
NODE_MATH_POWER
:
71
operation =
new
MathPowerOperation
();
72
break
;
73
case
NODE_MATH_LOGARITHM
:
74
operation =
new
MathLogarithmOperation
();
75
break
;
76
case
NODE_MATH_MINIMUM
:
77
operation =
new
MathMinimumOperation
();
78
break
;
79
case
NODE_MATH_MAXIMUM
:
80
operation =
new
MathMaximumOperation
();
81
break
;
82
case
NODE_MATH_ROUND
:
83
operation =
new
MathRoundOperation
();
84
break
;
85
case
NODE_MATH_LESS_THAN
:
86
operation =
new
MathLessThanOperation
();
87
break
;
88
case
NODE_MATH_GREATER_THAN
:
89
operation =
new
MathGreaterThanOperation
();
90
break
;
91
case
NODE_MATH_MODULO
:
92
operation =
new
MathModuloOperation
();
93
break
;
94
case
NODE_MATH_ABSOLUTE
:
95
operation =
new
MathAbsoluteOperation
();
96
break
;
97
case
NODE_MATH_RADIANS
:
98
operation =
new
MathRadiansOperation
();
99
break
;
100
case
NODE_MATH_DEGREES
:
101
operation =
new
MathDegreesOperation
();
102
break
;
103
case
NODE_MATH_ARCTAN2
:
104
operation =
new
MathArcTan2Operation
();
105
break
;
106
case
NODE_MATH_FLOOR
:
107
operation =
new
MathFloorOperation
();
108
break
;
109
case
NODE_MATH_CEIL
:
110
operation =
new
MathCeilOperation
();
111
break
;
112
case
NODE_MATH_FRACTION
:
113
operation =
new
MathFractOperation
();
114
break
;
115
case
NODE_MATH_SQRT
:
116
operation =
new
MathSqrtOperation
();
117
break
;
118
case
NODE_MATH_INV_SQRT
:
119
operation =
new
MathInverseSqrtOperation
();
120
break
;
121
case
NODE_MATH_SIGN
:
122
operation =
new
MathSignOperation
();
123
break
;
124
case
NODE_MATH_EXPONENT
:
125
operation =
new
MathExponentOperation
();
126
break
;
127
case
NODE_MATH_TRUNC
:
128
operation =
new
MathTruncOperation
();
129
break
;
130
case
NODE_MATH_SNAP
:
131
operation =
new
MathSnapOperation
();
132
break
;
133
case
NODE_MATH_WRAP
:
134
operation =
new
MathWrapOperation
();
135
break
;
136
case
NODE_MATH_PINGPONG
:
137
operation =
new
MathPingpongOperation
();
138
break
;
139
case
NODE_MATH_COMPARE
:
140
operation =
new
MathCompareOperation
();
141
break
;
142
case
NODE_MATH_MULTIPLY_ADD
:
143
operation =
new
MathMultiplyAddOperation
();
144
break
;
145
case
NODE_MATH_SMOOTH_MIN
:
146
operation =
new
MathSmoothMinOperation
();
147
break
;
148
case
NODE_MATH_SMOOTH_MAX
:
149
operation =
new
MathSmoothMaxOperation
();
150
break
;
151
}
152
153
if
(operation) {
154
bool
useClamp =
getbNode
()->
custom2
;
155
operation->
setUseClamp
(useClamp);
156
converter.
addOperation
(operation);
157
158
converter.
mapInputSocket
(
getInputSocket
(0), operation->
getInputSocket
(0));
159
converter.
mapInputSocket
(
getInputSocket
(1), operation->
getInputSocket
(1));
160
converter.
mapInputSocket
(
getInputSocket
(2), operation->
getInputSocket
(2));
161
converter.
mapOutputSocket
(
getOutputSocket
(0), operation->
getOutputSocket
());
162
}
163
}
164
165
}
// namespace blender::compositor
COM_ExecutionSystem.h
COM_MathBaseOperation.h
COM_MathNode.h
NODE_MATH_SINH
@ NODE_MATH_SINH
Definition:
DNA_node_types.h:1536
NODE_MATH_SMOOTH_MIN
@ NODE_MATH_SMOOTH_MIN
Definition:
DNA_node_types.h:1545
NODE_MATH_TRUNC
@ NODE_MATH_TRUNC
Definition:
DNA_node_types.h:1539
NODE_MATH_COSH
@ NODE_MATH_COSH
Definition:
DNA_node_types.h:1537
NODE_MATH_SIGN
@ NODE_MATH_SIGN
Definition:
DNA_node_types.h:1532
NODE_MATH_DEGREES
@ NODE_MATH_DEGREES
Definition:
DNA_node_types.h:1535
NODE_MATH_MODULO
@ NODE_MATH_MODULO
Definition:
DNA_node_types.h:1524
NODE_MATH_ABSOLUTE
@ NODE_MATH_ABSOLUTE
Definition:
DNA_node_types.h:1525
NODE_MATH_DIVIDE
@ NODE_MATH_DIVIDE
Definition:
DNA_node_types.h:1510
NODE_MATH_SINE
@ NODE_MATH_SINE
Definition:
DNA_node_types.h:1511
NODE_MATH_ARCTAN2
@ NODE_MATH_ARCTAN2
Definition:
DNA_node_types.h:1526
NODE_MATH_ARCCOSINE
@ NODE_MATH_ARCCOSINE
Definition:
DNA_node_types.h:1515
NODE_MATH_MULTIPLY_ADD
@ NODE_MATH_MULTIPLY_ADD
Definition:
DNA_node_types.h:1543
NODE_MATH_POWER
@ NODE_MATH_POWER
Definition:
DNA_node_types.h:1517
NODE_MATH_WRAP
@ NODE_MATH_WRAP
Definition:
DNA_node_types.h:1541
NODE_MATH_ARCTANGENT
@ NODE_MATH_ARCTANGENT
Definition:
DNA_node_types.h:1516
NODE_MATH_MINIMUM
@ NODE_MATH_MINIMUM
Definition:
DNA_node_types.h:1519
NODE_MATH_SQRT
@ NODE_MATH_SQRT
Definition:
DNA_node_types.h:1530
NODE_MATH_CEIL
@ NODE_MATH_CEIL
Definition:
DNA_node_types.h:1528
NODE_MATH_TANH
@ NODE_MATH_TANH
Definition:
DNA_node_types.h:1538
NODE_MATH_GREATER_THAN
@ NODE_MATH_GREATER_THAN
Definition:
DNA_node_types.h:1523
NODE_MATH_ADD
@ NODE_MATH_ADD
Definition:
DNA_node_types.h:1507
NODE_MATH_FRACTION
@ NODE_MATH_FRACTION
Definition:
DNA_node_types.h:1529
NODE_MATH_EXPONENT
@ NODE_MATH_EXPONENT
Definition:
DNA_node_types.h:1533
NODE_MATH_LESS_THAN
@ NODE_MATH_LESS_THAN
Definition:
DNA_node_types.h:1522
NODE_MATH_ARCSINE
@ NODE_MATH_ARCSINE
Definition:
DNA_node_types.h:1514
NODE_MATH_MAXIMUM
@ NODE_MATH_MAXIMUM
Definition:
DNA_node_types.h:1520
NODE_MATH_LOGARITHM
@ NODE_MATH_LOGARITHM
Definition:
DNA_node_types.h:1518
NODE_MATH_COMPARE
@ NODE_MATH_COMPARE
Definition:
DNA_node_types.h:1542
NODE_MATH_INV_SQRT
@ NODE_MATH_INV_SQRT
Definition:
DNA_node_types.h:1531
NODE_MATH_MULTIPLY
@ NODE_MATH_MULTIPLY
Definition:
DNA_node_types.h:1509
NODE_MATH_PINGPONG
@ NODE_MATH_PINGPONG
Definition:
DNA_node_types.h:1544
NODE_MATH_ROUND
@ NODE_MATH_ROUND
Definition:
DNA_node_types.h:1521
NODE_MATH_FLOOR
@ NODE_MATH_FLOOR
Definition:
DNA_node_types.h:1527
NODE_MATH_SUBTRACT
@ NODE_MATH_SUBTRACT
Definition:
DNA_node_types.h:1508
NODE_MATH_COSINE
@ NODE_MATH_COSINE
Definition:
DNA_node_types.h:1512
NODE_MATH_SNAP
@ NODE_MATH_SNAP
Definition:
DNA_node_types.h:1540
NODE_MATH_TANGENT
@ NODE_MATH_TANGENT
Definition:
DNA_node_types.h:1513
NODE_MATH_SMOOTH_MAX
@ NODE_MATH_SMOOTH_MAX
Definition:
DNA_node_types.h:1546
NODE_MATH_RADIANS
@ NODE_MATH_RADIANS
Definition:
DNA_node_types.h:1534
blender::compositor::CompositorContext
Overall context of the compositor.
Definition:
COM_CompositorContext.h:37
blender::compositor::MathAbsoluteOperation
Definition:
COM_MathBaseOperation.h:222
blender::compositor::MathAddOperation
Definition:
COM_MathBaseOperation.h:71
blender::compositor::MathArcCosineOperation
Definition:
COM_MathBaseOperation.h:150
blender::compositor::MathArcSineOperation
Definition:
COM_MathBaseOperation.h:143
blender::compositor::MathArcTan2Operation
Definition:
COM_MathBaseOperation.h:246
blender::compositor::MathArcTangentOperation
Definition:
COM_MathBaseOperation.h:157
blender::compositor::MathBaseOperation
Definition:
COM_MathBaseOperation.h:29
blender::compositor::MathBaseOperation::setUseClamp
void setUseClamp(bool value)
Definition:
COM_MathBaseOperation.h:65
blender::compositor::MathCeilOperation
Definition:
COM_MathBaseOperation.h:262
blender::compositor::MathCompareOperation
Definition:
COM_MathBaseOperation.h:342
blender::compositor::MathCosineOperation
Definition:
COM_MathBaseOperation.h:106
blender::compositor::MathDegreesOperation
Definition:
COM_MathBaseOperation.h:238
blender::compositor::MathDivideOperation
Definition:
COM_MathBaseOperation.h:92
blender::compositor::MathExponentOperation
Definition:
COM_MathBaseOperation.h:302
blender::compositor::MathFloorOperation
Definition:
COM_MathBaseOperation.h:254
blender::compositor::MathFractOperation
Definition:
COM_MathBaseOperation.h:270
blender::compositor::MathGreaterThanOperation
Definition:
COM_MathBaseOperation.h:206
blender::compositor::MathHyperbolicCosineOperation
Definition:
COM_MathBaseOperation.h:128
blender::compositor::MathHyperbolicSineOperation
Definition:
COM_MathBaseOperation.h:121
blender::compositor::MathHyperbolicTangentOperation
Definition:
COM_MathBaseOperation.h:135
blender::compositor::MathInverseSqrtOperation
Definition:
COM_MathBaseOperation.h:286
blender::compositor::MathLessThanOperation
Definition:
COM_MathBaseOperation.h:199
blender::compositor::MathLogarithmOperation
Definition:
COM_MathBaseOperation.h:171
blender::compositor::MathMaximumOperation
Definition:
COM_MathBaseOperation.h:185
blender::compositor::MathMinimumOperation
Definition:
COM_MathBaseOperation.h:178
blender::compositor::MathModuloOperation
Definition:
COM_MathBaseOperation.h:214
blender::compositor::MathMultiplyAddOperation
Definition:
COM_MathBaseOperation.h:350
blender::compositor::MathMultiplyOperation
Definition:
COM_MathBaseOperation.h:85
blender::compositor::MathNode::convertToOperations
void convertToOperations(NodeConverter &converter, const CompositorContext &context) const override
convert node to operation
Definition:
COM_MathNode.cc:25
blender::compositor::MathPingpongOperation
Definition:
COM_MathBaseOperation.h:334
blender::compositor::MathPowerOperation
Definition:
COM_MathBaseOperation.h:164
blender::compositor::MathRadiansOperation
Definition:
COM_MathBaseOperation.h:230
blender::compositor::MathRoundOperation
Definition:
COM_MathBaseOperation.h:192
blender::compositor::MathSignOperation
Definition:
COM_MathBaseOperation.h:294
blender::compositor::MathSineOperation
Definition:
COM_MathBaseOperation.h:99
blender::compositor::MathSmoothMaxOperation
Definition:
COM_MathBaseOperation.h:366
blender::compositor::MathSmoothMinOperation
Definition:
COM_MathBaseOperation.h:358
blender::compositor::MathSnapOperation
Definition:
COM_MathBaseOperation.h:318
blender::compositor::MathSqrtOperation
Definition:
COM_MathBaseOperation.h:278
blender::compositor::MathSubtractOperation
Definition:
COM_MathBaseOperation.h:78
blender::compositor::MathTangentOperation
Definition:
COM_MathBaseOperation.h:113
blender::compositor::MathTruncOperation
Definition:
COM_MathBaseOperation.h:310
blender::compositor::MathWrapOperation
Definition:
COM_MathBaseOperation.h:326
blender::compositor::NodeConverter
Definition:
COM_NodeConverter.h:43
blender::compositor::NodeConverter::mapInputSocket
void mapInputSocket(NodeInput *node_socket, NodeOperationInput *operation_socket)
Definition:
COM_NodeConverter.cc:43
blender::compositor::NodeConverter::addOperation
void addOperation(NodeOperation *operation)
Definition:
COM_NodeConverter.cc:38
blender::compositor::NodeConverter::mapOutputSocket
void mapOutputSocket(NodeOutput *node_socket, NodeOperationOutput *operation_socket)
Definition:
COM_NodeConverter.cc:48
blender::compositor::NodeOperation::getInputSocket
NodeOperationInput * getInputSocket(unsigned int index)
Definition:
COM_NodeOperation.cc:47
blender::compositor::NodeOperation::getOutputSocket
NodeOperationOutput * getOutputSocket(unsigned int index=0)
Definition:
COM_NodeOperation.cc:42
blender::compositor::Node::getOutputSocket
NodeOutput * getOutputSocket(const unsigned int index=0) const
Definition:
COM_Node.cc:108
blender::compositor::Node::getbNode
bNode * getbNode() const
get the reference to the SDNA bNode struct
Definition:
COM_Node.h:82
blender::compositor::Node::getInputSocket
NodeInput * getInputSocket(const unsigned int index) const
Definition:
COM_Node.cc:113
blender::compositor
Definition:
COM_defines.h:21
bNode::custom2
short custom2
Definition:
DNA_node_types.h:269
Generated on Tue Jan 31 2023 14:37:24 for Blender by
doxygen
1.9.1