Commit: 762e7bdcb7a26e946af536f91a6dc7f1bc93176b
Author: TheOnlyJoey
Date:   Sun May 29 19:32:29 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rB762e7bdcb7a26e946af536f91a6dc7f1bc93176b

Cleanup: Move drawing data out of BKE structs

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

M       source/blender/blenkernel/BKE_layer.h
M       source/blender/blenkernel/intern/layer.c
M       source/blender/editors/space_layers/layers_draw.c
M       source/blender/editors/space_layers/layers_intern.h
M       source/blender/editors/space_layers/layers_ops.c
M       source/blender/editors/space_layers/layers_util.c
M       source/blender/makesdna/DNA_space_types.h

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

diff --git a/source/blender/blenkernel/BKE_layer.h 
b/source/blender/blenkernel/BKE_layer.h
index 92e41f0..c06492b 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -51,18 +51,12 @@ typedef enum eLayerTree_Type {
 //     ...
 } eLayerTree_Type;
 
-#define MAX_LAYER_FILTER_STR 64
-
 typedef struct LayerTree {
        eLayerTree_Type type;
 
        /* LayerTreeItem - Only items of the first level in the hierarchy, 
these may have children then.
         * TODO check if worth using array instead */
        ListBase items;
-
-       /* filtering */
-       short filterflag;
-       char filter_str[MAX_LAYER_FILTER_STR];
 } LayerTree;
 
 
@@ -93,7 +87,6 @@ typedef struct LayerTreeItem {
 
        eLayerTreeItem_Type type;
        char name[64]; /* MAX_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 */
diff --git a/source/blender/blenkernel/intern/layer.c 
b/source/blender/blenkernel/intern/layer.c
index c525ff5..55364be 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -38,7 +38,6 @@
 #include "BLI_string.h"
 
 #include "DNA_defs.h"
-#include "DNA_userdef_types.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -57,6 +56,9 @@ LayerTree *BKE_layertree_new(const eLayerTree_Type type)
        return ltree;
 }
 
