Blender  V3.3
node_composite_defocus.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2006 Blender Foundation. All rights reserved. */
3 
8 #include <climits>
9 
10 #include "RNA_access.h"
11 
12 #include "UI_interface.h"
13 #include "UI_resources.h"
14 
15 #include "node_composite_util.hh"
16 
17 /* ************ Defocus Node ****************** */
18 
20 
22 {
23  b.add_input<decl::Color>(N_("Image")).default_value({1.0f, 1.0f, 1.0f, 1.0f});
24  b.add_input<decl::Float>(N_("Z")).default_value(1.0f).min(0.0f).max(1.0f);
25  b.add_output<decl::Color>(N_("Image"));
26 }
27 
29 {
30  /* defocus node */
31  NodeDefocus *nbd = MEM_cnew<NodeDefocus>(__func__);
32  nbd->bktype = 0;
33  nbd->rotation = 0.0f;
34  nbd->preview = 1;
35  nbd->gamco = 0;
36  nbd->samples = 16;
37  nbd->fstop = 128.0f;
38  nbd->maxblur = 16;
39  nbd->bthresh = 1.0f;
40  nbd->scale = 1.0f;
41  nbd->no_zbuf = 1;
42  node->storage = nbd;
43 }
44 
46 {
47  uiLayout *sub, *col;
48 
49  col = uiLayoutColumn(layout, false);
50  uiItemL(col, IFACE_("Bokeh Type:"), ICON_NONE);
51  uiItemR(col, ptr, "bokeh", UI_ITEM_R_SPLIT_EMPTY_NAME, "", ICON_NONE);
52  uiItemR(col, ptr, "angle", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
53 
54  uiItemR(layout, ptr, "use_gamma_correction", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
55 
56  col = uiLayoutColumn(layout, false);
57  uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer") == true);
58  uiItemR(col, ptr, "f_stop", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
59 
60  uiItemR(layout, ptr, "blur_max", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
61  uiItemR(layout, ptr, "threshold", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
62 
63  col = uiLayoutColumn(layout, false);
64  uiItemR(col, ptr, "use_preview", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
65 
66  uiTemplateID(layout,
67  C,
68  ptr,
69  "scene",
70  nullptr,
71  nullptr,
72  nullptr,
74  false,
75  nullptr);
76 
77  col = uiLayoutColumn(layout, false);
78  uiItemR(col, ptr, "use_zbuffer", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
79  sub = uiLayoutColumn(col, false);
80  uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer") == false);
81  uiItemR(sub, ptr, "z_scale", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
82 }
83 
84 } // namespace blender::nodes::node_composite_defocus_cc
85 
87 {
89 
90  static bNodeType ntype;
91 
97 
98  nodeRegisterType(&ntype);
99 }
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_DEFOCUS
Definition: BKE_node.h:1239
#define NODE_CLASS_OP_FILTER
Definition: BKE_node.h:349
void nodeRegisterType(struct bNodeType *ntype)
Definition: node.cc:1357
#define UNUSED(x)
#define IFACE_(msgid)
#define C
Definition: RandGen.cpp:25
void uiLayoutSetActive(uiLayout *layout, bool active)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemL(uiLayout *layout, const char *name, int icon)
@ UI_ITEM_R_SPLIT_EMPTY_NAME
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void uiTemplateID(uiLayout *layout, const struct bContext *C, struct PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, int filter, bool live_icon, const char *text)
@ UI_TEMPLATE_ID_FILTER_ALL
OperationNode * node
bNodeTree * ntree
uint col
static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA *ptr)
static void cmp_node_defocus_declare(NodeDeclarationBuilder &b)
static void node_composit_init_defocus(bNodeTree *UNUSED(ntree), bNode *node)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
void register_node_type_cmp_defocus()
void cmp_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
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
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
Definition: rna_access.c:4863
Defines a node type.
Definition: BKE_node.h:226
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
Definition: BKE_node.h:244
NodeDeclareFunction declare
Definition: BKE_node.h:324
#define N_(msgid)
PointerRNA * ptr
Definition: wm_files.c:3480