[Bf-blender-cvs] [0c093a3] soc-2016-layer_manager: Some very basic layer list drawing

Julian Eisel noreply at git.blender.org
Tue May 24 14:45:28 CEST 2016


Commit: 0c093a3590b9203f15a68e93ba0fe86595e4cc67
Author: Julian Eisel
Date:   Tue May 24 14:37:36 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rB0c093a3590b9203f15a68e93ba0fe86595e4cc67

Some very basic layer list drawing

Just drawing the layer names as a list, nothing fancy yet.

===================================================================

M	source/blender/blenkernel/BKE_blender_version.h
M	source/blender/blenkernel/BKE_layer.h
M	source/blender/blenkernel/intern/layer.c
M	source/blender/blenloader/intern/versioning_270.c
M	source/blender/editors/interface/CMakeLists.txt
M	source/blender/editors/interface/resources.c
M	source/blender/editors/object/object_layer.c
M	source/blender/editors/space_layers/CMakeLists.txt
M	source/blender/editors/space_layers/layers_ops.c
M	source/blender/editors/space_layers/space_layers.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 618b36c..a4b7d5c 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -28,7 +28,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         277
-#define BLENDER_SUBVERSION      1
+#define BLENDER_SUBVERSION      2
 /* Several breakages with 270, e.g. constraint deg vs rad */
 #define BLENDER_MINVERSION      270
 #define BLENDER_MINSUBVERSION   6
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index ab86731..d6de47c 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -31,6 +31,7 @@
 #define __BKE_LAYER_H__
 
 struct bContext;
+struct uiLayout;
 
 typedef struct LayerTree LayerTree;
 typedef struct LayerTreeItem LayerTreeItem;
@@ -50,6 +51,19 @@ typedef enum eLayerTree_Type {
 //	...
 } eLayerTree_Type;
 
+#define MAX_LAYER_FILTER_STR 64
+
+typedef struct LayerTree {
+	eLayerTree_Type type;
+
+	ListBase items; /* LayerTreeItem - TODO check if worth using array instead */
+
+	/* filtering */
+	short filterflag;
+	char filter_str[MAX_LAYER_FILTER_STR];
+} LayerTree;
+
+
 struct LayerTree *BKE_layertree_new(const eLayerTree_Type type);
 void BKE_layertree_delete(struct LayerTree *ltree);
 
@@ -57,8 +71,8 @@ void BKE_layertree_delete(struct LayerTree *ltree);
 /* Layer Tree Item */
 
 typedef short (*LayerItemPollFunc)(const struct bContext *, struct LayerTreeItem *);
-typedef void  (*LayerItemDrawFunc)(struct LayerTreeItem *);
-typedef void  (*LayerItemDrawSettingsFunc)(struct LayerTreeItem *);
+typedef void  (*LayerItemDrawFunc)(struct LayerTreeItem *, struct uiLayout *layout);
+typedef void  (*LayerItemDrawSettingsFunc)(struct LayerTreeItem *, struct uiLayout *layout);
 
 typedef enum eLayerTreeItem_Type {
 	LAYER_ITEMTYPE_LAYER,
@@ -66,12 +80,33 @@ typedef enum eLayerTreeItem_Type {
 	LAYER_ITEMTYPE_COMP,  /* compositing layer (wireframes, SSAO, blending type, etc) */
 } eLayerTreeItem_Type;
 
+/**
+ * \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;
+
+	eLayerTreeItem_Type type;
+	const char *name;
+	int height; /* the height of this item */
+
+	LayerTree *tree; /* pointer back to layer tree - TODO check if needed */
+	struct LayerTreeItem *parent; /* the group this item belongs to */
+
+	/* item is grayed out if this check fails */
+	LayerItemPollFunc poll;
+	/* drawing of the item in the list */
+	LayerItemDrawFunc draw;
+	/* drawing of the expanded layer settings (gear wheel icon) */
+	LayerItemDrawSettingsFunc draw_settings;
+} LayerTreeItem;
+
 struct LayerTreeItem *BKE_layeritem_add(
-        struct LayerTree *tree, struct LayerTreeItem *parent, const eLayerTreeItem_Type type,
+        struct LayerTree *tree, struct LayerTreeItem *parent,
+        const eLayerTreeItem_Type type, const char *name,
         const LayerItemPollFunc poll, LayerItemDrawFunc draw, LayerItemDrawSettingsFunc draw_settings);
 void BKE_layeritem_remove(struct LayerTree *tree, struct LayerTreeItem *litem);
 
-const char *BKE_layeritem_name_get(struct LayerTreeItem *litem);
-
 #endif  /* __BKE_LAYER_H__ */
 
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 0ce9ae4..d87eb53 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -37,44 +37,11 @@
 #include "BLI_listbase.h"
 
 #include "DNA_defs.h"
+#include "DNA_userdef_types.h"
 
 #include "MEM_guardedalloc.h"
 
 
-#define MAX_LAYER_FILTER_STR 64
-
-typedef struct LayerTree {
-	eLayerTree_Type type;
-
-	ListBase items; /* LayerTreeItem - TODO check if worth using array instead */
-
-	/* filtering */
-	short filterflag;
-	char filter_str[MAX_LAYER_FILTER_STR];
-} 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;
-
-	eLayerTreeItem_Type type;
-	char name[MAX_NAME]; /* name displayed in GUI */
-
-	LayerTree *tree; /* pointer back to layer tree - TODO check if needed */
-	struct LayerTreeItem *parent; /* the group this item belongs to */
-
-	/* item is grayed out if this check fails */
-	LayerItemPollFunc poll;
-	/* drawing of the item in the list */
-	LayerItemDrawFunc draw;
-	/* drawing of the expanded layer settings (gear wheel icon) */
-	LayerItemDrawSettingsFunc draw_settings;
-} LayerTreeItem;
-
-
 /* -------------------------------------------------------------------- */
 /** \name Layer Tree
  *
@@ -111,6 +78,8 @@ void BKE_layertree_delete(LayerTree *ltree)
  *
  * \{ */
 
