Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/compositor/nodes/COM_MathNode.cc')
-rw-r--r--source/blender/compositor/nodes/COM_MathNode.cc161
1 files changed, 161 insertions, 0 deletions
diff --git a/source/blender/compositor/nodes/COM_MathNode.cc b/source/blender/compositor/nodes/COM_MathNode.cc
new file mode 100644
index 00000000000..0edf880400f
--- /dev/null
+++ b/source/blender/compositor/nodes/COM_MathNode.cc
@@ -0,0 +1,161 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Copyright 2011, Blender Foundation.
+ */
+
+#include "COM_MathNode.h"
+#include "COM_ExecutionSystem.h"
+#include "COM_MathBaseOperation.h"
+
+void MathNode::convertToOperations(NodeConverter &converter,
+ const CompositorContext & /*context*/) const
+{
+ MathBaseOperation *operation = nullptr;
+
+ switch (this->getbNode()->custom1) {
+ case NODE_MATH_ADD:
+ operation = new MathAddOperation();
+ break;
+ case NODE_MATH_SUBTRACT:
+ operation = new MathSubtractOperation();
+ break;
+ case NODE_MATH_MULTIPLY:
+ operation = new MathMultiplyOperation();
+ break;
+ case NODE_MATH_DIVIDE:
+ operation = new MathDivideOperation();
+ break;
+ case NODE_MATH_SINE:
+ operation = new MathSineOperation();
+ break;
+ case NODE_MATH_COSINE:
+ operation = new MathCosineOperation();
+ break;
+ case NODE_MATH_TANGENT:
+ operation = new MathTangentOperation();
+ break;
+ case NODE_MATH_ARCSINE:
+ operation = new MathArcSineOperation();
+ break;
+ case NODE_MATH_ARCCOSINE:
+ operation = new MathArcCosineOperation();
+ break;
+ case NODE_MATH_ARCTANGENT:
+ operation = new MathArcTangentOperation();
+ break;
+ case NODE_MATH_SINH:
+ operation = new MathHyperbolicSineOperation();
+ break;
+ case NODE_MATH_COSH:
+ operation = new MathHyperbolicCosineOperation();
+ break;
+ case NODE_MATH_TANH:
+ operation = new MathHyperbolicTangentOperation();
+ break;
+ case NODE_MATH_POWER:
+ operation = new MathPowerOperation();
+ break;
+ case NODE_MATH_LOGARITHM:
+ operation = new MathLogarithmOperation();
+ break;
+ case NODE_MATH_MINIMUM:
+ operation = new MathMinimumOperation();
+ break;
+ case NODE_MATH_MAXIMUM:
+ operation = new MathMaximumOperation();
+ break;
+ case NODE_MATH_ROUND:
+ operation = new MathRoundOperation();
+ break;
+ case NODE_MATH_LESS_THAN:
+ operation = new MathLessThanOperation();
+ break;
+ case NODE_MATH_GREATER_THAN:
+ operation = new MathGreaterThanOperation();
+ break;
+ case NODE_MATH_MODULO:
+ operation = new MathModuloOperation();
+ break;
+ case NODE_MATH_ABSOLUTE:
+ operation = new MathAbsoluteOperation();
+ break;
+ case NODE_MATH_RADIANS:
+ operation = new MathRadiansOperation();
+ break;
+ case NODE_MATH_DEGREES:
+ operation = new MathDegreesOperation();
+ break;
+ case NODE_MATH_ARCTAN2:
+ operation = new MathArcTan2Operation();
+ break;
+ case NODE_MATH_FLOOR:
+ operation = new MathFloorOperation();
+ break;
+ case NODE_MATH_CEIL:
+ operation = new MathCeilOperation();
+ break;
+ case NODE_MATH_FRACTION:
+ operation = new MathFractOperation();
+ break;
+ case NODE_MATH_SQRT:
+ operation = new MathSqrtOperation();
+ break;
+ case NODE_MATH_INV_SQRT:
+ operation = new MathInverseSqrtOperation();
+ break;
+ case NODE_MATH_SIGN:
+ operation = new MathSignOperation();
+ break;
+ case NODE_MATH_EXPONENT:
+ operation = new MathExponentOperation();
+ break;
+ case NODE_MATH_TRUNC:
+ operation = new MathTruncOperation();
+ break;
+ case NODE_MATH_SNAP:
+ operation = new MathSnapOperation();
+ break;
+ case NODE_MATH_WRAP:
+ operation = new MathWrapOperation();
+ break;
+ case NODE_MATH_PINGPONG:
+ operation = new MathPingpongOperation();
+ break;
+ case NODE_MATH_COMPARE:
+ operation = new MathCompareOperation();
+ break;
+ case NODE_MATH_MULTIPLY_ADD:
+ operation = new MathMultiplyAddOperation();
+ break;
+ case NODE_MATH_SMOOTH_MIN:
+ operation = new MathSmoothMinOperation();
+ break;
+ case NODE_MATH_SMOOTH_MAX:
+ operation = new MathSmoothMaxOperation();
+ break;
+ }
+
+ if (operation) {
+ bool useClamp = getbNode()->custom2;
+ operation->setUseClamp(useClamp);
+ converter.addOperation(operation);
+
+ converter.mapInputSocket(getInputSocket(0), operation->getInputSocket(0));
+ converter.mapInputSocket(getInputSocket(1), operation->getInputSocket(1));
+ converter.mapInputSocket(getInputSocket(2), operation->getInputSocket(2));
+ converter.mapOutputSocket(getOutputSocket(0), operation->getOutputSocket());
+ }
+}