[Bf-blender-cvs] [c5b361335aa] master: Cleanup: Simplify functions for adding and removing color attributes

Hans Goudey noreply at git.blender.org
Tue Aug 2 21:43:49 CEST 2022


Commit: c5b361335aaa1552627d3c217251461eb5f384a5
Author: Hans Goudey
Date:   Tue Aug 2 14:43:36 2022 -0500
Branches: master
https://developer.blender.org/rBc5b361335aaa1552627d3c217251461eb5f384a5

Cleanup: Simplify functions for adding and removing color attributes

The specific functions for vertex colors and and sculpt vertex colors
can be replaced by more generic attribute functions internally.
Also remove a paramter from one function.

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

M	source/blender/editors/include/ED_mesh.h
M	source/blender/editors/mesh/mesh_data.cc
M	source/blender/editors/physics/dynamicpaint_ops.c
M	source/blender/makesrna/intern/rna_mesh.c

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

diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h
index d469c29945d..1981b069011 100644
--- a/source/blender/editors/include/ED_mesh.h
+++ b/source/blender/editors/include/ED_mesh.h
@@ -552,14 +552,10 @@ void ED_mesh_uv_loop_reset_ex(struct Mesh *me, int layernum);
 bool ED_mesh_color_ensure(struct Mesh *me, const char *name);
 int ED_mesh_color_add(
     struct Mesh *me, const char *name, bool active_set, bool do_init, struct ReportList *reports);
-bool ED_mesh_color_remove_index(struct Mesh *me, int n);
-bool ED_mesh_color_remove_active(struct Mesh *me);
-bool ED_mesh_color_remove_named(struct Mesh *me, const char *name);
-
-int ED_mesh_sculpt_color_add(
-    struct Mesh *me, const char *name, bool active_set, bool do_init, struct ReportList *reports);
-bool ED_mesh_sculpt_color_remove_index(struct Mesh *me, int n);
-bool ED_mesh_sculpt_color_remove_named(struct Mesh *me, const char *name);
+int ED_mesh_sculpt_color_add(struct Mesh *me,
+                             const char *name,
+                             bool do_init,
+                             struct ReportList *reports);
 
 void ED_mesh_report_mirror(struct wmOperator *op, int totmirr, int totfail);
 void ED_mesh_report_mirror_ex(struct wmOperator *op, int totmirr, int totfail, char selectmode);
diff --git a/source/blender/editors/mesh/mesh_data.cc b/source/blender/editors/mesh/mesh_data.cc
index 66e9b1ed673..971fab1508e 100644
--- a/source/blender/editors/mesh/mesh_data.cc
+++ b/source/blender/editors/mesh/mesh_data.cc
@@ -444,44 +444,6 @@ bool ED_mesh_color_ensure(Mesh *me, const char *name)
   return (layer != nullptr);
 }
 
-bool ED_mesh_color_remove_index(Mesh *me, const int n)
-{
-  CustomData *ldata = GET_CD_DATA(me, ldata);
-  CustomDataLayer *cdl;
-  int index;
-
-  index = CustomData_get_layer_index_n(ldata, CD_PROP_BYTE_COLOR, n);
-  cdl = (index == -1) ? nullptr : &ldata->layers[index];
-
-  if (!cdl) {
-    return false;
-  }
-
-  delete_customdata_layer(me, cdl);
-  DEG_id_tag_update(&me->id, 0);
-  WM_main_add_notifier(NC_GEOM | ND_DATA, me);
-
-  return true;
-}
-bool ED_mesh_color_remove_active(Mesh *me)
-{
-  CustomData *ldata = GET_CD_DATA(me, ldata);
-  const int n = CustomData_get_active_layer(ldata, CD_PROP_BYTE_COLOR);
-  if (n != -1) {
-    return ED_mesh_color_remove_index(me, n);
-  }
-  return false;
-}
-bool ED_mesh_color_remove_named(Mesh *me, const char *name)
-{
-  CustomData *ldata = GET_CD_DATA(me, ldata);
-  const int n = CustomData_get_named_layer(ldata, CD_PROP_BYTE_COLOR, name);
-  if (n != -1) {
-    return ED_mesh_color_remove_index(me, n);
-  }
-  return false;
-}
-
 /*********************** General poll ************************/
 
 static bool layers_poll(bContext *C)
@@ -494,8 +456,7 @@ static bool layers_poll(bContext *C)
 
 /*********************** Sculpt Vertex colors operators ************************/
 
