[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53007] trunk/blender/source/blender: code cleanup and move alternate shell calculation method into its own function : BM_vert_calc_shell_factor_ex

Campbell Barton ideasman42 at gmail.com
Fri Dec 14 17:10:47 CET 2012


Revision: 53007
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53007
Author:   campbellbarton
Date:     2012-12-14 16:10:46 +0000 (Fri, 14 Dec 2012)
Log Message:
-----------
code cleanup and move alternate shell calculation method into its own function: BM_vert_calc_shell_factor_ex

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/particle_system.c
    trunk/blender/source/blender/bmesh/intern/bmesh_queries.c
    trunk/blender/source/blender/bmesh/intern/bmesh_queries.h
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c

Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c	2012-12-14 16:09:31 UTC (rev 53006)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c	2012-12-14 16:10:46 UTC (rev 53007)
@@ -2616,12 +2616,12 @@
 	return pow2(pow3(x)) * x;
 }
 
-static void sphclassical_density_accum_cb(void *userdata, int index, float squared_dist)
+static void sphclassical_density_accum_cb(void *userdata, int index, float UNUSED(squared_dist))
 {
 	SPHRangeData *pfr = (SPHRangeData *)userdata;
 	ParticleData *npa = pfr->npsys->particles + index;
 	float q;
-	float qfac = 21.0f / (256.f * M_PI);
+	float qfac = 21.0f / (256.f * (float)M_PI);
 	float rij, rij_h;
 	float vec[3];
 
@@ -2647,7 +2647,7 @@
 	pfr->data[1] += q / npa->sphdensity;
 }
 
-static void sphclassical_neighbour_accum_cb(void *userdata, int index, float squared_dist)
+static void sphclassical_neighbour_accum_cb(void *userdata, int index, float UNUSED(squared_dist))
 {
 	SPHRangeData *pfr = (SPHRangeData *)userdata;
 	ParticleData *npa = pfr->npsys->particles + index;
@@ -2699,7 +2699,7 @@
 
 	int i;
 
-	float qfac2 = 42.0f / (256.0f * M_PI);
+	float qfac2 = 42.0f / (256.0f * (float)M_PI);
 	float rij_h;
 
 	/* 4.0 here is to be consistent with previous formulation/interface */

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_queries.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_queries.c	2012-12-14 16:09:31 UTC (rev 53006)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_queries.c	2012-12-14 16:10:46 UTC (rev 53007)
@@ -1113,7 +1113,41 @@
 		return 1.0f;
 	}
 }
+/* alternate version of #BM_vert_calc_shell_factor which only
+ * uses 'hflag' faces, but falls back to all if none found. */
+float BM_vert_calc_shell_factor_ex(BMVert *v, const char hflag)
+{
+	BMIter iter;
+	BMLoop *l;
+	float accum_shell = 0.0f;
+	float accum_angle = 0.0f;
+	int tot_sel = 0, tot = 0;
 
+	BM_ITER_ELEM (l, &iter, v, BM_LOOPS_OF_VERT) {
+		if (BM_elem_flag_test(l->f, hflag)) {  /* <-- main difference to BM_vert_calc_shell_factor! */
+			const float face_angle = BM_loop_calc_face_angle(l);
+			accum_shell += shell_angle_to_dist(angle_normalized_v3v3(v->no, l->f->no)) * face_angle;
+			accum_angle += face_angle;
+			tot_sel++;
+		}
+		tot++;
+	}
+
+	if (accum_angle != 0.0f) {
+		return accum_shell / accum_angle;
+	}
+	else {
+		/* other main difference from BM_vert_calc_shell_factor! */
+		if (tot != 0 && tot_sel == 0) {
+			/* none selected, so use all */
+			return BM_vert_calc_shell_factor(v);
+		}
+		else {
+			return 1.0f;
+		}
+	}
+}
+
 /**
  * \note quite an obscure function.
  * used in bmesh operators that have a relative scale options,

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_queries.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_queries.h	2012-12-14 16:09:31 UTC (rev 53006)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_queries.h	2012-12-14 16:10:46 UTC (rev 53007)
@@ -69,6 +69,7 @@
 
 float   BM_vert_calc_edge_angle(BMVert *v);
 float   BM_vert_calc_shell_factor(BMVert *v);
+float   BM_vert_calc_shell_factor_ex(BMVert *v, const char hflag);
 float   BM_vert_calc_mean_tagged_edge_length(BMVert *v);
 
 BMLoop *BM_face_find_shortest_loop(BMFace *f);

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2012-12-14 16:09:31 UTC (rev 53006)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2012-12-14 16:10:46 UTC (rev 53007)
@@ -140,9 +140,11 @@
 /* when mouse is over area-edge */
 int ED_operator_screen_mainwinactive(bContext *C)
 {
+	bScreen *screen;
 	if (CTX_wm_window(C) == NULL) return 0;
-	if (CTX_wm_screen(C) == NULL) return 0;
-	if (CTX_wm_screen(C)->subwinactive != CTX_wm_screen(C)->mainwin) return 0;
+	screen = CTX_wm_screen(C);
+	if (screen == NULL) return 0;
+	if (screen->subwinactive != screen->mainwin) return 0;
 	return 1;
 }
 
