[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46509] trunk/blender/source/blender: Code cleanup for parameters of subsurf_make_derived_from_derived.

Nicholas Bishop nicholasbishop at gmail.com
Thu May 10 22:31:55 CEST 2012


Revision: 46509
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46509
Author:   nicholasbishop
Date:     2012-05-10 20:31:55 +0000 (Thu, 10 May 2012)
Log Message:
-----------
Code cleanup for parameters of subsurf_make_derived_from_derived.

This is the first commit of the sculpt masking merge. Documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/PaintMasks

Thanks to Brecht for reviewing!

Replaced four boolean parameters with a single flag and a new enum,
SubsurfFlags.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_subsurf.h
    trunk/blender/source/blender/blenkernel/intern/multires.c
    trunk/blender/source/blender/blenkernel/intern/shrinkwrap.c
    trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    trunk/blender/source/blender/editors/object/object_bake.c
    trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
    trunk/blender/source/blender/modifiers/intern/MOD_subsurf.c

Modified: trunk/blender/source/blender/blenkernel/BKE_subsurf.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_subsurf.h	2012-05-10 20:24:20 UTC (rev 46508)
+++ trunk/blender/source/blender/blenkernel/BKE_subsurf.h	2012-05-10 20:31:55 UTC (rev 46509)
@@ -56,11 +56,18 @@
 
 /**************************** External *****************************/
 
+typedef enum {
+	SUBSURF_USE_RENDER_PARAMS = 1,
+	SUBSURF_IS_FINAL_CALC = 2,
+	SUBSURF_FOR_EDIT_MODE = 4,
+	SUBSURF_IN_EDIT_MODE = 8
+} SubsurfFlags;
+
 struct DerivedMesh *subsurf_make_derived_from_derived(
 						struct DerivedMesh *dm,
 						struct SubsurfModifierData *smd,
-						int useRenderParams, float (*vertCos)[3],
-						int isFinalCalc, int forEditMode, int inEditMode);
+						float (*vertCos)[3],
+						SubsurfFlags flags);
 
 void subsurf_calculate_limit_positions(struct Mesh *me, float (*positions_r)[3]);
 

Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c	2012-05-10 20:24:20 UTC (rev 46508)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c	2012-05-10 20:31:55 UTC (rev 46509)
@@ -684,6 +684,7 @@
 static DerivedMesh *subsurf_dm_create_local(Object *ob, DerivedMesh *dm, int lvl, int simple, int optimal, int plain_uv)
 {
 	SubsurfModifierData smd = {{NULL}};
+	SubsurfFlags flags = 0;
 
 	smd.levels = smd.renderLevels = lvl;
 	if (!plain_uv)
@@ -693,7 +694,9 @@
 	if (optimal)
 		smd.flags |= eSubsurfModifierFlag_ControlEdges;
 
-	return subsurf_make_derived_from_derived(dm, &smd, 0, NULL, 0, 0, (ob->mode & OB_MODE_EDIT));
+	if (ob->mode & OB_MODE_EDIT)
+		flags |= SUBSURF_IN_EDIT_MODE;
+	return subsurf_make_derived_from_derived(dm, &smd, NULL, flags);
 }
 
 

Modified: trunk/blender/source/blender/blenkernel/intern/shrinkwrap.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/shrinkwrap.c	2012-05-10 20:24:20 UTC (rev 46508)
+++ trunk/blender/source/blender/blenkernel/intern/shrinkwrap.c	2012-05-10 20:31:55 UTC (rev 46509)
@@ -523,7 +523,7 @@
 			ssmd.subdivType	= ME_CC_SUBSURF;		//catmull clark
 			ssmd.levels		= smd->subsurfLevels;	//levels
 
-			ss_mesh = subsurf_make_derived_from_derived(dm, &ssmd, FALSE, NULL, 0, 0, (ob->mode & OB_MODE_EDIT));
+			ss_mesh = subsurf_make_derived_from_derived(dm, &ssmd, NULL, (ob->mode & OB_MODE_EDIT) ? SUBSURF_IN_EDIT_MODE : 0);
 
 			if (ss_mesh) {
 				calc.vert = ss_mesh->getVertDataArray(ss_mesh, CD_MVERT);

Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2012-05-10 20:24:20 UTC (rev 46508)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2012-05-10 20:31:55 UTC (rev 46509)
@@ -3367,8 +3367,8 @@
 struct DerivedMesh *subsurf_make_derived_from_derived(
         struct DerivedMesh *dm,
         struct SubsurfModifierData *smd,
-        int useRenderParams, float (*vertCos)[3],
-        int isFinalCalc, int forEditMode, int inEditMode)
+        float (*vertCos)[3],
+        SubsurfFlags flags)
 {
 	int useSimple = smd->subdivType == ME_SIMPLE_SUBSURF;
 	CCGFlags useAging = smd->flags & eSubsurfModifierFlag_DebugIncr ? CCG_USE_AGING : 0;
@@ -3376,7 +3376,7 @@
 	int drawInteriorEdges = !(smd->flags & eSubsurfModifierFlag_ControlEdges);
 	CCGDerivedMesh *result;
 
-	if (forEditMode) {
+	if (flags & SUBSURF_FOR_EDIT_MODE) {
 		int levels = (smd->modifier.scene) ? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels) : smd->levels;
 
 		smd->emCache = _getSubSurf(smd->emCache, levels, useAging | CCG_CALC_NORMALS);
@@ -3386,7 +3386,7 @@
 		                           drawInteriorEdges,
 		                           useSubsurfUv, dm);
 	}
