CustomData: add function to clear layers' flags.
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 28 Feb 2019 17:03:01 +0000 (18:03 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 28 Feb 2019 19:47:50 +0000 (20:47 +0100)
We only had one to set those flags, up til now...

source/blender/blenkernel/BKE_customdata.h
source/blender/blenkernel/intern/customdata.c

index febcf3e..ba3d1db 100644 (file)
@@ -346,6 +346,7 @@ void CustomData_set_layer_stencil_index(struct CustomData *data, int type, int n
 
 /* adds flag to the layer flags */
 void CustomData_set_layer_flag(struct CustomData *data, int type, int flag);
+void CustomData_clear_layer_flag(struct CustomData *data, int type, int flag);
 
 void CustomData_bmesh_set_default(struct CustomData *data, void **block);
 void CustomData_bmesh_free_block(struct CustomData *data, void **block);
index fb7a092..f4b9040 100644 (file)
@@ -1853,6 +1853,17 @@ void CustomData_set_layer_flag(struct CustomData *data, int type, int flag)
                        data->layers[i].flag |= flag;
 }
 
+void CustomData_clear_layer_flag(struct CustomData *data, int type, int flag)
+{
+       const int nflag = ~flag;
+
+       for (int i = 0; i < data->totlayer; ++i) {
+               if (data->layers[i].type == type) {
+                       data->layers[i].flag &= nflag;
+               }
+       }
+}
+
 static int customData_resize(CustomData *data, int amount)
 {
        CustomDataLayer *tmp = MEM_calloc_arrayN((data->maxlayer + amount), sizeof(*tmp),