124 lines
5.5 KiB
C++
124 lines
5.5 KiB
C++
/* SPDX-FileCopyrightText: 2023 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#pragma once
|
|
|
|
/** \file
|
|
* \ingroup RNA
|
|
*/
|
|
|
|
#include "RNA_types.hh"
|
|
|
|
struct ID;
|
|
struct bNodeSocketType;
|
|
struct bNodeTreeType;
|
|
struct bNodeType;
|
|
struct PointerRNA;
|
|
struct PropertyRNA;
|
|
struct bContext;
|
|
|
|
/* Types */
|
|
#define DEF_ENUM(id) extern const EnumPropertyItem id[];
|
|
#include "RNA_enum_items.hh"
|
|
|
|
extern const EnumPropertyItem *rna_enum_attribute_domain_itemf(ID *id,
|
|
bool include_instances,
|
|
bool *r_free);
|
|
|
|
/**
|
|
* For ID filters (#FILTER_ID_AC, #FILTER_ID_AR, ...) an int isn't enough. This version allows 64
|
|
* bit integers. So can't use the regular #EnumPropertyItem. Would be nice if RNA supported this
|
|
* itself.
|
|
*
|
|
* Meant to be used with #RNA_def_property_boolean_sdna() which supports 64 bit flags as well.
|
|
*/
|
|
struct IDFilterEnumPropertyItem {
|
|
const uint64_t flag;
|
|
const char *identifier;
|
|
const int icon;
|
|
const char *name;
|
|
const char *description;
|
|
};
|
|
extern const IDFilterEnumPropertyItem rna_enum_id_type_filter_items[];
|
|
|
|
/* API calls */
|
|
int rna_node_tree_idname_to_enum(const char *idname);
|
|
bNodeTreeType *rna_node_tree_type_from_enum(int value);
|
|
const EnumPropertyItem *rna_node_tree_type_itemf(void *data,
|
|
bool (*poll)(void *data, bNodeTreeType *),
|
|
bool *r_free);
|
|
|
|
int rna_node_socket_idname_to_enum(const char *idname);
|
|
bNodeSocketType *rna_node_socket_type_from_enum(int value);
|
|
const EnumPropertyItem *rna_node_socket_type_itemf(void *data,
|
|
bool (*poll)(void *data, bNodeSocketType *),
|
|
bool *r_free);
|
|
|
|
const EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
|
|
/**
|
|
* Generic functions, return an enum from library data, index is the position
|
|
* in the linked list can add more for different types as needed.
|
|
*/
|
|
const EnumPropertyItem *RNA_action_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
#if 0
|
|
EnumPropertyItem *RNA_action_local_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
#endif
|
|
const EnumPropertyItem *RNA_collection_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_collection_local_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_image_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_image_local_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_scene_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_scene_without_active_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_scene_local_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_movieclip_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_movieclip_local_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_mask_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
const EnumPropertyItem *RNA_mask_local_itemf(bContext *C,
|
|
PointerRNA *ptr,
|
|
PropertyRNA *prop,
|
|
bool *r_free);
|
|
|
|
/* Non confirming, utility function. */
|
|
const EnumPropertyItem *RNA_enum_node_tree_types_itemf_impl(bContext *C, bool *r_free);
|