Blender
V4.5
source
blender
compositor
intern
input_single_value_operation.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2023 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
5
#include "
BLI_assert.h
"
6
#include "
BLI_math_vector_types.hh
"
7
8
#include "
DNA_node_types.h
"
9
10
#include "
COM_input_single_value_operation.hh
"
11
#include "
COM_operation.hh
"
12
#include "
COM_result.hh
"
13
#include "
COM_utilities.hh
"
14
15
namespace
blender::compositor
{
16
17
const
StringRef InputSingleValueOperation::output_identifier_ = StringRef(
"Output"
);
18
19
InputSingleValueOperation::InputSingleValueOperation
(
Context
&
context
,
DInputSocket
input_socket)
20
:
Operation
(
context
), input_socket_(input_socket)
21
{
22
const
ResultType
result_type =
get_node_socket_result_type
(input_socket_.bsocket());
23
this->populate_result(
context
.create_result(result_type));
24
}
25
26
void
InputSingleValueOperation::execute
()
27
{
28
Result
&
result
= this->
get_result
();
29
result.
allocate_single_value
();
30
31
switch
(input_socket_->type) {
32
case
SOCK_FLOAT
: {
33
const
float
value = input_socket_->default_value_typed<
bNodeSocketValueFloat
>()->value;
34
result
.set_single_value(value);
35
break
;
36
}
37
case
SOCK_INT
: {
38
const
int
value = input_socket_->default_value_typed<
bNodeSocketValueInt
>()->value;
39
result
.set_single_value(value);
40
break
;
41
}
42
case
SOCK_BOOLEAN
: {
43
const
bool
value = input_socket_->default_value_typed<
bNodeSocketValueBoolean
>()->value;
44
result
.set_single_value(value);
45
break
;
46
}
47
case
SOCK_VECTOR
: {
48
const
float3
value = input_socket_->default_value_typed<
bNodeSocketValueVector
>()->value;
49
result
.set_single_value(value);
50
break
;
51
}
52
case
SOCK_RGBA
: {
53
const
float4
value = input_socket_->default_value_typed<
bNodeSocketValueRGBA
>()->value;
54
result
.set_single_value(value);
55
break
;
56
}
57
default
:
58
BLI_assert_unreachable
();
59
break
;
60
}
61
}
62
63
Result
&
InputSingleValueOperation::get_result
()
64
{
65
return
Operation::get_result
(output_identifier_);
66
}
67
68
void
InputSingleValueOperation::populate_result(
Result
result
)
69
{
70
Operation::populate_result
(output_identifier_,
result
);
71
}
72
73
}
// namespace blender::compositor
BLI_assert.h
BLI_assert_unreachable
#define BLI_assert_unreachable()
Definition
BLI_assert.h:93
result
double result
Definition
BLI_expr_pylike_eval_test.cc:351
BLI_math_vector_types.hh
COM_input_single_value_operation.hh
COM_operation.hh
COM_result.hh
COM_utilities.hh
DNA_node_types.h
SOCK_INT
@ SOCK_INT
Definition
DNA_node_types.h:301
SOCK_VECTOR
@ SOCK_VECTOR
Definition
DNA_node_types.h:297
SOCK_BOOLEAN
@ SOCK_BOOLEAN
Definition
DNA_node_types.h:300
SOCK_FLOAT
@ SOCK_FLOAT
Definition
DNA_node_types.h:296
SOCK_RGBA
@ SOCK_RGBA
Definition
DNA_node_types.h:298
blender::compositor::Context
Definition
COM_context.hh:44
blender::compositor::InputSingleValueOperation::execute
void execute() override
Definition
input_single_value_operation.cc:26
blender::compositor::InputSingleValueOperation::InputSingleValueOperation
InputSingleValueOperation(Context &context, DInputSocket input_socket)
Definition
input_single_value_operation.cc:19
blender::compositor::InputSingleValueOperation::get_result
Result & get_result()
Definition
input_single_value_operation.cc:63
blender::compositor::Operation::get_result
Result & get_result(StringRef identifier)
Definition
operation.cc:39
blender::compositor::Operation::populate_result
void populate_result(StringRef identifier, Result result)
Definition
operation.cc:148
blender::compositor::Operation::Operation
Operation(Context &context)
Definition
operation.cc:22
blender::compositor::Operation::context
Context & context() const
Definition
operation.cc:163
blender::compositor::Result
Definition
COM_result.hh:95
blender::compositor::Result::allocate_single_value
void allocate_single_value()
Definition
result.cc:319
blender::nodes::DInputSocket
Definition
NOD_derived_node_tree.hh:132
blender::compositor
Definition
BKE_node.hh:76
blender::compositor::get_node_socket_result_type
ResultType get_node_socket_result_type(const bNodeSocket *socket)
Definition
utilities.cc:66
blender::compositor::ResultType
ResultType
Definition
COM_result.hh:36
blender::float4
VecBase< float, 4 > float4
Definition
BLI_math_vector_types.hh:620
blender::float3
VecBase< float, 3 > float3
Definition
BLI_math_vector_types.hh:619
bNodeSocketValueBoolean
Definition
DNA_node_types.h:986
bNodeSocketValueFloat
Definition
DNA_node_types.h:979
bNodeSocketValueInt
Definition
DNA_node_types.h:972
bNodeSocketValueRGBA
Definition
DNA_node_types.h:1004
bNodeSocketValueVector
Definition
DNA_node_types.h:990
Generated on
for Blender by
doxygen
1.16.1