+#define LAYERITEM_DEFAULT_HEIGHT U.widget_unit
+
 /**
  * Allocate a new layer item of \a type and add it to the layer tree \a tree. Sorting happens later.
  *
@@ -118,7 +87,8 @@ void BKE_layertree_delete(LayerTree *ltree)
  * \return The newly created layer item.
  */
 LayerTreeItem *BKE_layeritem_add(
-        LayerTree *tree, LayerTreeItem *parent, const eLayerTreeItem_Type type,
+        LayerTree *tree, LayerTreeItem *parent,
+        const eLayerTreeItem_Type type, const char *name,
         const LayerItemPollFunc poll, LayerItemDrawFunc draw, LayerItemDrawSettingsFunc draw_settings)
 {
 	LayerTreeItem *litem = MEM_callocN(sizeof(LayerTreeItem), __func__);
@@ -126,7 +96,9 @@ LayerTreeItem *BKE_layeritem_add(
 	BLI_assert(!parent || ELEM(parent->type, LAYER_ITEMTYPE_GROUP));
 	BLI_assert(!parent || parent->tree == tree);
 
+	litem->name = name;
 	litem->type = type;
+	litem->height = LAYERITEM_DEFAULT_HEIGHT;
 	litem->parent = parent;
 	litem->tree = tree;
 
@@ -149,9 +121,4 @@ void BKE_layeritem_remove(LayerTree *tree, LayerTreeItem *litem)
 	MEM_freeN(litem);
 }
 
-const char *BKE_layeritem_name_get(LayerTreeItem *litem)
-{
-	return litem->name;
-}
-
 /** \} */ /* Layer Tree Item */
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index 3a176af..c95a0b3 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -1205,7 +1205,7 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
 
 #ifdef WITH_ADVANCED_LAYERS
 	/* Convert to new layer system */
-	{
+	if (!MAIN_VERSION_ATLEAST(main, 277, 2)) {
 		if (!DNA_struct_elem_find(fd->filesdna, "Scene", "LayerTree", "object_layers")) {
 			for (Scene *sce = main->scene.first; sce; sce = sce->id.next) {
 				sce->object_layers = BKE_layertree_new(LAYER_TREETYPE_OBJECT);
diff --git a/source/blender/editors/interface/CMakeLists.txt b/source/blender/editors/interface/CMakeLists.txt
index c57f8d5..2c0db31 100644
--- a/source/blender/editors/interface/CMakeLists.txt
+++ b/source/blender/editors/interface/CMakeLists.txt
@@ -79,6 +79,10 @@ if(WIN32)
 	endif()
 endif()
 
+if(WITH_ADVANCED_LAYERS)
+	add_definitions(-DWITH_ADVANCED_LAYERS)
+endif()
+
 add_definitions(${GL_DEFINITIONS})
 
 blender_add_lib(bf_editor_interface "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index f533235..d5e0e91 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -1199,6 +1199,12 @@ void ui_theme_init_default(void)
 	rgba_char_args_set(btheme->tclip.strip_select, 0xff, 0x8c, 0x00, 0xff);
 	btheme->tclip.handle_vertex_size = 5;
 	ui_theme_space_init_handles_color(&btheme->tclip);
+
+#ifdef WITH_ADVANCED_LAYERS
+	/* space layer manager */
+	btheme->tlayers = btheme->tv3d;
+	rgba_char_args_set_fl(btheme->tlayers.back,    0.42, 0.42, 0.42, 1.0);
+#endif
 }
 
 void ui_style_init_default(void)
@@ -2703,6 +2709,15 @@ void init_userdef_do_versions(void)
 		}
 	}
 
+#ifdef WITH_ADVANCED_LAYERS
+	if (!USER_VERSION_ATLEAST(277, 2)) {
+		for (bTheme *btheme = U.themes.first; btheme; btheme = btheme->next) {
+			btheme->tlayers = btheme->tv3d;
+			rgba_char_args_set_fl(btheme->tlayers.back,    0.42, 0.42, 0.42, 1.0);
+		}
+	}
+#endif
+
 	/**
 	 * Include next version bump.
 	 *
diff --git a/source/blender/editors/object/object_layer.c b/source/blender/editors/object/object_layer.c
index 4fa0134..4d7e4e2 100644
--- a/source/blender/editors/object/object_layer.c
+++ b/source/blender/editors/object/object_layer.c
@@ -29,24 +29,32 @@
  * Functions to define object layer data and UI.
  */
 
-#include "BKE_layer.h"
-
 #include "BLI_compiler_attrs.h"
+#include "BLI_listbase.h"
 #include "BLI_utildefines.h"
 
+#include "BKE_layer.h"
+
+#include "DNA_ID.h"
+
 #include "ED_object.h"
 
-static void object_layer_draw(LayerTreeItem *litem)
+#include "UI_interface.h"
+
+
+static void object_layer_draw(LayerTreeItem *litem, uiLayout *layout)
 {
-	printf("%s\n", BKE_layeritem_name_get(litem));
+	uiItemL(layout, litem->name, 0);
 }
 
-static void object_layer_draw_settings(LayerTreeItem *UNUSED(litem))
+static void object_layer_draw_settings(LayerTreeItem *UNUSED(litem), uiLayout *UNUSED(layout))
 {
 	/* TODO */
 }
 
 void ED_object_layer_add(LayerTree *ltree)
 {
-	BKE_layeritem_add(ltree, NULL, LAYER_TREETYPE_OBJECT, NULL, object_layer_draw, object_layer_draw_settings);
+	BKE_layeritem_add(
+	            ltree, NULL, LAYER_TREETYPE_OBJECT, "Layer",
+	            NULL, object_layer_draw, object_layer_draw_settings);
 }
diff --git a/source/blender/editors/space_layers/CMakeLists.txt b/source/blender/editors/space_layers/CMakeLists.txt
index 094248a..397b2f4 100644
--- a/source/blender/editors/space_layers/CMakeLists.txt
+++ b/source/blender/editors/space_layers/CMakeLists.txt
@@ -22,10 +22,12 @@ set(INC
 	../include
 	../../blenkernel
 	../../blenlib
+	../../gpu
 	../../makesdna
 	../../makesrna
 	../../windowmanager
 	../../../../intern/guardedalloc
+	../../../../intern/glew-mx
 )
 
 set(INC_SYS
diff --git a/source/blender/editors/space_layers/layers_ops.c b/source

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list