[Bf-blender-cvs] [95e0ea69a2e] functions: extract customizable functions into separate file
Jacques Lucke
noreply at git.blender.org
Wed Dec 11 15:28:06 CET 2019
Commit: 95e0ea69a2ebd9aed0a9fa523c1d3e441ca0e353
Author: Jacques Lucke
Date: Wed Dec 11 14:59:14 2019 +0100
Branches: functions
https://developer.blender.org/rB95e0ea69a2ebd9aed0a9fa523c1d3e441ca0e353
extract customizable functions into separate file
===================================================================
M source/blender/functions/CMakeLists.txt
M source/blender/functions/FN_multi_functions.h
A source/blender/functions/intern/multi_functions/customizable.h
M source/blender/functions/intern/multi_functions/mixed.h
===================================================================
diff --git a/source/blender/functions/CMakeLists.txt b/source/blender/functions/CMakeLists.txt
index 13115583987..fae3e2d9d28 100644
--- a/source/blender/functions/CMakeLists.txt
+++ b/source/blender/functions/CMakeLists.txt
@@ -65,6 +65,7 @@ set(SRC
FN_inlined_tree_multi_function_network_generation.h
FN_inlined_tree_multi_function_network.h
+ intern/multi_functions/customizable.h
intern/multi_functions/lists.h
intern/multi_functions/mixed.h
intern/multi_functions/network.h
diff --git a/source/blender/functions/FN_multi_functions.h b/source/blender/functions/FN_multi_functions.h
index 363aa860c4a..1cfad25dafa 100644
--- a/source/blender/functions/FN_multi_functions.h
+++ b/source/blender/functions/FN_multi_functions.h
@@ -1,6 +1,7 @@
#ifndef __FN_MULTI_FUNCTIONS_H__
#define __FN_MULTI_FUNCTIONS_H__
+#include "intern/multi_functions/customizable.h"
#include "intern/multi_functions/lists.h"
#include "intern/multi_functions/mixed.h"
#include "intern/multi_functions/network.h"
diff --git a/source/blender/functions/intern/multi_functions/mixed.h b/source/blender/functions/intern/multi_functions/customizable.h
similarity index 57%
copy from source/blender/functions/intern/multi_functions/mixed.h
copy to source/blender/functions/intern/multi_functions/customizable.h
index dce1d66b30d..a1c79120fcd 100644
--- a/source/blender/functions/intern/multi_functions/mixed.h
+++ b/source/blender/functions/intern/multi_functions/customizable.h
@@ -1,71 +1,9 @@
#pragma once
-#include <functional>
-
#include "FN_multi_function.h"
namespace FN {
-class MF_CombineColor final : public MultiFunction {
- public:
- MF_CombineColor();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_SeparateColor final : public MultiFunction {
- public:
- MF_SeparateColor();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_CombineVector final : public MultiFunction {
- public:
- MF_CombineVector();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_SeparateVector final : public MultiFunction {
- public:
- MF_SeparateVector();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_FloatArraySum final : public MultiFunction {
- public:
- MF_FloatArraySum();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_FloatRange final : public MultiFunction {
- public:
- MF_FloatRange();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_ObjectWorldLocation final : public MultiFunction {
- public:
- MF_ObjectWorldLocation();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_ObjectVertexPositions final : public MultiFunction {
- public:
- MF_ObjectVertexPositions();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_TextLength final : public MultiFunction {
- public:
- MF_TextLength();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_RandomFloat final : public MultiFunction {
- public:
- MF_RandomFloat();
- void call(MFMask mask, MFParams parms, MFContext context) const override;
-};
-
template<typename T> class MF_ConstantValue : public MultiFunction {
private:
T m_value;
@@ -108,72 +46,6 @@ template<typename FromT, typename ToT> class MF_Convert : public MultiFunction {
}
};
-class MF_SimpleVectorize final : public MultiFunction {
- private:
- const MultiFunction &m_function;
- Vector<bool> m_input_is_vectorized;
- Vector<uint> m_vectorized_inputs;
- Vector<uint> m_output_indices;
-
- public:
- MF_SimpleVectorize(const MultiFunction &function, ArrayRef<bool> input_is_vectorized);
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_ContextVertexPosition final : public MultiFunction {
- public:
- MF_ContextVertexPosition();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_ContextCurrentFrame final : public MultiFunction {
- public:
- MF_ContextCurrentFrame();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_SwitchSingle final : public MultiFunction {
- private:
- const CPPType &m_type;
-
- public:
- MF_SwitchSingle(const CPPType &type);
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_SwitchVector final : public MultiFunction {
- private:
- const CPPType &m_type;
-
- public:
- MF_SwitchVector(const CPPType &type);
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_PerlinNoise final : public MultiFunction {
- public:
- MF_PerlinNoise();
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_MapRange final : public MultiFunction {
- private:
- bool m_clamp;
-
- public:
- MF_MapRange(bool clamp);
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
-class MF_Clamp final : public MultiFunction {
- private:
- bool m_sort_minmax;
-
- public:
- MF_Clamp(bool sort_minmax);
- void call(MFMask mask, MFParams params, MFContext context) const override;
-};
-
template<typename InT, typename OutT> class MF_Custom_In1_Out1 final : public MultiFunction {
private:
using FunctionT = std::function<void(MFMask mask, VirtualListRef<InT>, MutableArrayRef<OutT>)>;
diff --git a/source/blender/functions/intern/multi_functions/mixed.h b/source/blender/functions/intern/multi_functions/mixed.h
index dce1d66b30d..c2850231190 100644
--- a/source/blender/functions/intern/multi_functions/mixed.h
+++ b/source/blender/functions/intern/multi_functions/mixed.h
@@ -66,48 +66,6 @@ class MF_RandomFloat final : public MultiFunction {
void call(MFMask mask, MFParams parms, MFContext context) const override;
};
-template<typename T> class MF_ConstantValue : public MultiFunction {
- private:
- T m_value;
-
- public:
- MF_ConstantValue(T value) : m_value(std::move(value))
- {
- MFSignatureBuilder signature("Constant " + CPP_TYPE<T>().name());
- signature.single_output<T>("Output");
- this->set_signature(signature);
- }
-
- void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
- {
- MutableArrayRef<T> output = params.uninitialized_single_output<T>(0, "Output");
-
- mask.foreach_index([&](uint i) { new (output.begin() + i) T(m_value); });
- }
-};
-
-template<typename FromT, typename ToT> class MF_Convert : public MultiFunction {
- public:
- MF_Convert()
- {
- MFSignatureBuilder signature(CPP_TYPE<FromT>().name() + " to " + CPP_TYPE<ToT>().name());
- signature.single_input<FromT>("Input");
- signature.single_output<ToT>("Output");
- this->set_signature(signature);
- }
-
- void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
- {
- VirtualListRef<FromT> inputs = params.readonly_single_input<FromT>(0, "Input");
- MutableArrayRef<ToT> outputs = params.uninitialized_single_output<ToT>(1, "Output");
-
- for (uint i : mask.indices()) {
- const FromT &from_value = inputs[i];
- new (outputs.begin() + i) ToT(from_value);
- }
- }
-};
-
class MF_SimpleVectorize final : public MultiFunction {
private:
const MultiFunction &m_function;
@@ -174,99 +132,4 @@ class MF_Clamp final : public MultiFunction {
void call(MFMask mask, MFParams params, MFContext context) const override;
};
-template<typename InT, typename OutT> class MF_Custom_In1_Out1 final : public MultiFunction {
- private:
- using FunctionT = std::function<void(MFMask mask, VirtualListRef<InT>, MutableArrayRef<OutT>)>;
- FunctionT m_fn;
-
- public:
- MF_Custom_In1_Out1(StringRef name, FunctionT fn) : m_fn(std::move(fn))
- {
- MFSignatureBuilder signature(name);
- signature.single_input<InT>("Input");
- signature.single_output<OutT>("Output");
- this->set_signature(signature);
- }
-
- void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
- {
- VirtualListRef<InT> inputs = params.readonly_single_input<InT>(0);
- MutableArrayRef<OutT> outputs = params.uninitialized_single_output<OutT>(1);
- m_fn(mask, inputs, outputs);
- }
-};
-
-template<typename InT1, typename InT2, typename OutT>
-class MF_Custom_In2_Out1 final : public MultiFunction {
- private:
- using FunctionT = std::function<void(
- MFMask mask, VirtualListRef<InT1>, VirtualListRef<InT2>, MutableArrayRef<OutT>)>;
-
- FunctionT m_fn;
-
- public:
- MF_Custom_In2_Out1(StringRef name, FunctionT fn) : m_fn(std::move(fn))
- {
- MFSignatureBuilder signature(name);
- signature.single_input<InT1>("Input 1");
- signature.single_input<InT2>("Input 2");
- signature.single_output<OutT>("Output");
- this->set_signature(signature);
- }
-
- void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
- {
- VirtualListRef<InT1> inputs1 = params.readonly_single_input<InT1>(0);
- VirtualListRef<InT2> inputs2 = params.readonly_single_input<InT2>(1);
- MutableArrayRef<OutT> outputs = params.uninitialized_single_output<OutT>(2);
- m_fn(mask, inputs1, inputs2, outputs);
- }
-};
-
-template<typename T> class MF_VariadicMath final : public MultiFunction {
- private:
- using FunctionT =
- std::function<void(MFMask mask, VirtualListRef<T>, VirtualListRef<T>, MutableArrayRef<T>)>;
-
- uint m_input_amount;
- FunctionT m_fn;
-
- public:
- MF_VariadicMath(StringRef name, uint input_amount, FunctionT fn)
- : m_input_amount(input_amount), m_fn(fn)
- {
- BLI_STATIC_ASSERT(std::is_trivial<T>::value, "");
- BLI_assert(input_amount >= 1);
- MFSignatureBuilder signature(name);
- for (uint i = 0; i < m_input_amount; i++) {
- signature.single_input<T>("Input");
- }
- signature.single_output<T>("Output");
- this->set_signature(signature);
- }
-
- void call(MFMask mask, MFParams params, MFContext UNUSED(context)) const override
- {
- MutableArrayRef<T> outputs = params.uninitialized_single_output<T>(m_input_amount, "Output");
-
- if (m_input_amou
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list