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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs