Blender
V4.5
source
blender
nodes
composite
nodes
node_composite_switchview.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2006 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
9
#include "
BLI_listbase.h
"
10
11
#include "
BKE_context.hh
"
12
#include "
BKE_lib_id.hh
"
13
14
#include "
UI_interface.hh
"
15
16
#include "
COM_node_operation.hh
"
17
18
#include "
node_composite_util.hh
"
19
20
/* **************** SWITCH VIEW ******************** */
21
22
namespace
blender::nodes::node_composite_switchview_cc
{
23
24
static
void
node_declare
(
NodeDeclarationBuilder
&
b
)
25
{
26
b
.add_output<
decl::Color
>(
N_
(
"Image"
));
27
28
const
bNode
*
node
=
b
.node_or_null();
29
if
(
node
==
nullptr
) {
30
return
;
31
}
32
33
Scene
*
scene
=
reinterpret_cast<
Scene
*
>
(
node
->id);
34
35
if
(
scene
!=
nullptr
) {
36
/* add the new views */
37
LISTBASE_FOREACH
(
SceneRenderView
*, srv, &
scene
->
r
.
views
) {
38
if
(srv->viewflag &
SCE_VIEW_DISABLE
) {
39
continue
;
40
}
41
b
.add_input<
decl::Color
>(
N_
(srv->name)).default_value({0.0f, 0.0f, 0.0f, 1.0f});
42
}
43
}
44
}
45
46
static
void
init_switch_view
(
const
bContext
*C,
PointerRNA
*
ptr
)
47
{
48
Scene
*
scene
=
CTX_data_scene
(C);
49
bNode
*
node
= (
bNode
*)
ptr
->
data
;
50
51
/* store scene for dynamic declaration */
52
node
->id = (
ID
*)
scene
;
53
id_us_plus
(
node
->id);
54
}
55
56
using namespace
blender::compositor
;
57
58
class
SwitchViewOperation
:
public
NodeOperation
{
59
public
:
60
using
NodeOperation::NodeOperation
;
61
62
void
execute
()
override
63
{
64
Result
&
result
=
get_result
(
"Image"
);
65
66
/* A context that is not multi view, pass the first input through as a fallback. */
67
if
(
context
().get_view_name().is_empty()) {
68
const
Result
&
input
=
get_input
(
node
().
input
(0)->identifier);
69
result
.share_data(
input
);
70
return
;
71
}
72
73
const
Result
&
input
=
get_input
(
context
().get_view_name());
74
result
.share_data(
input
);
75
}
76
};
77
78
static
NodeOperation
*
get_compositor_operation
(
Context
&context,
DNode
node
)
79
{
80
return
new
SwitchViewOperation
(context,
node
);
81
}
82
83
}
// namespace blender::nodes::node_composite_switchview_cc
84
85
static
void
register_node_type_cmp_switch_view
()
86
{
87
namespace
file_ns =
blender::nodes::node_composite_switchview_cc
;
88
89
static
blender::bke::bNodeType
ntype;
90
91
cmp_node_type_base
(&ntype,
"CompositorNodeSwitchView"
,
CMP_NODE_SWITCH_VIEW
);
92
ntype.
ui_name
=
"Switch View"
;
93
ntype.
ui_description
=
"Combine the views (left and right) into a single stereo 3D output"
;
94
ntype.
enum_name_legacy
=
"VIEWSWITCH"
;
95
ntype.
nclass
=
NODE_CLASS_CONVERTER
;
96
ntype.
declare
= file_ns::node_declare;
97
ntype.
initfunc_api
= file_ns::init_switch_view;
98
ntype.
get_compositor_operation
= file_ns::get_compositor_operation;
99
100
blender::bke::node_register_type
(ntype);
101
}
102
NOD_REGISTER_NODE
(
register_node_type_cmp_switch_view
)
BKE_context.hh
CTX_data_scene
Scene * CTX_data_scene(const bContext *C)
Definition
blenkernel/intern/context.cc:1151
BKE_lib_id.hh
id_us_plus
void id_us_plus(ID *id)
Definition
lib_id.cc:353
NODE_CLASS_CONVERTER
#define NODE_CLASS_CONVERTER
Definition
BKE_node.hh:439
CMP_NODE_SWITCH_VIEW
#define CMP_NODE_SWITCH_VIEW
Definition
BKE_node_legacy_types.hh:244
result
double result
Definition
BLI_expr_pylike_eval_test.cc:351
BLI_listbase.h
LISTBASE_FOREACH
#define LISTBASE_FOREACH(type, var, list)
Definition
BLI_listbase.h:363
COM_node_operation.hh
SCE_VIEW_DISABLE
@ SCE_VIEW_DISABLE
Definition
DNA_scene_types.h:384
NOD_REGISTER_NODE
#define NOD_REGISTER_NODE(REGISTER_FUNC)
Definition
NOD_register.hh:34
UI_interface.hh
blender::compositor::Context
Definition
COM_context.hh:44
blender::compositor::NodeOperation
Definition
COM_node_operation.hh:31
blender::compositor::NodeOperation::node
const DNode & node() const
Definition
node_operation.cc:128
blender::compositor::NodeOperation::NodeOperation
NodeOperation(Context &context, DNode node)
Definition
node_operation.cc:30
blender::compositor::Operation::get_result
Result & get_result(StringRef identifier)
Definition
operation.cc:39
blender::compositor::Operation::context
Context & context() const
Definition
operation.cc:163
blender::compositor::Operation::get_input
Result & get_input(StringRef identifier) const
Definition
operation.cc:138
blender::compositor::Result
Definition
COM_result.hh:95
blender::nodes::DNode
Definition
NOD_derived_node_tree.hh:71
blender::nodes::NodeDeclarationBuilder
Definition
NOD_node_declaration.hh:629
blender::nodes::decl::Color
Definition
NOD_socket_declarations.hh:133
blender::nodes::node_composite_switchview_cc::SwitchViewOperation
Definition
node_composite_switchview.cc:58
blender::nodes::node_composite_switchview_cc::SwitchViewOperation::execute
void execute() override
Definition
node_composite_switchview.cc:62
b
b
Definition
compositor_morphological_distance_info.hh:24
node
OperationNode * node
Definition
deg_builder_cycle.cc:38
scene
Scene scene
Definition
deg_eval_copy_on_write.cc:98
ptr
PointerRNA ptr
Definition
geometry_nodes_caller_ui.cc:49
input
#define input
Definition
gpu_glsl_cpp_stubs.hh:1059
blender::bke::node_register_type
void node_register_type(bNodeType &ntype)
Definition
node.cc:2748
blender::compositor
Definition
BKE_node.hh:76
blender::nodes::node_composite_switchview_cc
Definition
node_composite_switchview.cc:22
blender::nodes::node_composite_switchview_cc::get_compositor_operation
static NodeOperation * get_compositor_operation(Context &context, DNode node)
Definition
node_composite_switchview.cc:78
blender::nodes::node_composite_switchview_cc::node_declare
static void node_declare(NodeDeclarationBuilder &b)
Definition
node_composite_switchview.cc:24
blender::nodes::node_composite_switchview_cc::init_switch_view
static void init_switch_view(const bContext *C, PointerRNA *ptr)
Definition
node_composite_switchview.cc:46
register_node_type_cmp_switch_view
static void register_node_type_cmp_switch_view()
Definition
node_composite_switchview.cc:85
cmp_node_type_base
void cmp_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
Definition
node_composite_util.cc:33
node_composite_util.hh
ID
Definition
DNA_ID.h:404
PointerRNA
Definition
RNA_types.hh:50
PointerRNA::data
void * data
Definition
RNA_types.hh:53
RenderData::views
ListBase views
Definition
DNA_scene_types.h:900
SceneRenderView
Definition
DNA_scene_types.h:371
Scene
Definition
DNA_scene_types.h:2106
Scene::r
struct RenderData r
Definition
DNA_scene_types.h:2153
bContext
Definition
blenkernel/intern/context.cc:58
bNode
Definition
DNA_node_types.h:415
blender::bke::bNodeType
Defines a node type.
Definition
BKE_node.hh:226
blender::bke::bNodeType::ui_description
std::string ui_description
Definition
BKE_node.hh:232
blender::bke::bNodeType::ui_name
std::string ui_name
Definition
BKE_node.hh:231
blender::bke::bNodeType::get_compositor_operation
NodeGetCompositorOperationFunction get_compositor_operation
Definition
BKE_node.hh:336
blender::bke::bNodeType::nclass
short nclass
Definition
BKE_node.hh:239
blender::bke::bNodeType::enum_name_legacy
const char * enum_name_legacy
Definition
BKE_node.hh:235
blender::bke::bNodeType::declare
NodeDeclareFunction declare
Definition
BKE_node.hh:355
blender::bke::bNodeType::initfunc_api
void(* initfunc_api)(const bContext *C, PointerRNA *ptr)
Definition
BKE_node.hh:290
N_
#define N_(msgid)
Definition
versioning_userdef.cc:63
Generated on Fri Apr 3 2026 06:33:18 for Blender by
doxygen
1.11.0