@@ -3412,6 +3414,7 @@
 
 static int userpref_show_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *event)
 {
+	wmWindow *win = CTX_wm_window(C);
 	rcti rect;
 	int sizex, sizey;
 	
@@ -3420,8 +3423,8 @@
 	
 	/* some magic to calculate postition */
 	/* pixelsize: mouse coords are in U.pixelsize units :/ */
-	rect.xmin = (event->x / U.pixelsize) + CTX_wm_window(C)->posx - sizex / 2;
-	rect.ymin = (event->y / U.pixelsize) + CTX_wm_window(C)->posy - sizey / 2;
+	rect.xmin = (event->x / U.pixelsize) + win->posx - sizex / 2;
+	rect.ymin = (event->y / U.pixelsize) + win->posy - sizey / 2;
 	rect.xmax = rect.xmin + sizex;
 	rect.ymax = rect.ymin + sizey;
 	

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c	2012-12-14 16:09:31 UTC (rev 53006)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c	2012-12-14 16:10:46 UTC (rev 53007)
@@ -1880,40 +1880,6 @@
 	}
 }
 
-/* local version of #BM_vert_calc_shell_factor which only
- * uses selected faces */
-static float bm_vert_calc_shell_factor_selected(BMVert *v)
-{
-	BMIter iter;
-	BMLoop *l;
-	float accum_shell = 0.0f;
-	float accum_angle = 0.0f;
-	int tot_sel = 0, tot = 0;
-
-	BM_ITER_ELEM (l, &iter, v, BM_LOOPS_OF_VERT) {
-		if (BM_elem_flag_test(l->f, BM_ELEM_SELECT)) {  /* <-- only difference to BM_vert_calc_shell_factor! */
-			const float face_angle = BM_loop_calc_face_angle(l);
-			accum_shell += shell_angle_to_dist(angle_normalized_v3v3(v->no, l->f->no)) * face_angle;
-			accum_angle += face_angle;
-			tot_sel++;
-		}
-		tot++;
-	}
-
-	if (accum_angle != 0.0f) {
-		return accum_shell / accum_angle;
-	}
-	else {
-		if (tot != 0 && tot_sel == 0) {
-			/* none selected, so use all */
-			return BM_vert_calc_shell_factor(v);
-		}
-		else {
-			return 1.0f;
-		}
-	}
-}
-
 /* way to overwrite what data is edited with transform */
 static void VertsToTransData(TransInfo *t, TransData *td, TransDataExtension *tx,
                              BMEditMesh *em, BMVert *eve, float *bweight)
@@ -1962,7 +1928,7 @@
 	}
 	else if (t->mode == TFM_SHRINKFATTEN) {
 		td->ext = tx;
-		tx->isize[0] = bm_vert_calc_shell_factor_selected(eve);
+		tx->isize[0] = BM_vert_calc_shell_factor_ex(eve, BM_ELEM_SELECT);
 	}
 }
 




More information about the Bf-blender-cvs mailing list