[Bf-blender-cvs] [d15e8bdaa33] master: Modifiers: add icon field to ModifierTypeInfo

Jacques Lucke noreply at git.blender.org
Fri Sep 25 12:49:31 CEST 2020


Commit: d15e8bdaa3343cf97a74f918b2570e66fb7abfa0
Author: Jacques Lucke
Date:   Fri Sep 25 12:45:30 2020 +0200
Branches: master
https://developer.blender.org/rBd15e8bdaa3343cf97a74f918b2570e66fb7abfa0

Modifiers: add icon field to ModifierTypeInfo

With this change `outliner_draw.c` does not have to be
edited anymore when a new modifier is added.

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D8998

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

M	source/blender/blenkernel/BKE_modifier.h
M	source/blender/editors/space_outliner/outliner_draw.c
M	source/blender/modifiers/intern/MOD_armature.c
M	source/blender/modifiers/intern/MOD_array.c
M	source/blender/modifiers/intern/MOD_bevel.c
M	source/blender/modifiers/intern/MOD_boolean.c
M	source/blender/modifiers/intern/MOD_build.c
M	source/blender/modifiers/intern/MOD_cast.c
M	source/blender/modifiers/intern/MOD_cloth.c
M	source/blender/modifiers/intern/MOD_collision.c
M	source/blender/modifiers/intern/MOD_correctivesmooth.c
M	source/blender/modifiers/intern/MOD_curve.c
M	source/blender/modifiers/intern/MOD_datatransfer.c
M	source/blender/modifiers/intern/MOD_decimate.c
M	source/blender/modifiers/intern/MOD_displace.c
M	source/blender/modifiers/intern/MOD_dynamicpaint.c
M	source/blender/modifiers/intern/MOD_edgesplit.c
M	source/blender/modifiers/intern/MOD_explode.c
M	source/blender/modifiers/intern/MOD_fluid.c
M	source/blender/modifiers/intern/MOD_hook.c
M	source/blender/modifiers/intern/MOD_laplaciandeform.c
M	source/blender/modifiers/intern/MOD_laplaciansmooth.c
M	source/blender/modifiers/intern/MOD_lattice.c
M	source/blender/modifiers/intern/MOD_mask.cc
M	source/blender/modifiers/intern/MOD_meshcache.c
M	source/blender/modifiers/intern/MOD_meshdeform.c
M	source/blender/modifiers/intern/MOD_meshsequencecache.c
M	source/blender/modifiers/intern/MOD_mirror.c
M	source/blender/modifiers/intern/MOD_multires.c
M	source/blender/modifiers/intern/MOD_none.c
M	source/blender/modifiers/intern/MOD_normal_edit.c
M	source/blender/modifiers/intern/MOD_ocean.c
M	source/blender/modifiers/intern/MOD_particleinstance.c
M	source/blender/modifiers/intern/MOD_particlesystem.c
M	source/blender/modifiers/intern/MOD_remesh.c
M	source/blender/modifiers/intern/MOD_screw.c
M	source/blender/modifiers/intern/MOD_shapekey.c
M	source/blender/modifiers/intern/MOD_shrinkwrap.c
M	source/blender/modifiers/intern/MOD_simpledeform.c
M	source/blender/modifiers/intern/MOD_simulation.cc
M	source/blender/modifiers/intern/MOD_skin.c
M	source/blender/modifiers/intern/MOD_smooth.c
M	source/blender/modifiers/intern/MOD_softbody.c
M	source/blender/modifiers/intern/MOD_solidify.c
M	source/blender/modifiers/intern/MOD_subsurf.c
M	source/blender/modifiers/intern/MOD_surface.c
M	source/blender/modifiers/intern/MOD_surfacedeform.c
M	source/blender/modifiers/intern/MOD_triangulate.c
M	source/blender/modifiers/intern/MOD_uvproject.c
M	source/blender/modifiers/intern/MOD_uvwarp.c
M	source/blender/modifiers/intern/MOD_warp.c
M	source/blender/modifiers/intern/MOD_wave.c
M	source/blender/modifiers/intern/MOD_weighted_normal.c
M	source/blender/modifiers/intern/MOD_weightvgedit.c
M	source/blender/modifiers/intern/MOD_weightvgmix.c
M	source/blender/modifiers/intern/MOD_weightvgproximity.c
M	source/blender/modifiers/intern/MOD_weld.c
M	source/blender/modifiers/intern/MOD_wireframe.c

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

diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 02b9b547314..83d8177b390 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -173,6 +173,9 @@ typedef struct ModifierTypeInfo {
   ModifierTypeType type;
   ModifierTypeFlag flags;
 
+  /* Icon of the modifier. Usually something like ICON_MOD_*. */
+  int icon;
+
   /********************* Non-optional functions *********************/
 
   /**
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index 9e805e2052f..1160a5b926c 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -2137,163 +2137,12 @@ TreeElementIcon tree_element_get_icon(TreeStoreElem *tselem, TreeElement *te)
 
         if (ob->type != OB_GPENCIL) {
           ModifierData *md = BLI_findlink(&ob->modifiers, tselem->nr);
-          switch ((ModifierType)md->type) {
-            case eModifierType_Subsurf:
-              data.icon = ICON_MOD_SUBSURF;
-              break;
-            case eModifierType_Armature:
-              data.icon = ICON_MOD_ARMATURE;
-              break;
-            case eModifierType_Lattice:
-              data.icon = ICON_MOD_LATTICE;
-              break;
-            case eModifierType_Curve:
-              data.icon = ICON_MOD_CURVE;
-              break;
-            case eModifierType_Build:
-              data.icon = ICON_MOD_BUILD;
-              break;
-            case eModifierType_Mirror:
-              data.icon = ICON_MOD_MIRROR;
-              break;
-            case eModifierType_Decimate:
-              data.icon = ICON_MOD_DECIM;
-              break;
-            case eModifierType_Wave:
-              data.icon = ICON_MOD_WAVE;
-              break;
-            case eModifierType_Hook:
-              data.icon = ICON_HOOK;
-              break;
-            case eModifierType_Softbody:
-              data.icon = ICON_MOD_SOFT;
-              break;
-            case eModifierType_Boolean:
-              data.icon = ICON_MOD_BOOLEAN;
-              break;
-            case eModifierType_ParticleSystem:
-              data.icon = ICON_MOD_PARTICLES;
-              break;
-            case eModifierType_ParticleInstance:
-              data.icon = ICON_MOD_PARTICLES;
-              break;
-            case eModifierType_EdgeSplit:
-              data.icon = ICON_MOD_EDGESPLIT;
-              break;
-            case eModifierType_Array:
-              data.icon = ICON_MOD_ARRAY;
-              break;
-            case eModifierType_UVProject:
-            case eModifierType_UVWarp: /* TODO, get own icon */
-              data.icon = ICON_MOD_UVPROJECT;
-              break;
-            case eModifierType_Displace:
-              data.icon = ICON_MOD_DISPLACE;
-              break;
-            case eModifierType_Shrinkwrap:
-              data.icon = ICON_MOD_SHRINKWRAP;
-              break;
-            case eModifierType_Cast:
-              data.icon = ICON_MOD_CAST;
-              break;
-            case eModifierType_MeshDeform:
-            case eModifierType_SurfaceDeform:
-              data.icon = ICON_MOD_MESHDEFORM;
-              break;
-            case eModifierType_Bevel:
-              data.icon = ICON_MOD_BEVEL;
-              break;
-            case eModifierType_Smooth:
-            case eModifierType_LaplacianSmooth:
-            case eModifierType_CorrectiveSmooth:
-              data.icon = ICON_MOD_SMOOTH;
-              break;
-            case eModifierType_SimpleDeform:
-              data.icon = ICON_MOD_SIMPLEDEFORM;
-              break;
-            case eModifierType_Mask:
-              data.icon = ICON_MOD_MASK;
-              break;
-            case eModifierType_Cloth:
-              data.icon = ICON_MOD_CLOTH;
-              break;
-            case eModifierType_Explode:
-              data.icon = ICON_MOD_EXPLODE;
-              break;
-            case eModifierType_Collision:
-            case eModifierType_Surface:
-              data.icon = ICON_MOD_PHYSICS;
-              break;
-            case eModifierType_Fluidsim: /* deprecated, old fluid modifier */
-              data.icon = ICON_MOD_FLUIDSIM;
-              break;
-            case eModifierType_Multires:
-              data.icon = ICON_MOD_MULTIRES;
-              break;
-            case eModifierType_Fluid:
-              data.icon = ICON_MOD_FLUID;
-              break;
-            case eModifierType_Solidify:
-              data.icon = ICON_MOD_SOLIDIFY;
-              break;
-            case eModifierType_Screw:
-              data.icon = ICON_MOD_SCREW;
-              break;
-            case eModifierType_Remesh:
-              data.icon = ICON_MOD_REMESH;
-              break;
-            case eModifierType_WeightVGEdit:
-            case eModifierType_WeightVGMix:
-            case eModifierType_WeightVGProximity:
-              data.icon = ICON_MOD_VERTEX_WEIGHT;
-              break;
-            case eModifierType_DynamicPaint:
-              data.icon = ICON_MOD_DYNAMICPAINT;
-              break;
-            case eModifierType_Ocean:
-              data.icon = ICON_MOD_OCEAN;
-              break;
-            case eModifierType_Warp:
-              data.icon = ICON_MOD_WARP;
-              break;
-            case eModifierType_Skin:
-              data.icon = ICON_MOD_SKIN;
-              break;
-            case eModifierType_Triangulate:
-              data.icon = ICON_MOD_TRIANGULATE;
-              break;
-            case eModifierType_MeshCache:
-              data.icon = ICON_MOD_MESHDEFORM; /* XXX, needs own icon */
-              break;
-            case eModifierType_MeshSequenceCache:
-              data.icon = ICON_MOD_MESHDEFORM; /* XXX, needs own icon */
-              break;
-            case eModifierType_Wireframe:
-              data.icon = ICON_MOD_WIREFRAME;
-              break;
-            case eModifierType_Weld:
-              data.icon = ICON_AUTOMERGE_OFF; /* XXX, needs own icon */
-              break;
-            case eModifierType_LaplacianDeform:
-              data.icon = ICON_MOD_MESHDEFORM; /* XXX, needs own icon */
-              break;
-            case eModifierType_DataTransfer:
-              data.icon = ICON_MOD_DATA_TRANSFER;
-              break;
-            case eModifierType_NormalEdit:
-            case eModifierType_WeightedNormal:
-              data.icon = ICON_MOD_NORMALEDIT;
-              break;
-            case eModifierType_Simulation:
-              data.icon = ICON_PHYSICS; /* TODO: Use correct icon. */
-              break;
-              /* Default */
-            case eModifierType_None:
-            case eModifierType_ShapeKey:
-
-            case NUM_MODIFIER_TYPES:
-              data.icon = ICON_DOT;
-              break;
+          const ModifierTypeInfo *modifier_type = BKE_modifier_get_info(md->type);
+          if (modifier_type != NULL) {
+            data.icon = modifier_type->icon;
+          }
+          else {
+            data.icon = ICON_DOT;
           }
         }
         else {
diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c
index f42f67417c3..3f53a4c9552 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -281,6 +281,7 @@ ModifierTypeInfo modifierType_Armature = {
     /* type */ eModifierTypeType_OnlyDeform,
     /* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly |
         eModifierTypeFlag_SupportsEditmode,
+    /* icon */ ICON_MOD_ARMATURE,
 
     /* copyData */ copyData,
 
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c
index 60e1a3de67e..ae4bc3ca4c6 100644
--- a/source/blender/modifiers/intern/MOD_array.c
+++ b/source/blender/modifiers/intern/MOD_array.c
@@ -1014,6 +1014,7 @@ ModifierTypeInfo modifierType_Array = {
     /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping |
         eModifierTypeFlag_SupportsEditmode | eModifierTypeFlag_EnableInEditmode |
         eModifierTypeFlag_AcceptsCVs,
+    /* icon */ ICON_MOD_ARRAY,
 
     /* copyData */ BKE_modifier_copydata_generic,
 
diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c
index ab024bd824d..8ab6eccb576 100644
--- a/source/blender/modifiers/intern/MOD_bevel.c
+++ b/source/blender/modifiers/intern/MOD_bevel.c
@@ -449,6 +449,7 @@ ModifierTypeInfo modifierType_Bevel = {
     /* type */ eModifierTypeType_Constructive,
     /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsEditmode |
         eModifierTypeFlag_EnableInEditmode | eModifierTypeFlag_AcceptsCVs,
+    /* icon */ ICON_MOD_BEVEL,
     /* copyData */ copyData,
     /* deformVerts */ NULL,
     /* deformMatrices */ NULL,
diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c
index cd552d4e1ad..59e2cf12e23 100644
--- a/source/blender/modifiers/intern/MOD_boolean.c
+++ b/source/blender/modifiers/intern/MOD_boolean.c
@@ -753,6 +753,7 @@ ModifierTypeInfo modifierType_Boolean = {
     /* structSize */ sizeof(BooleanModifierData),
     /* type */ eModifierTypeType_Nonconstructive,
     /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsEditmode,
+    /* icon */ ICON_MOD_BOOLEAN,
 
     /* copyData */ BKE_modifier_copydata_generic,
 
diff --git a/source/blender/modifiers/intern/MOD_build.c b/source/blender/modifiers/intern/MOD_build.c
index d3caffb819c..0c2cae895e6 100644
--- a/source/blender/modifiers/intern/MOD_build.c
+++ b/source/blender/modifiers/intern/MOD_build.c
@@ -333,6 +333,7 @@ ModifierTypeInfo modifierType_Build = {
     /* structSize */ sizeof(BuildModifierData),
     /* type */ eModifierTypeType_Nonconstructive,
     /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_AcceptsCVs,
+    /* icon */ ICON_MOD_BUILD,
 
     /* copyData */ BKE_modifier_copydata_generic,
 
diff --git a/source/blender/modifiers/intern/MOD_cast.c b/sourc

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list