Blender  V3.3
node_composite_sepcomb_color.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include "node_composite_util.hh"
4 
6 {
7  NodeCMPCombSepColor *data = MEM_cnew<NodeCMPCombSepColor>(__func__);
9  data->ycc_mode = BLI_YCC_ITU_BT709;
10  node->storage = data;
11 }
12 
14 {
15  bNodeSocket *sock1 = (bNodeSocket *)sockets->first;
16  bNodeSocket *sock2 = sock1->next;
17  bNodeSocket *sock3 = sock2->next;
18 
19  node_sock_label_clear(sock1);
20  node_sock_label_clear(sock2);
21  node_sock_label_clear(sock3);
22 
23  switch (mode) {
25  node_sock_label(sock1, "Red");
26  node_sock_label(sock2, "Green");
27  node_sock_label(sock3, "Blue");
28  break;
30  node_sock_label(sock1, "Hue");
31  node_sock_label(sock2, "Saturation");
32  node_sock_label(sock3, "Value");
33  break;
35  node_sock_label(sock1, "Hue");
36  node_sock_label(sock2, "Saturation");
37  node_sock_label(sock3, "Lightness");
38  break;
40  node_sock_label(sock1, "Y");
41  node_sock_label(sock2, "Cb");
42  node_sock_label(sock3, "Cr");
43  break;
45  node_sock_label(sock1, "Y");
46  node_sock_label(sock2, "U");
47  node_sock_label(sock3, "V");
48  break;
49  default:
51  break;
52  }
53 }
54 
55 /* **************** SEPARATE COLOR ******************** */
56 
58 
60 {
61  b.add_input<decl::Color>(N_("Image")).default_value({1.0f, 1.0f, 1.0f, 1.0f});
62  b.add_output<decl::Float>(N_("Red"));
63  b.add_output<decl::Float>(N_("Green"));
64  b.add_output<decl::Float>(N_("Blue"));
65  b.add_output<decl::Float>(N_("Alpha"));
66 }
67 
69 {
70  const NodeCMPCombSepColor *storage = (NodeCMPCombSepColor *)node->storage;
72 }
73 
74 } // namespace blender::nodes::node_composite_separate_color_cc
75 
77 {
79 
80  static bNodeType ntype;
81 
86  &ntype, "NodeCMPCombSepColor", node_free_standard_storage, node_copy_standard_storage);
88 
89  nodeRegisterType(&ntype);
90 }
91 
92 /* **************** COMBINE COLOR ******************** */
93 
95 
97 {
98  b.add_input<decl::Float>(N_("Red")).default_value(0.0f).min(0.0f).max(1.0f).subtype(PROP_FACTOR);
99  b.add_input<decl::Float>(N_("Green"))
100  .default_value(0.0f)
101  .min(0.0f)
102  .max(1.0f)
103  .subtype(PROP_FACTOR);
104  b.add_input<decl::Float>(N_("Blue"))
105  .default_value(0.0f)
106  .min(0.0f)
107  .max(1.0f)
108  .subtype(PROP_FACTOR);
109  b.add_input<decl::Float>(N_("Alpha"))
110  .default_value(1.0f)
111  .min(0.0f)
112  .max(1.0f)
113  .subtype(PROP_FACTOR);
114  b.add_output<decl::Color>(N_("Image"));
115 }
116 
118 {
119  const NodeCMPCombSepColor *storage = (NodeCMPCombSepColor *)node->storage;
121 }
122 
123 } // namespace blender::nodes::node_composite_combine_color_cc
124 
126 {
128 
129  static bNodeType ntype;
130 
135  &ntype, "NodeCMPCombSepColor", node_free_standard_storage, node_copy_standard_storage);
137 
138  nodeRegisterType(&ntype);
139 }
void node_type_update(struct bNodeType *ntype, void(*updatefunc)(struct bNodeTree *ntree, struct bNode *node))
Definition: node.cc:4443
#define NODE_CLASS_CONVERTER
Definition: BKE_node.h:351
#define CMP_NODE_SEPARATE_COLOR
Definition: BKE_node.h:1299
void node_type_init(struct bNodeType *ntype, void(*initfunc)(struct bNodeTree *ntree, struct bNode *node))
Definition: node.cc:4390
void node_type_storage(struct bNodeType *ntype, const char *storagename, void(*freefunc)(struct bNode *node), void(*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, const struct bNode *src_node))
Definition: node.cc:4426
#define CMP_NODE_COMBINE_COLOR
Definition: BKE_node.h:1298
void nodeRegisterType(struct bNodeType *ntype)
Definition: node.cc:1357
#define BLI_assert_unreachable()
Definition: BLI_assert.h:93
#define BLI_YCC_ITU_BT709
#define UNUSED(x)
CMPNodeCombSepColorMode
@ CMP_NODE_COMBSEP_COLOR_YCC
@ CMP_NODE_COMBSEP_COLOR_YUV
@ CMP_NODE_COMBSEP_COLOR_RGB
@ CMP_NODE_COMBSEP_COLOR_HSV
@ CMP_NODE_COMBSEP_COLOR_HSL
@ PROP_FACTOR
Definition: RNA_types.h:144
OperationNode * node
bNodeTree * ntree
static void cmp_node_combine_color_declare(NodeDeclarationBuilder &b)
static void cmp_node_combine_color_update(bNodeTree *UNUSED(ntree), bNode *node)
static void cmp_node_separate_color_declare(NodeDeclarationBuilder &b)
static void cmp_node_separate_color_update(bNodeTree *UNUSED(ntree), bNode *node)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static void node_cmp_combsep_color_label(const ListBase *sockets, CMPNodeCombSepColorMode mode)
void register_node_type_cmp_combine_color()
static void node_cmp_combsep_color_init(bNodeTree *UNUSED(ntree), bNode *node)
void register_node_type_cmp_separate_color()
void cmp_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
void node_sock_label_clear(bNodeSocket *sock)
Definition: node_util.c:81
void node_sock_label(bNodeSocket *sock, const char *name)
Definition: node_util.c:76
void node_copy_standard_storage(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
Definition: node_util.c:55
void node_free_standard_storage(bNode *node)
Definition: node_util.c:43
void * first
Definition: DNA_listBase.h:31
struct bNodeSocket * next
Defines a node type.
Definition: BKE_node.h:226
NodeDeclareFunction declare
Definition: BKE_node.h:324
#define N_(msgid)