[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