[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