[Bf-blender-cvs] [9e83283f731] blender2.8: Cleanup: decouple outliner tree element icon retrieving from drawing.
Brecht Van Lommel
noreply at git.blender.org
Fri Aug 10 17:57:34 CEST 2018
Commit: 9e83283f7312c565e32c68bb544177bbfec7ceb2
Author: Brecht Van Lommel
Date: Tue Aug 7 10:55:03 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB9e83283f7312c565e32c68bb544177bbfec7ceb2
Cleanup: decouple outliner tree element icon retrieving from drawing.
===================================================================
M source/blender/editors/space_outliner/outliner_draw.c
M source/blender/editors/space_outliner/outliner_intern.h
===================================================================
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index c52214b9846..5672351d62f 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -850,94 +850,45 @@ static void outliner_buttons(const bContext *C, uiBlock *block, ARegion *ar, Tre
/* ****************************************************** */
/* Normal Drawing... */
-/* make function calls a bit compacter */
-struct DrawIconArg {
- uiBlock *block;
- ID *id;
- float xmax, x, y, xb, yb;
- float alpha;
-};
-
-static void tselem_draw_icon_uibut(struct DrawIconArg *arg, int icon)
+TreeElementIcon tree_element_get_icon(TreeStoreElem *tselem, TreeElement *te)
{
- /* restrict column clip... it has been coded by simply overdrawing, doesnt work for buttons */
- if (arg->x >= arg->xmax) {
- GPU_blend(true);
- UI_icon_draw_alpha(arg->x, arg->y, icon, arg->alpha);
- GPU_blend(false);
- }
- else {
- uiBut *but = uiDefIconBut(
- arg->block, UI_BTYPE_LABEL, 0, icon, arg->xb, arg->yb, UI_UNIT_X, UI_UNIT_Y, NULL,
- 0.0, 0.0, 1.0, arg->alpha,
- (arg->id && ID_IS_LINKED(arg->id)) ? arg->id->lib->name : "");
-
- if (arg->id)
- UI_but_drag_set_id(but, arg->id);
- }
-
-}
-
-static void tselem_draw_icon(
- uiBlock *block, int xmax, float x, float y, TreeStoreElem *tselem, TreeElement *te,
- float alpha, const bool is_clickable)
-{
- struct DrawIconArg arg;
- float aspect;
-
- /* make function calls a bit compacter */
- arg.block = block;
- arg.id = tselem->id;
- arg.xmax = xmax;
- arg.xb = x; /* for ui buttons */
- arg.yb = y;
- arg.alpha = alpha;
-
- /* placement of icons, copied from interface_widgets.c */
- aspect = (0.8f * UI_UNIT_Y) / ICON_DEFAULT_HEIGHT;
- x += 2.0f * aspect;
- y += 2.0f * aspect;
- arg.x = x;
- arg.y = y;
-
-#define ICON_DRAW(_icon) UI_icon_draw_alpha(x, y, _icon, alpha)
-#define ICON_CLICK_DRAW(_icon) if (!is_clickable) ICON_DRAW(_icon); else tselem_draw_icon_uibut(&arg, _icon)
+ TreeElementIcon data = {0};
if (tselem->type) {
switch (tselem->type) {
case TSE_ANIM_DATA:
- ICON_DRAW(ICON_ANIM_DATA); /* XXX */
+ data.icon = ICON_ANIM_DATA; /* XXX */
break;
case TSE_NLA:
- ICON_DRAW(ICON_NLA);
+ data.icon = ICON_NLA;
break;
case TSE_NLA_TRACK:
- ICON_DRAW(ICON_NLA); /* XXX */
+ data.icon = ICON_NLA; /* XXX */
break;
case TSE_NLA_ACTION:
- ICON_DRAW(ICON_ACTION);
+ data.icon = ICON_ACTION;
break;
case TSE_DRIVER_BASE:
- ICON_DRAW(ICON_DRIVER);
+ data.icon = ICON_DRIVER;
break;
case TSE_DEFGROUP_BASE:
- ICON_DRAW(ICON_GROUP_VERTEX);
+ data.icon = ICON_GROUP_VERTEX;
break;
case TSE_BONE:
case TSE_EBONE:
- ICON_DRAW(ICON_BONE_DATA);
+ data.icon = ICON_BONE_DATA;
break;
case TSE_CONSTRAINT_BASE:
- ICON_DRAW(ICON_CONSTRAINT);
+ data.icon = ICON_CONSTRAINT;
break;
case TSE_MODIFIER_BASE:
- ICON_DRAW(ICON_MODIFIER);
+ data.icon = ICON_MODIFIER;
break;
case TSE_LINKED_OB:
- ICON_DRAW(ICON_OBJECT_DATA);
+ data.icon = ICON_OBJECT_DATA;
break;
case TSE_LINKED_PSYS:
- ICON_DRAW(ICON_PARTICLES);
+ data.icon = ICON_PARTICLES;
break;
case TSE_MODIFIER:
{
@@ -946,154 +897,154 @@ static void tselem_draw_icon(
ModifierData *md = BLI_findlink(&ob->modifiers, tselem->nr);
switch ((ModifierType)md->type) {
case eModifierType_Subsurf:
- ICON_DRAW(ICON_MOD_SUBSURF);
+ data.icon = ICON_MOD_SUBSURF;
break;
case eModifierType_Armature:
- ICON_DRAW(ICON_MOD_ARMATURE);
+ data.icon = ICON_MOD_ARMATURE;
break;
case eModifierType_Lattice:
- ICON_DRAW(ICON_MOD_LATTICE);
+ data.icon = ICON_MOD_LATTICE;
break;
case eModifierType_Curve:
- ICON_DRAW(ICON_MOD_CURVE);
+ data.icon = ICON_MOD_CURVE;
break;
case eModifierType_Build:
- ICON_DRAW(ICON_MOD_BUILD);
+ data.icon = ICON_MOD_BUILD;
break;
case eModifierType_Mirror:
- ICON_DRAW(ICON_MOD_MIRROR);
+ data.icon = ICON_MOD_MIRROR;
break;
case eModifierType_Decimate:
- ICON_DRAW(ICON_MOD_DECIM);
+ data.icon = ICON_MOD_DECIM;
break;
case eModifierType_Wave:
- ICON_DRAW(ICON_MOD_WAVE);
+ data.icon = ICON_MOD_WAVE;
break;
case eModifierType_Hook:
- ICON_DRAW(ICON_HOOK);
+ data.icon = ICON_HOOK;
break;
case eModifierType_Softbody:
- ICON_DRAW(ICON_MOD_SOFT);
+ data.icon = ICON_MOD_SOFT;
break;
case eModifierType_Boolean:
- ICON_DRAW(ICON_MOD_BOOLEAN);
+ data.icon = ICON_MOD_BOOLEAN;
break;
case eModifierType_ParticleSystem:
- ICON_DRAW(ICON_MOD_PARTICLES);
+ data.icon = ICON_MOD_PARTICLES;
break;
case eModifierType_ParticleInstance:
- ICON_DRAW(ICON_MOD_PARTICLES);
+ data.icon = ICON_MOD_PARTICLES;
break;
case eModifierType_EdgeSplit:
- ICON_DRAW(ICON_MOD_EDGESPLIT);
+ data.icon = ICON_MOD_EDGESPLIT;
break;
case eModifierType_Array:
- ICON_DRAW(ICON_MOD_ARRAY);
+ data.icon = ICON_MOD_ARRAY;
break;
case eModifierType_UVProject:
case eModifierType_UVWarp: /* TODO, get own icon */
- ICON_DRAW(ICON_MOD_UVPROJECT);
+ data.icon = ICON_MOD_UVPROJECT;
break;
case eModifierType_Displace:
- ICON_DRAW(ICON_MOD_DISPLACE);
+ data.icon = ICON_MOD_DISPLACE;
break;
case eModifierType_Shrinkwrap:
- ICON_DRAW(ICON_MOD_SHRINKWRAP);
+ data.icon = ICON_MOD_SHRINKWRAP;
break;
case eModifierType_Cast:
- ICON_DRAW(ICON_MOD_CAST);
+ data.icon = ICON_MOD_CAST;
break;
case eModifierType_MeshDeform:
case eModifierType_SurfaceDeform:
- ICON_DRAW(ICON_MOD_MESHDEFORM);
+ data.icon = ICON_MOD_MESHDEFORM;
break;
case eModifierType_Bevel:
- ICON_DRAW(ICON_MOD_BEVEL);
+ data.icon = ICON_MOD_BEVEL;
break;
case eModifierType_Smooth:
case eModifierType_LaplacianSmooth:
case eModifierType_CorrectiveSmooth:
- ICON_DRAW(ICON_MOD_SMOOTH);
+ data.icon = ICON_MOD_SMOOTH;
break;
case eModifierType_SimpleDeform:
- ICON_DRAW(ICON_MOD_SIMPLEDEFORM);
+ data.icon = ICON_MOD_SIMPLEDEFORM;
break;
case eModifierType_Mask:
- ICON_DRAW(ICON_MOD_MASK);
+ data.icon = ICON_MOD_MASK;
break;
case eModifierType_Cloth:
- ICON_DRAW(ICON_MOD_CLOTH);
+ data.icon = ICON_MOD_CLOTH;
break;
case eModifierType_Explode:
- ICON_DRAW(ICON_MOD_EXPLODE);
+ data.icon = ICON_MOD_EXPLODE;
break;
case eModifierType_Collision:
case eModifierType_Surface:
- ICON_DRAW(ICON_MOD_PHYSICS);
+ data.icon = ICON_MOD_PHYSICS;
break;
case eModifierType_Fluidsim:
- ICON_DRAW(ICON_MOD_FLUIDSIM);
+ data.icon = ICON_MOD_FLUIDSIM;
break;
case eModifierType_Multires:
- ICON_DRAW(ICON_MOD_MULTIRES);
+ data.icon = ICON_MOD_MULTIRES;
break;
case eModifierType_Smoke:
- ICON_DRAW(ICON_MOD_SMOKE);
+ data.icon = ICON_MOD_SMOKE;
break;
case eModifierType_Solidify:
- ICON_DRAW(ICON_MOD_SOLIDIFY);
+ data.icon = ICON_MOD_SOLIDIFY;
break;
case eModifierType_Screw:
- ICON_DRAW(ICON_MOD_SCREW);
+ data.icon = ICON_MOD_SCREW;
break;
case eModifierType_Remesh:
- ICON_DRAW(ICON_MOD_REMESH);
+ data.icon = ICON_MOD_REMESH;
break;
case eModifierType_WeightVGEdit:
case eModifierType_WeightVGMix:
case eModifierType_WeightVGProximity:
- ICON_DRAW(ICON_MOD_VERTEX_WEIGHT);
+ data.icon = ICON_MOD_VERTEX_WEIGHT;
break;
case eModifierType_DynamicPaint:
- ICON_DRAW(ICON_MOD_DYNAMICPAINT);
+ data.icon = ICON_MOD_DYNAMICPAINT;
break;
case eModifierType_Ocean:
- ICON_DRAW(ICON_MOD_OCEAN);
+ data.icon = ICON_MOD_OCEAN;
break;
case eModifierType_Warp:
- ICON_DRAW(ICON_MOD_WARP);
+ data.icon = ICON_MOD_WARP;
break;
case eModifierType_Skin:
- ICON_DRAW(ICON_MOD_SKIN);
+ data.icon = ICON_MOD_SKIN;
break;
case eModifierType_Triangulate:
- ICON_DRAW(ICON_MOD_TRIANGULATE);
+ data.icon = ICON_MOD_TRIANGULATE;
break;
case eModifierType_MeshCache:
- ICON_DRAW(ICON_MOD_MESHDEFORM); /* XXX, needs own icon */
+ data.icon = ICON_MOD_MESHDEFORM; /* XXX, needs own icon */
break;
case eModifierType_MeshSequenceCache:
- ICON_DRAW(ICON_MOD_MESHDEFORM); /* XXX, needs own icon */
+ data.icon = ICON_MOD_MESHDEFORM; /* XXX, needs own icon */
break;
case eModifierType_Wireframe:
- ICON_DRAW(ICON_MOD_WIREFRAME);
+ data.icon = ICON_MOD_WIREFRAME;
break;
case eModifierType_LaplacianDeform:
- ICON_DRAW(ICON_MOD_MESHDEFORM); /* XXX, needs own icon */
+ data.icon = ICON_MOD_MESHDEFORM; /* XXX, needs own icon */
break;
case eModifierType_DataTransfer:
- ICON_DRAW(ICON_MOD_DATA_TRANSFER);
+ data.icon = ICON_MOD_DATA_TRANSFER;
break;
case eModifierType_NormalEdit:
case eModifierType_WeightedNormal:
- ICON_DRAW(ICON_MOD_NORMALEDIT);
+ data.icon = ICON_MOD_NORMALEDIT;
break;
/* Default */
case eModifierType_None:
case eModifierType_ShapeKey:
case NUM_MODIFIER_TYPES:
- ICON_DRAW(ICON_DOT);
+ data.icon = ICON_DOT;
break;
}
}
@@ -1102,172 +1053,182 @@ static void tselem_draw_icon(
GpencilModifierData *md = BLI_findlink(&ob->greasepencil_modifiers, tselem->nr);
switch ((GpencilModifierType)md->type) {
case eGpencilModifierType_Noise:
- ICON_DRAW(ICON_RNDCURVE);
+ data.icon = ICON_RNDCURVE;
break;
case eGpencilM
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list