Blender V5.0
node_rna_define.cc
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#include "NOD_rna_define.hh"
6
7namespace blender::nodes {
8
9const EnumPropertyItem *enum_items_filter(const EnumPropertyItem *original_item_array,
10 FunctionRef<bool(const EnumPropertyItem &item)> fn)
11{
12 EnumPropertyItem *item_array = nullptr;
13 int items_len = 0;
14
15 for (const EnumPropertyItem *item = original_item_array; item->identifier != nullptr; item++) {
16 if (fn(*item)) {
17 RNA_enum_item_add(&item_array, &items_len, item);
18 }
19 }
20
21 RNA_enum_item_end(&item_array, &items_len);
22 return item_array;
23}
24
26 const char *identifier,
27 const char *ui_name,
28 const char *ui_description,
29 const EnumPropertyItem *static_items,
30 const EnumRNAAccessors accessors,
31 std::optional<int> default_value,
32 const EnumPropertyItemFunc item_func,
33 const bool allow_animation)
34{
35 PropertyRNA *prop = RNA_def_property(srna, identifier, PROP_ENUM, PROP_NONE);
37 prop, accessors.getter, accessors.setter, item_func, nullptr, nullptr);
38 RNA_def_property_enum_items(prop, static_items);
39 if (default_value.has_value()) {
40 RNA_def_property_enum_default(prop, *default_value);
41 }
42 RNA_def_property_ui_text(prop, ui_name, ui_description);
43 if (allow_animation) {
45 }
46 else {
49 }
51 return prop;
52}
53
55 const char *identifier,
56 const char *ui_name,
57 const char *ui_description,
58 const BooleanRNAAccessors accessors,
59 std::optional<bool> default_value,
60 bool allow_animation)
61{
62 PropertyRNA *prop = RNA_def_property(srna, identifier, PROP_BOOLEAN, PROP_NONE);
64 prop, accessors.getter, accessors.setter, nullptr, nullptr);
65 if (default_value.has_value()) {
66 RNA_def_property_boolean_default(prop, *default_value);
67 }
68 RNA_def_property_ui_text(prop, ui_name, ui_description);
69 if (!allow_animation) {
71 }
74 return prop;
75}
76
77} // namespace blender::nodes
void rna_Node_socket_update(Main *bmain, Scene *scene, PointerRNA *ptr)
void rna_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr)
const EnumPropertyItem *(*)(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free) EnumPropertyItemFunc
Definition RNA_types.hh:830
@ PROP_BOOLEAN
Definition RNA_types.hh:162
@ PROP_ENUM
Definition RNA_types.hh:166
@ PROP_ANIMATABLE
Definition RNA_types.hh:319
@ PROP_NONE
Definition RNA_types.hh:233
#define NC_NODE
Definition WM_types.hh:394
#define NA_EDITED
Definition WM_types.hh:584
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)
PropertyRNA * RNA_def_node_boolean(StructRNA *srna, const char *identifier, const char *ui_name, const char *ui_description, const BooleanRNAAccessors accessors, std::optional< bool > default_value, bool allow_animation)
const EnumPropertyItem * enum_items_filter(const EnumPropertyItem *original_item_array, FunctionRef< bool(const EnumPropertyItem &item)> fn)
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_boolean_default(PropertyRNA *prop, bool value)
void RNA_def_property_update_runtime(PropertyRNA *prop, RNAPropertyUpdateFunc func)
void RNA_def_property_boolean_funcs_runtime(PropertyRNA *prop, BooleanPropertyGetFunc getfunc, BooleanPropertySetFunc setfunc, BooleanPropertyGetTransformFunc get_transform_fn, BooleanPropertySetTransformFunc set_transform_fn)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_property_update_notifier(PropertyRNA *prop, const int noteflag)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs_runtime(PropertyRNA *prop, EnumPropertyGetFunc getfunc, EnumPropertySetFunc setfunc, EnumPropertyItemFunc itemfunc, EnumPropertyGetTransformFunc get_transform_fn, EnumPropertySetTransformFunc set_transform_fn)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
const char * identifier
Definition RNA_types.hh:657