+/**
+ * \note Recursive
+ */
 void BKE_layertree_delete(LayerTree *ltree)
 {
        for (LayerTreeItem *litem = ltree->items.first, *next_litem; litem; 
litem = next_litem) {
@@ -108,8 +110,6 @@ bool BKE_layertree_iterate(const LayerTree *ltree, 
LayerTreeIterFunc foreach, vo
  *
  * \{ */
 
-#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.
  *
@@ -124,7 +124,6 @@ LayerTreeItem *BKE_layeritem_add(
        LayerTreeItem *litem = MEM_callocN(sizeof(LayerTreeItem), __func__);
 
        litem->type = type;
-       litem->height = LAYERITEM_DEFAULT_HEIGHT;
        litem->tree = tree;
        BLI_strncpy(litem->name, name, sizeof(litem->name));
 
diff --git a/source/blender/editors/space_layers/layers_draw.c 
b/source/blender/editors/space_layers/layers_draw.c
index 3d9f528..3807df4 100644
--- a/source/blender/editors/space_layers/layers_draw.c
+++ b/source/blender/editors/space_layers/layers_draw.c
@@ -78,11 +78,12 @@ static bool layer_tile_draw_cb(LayerTreeItem *litem, void 
*userdata)
        View2D *v2d = &drawinfo->ar->v2d;
        LayerTile *tile = BLI_ghash_lookup(drawinfo->slayer->tiles, litem);
        const float padx = 4.0f * UI_DPI_FAC;
+       const float height = tile->height;
 
        const float ofs_x = layer_tile_indent_level_get(litem) * 
LAYERITEM_INDENT_SIZE;
        const float ofs_y = drawinfo->size_y;
-       rctf rect = {padx + ofs_x, drawinfo->ar->winx - padx, -v2d->cur.ymin - 
ofs_y - litem->height};
-       rect.ymax = rect.ymin + litem->height;
+       rctf rect = {padx + ofs_x, drawinfo->ar->winx - padx, -v2d->cur.ymin - 
ofs_y - height};
+       rect.ymax = rect.ymin + height;
 
 
        /* draw selection */
@@ -96,7 +97,7 @@ static bool layer_tile_draw_cb(LayerTreeItem *litem, void 
*userdata)
                uiBlock *block = drawinfo->block;
                uiLayout *layout = UI_block_layout(
                                       block, UI_LAYOUT_HORIZONTAL, 
UI_LAYOUT_HEADER,
-                                      -v2d->cur.xmin + ofs_x, -v2d->cur.ymin - 
ofs_y, litem->height, 0, 0, drawinfo->style);
+                                      -v2d->cur.xmin + ofs_x, -v2d->cur.ymin - 
ofs_y, height, 0, 0, drawinfo->style);
                if (tile->flag & LAYERTILE_RENAME) {
                        uiBut *but = uiDefBut(
                                block, UI_BTYPE_TEXT, 1, "", rect.xmin, 
rect.ymin,
@@ -119,7 +120,7 @@ static bool layer_tile_draw_cb(LayerTreeItem *litem, void 
*userdata)
                uiItemL(layout, "", 0); /* XXX without this editing last item 
causes crashes */
                UI_block_layout_resolve(block, NULL, NULL);
        }
-       drawinfo->size_y += litem->height;
+       drawinfo->size_y += height;
 
        return true;
 }
diff --git a/source/blender/editors/space_layers/layers_intern.h 
b/source/blender/editors/space_layers/layers_intern.h
index 1c78bf2..7f6446e 100644
--- a/source/blender/editors/space_layers/layers_intern.h
+++ b/source/blender/editors/space_layers/layers_intern.h
@@ -37,10 +37,11 @@ typedef enum eLayerTileFlag {
  * Wrapper around LayerTreeItem with extra info for drawing in layer manager 
editor.
  */
 typedef struct LayerTile {
-       eLayerTileFlag flag;
-
        /* LayerTreeItem this tile represents */
        struct LayerTreeItem *litem;
+
+       eLayerTileFlag flag;
+       int height; /* the height of this item */
 } LayerTile;
 
 /* layers_draw.c */
diff --git a/source/blender/editors/space_layers/layers_ops.c 
b/source/blender/editors/space_layers/layers_ops.c
index f8cdc70..adaa886 100644
--- a/source/blender/editors/space_layers/layers_ops.c
+++ b/source/blender/editors/space_layers/layers_ops.c
@@ -49,7 +49,7 @@
 static int layer_add_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent 
*UNUSED(event))
 {
        SpaceLayers *slayer = CTX_wm_space_layers(C);
-       LayerTreeItem *new_item;
+       LayerTreeItem *new_item = NULL;
 
        if (slayer->act_tree->type == LAYER_TREETYPE_OBJECT) {
                new_item = ED_object_layer_add(slayer->act_tree, NULL);
diff --git a/source/blender/editors/space_layers/layers_util.c 
b/source/blender/editors/space_layers/layers_util.c
index 7d560b9..dc5f804 100644
--- a/source/blender/editors/space_layers/layers_util.c
+++ b/source/blender/editors/space_layers/layers_util.c
@@ -37,6 +37,8 @@
 
 #include "layers_intern.h"
 
+#define LAYERITEM_DEFAULT_HEIGHT U.widget_unit
+
 
 /**
  * Allocate and register a LayerTile for \a litem.
@@ -46,6 +48,7 @@ LayerTile *layers_tile_add(const SpaceLayers *slayer, 
LayerTreeItem *litem)
        LayerTile *tile = MEM_callocN(sizeof(LayerTile), __func__);
 
        tile->litem = litem;
+       tile->height = LAYERITEM_DEFAULT_HEIGHT;
        BLI_ghash_insert(slayer->tiles, litem, tile);
 
        return tile;
@@ -88,10 +91,11 @@ typedef struct {
 static bool layers_tile_find_at_coordinate_cb(LayerTreeItem *litem, void 
*customdata)
 {
        LayerIsectCheckData *idata = customdata;
+       LayerTile *tile = BLI_ghash_lookup(idata->slayer->tiles, litem);
 
-       idata->ofs_y += litem->height;
+       idata->ofs_y += tile->height;
        if (idata->co_y >= -idata->v2d->cur.ymin - idata->ofs_y) {
-               idata->r_result = BLI_ghash_lookup(idata->slayer->tiles, litem);
+               idata->r_result = tile;
                /* found tile, stop iterating */
                return false;
        }
diff --git a/source/blender/makesdna/DNA_space_types.h 
b/source/blender/makesdna/DNA_space_types.h
index df82aa6..ddc687e 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -1348,7 +1348,10 @@ typedef struct SpaceLayers {
 
        /* Index of last selected item, will likely become redundant when 
active layers are supported. */
        int last_selected;
-       int pad2;
+
+       /* filtering (unused still) */
+       short filterflag, pad2;
+       char filter_str[64]; /* MAX_NAME */
 } SpaceLayers;
 
 /* **************** SPACE DEFINES ********************* */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to