-int ED_mesh_sculpt_color_add(
-    Mesh *me, const char *name, const bool active_set, const bool do_init, ReportList *reports)
+int ED_mesh_sculpt_color_add(Mesh *me, const char *name, const bool do_init, ReportList *reports)
 {
   /* NOTE: keep in sync with #ED_mesh_uv_add. */
 
@@ -519,7 +480,7 @@ int ED_mesh_sculpt_color_add(
       const int layernum_dst = CustomData_get_active_layer(&em->bm->vdata, CD_PROP_COLOR);
       BM_data_layer_copy(em->bm, &em->bm->vdata, CD_PROP_COLOR, layernum_dst, layernum);
     }
-    if (active_set || layernum == 0) {
+    if (layernum == 0) {
       CustomData_set_layer_active(&em->bm->vdata, CD_PROP_COLOR, layernum);
     }
   }
@@ -542,7 +503,7 @@ int ED_mesh_sculpt_color_add(
           &me->vdata, CD_PROP_COLOR, CD_DEFAULT, nullptr, me->totvert, name);
     }
 
-    if (active_set || layernum == 0) {
+    if (layernum == 0) {
       CustomData_set_layer_active(&me->vdata, CD_PROP_COLOR, layernum);
     }
 
@@ -555,35 +516,6 @@ int ED_mesh_sculpt_color_add(
   return layernum;
 }
 
-bool ED_mesh_sculpt_color_remove_index(Mesh *me, const int n)
-{
-  CustomData *vdata = GET_CD_DATA(me, vdata);
-  CustomDataLayer *cdl;
-  int index;
-
-  index = CustomData_get_layer_index_n(vdata, CD_PROP_COLOR, n);
-  cdl = (index == -1) ? nullptr : &vdata->layers[index];
-
-  if (!cdl) {
-    return false;
-  }
-
-  delete_customdata_layer(me, cdl);
-  DEG_id_tag_update(&me->id, 0);
-  WM_main_add_notifier(NC_GEOM | ND_DATA, me);
-
-  return true;
-}
-bool ED_mesh_sculpt_color_remove_named(Mesh *me, const char *name)
-{
-  CustomData *vdata = GET_CD_DATA(me, vdata);
-  const int n = CustomData_get_named_layer(vdata, CD_PROP_COLOR, name);
-  if (n != -1) {
-    return ED_mesh_sculpt_color_remove_index(me, n);
-  }
-  return false;
-}
-
 /*********************** UV texture operators ************************/
 
 static bool uv_texture_remove_poll(bContext *C)
diff --git a/source/blender/editors/physics/dynamicpaint_ops.c b/source/blender/editors/physics/dynamicpaint_ops.c
index e8ceb97ed7a..1ce90849a88 100644
--- a/source/blender/editors/physics/dynamicpaint_ops.c
+++ b/source/blender/editors/physics/dynamicpaint_ops.c
@@ -21,6 +21,7 @@
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
 
+#include "BKE_attribute.h"
 #include "BKE_context.h"
 #include "BKE_deform.h"
 #include "BKE_dynamicpaint.h"
@@ -233,7 +234,7 @@ static int output_toggle_exec(bContext *C, wmOperator *op)
         ED_mesh_color_add(ob->data, name, true, true, op->reports);
       }
       else {
-        ED_mesh_color_remove_named(ob->data, name);
+        BKE_id_attribute_remove(ob->data, name, NULL);
       }
     }
     /* Vertex Weight Layer */
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index 65468977ccb..9aef19c8230 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -1608,9 +1608,7 @@ static void rna_Mesh_vertex_color_remove(struct Mesh *me,
                                          ReportList *reports,
                                          CustomDataLayer *layer)
 {
-  if (ED_mesh_color_remove_named(me, layer->name) == false) {
-    BKE_reportf(reports, RPT_ERROR, "Vertex color '%s' not found", layer->name);
-  }
+  BKE_id_attribute_remove(&me->id, layer->name, reports);
 }
 
 static PointerRNA rna_Mesh_sculpt_vertex_color_new(struct Mesh *me,
@@ -1621,7 +1619,7 @@ static PointerRNA rna_Mesh_sculpt_vertex_color_new(struct Mesh *me,
   PointerRNA ptr;
   CustomData *vdata;
   CustomDataLayer *cdl = NULL;
-  int index = ED_mesh_sculpt_color_add(me, name, false, do_init, reports);
+  int index = ED_mesh_sculpt_color_add(me, name, do_init, reports);
 
   if (index != -1) {
     vdata = rna_mesh_vdata_helper(me);
@@ -1636,9 +1634,7 @@ static void rna_Mesh_sculpt_vertex_color_remove(struct Mesh *me,
                                                 ReportList *reports,
                                                 CustomDataLayer *layer)
 {
-  if (ED_mesh_sculpt_color_remove_named(me, layer->name) == false) {
-    BKE_reportf(reports, RPT_ERROR, "Sculpt vertex color '%s' not found", layer->name);
-  }
+  BKE_id_attribute_remove(&me->id, layer->name, reports);
 }
 
 #  define DEFINE_CUSTOMDATA_PROPERTY_API( \



More information about the Bf-blender-cvs mailing list