-	else if (useRenderParams) {
+	else if (flags & SUBSURF_USE_RENDER_PARAMS) {
 		/* Do not use cache in render mode. */
 		CCGSubSurf *ss;
 		int levels = (smd->modifier.scene) ? get_render_subsurf_level(&smd->modifier.scene->r, smd->renderLevels) : smd->renderLevels;
@@ -3419,14 +3419,13 @@
 		 * Addendum: we can't really ensure that this is never called in edit
 		 * mode, so now we have a parameter to verify it. - brecht
 		 */
-		if (!inEditMode && smd->emCache) {
+		if (!(flags & SUBSURF_IN_EDIT_MODE) && smd->emCache) {
 			ccgSubSurf_free(smd->emCache);
 			smd->emCache = NULL;
 		}
 
-		if (useIncremental && isFinalCalc) {
+		if (useIncremental && (flags & SUBSURF_IS_FINAL_CALC)) {
 			smd->mCache = ss = _getSubSurf(smd->mCache, levels, useAging | CCG_CALC_NORMALS);
-
 			ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple);
 
 			result = getCCGDerivedMesh(smd->mCache,
@@ -3434,7 +3433,7 @@
 			                           useSubsurfUv, dm);
 		}
 		else {
-			if (smd->mCache && isFinalCalc) {
+			if (smd->mCache && (flags & SUBSURF_IS_FINAL_CALC)) {
 				ccgSubSurf_free(smd->mCache);
 				smd->mCache = NULL;
 			}
@@ -3444,7 +3443,7 @@
 
 			result = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm);
 
-			if (isFinalCalc)
+			if (flags & SUBSURF_IS_FINAL_CALC)
 				smd->mCache = ss;
 			else
 				result->freeSS = 1;

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c	2012-05-10 20:24:20 UTC (rev 46508)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2012-05-10 20:31:55 UTC (rev 46509)
@@ -619,7 +619,7 @@
 		if (bkr->simple)
 			smd.subdivType = ME_SIMPLE_SUBSURF;
 
-		height_data->ssdm = subsurf_make_derived_from_derived(bkr->lores_dm, &smd, 0, NULL, 0, 0, 0);
+		height_data->ssdm = subsurf_make_derived_from_derived(bkr->lores_dm, &smd, NULL, 0);
 	}
 
 	height_data->origindex = lodm->getTessFaceDataArray(lodm, CD_ORIGINDEX);

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2012-05-10 20:24:20 UTC (rev 46508)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2012-05-10 20:31:55 UTC (rev 46509)
@@ -402,7 +402,7 @@
 		
 	initialDerived = CDDM_from_BMEditMesh(em, NULL, 0, 0);
 	derivedMesh = subsurf_make_derived_from_derived(initialDerived, &smd,
-	                                                0, NULL, 0, 0, 1);
+													NULL, SUBSURF_IN_EDIT_MODE);
 
 	initialDerived->release(initialDerived);
 

Modified: trunk/blender/source/blender/modifiers/intern/MOD_subsurf.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_subsurf.c	2012-05-10 20:24:20 UTC (rev 46508)
+++ trunk/blender/source/blender/modifiers/intern/MOD_subsurf.c	2012-05-10 20:31:55 UTC (rev 46509)
@@ -94,13 +94,20 @@
                                   ModifierApplyFlag flag)
 {
 	SubsurfModifierData *smd = (SubsurfModifierData *) md;
+	SubsurfFlags subsurf_flags = 0;
 	DerivedMesh *result;
 	const int useRenderParams = flag & MOD_APPLY_RENDER;
 	const int isFinalCalc = flag & MOD_APPLY_USECACHE;
 
-	result = subsurf_make_derived_from_derived(derivedData, smd, useRenderParams, NULL,
-	                                           isFinalCalc, 0, (ob->flag & OB_MODE_EDIT));
+	if(useRenderParams)
+		subsurf_flags |= SUBSURF_USE_RENDER_PARAMS;
+	if(isFinalCalc)
+		subsurf_flags |= SUBSURF_IS_FINAL_CALC;
+	if(ob->flag & OB_MODE_EDIT)
+		subsurf_flags |= SUBSURF_IN_EDIT_MODE;
 	
+	result = subsurf_make_derived_from_derived(derivedData, smd, NULL, subsurf_flags);
+	
 	if (useRenderParams || !isFinalCalc) {
 		DerivedMesh *cddm = CDDM_copy(result);
 		result->release(result);
@@ -117,8 +124,9 @@
 	SubsurfModifierData *smd = (SubsurfModifierData *) md;
 	DerivedMesh *result;
 
-	result = subsurf_make_derived_from_derived(derivedData, smd, 0,
-	                                           NULL, 0, 1, 1);
+	result = subsurf_make_derived_from_derived(derivedData, smd,
+											   NULL, (SUBSURF_FOR_EDIT_MODE |
+													  SUBSURF_IN_EDIT_MODE));
 
 	return result;
 }




More information about the Bf-blender-cvs mailing list