[Bf-blender-cvs] [762e7bd] soc-2016-layer_manager: Cleanup: Move drawing data out of BKE structs

TheOnlyJoey noreply at git.blender.org
Sun May 29 19:34:37 CEST 2016


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 ********************* */




More information about the Bf-blender-cvs mailing list