[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51460] trunk/blender/source/blender: bmesh-decimate now only does CustomData_has_math for loop layers, add CustomData_has_interp() for vert & edges.
Campbell Barton
ideasman42 at gmail.com
Sat Oct 20 19:39:58 CEST 2012
Revision: 51460
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51460
Author: campbellbarton
Date: 2012-10-20 17:39:56 +0000 (Sat, 20 Oct 2012)
Log Message:
-----------
bmesh-decimate now only does CustomData_has_math for loop layers, add CustomData_has_interp() for vert & edges.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_customdata.h
trunk/blender/source/blender/blenkernel/intern/customdata.c
trunk/blender/source/blender/bmesh/intern/bmesh_decimate.c
Modified: trunk/blender/source/blender/blenkernel/BKE_customdata.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_customdata.h 2012-10-20 17:31:07 UTC (rev 51459)
+++ trunk/blender/source/blender/blenkernel/BKE_customdata.h 2012-10-20 17:39:56 UTC (rev 51460)
@@ -80,11 +80,13 @@
* the below operations.
*/
int CustomData_layer_has_math(struct CustomData *data, int layer_n);
+int CustomData_layer_has_interp(struct CustomData *data, int layer_n);
/**
* Checks if any of the customdata layers has math.
*/
int CustomData_has_math(struct CustomData *data);
+int CustomData_has_interp(struct CustomData *data);
/* copies the "value" (e.g. mloopuv uv or mloopcol colors) from one block to
* another, while not overwriting anything else (e.g. flags). probably only
Modified: trunk/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/customdata.c 2012-10-20 17:31:07 UTC (rev 51459)
+++ trunk/blender/source/blender/blenkernel/intern/customdata.c 2012-10-20 17:39:56 UTC (rev 51460)
@@ -2483,6 +2483,17 @@
return FALSE;
}
+int CustomData_layer_has_interp(struct CustomData *data, int layer_n)
+{
+ const LayerTypeInfo *typeInfo = layerType_getInfo(data->layers[layer_n].type);
+
+ if (typeInfo->interp) {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
int CustomData_has_math(struct CustomData *data)
{
int i;
@@ -2497,6 +2508,20 @@
return FALSE;
}
+int CustomData_has_interp(struct CustomData *data)
+{
+ int i;
+
+ /* interpolates a layer at a time */
+ for (i = 0; i < data->totlayer; ++i) {
+ if (CustomData_layer_has_interp(data, i)) {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
/* copies the "value" (e.g. mloopuv uv or mloopcol colors) from one block to
* another, while not overwriting anything else (e.g. flags)*/
void CustomData_data_copy_value(int type, void *source, void *dest)
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_decimate.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_decimate.c 2012-10-20 17:31:07 UTC (rev 51459)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_decimate.c 2012-10-20 17:39:56 UTC (rev 51460)
@@ -697,10 +697,10 @@
#ifdef USE_CUSTOMDATA
- /* initialize customdata flag */
- if (CustomData_has_math(&bm->vdata)) customdata_flag |= CD_DO_VERT;
- if (CustomData_has_math(&bm->edata)) customdata_flag |= CD_DO_EDGE;
- if (CustomData_has_math(&bm->ldata)) customdata_flag |= CD_DO_LOOP;
+ /* initialize customdata flag, we only need math for loops */
+ if (CustomData_has_interp(&bm->vdata)) customdata_flag |= CD_DO_VERT;
+ if (CustomData_has_interp(&bm->edata)) customdata_flag |= CD_DO_EDGE;
+ if (CustomData_has_math(&bm->ldata)) customdata_flag |= CD_DO_LOOP;
#endif
/* iterative edge collapse and maintain the eheap */
More information about the Bf-blender-cvs
mailing list