[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32224] trunk/blender/source/blender: Add distance check in lasso generation to get a smoother lasso.
Nathan Letwory
nathan at letworyinteractive.com
Fri Oct 1 10:12:37 CEST 2010
Revision: 32224
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32224
Author: jesterking
Date: 2010-10-01 10:12:37 +0200 (Fri, 01 Oct 2010)
Log Message:
-----------
Add distance check in lasso generation to get a smoother lasso.
Hopefully this helps with lasso select troubles [#21179].
Modified Paths:
--------------
trunk/blender/source/blender/editors/mesh/editmesh_mods.c
trunk/blender/source/blender/windowmanager/intern/wm_operators.c
Modified: trunk/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_mods.c 2010-10-01 07:49:00 UTC (rev 32223)
+++ trunk/blender/source/blender/editors/mesh/editmesh_mods.c 2010-10-01 08:12:37 UTC (rev 32224)
@@ -284,7 +284,7 @@
/* yah, opengl doesn't do concave... tsk! */
ED_region_pixelspace(vc->ar);
- draw_triangulated(mcords, tot);
+ draw_triangulated(mcords, tot);
glBegin(GL_LINE_LOOP); /* for zero sized masks, lines */
for(a=0; a<tot; a++) glVertex2s(mcords[a][0], mcords[a][1]);
Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c 2010-10-01 07:49:00 UTC (rev 32223)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c 2010-10-01 08:12:37 UTC (rev 32224)
@@ -2435,11 +2435,21 @@
}
{
+ short x, y;
short *lasso= gesture->customdata;
- lasso += 2 * gesture->points;
- lasso[0] = event->x - sx;
- lasso[1] = event->y - sy;
- gesture->points++;
+
+ lasso += (2 * gesture->points - 2);
+ x = (event->x - sx - lasso[0]);
+ y = (event->y - sy - lasso[1]);
+
+ /* make a simple distance check to get a smoother lasso
+ add only when at least 2 pixels between this and previous location */
+ if((x*x+y*y) > 4) {
+ lasso += 2;
+ lasso[0] = event->x - sx;
+ lasso[1] = event->y - sy;
+ gesture->points++;
+ }
}
break;
More information about the Bf-blender-cvs
mailing list