Blender
V4.3
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 "
BKE_context.hh
"
10
#include "
BKE_lib_id.hh
"
11
12
#include "
UI_interface.hh
"
13
#include "
UI_resources.hh
"
14
15
#include "
COM_node_operation.hh
"
16
17
#include "
node_composite_util.hh
"
18
19
/* **************** SWITCH VIEW ******************** */
20
21
namespace
blender::nodes::node_composite_switchview_cc
{
22
23
static
void
node_declare
(
NodeDeclarationBuilder
&
b
)
24
{
25
b
.add_output<
decl::Color
>(
N_
(
"Image"
));
26
27
const
bNode
*node =
b
.node_or_null();
28
if
(node ==
nullptr
) {
29
return
;
30
}
31
32
Scene
*scene =
reinterpret_cast<
Scene
*
>
(node->id);
33
34
if
(scene !=
nullptr
) {
35
/* add the new views */
36
LISTBASE_FOREACH
(
SceneRenderView
*, srv, &scene->r.views) {
37
if
(srv->viewflag &
SCE_VIEW_DISABLE
) {
38
continue
;
39
}
40
b
.add_input<
decl::Color
>(
N_
(srv->name)).default_value({0.0f, 0.0f, 0.0f, 1.0f});
41
}
42
}
43
}
44
45
static
void
init_switch_view
(
const
bContext
*C,
PointerRNA
*
ptr
)
46
{
47
Scene
*scene =
CTX_data_scene
(C);
48
bNode
*node = (
bNode
*)
ptr
->
data
;
49
50
/* store scene for dynamic declaration */
51
node->id = (
ID
*)scene;
52
id_us_plus
(node->id);
53
}
54
55
using namespace
blender::realtime_compositor
;
56
57
class
SwitchViewOperation
:
public
NodeOperation
{
58
public
:
59
using
NodeOperation::NodeOperation
;
60
61
void
execute
()
override
62
{
63
Result
&result =
get_result
(
"Image"
);
64
65
/* A context that is not multi view, pass the first input through as a fallback. */
66
if
(
context
().get_view_name().is_empty()) {
67
Result
&input =
get_input
(
node
().input(0)->identifier);
68
input.pass_through(result);
69
return
;
70
}
71
72
Result
&input =
get_input
(
context
().get_view_name());
73
input.pass_through(result);
74
}
75
};
76
77
static
NodeOperation
*
get_compositor_operation
(
Context
&context,
DNode
node)
78
{
79
return
new
SwitchViewOperation
(context, node);
80
}
81
82
}
// namespace blender::nodes::node_composite_switchview_cc
83
84
void
register_node_type_cmp_switch_view
()
85
{
86
namespace
file_ns =
blender::nodes::node_composite_switchview_cc
;
87
88
static
blender::bke::bNodeType
ntype;
89
90
cmp_node_type_base
(&ntype, CMP_NODE_SWITCH_VIEW,
"Switch View"
,
NODE_CLASS_CONVERTER
);
91
ntype.
declare
= file_ns::node_declare;
92
ntype.
initfunc_api
= file_ns::init_switch_view;
93
ntype.
get_compositor_operation
= file_ns::get_compositor_operation;
94
95
blender::bke::node_register_type
(&ntype);
96
}
BKE_context.hh
CTX_data_scene
Scene * CTX_data_scene(const bContext *C)
Definition
blenkernel/intern/context.cc:1111
BKE_lib_id.hh
id_us_plus
void id_us_plus(ID *id)
Definition
lib_id.cc:351
NODE_CLASS_CONVERTER
#define NODE_CLASS_CONVERTER
Definition
BKE_node.hh:410
LISTBASE_FOREACH
#define LISTBASE_FOREACH(type, var, list)
Definition
BLI_listbase.h:372
COM_node_operation.hh
SCE_VIEW_DISABLE
@ SCE_VIEW_DISABLE
Definition
DNA_scene_types.h:323
UI_interface.hh
UI_resources.hh
blender::nodes::DNode
Definition
NOD_derived_node_tree.hh:71
blender::nodes::NodeDeclarationBuilder
Definition
NOD_node_declaration.hh:525
blender::nodes::decl::Color
Definition
NOD_socket_declarations.hh:129
blender::nodes::node_composite_switchview_cc::SwitchViewOperation
Definition
node_composite_switchview.cc:57
blender::nodes::node_composite_switchview_cc::SwitchViewOperation::execute
void execute() override
Definition
node_composite_switchview.cc:61
blender::realtime_compositor::Context
Definition
COM_context.hh:37
blender::realtime_compositor::NodeOperation
Definition
COM_node_operation.hh:31
blender::realtime_compositor::NodeOperation::NodeOperation
NodeOperation(Context &context, DNode node)
Definition
node_operation.cc:38
blender::realtime_compositor::NodeOperation::node
const DNode & node() const
Definition
node_operation.cc:102
blender::realtime_compositor::Operation::get_input
Result & get_input(StringRef identifier) const
Definition
operation.cc:144
blender::realtime_compositor::Operation::get_result
Result & get_result(StringRef identifier)
Definition
operation.cc:46
blender::realtime_compositor::Operation::context
Context & context() const
Definition
operation.cc:169
blender::realtime_compositor::Result
Definition
COM_result.hh:92
b
local_group_size(16, 16) .push_constant(Type b
Definition
compositor_morphological_distance_info.hh:16
blender::bke::node_register_type
void node_register_type(bNodeType *ntype)
Definition
node.cc:1708
blender::nodes::node_composite_switchview_cc
Definition
node_composite_switchview.cc:21
blender::nodes::node_composite_switchview_cc::get_compositor_operation
static NodeOperation * get_compositor_operation(Context &context, DNode node)
Definition
node_composite_switchview.cc:77
blender::nodes::node_composite_switchview_cc::node_declare
static void node_declare(NodeDeclarationBuilder &b)
Definition
node_composite_switchview.cc:23
blender::nodes::node_composite_switchview_cc::init_switch_view
static void init_switch_view(const bContext *C, PointerRNA *ptr)
Definition
node_composite_switchview.cc:45
blender::realtime_compositor
Definition
BKE_node.hh:80
register_node_type_cmp_switch_view
void register_node_type_cmp_switch_view()
Definition
node_composite_switchview.cc:84
cmp_node_type_base
void cmp_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
Definition
node_composite_util.cc:31
node_composite_util.hh
ID
Definition
DNA_ID.h:413
PointerRNA
Definition
RNA_types.hh:39
PointerRNA::data
void * data
Definition
RNA_types.hh:42
SceneRenderView
Definition
DNA_scene_types.h:308
Scene
Definition
DNA_scene_types.h:1988
bContext
Definition
blenkernel/intern/context.cc:61
bNode
Definition
DNA_node_types.h:357
blender::bke::bNodeType
Defines a node type.
Definition
BKE_node.hh:218
blender::bke::bNodeType::get_compositor_operation
NodeGetCompositorOperationFunction get_compositor_operation
Definition
BKE_node.hh:324
blender::bke::bNodeType::declare
NodeDeclareFunction declare
Definition
BKE_node.hh:347
blender::bke::bNodeType::initfunc_api
void(* initfunc_api)(const bContext *C, PointerRNA *ptr)
Definition
BKE_node.hh:280
N_
#define N_(msgid)
Definition
versioning_userdef.cc:57
ptr
PointerRNA * ptr
Definition
wm_files.cc:4126
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0