[Bf-blender-cvs] [b0223eb] soc-2016-layer_manager: Expose LayerTree and LayerTreeItem in RNA
Julian Eisel
noreply at git.blender.org
Sat Jun 18 20:47:48 CEST 2016
Commit: b0223ebc071caa447aff0800dd2e249850573358
Author: Julian Eisel
Date: Sat Jun 18 20:46:47 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rBb0223ebc071caa447aff0800dd2e249850573358
Expose LayerTree and LayerTreeItem in RNA
Will be used for custom property support.
===================================================================
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesdna/DNA_space_types.h
M source/blender/makesrna/RNA_access.h
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 6d106a5..63fc6aa 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -49,6 +49,7 @@ extern "C" {
#include "DNA_gpu_types.h"
#include "DNA_userdef_types.h"
+struct bContext;
struct CurveMapping;
struct Object;
struct Brush;
@@ -64,6 +65,7 @@ struct SceneStats;
struct bGPdata;
struct MovieClip;
struct ColorSpace;
+struct uiLayout;
/* ************************************************************* */
/* Scene Data */
@@ -77,6 +79,53 @@ typedef struct Base {
struct Object *object;
} Base;
+/* ------------------------------------------- */
+/* Layers */
+
+typedef struct LayerTree {
+ int type; /* eLayerTree_Type */
+
+ unsigned int tot_items; /* total items of *all hierarchy levels*, not only what's in "items" below */
+ /* LayerTreeItem - Only items of the first level in the hierarchy, these may have children then.
+ * TODO check if worth using array instead */
+ ListBase items;
+ /* Array of all layer tree items, including all childs. Using array in hope it speeds up iterations. */
+ struct LayerTreeItem **items_all;
+} LayerTree;
+
+/**
+ * \brief An item of the layer tree.
+ * Used as a base struct for the individual layer tree item types (layer, layer group, compositing layer, etc).
+ */
+typedef struct LayerTreeItem {
+ struct LayerTreeItem *next, *prev;
+
+ int type; /* eLayerTreeItem_Type */
+ int index; /* index of the item - stored to avoid loockups */
+ char name[64]; /* MAX_NAME */
+
+ struct LayerTree *tree; /* pointer back to layer tree - TODO check if needed */
+ struct LayerTreeItem *parent; /* the group this item belongs to */
+ ListBase childs; /* LayerTreeItem */
+
+ /* item is grayed out if this check fails */
+ short (*poll)(const struct bContext *, struct LayerTreeItem *); /* LayerItemPollFunc */
+ /* drawing of the item in the list */
+ void (*draw)(const struct bContext *, struct LayerTreeItem *, struct uiLayout *); /* LayerItemDrawFunc */
+ /* drawing of the expanded layer settings (gear wheel icon) */
+ void (*draw_settings)(const struct bContext *, struct LayerTreeItem *, struct uiLayout *); /* LayerItemDrawSettingsFunc */
+
+ /* Optional free callback. Don't free item itself! */
+ void (*free)(struct LayerTreeItem *);
+} LayerTreeItem;
+
+typedef struct LayerTypeObject {
+ LayerTreeItem litem;
+ Base **bases; /* Array of objects assigned to this layer. */
+ unsigned int tot_bases; /* amount of objects assigned to this layer */
+ int pad;
+} LayerTypeObject;
+
/* ************************************************************* */
/* Output Format Data */
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 4f071da..3fa7857 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -1337,50 +1337,6 @@ typedef enum eSpaceClip_GPencil_Source {
/* Layer Manager ======================================= */
-typedef struct LayerTree {
- int type; /* eLayerTree_Type */
-
- unsigned int tot_items; /* total items of *all hierarchy levels*, not only what's in "items" below */
- /* LayerTreeItem - Only items of the first level in the hierarchy, these may have children then.
- * TODO check if worth using array instead */
- ListBase items;
- /* Array of all layer tree items, including all childs. Using array in hope it speeds up iterations. */
- struct LayerTreeItem **items_all;
-} LayerTree;
-
-/**
- * \brief An item of the layer tree.
- * Used as a base struct for the individual layer tree item types (layer, layer group, compositing layer, etc).
- */
-typedef struct LayerTreeItem {
- struct LayerTreeItem *next, *prev;
-
- int type; /* eLayerTreeItem_Type */
- int index; /* index of the item - stored to avoid loockups */
- char name[64]; /* MAX_NAME */
-
- struct LayerTree *tree; /* pointer back to layer tree - TODO check if needed */
- struct LayerTreeItem *parent; /* the group this item belongs to */
- ListBase childs; /* LayerTreeItem */
-
- /* item is grayed out if this check fails */
- short (*poll)(const struct bContext *, struct LayerTreeItem *); /* LayerItemPollFunc */
- /* drawing of the item in the list */
- void (*draw)(const struct bContext *, struct LayerTreeItem *, struct uiLayout *); /* LayerItemDrawFunc */
- /* drawing of the expanded layer settings (gear wheel icon) */
- void (*draw_settings)(const struct bContext *, struct LayerTreeItem *, struct uiLayout *); /* LayerItemDrawSettingsFunc */
-
- /* Optional free callback. Don't free item itself! */
- void (*free)(struct LayerTreeItem *);
-} LayerTreeItem;
-
-typedef struct LayerTypeObject {
- LayerTreeItem litem;
- Base **bases; /* Array of objects assigned to this layer. */
- unsigned int tot_bases; /* amount of objects assigned to this layer */
- int pad;
-} LayerTypeObject;
-
/* SpaceLayers->flag */
typedef enum eSpaceLayers_Flag {
SL_LAYERDATA_REFRESH = (1 << 0), /* recreate/update SpaceLayers layer data, needed for undo/read/write */
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 92ed30d..addfc6c 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -311,6 +311,8 @@ extern StructRNA RNA_LaplacianSmoothModifier;
extern StructRNA RNA_Lattice;
extern StructRNA RNA_LatticeModifier;
extern StructRNA RNA_LatticePoint;
+extern StructRNA RNA_LayerTree;
+extern StructRNA RNA_LayerTreeItem;
extern StructRNA RNA_Library;
extern StructRNA RNA_LimitDistanceConstraint;
extern StructRNA RNA_LimitLocationConstraint;
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 533c0f8..bb6564d 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -411,6 +411,7 @@ EnumPropertyItem rna_enum_bake_pass_filter_type_items[] = {
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_mesh_types.h"
+#include "DNA_space_types.h"
#include "DNA_text_types.h"
#include "RNA_access.h"
@@ -788,6 +789,12 @@ static void rna_Scene_all_keyingsets_next(CollectionPropertyIterator *iter)
iter->valid = (internal->link != NULL);
}
+static void rna_layer_tree_items_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
+{
+ LayerTree *ltree = ptr->data;
+ rna_iterator_array_begin(iter, ltree->items_all, sizeof(LayerTreeItem *), ltree->tot_items, 0, NULL);
+}
+
static int rna_RenderSettings_stereoViews_skip(CollectionPropertyIterator *iter, void *UNUSED(data))
{
ListBaseIterator *internal = &iter->internal.listbase;
@@ -6421,6 +6428,30 @@ static void rna_def_display_safe_areas(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE | ND_DRAW_RENDER_VIEWPORT, NULL);
}
+static void rna_def_layer_tree_item(BlenderRNA *brna)
+{
+ StructRNA *srna = RNA_def_struct(brna, "LayerTreeItem", NULL);
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Name", "Name of the item");
+}
+
+static void rna_def_layer_tree(BlenderRNA *brna)
+{
+ StructRNA *srna = RNA_def_struct(brna, "LayerTree", NULL);
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "tree_items", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_collection_sdna(prop, NULL, "items_all", NULL);
+ RNA_def_property_struct_type(prop, "LayerTreeItem");
+ RNA_def_property_ui_text(prop, "Layer Items", "The items of the layer tree that represent the "
+ "layer types (object layer, layer group, compositing layer, ...)");
+ RNA_def_property_collection_funcs(prop, "rna_layer_tree_items_begin", "rna_iterator_array_next",
+ "rna_iterator_array_end", "rna_iterator_array_get", NULL, NULL, NULL, NULL);
+
+ rna_def_layer_tree_item(brna);
+}
void RNA_def_scene(BlenderRNA *brna)
{
@@ -6513,6 +6544,9 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_int_funcs(prop, "rna_Scene_active_layer_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Active Layer", "Active scene layer index");
+ prop = RNA_def_property(srna, "object_layers", PROP_POINTER, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Object Layers", "Layer tree which contains the object layers");
+
/* Frame Range Stuff */
prop = RNA_def_property(srna, "frame_current", PROP_INT, PROP_TIME);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
@@ -6847,6 +6881,7 @@ void RNA_def_scene(BlenderRNA *brna)
/* *** Animated *** */
rna_def_scene_render_data(brna);
rna_def_scene_render_layer(brna);
+ rna_def_layer_tree(brna);
rna_def_gpu_fx(brna);
rna_def_scene_render_view(brna);
More information about the Bf-blender-cvs
mailing list