OGLplus  (0.59.0) a C++ wrapper for rendering APIs

multi_input_node.hpp
Go to the documentation of this file.
1 #ifndef OGLPLUS_TEXGEN_MULTI_INPUT_NODE_HPP
9 #define OGLPLUS_TEXGEN_MULTI_INPUT_NODE_HPP
10 
11 #include "base_node.hpp"
12 #include "fallback_input.hpp"
13 #include <map>
14 
15 namespace eagine::oglp::texgen {
16 
17 class multi_input_output : public base_output {
18 protected:
19  friend class multi_input_node;
20 
21  input_with_const_default<float[4]> _input;
22  std::map<std::string, input_with_const_default<float[4]>> _inputs;
23 
24 public:
25  multi_input_output(node_intf& parent);
26 
27  slot_data_type common_param_type();
28 };
29 
30 class multi_input_node : public base_single_output_node {
31 public:
32  multi_input_output& single_output() override = 0;
33 
34  span_size_t input_count() override;
35 
36  input_intf& input(span_size_t) override;
37 
38  optional_reference_wrapper<input_intf> input_by_name(string_view) override;
39 
40  bool can_add_input() override;
41 
42  input_with_const_default<float[4]>& add_input(string_view) override;
43 
44  multi_input_node&
45  add_input(string_view name, float x, float y, float z, float w) {
46  add_input(name).fallback().set(x, y, z, w);
47  return *this;
48  }
49 
50  multi_input_node& set_value(float x, float y, float z, float w) {
51  single_output()._input.fallback().set(x, y, z, w);
52  return *this;
53  }
54 };
55 
56 } // namespace eagine::oglp::texgen
57 
58 #if !OGLPLUS_LINK_LIBRARY || defined(OGLPLUS_IMPLEMENTING_LIBRARY)
59 #include <oglplus/texgen/multi_input_node.inl>
60 #endif
61 
62 #endif // OGLPLUS_TEXGEN_MULTI_INPUT_NODE_HPP
std::ptrdiff_t span_size_t
Signed span size type used by eagine.
Definition: types.hpp:36
basic_string_span< const char > string_view
Alias for const string views.
Definition: string_span.hpp:116

Copyright © 2015-2021 Matúš Chochlík.
<chochlik -at -gmail.com>
Documentation generated on Tue Apr 13 2021 by Doxygen (version 1.8.17).