[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