[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