[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47282] branches/soc-2011-tomato/source/ blender/editors/mask/mask_select.c: fix for border/circle/ lasso select not using the deformed locations when selecting.
Campbell Barton
ideasman42 at gmail.com
Thu May 31 17:37:44 CEST 2012
Revision: 47282
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47282
Author: campbellbarton
Date: 2012-05-31 15:37:44 +0000 (Thu, 31 May 2012)
Log Message:
-----------
fix for border/circle/lasso select not using the deformed locations when selecting.
Modified Paths:
--------------
branches/soc-2011-tomato/source/blender/editors/mask/mask_select.c
Modified: branches/soc-2011-tomato/source/blender/editors/mask/mask_select.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/mask/mask_select.c 2012-05-31 14:36:22 UTC (rev 47281)
+++ branches/soc-2011-tomato/source/blender/editors/mask/mask_select.c 2012-05-31 15:37:44 UTC (rev 47282)
@@ -390,13 +390,16 @@
}
for (spline = maskobj->splines.first; spline; spline = spline->next) {
+ MaskSplinePoint *points_array = BKE_mask_spline_point_array(spline);
+
for (i = 0; i < spline->tot_point; i++) {
MaskSplinePoint *point = &spline->points[i];
+ MaskSplinePoint *point_deform = &points_array[i];
/* TODO: handles? */
/* TODO: uw? */
- if (BLI_in_rctf(&rectf, point->bezt.vec[1][0], point->bezt.vec[1][1])) {
+ if (BLI_in_rctf(&rectf, point_deform->bezt.vec[1][0], point_deform->bezt.vec[1][1])) {
BKE_mask_point_select_set(point, mode == GESTURE_MODAL_SELECT);
BKE_mask_point_select_set_handle(point, mode == GESTURE_MODAL_SELECT);
}
@@ -462,8 +465,11 @@
}
for (spline = maskobj->splines.first; spline; spline = spline->next) {
+ MaskSplinePoint *points_array = BKE_mask_spline_point_array(spline);
+
for (i = 0; i < spline->tot_point; i++) {
MaskSplinePoint *point = &spline->points[i];
+ MaskSplinePoint *point_deform = &points_array[i];
/* TODO: handles? */
/* TODO: uw? */
@@ -472,7 +478,7 @@
/* marker in screen coords */
ED_mask_point_pos__reverse(C,
- point->bezt.vec[1][0], point->bezt.vec[1][1],
+ point_deform->bezt.vec[1][0], point_deform->bezt.vec[1][1],
&screen_co[0], &screen_co[1]);
if (BLI_in_rcti(&rect, screen_co[0], screen_co[1]) &&
@@ -539,15 +545,15 @@
/********************** circle select operator *********************/
-static int mask_spline_point_inside_ellipse(MaskSplinePoint *point, float offset[2], float ellipse[2])
+static int mask_spline_point_inside_ellipse(BezTriple *bezt, float offset[2], float ellipse[2])
{
/* normalized ellipse: ell[0] = scaleX, ell[1] = scaleY */
float x, y;
- x = (point->bezt.vec[1][0] - offset[0]) * ellipse[0];
- y = (point->bezt.vec[1][1] - offset[1]) * ellipse[1];
+ x = (bezt->vec[1][0] - offset[0]) * ellipse[0];
+ y = (bezt->vec[1][1] - offset[1]) * ellipse[1];
- return x*x + y*y < 1.0f;
+ return x * x + y * y < 1.0f;
}
static int circle_select_exec(bContext *C, wmOperator *op)
@@ -588,10 +594,13 @@
}
for (spline = maskobj->splines.first; spline; spline = spline->next) {
+ MaskSplinePoint *points_array = BKE_mask_spline_point_array(spline);
+
for (i = 0; i < spline->tot_point; i++) {
MaskSplinePoint *point = &spline->points[i];
+ MaskSplinePoint *point_deform = &points_array[i];
- if (mask_spline_point_inside_ellipse(point, offset, ellipse)) {
+ if (mask_spline_point_inside_ellipse(&point_deform->bezt, offset, ellipse)) {
BKE_mask_point_select_set(point, mode == GESTURE_MODAL_SELECT);
BKE_mask_point_select_set_handle(point, mode == GESTURE_MODAL_SELECT);
More information about the Bf-blender-cvs
mailing list