Blender V4.3
NOD_rna_define.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
7#include <optional>
8
9#include "BLI_function_ref.hh"
10
11#include "RNA_define.hh"
12
13#include "WM_types.hh" /* For notifier defines */
14
15void rna_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr);
18
19namespace blender::nodes {
20
30
35#define NOD_inline_enum_accessors(member) \
36 EnumRNAAccessors( \
37 [](PointerRNA *ptr, PropertyRNA * /*prop*/) -> int { \
38 const bNode &node = *static_cast<const bNode *>(ptr->data); \
39 return node.member; \
40 }, \
41 [](PointerRNA *ptr, PropertyRNA * /*prop*/, const int value) { \
42 bNode &node = *static_cast<bNode *>(ptr->data); \
43 node.member = value; \
44 })
45
50#define NOD_storage_enum_accessors(member) \
51 EnumRNAAccessors( \
52 [](PointerRNA *ptr, PropertyRNA * /*prop*/) -> int { \
53 const bNode &node = *static_cast<const bNode *>(ptr->data); \
54 return node_storage(node).member; \
55 }, \
56 [](PointerRNA *ptr, PropertyRNA * /*prop*/, const int value) { \
57 bNode &node = *static_cast<bNode *>(ptr->data); \
58 node_storage(node).member = value; \
59 })
60
61const EnumPropertyItem *enum_items_filter(const EnumPropertyItem *original_item_array,
62 FunctionRef<bool(const EnumPropertyItem &item)> fn);
63
65 const char *identifier,
66 const char *ui_name,
67 const char *ui_description,
68 const EnumPropertyItem *static_items,
69 const EnumRNAAccessors accessors,
70 std::optional<int> default_value = std::nullopt,
71 const EnumPropertyItemFunc item_func = nullptr,
72 bool allow_animation = false);
73
74} // namespace blender::nodes
void rna_Node_socket_update(Main *bmain, Scene *scene, PointerRNA *ptr)
void rna_Node_update_relations(Main *bmain, Scene *scne, PointerRNA *ptr)
void rna_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr)
int(*)(PointerRNA *ptr, PropertyRNA *prop) EnumPropertyGetFunc
Definition RNA_types.hh:605
void(*)(PointerRNA *ptr, PropertyRNA *prop, int value) EnumPropertySetFunc
Definition RNA_types.hh:606
const EnumPropertyItem *(*)(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free) EnumPropertyItemFunc
Definition RNA_types.hh:608
PropertyRNA * RNA_def_node_enum(StructRNA *srna, const char *identifier, const char *ui_name, const char *ui_description, const EnumPropertyItem *static_items, const EnumRNAAccessors accessors, std::optional< int > default_value, const EnumPropertyItemFunc item_func, const bool allow_animation)
const EnumPropertyItem * enum_items_filter(const EnumPropertyItem *original_item_array, FunctionRef< bool(const EnumPropertyItem &item)> fn)
EnumRNAAccessors(EnumPropertyGetFunc getter, EnumPropertySetFunc setter)
PointerRNA * ptr
Definition wm_files.cc:4126