Blender  V3.3
node_composite_scale.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 "RNA_access.h"
9 
10 #include "UI_interface.h"
11 #include "UI_resources.h"
12 
13 #include "node_composite_util.hh"
14 
15 /* **************** Scale ******************** */
16 
18 
20 {
21  b.add_input<decl::Color>(N_("Image")).default_value({1.0f, 1.0f, 1.0f, 1.0f});
22  b.add_input<decl::Float>(N_("X")).default_value(1.0f).min(0.0001f).max(CMP_SCALE_MAX);
23  b.add_input<decl::Float>(N_("Y")).default_value(1.0f).min(0.0001f).max(CMP_SCALE_MAX);
24  b.add_output<decl::Color>(N_("Image"));
25 }
26 
28 {
29  bNodeSocket *sock;
30  bool use_xy_scale = ELEM(node->custom1, CMP_SCALE_RELATIVE, CMP_SCALE_ABSOLUTE);
31 
32  /* Only show X/Y scale factor inputs for modes using them! */
33  for (sock = (bNodeSocket *)node->inputs.first; sock; sock = sock->next) {
34  if (STR_ELEM(sock->name, "X", "Y")) {
35  nodeSetSocketAvailability(ntree, sock, use_xy_scale);
36  }
37  }
38 }
39 
41 {
42  uiItemR(layout, ptr, "space", UI_ITEM_R_SPLIT_EMPTY_NAME, "", ICON_NONE);
43 
44  if (RNA_enum_get(ptr, "space") == CMP_SCALE_RENDERPERCENT) {
45  uiLayout *row;
46  uiItemR(layout,
47  ptr,
48  "frame_method",
50  nullptr,
51  ICON_NONE);
52  row = uiLayoutRow(layout, true);
53  uiItemR(row, ptr, "offset_x", UI_ITEM_R_SPLIT_EMPTY_NAME, "X", ICON_NONE);
54  uiItemR(row, ptr, "offset_y", UI_ITEM_R_SPLIT_EMPTY_NAME, "Y", ICON_NONE);
55  }
56 }
57 
58 } // namespace blender::nodes::node_composite_scale_cc
59 
61 {
62  namespace file_ns = blender::nodes::node_composite_scale_cc;
63 
64  static bNodeType ntype;
65 
70 
71  nodeRegisterType(&ntype);
72 }
#define CMP_SCALE_ABSOLUTE
Definition: BKE_node.h:1317
#define CMP_NODE_SCALE
Definition: BKE_node.h:1225
void node_type_update(struct bNodeType *ntype, void(*updatefunc)(struct bNodeTree *ntree, struct bNode *node))
Definition: node.cc:4443
void nodeSetSocketAvailability(struct bNodeTree *ntree, struct bNodeSocket *sock, bool is_available)
Definition: node.cc:3664
#define CMP_SCALE_RENDERPERCENT
Definition: BKE_node.h:1319
#define CMP_SCALE_RELATIVE
Definition: BKE_node.h:1316
#define NODE_CLASS_DISTORT
Definition: BKE_node.h:353
void nodeRegisterType(struct bNodeType *ntype)
Definition: node.cc:1357
#define STR_ELEM(...)
Definition: BLI_string.h:539
#define UNUSED(x)
#define ELEM(...)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
@ UI_ITEM_R_SPLIT_EMPTY_NAME
@ UI_ITEM_R_EXPAND
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
OperationNode * node
bNodeTree * ntree
static void cmp_node_scale_declare(NodeDeclarationBuilder &b)
static void node_composite_update_scale(bNodeTree *ntree, bNode *node)
static void node_composit_buts_scale(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
void register_node_type_cmp_scale()
void cmp_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
#define CMP_SCALE_MAX
int RNA_enum_get(PointerRNA *ptr, const char *name)
Definition: rna_access.c:5004
char name[64]
struct bNodeSocket * next
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