[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47312] branches/soc-2011-tomato/source/ blender: Small refactor of mask sliding operator

Sergey Sharybin sergey.vfx at gmail.com
Fri Jun 1 13:44:46 CEST 2012


Revision: 47312
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47312
Author:   nazgul
Date:     2012-06-01 11:44:46 +0000 (Fri, 01 Jun 2012)
Log Message:
-----------
Small refactor of mask sliding operator
Also aspect ratio correction is not needed for BKE_mask_point_set_handle

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_mask.h
    branches/soc-2011-tomato/source/blender/blenkernel/intern/mask.c
    branches/soc-2011-tomato/source/blender/editors/mask/mask_ops.c
    branches/soc-2011-tomato/source/blender/editors/transform/transform_conversions.c

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_mask.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_mask.h	2012-06-01 11:03:44 UTC (rev 47311)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_mask.h	2012-06-01 11:44:46 UTC (rev 47312)
@@ -66,7 +66,7 @@
 int BKE_mask_point_has_handle(struct MaskSplinePoint *point);
 void BKE_mask_point_handle(struct MaskSplinePoint *point, float handle[2]);
 void BKE_mask_point_set_handle(struct MaskSplinePoint *point, float loc[2], int keep_direction,
-                               float aspx, float aspy, float orig_handle[2], float orig_vec[3][3]);
+                               float orig_handle[2], float orig_vec[3][3]);
 float *BKE_mask_point_segment_diff(struct MaskSpline *spline, struct MaskSplinePoint *point, int *tot_diff_point);
 float *BKE_mask_point_segment_feather_diff(struct MaskSpline *spline, struct MaskSplinePoint *point,
                                            int *tot_feather_point);

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/mask.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/mask.c	2012-06-01 11:03:44 UTC (rev 47311)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/mask.c	2012-06-01 11:44:46 UTC (rev 47312)
@@ -386,7 +386,7 @@
 	handle[1] = (point->bezt.vec[1][1] - vec[0]);
 }
 
-void BKE_mask_point_set_handle(MaskSplinePoint *point, float loc[2], int keep_direction, float aspx, float aspy,
+void BKE_mask_point_set_handle(MaskSplinePoint *point, float loc[2], int keep_direction,
                                float orig_handle[2], float orig_vec[3][3])
 {
 	BezTriple *bezt = &point->bezt;
@@ -396,11 +396,6 @@
 		sub_v2_v2v2(v1, loc, orig_vec[1]);
 		sub_v2_v2v2(v2, orig_handle, orig_vec[1]);
 
-		v1[0] *= aspx;
-		v1[1] *= aspy;
-		v2[0] *= aspx;
-		v2[1] *= aspx;
-
 		project_v2_v2v2(vec, v1, v2);
 
 		if (dot_v2v2(v2, vec) > 0) {
@@ -408,14 +403,8 @@
 
 			sub_v2_v2v2(v1, orig_vec[0], orig_vec[1]);
 
-			v1[0] *= aspx;
-			v1[1] *= aspy;
-
 			mul_v2_fl(v1, len / len_v2(v1));
 
-			v1[0] /= aspx;
-			v1[1] /= aspy;
-
 			add_v2_v2v2(bezt->vec[0], bezt->vec[1], v1);
 			sub_v2_v2v2(bezt->vec[2], bezt->vec[1], v1);
 		}
@@ -427,8 +416,8 @@
 	else {
 		sub_v2_v2v2(v1, loc, bezt->vec[1]);
 
-		v2[0] = -v1[1] * aspy / aspx;
-		v2[1] =  v1[0] * aspx / aspy;
+		v2[0] = -v1[1];
+		v2[1] =  v1[0];
 
 		add_v2_v2v2(bezt->vec[0], bezt->vec[1], v2);
 		sub_v2_v2v2(bezt->vec[2], bezt->vec[1], v2);

Modified: branches/soc-2011-tomato/source/blender/editors/mask/mask_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/mask/mask_ops.c	2012-06-01 11:03:44 UTC (rev 47311)
+++ branches/soc-2011-tomato/source/blender/editors/mask/mask_ops.c	2012-06-01 11:44:46 UTC (rev 47312)
@@ -551,7 +551,6 @@
 	MaskSplinePoint *point;
 	MaskSplinePointUW *uw;
 	float handle[2], no[2], feather[2];
-	float aspx, aspy;
 	int width, height;
 	float weight;
 
@@ -609,8 +608,6 @@
 		customdata->action = action;
 		customdata->uw = uw;
 
-		ED_mask_aspect(C, &customdata->aspx, &customdata->aspy);
-
 		if (uw) {
 			float co[2];
 
@@ -732,7 +729,7 @@
 				add_v2_v2(offco, data->co);
 				add_v2_v2(offco, delta);
 
-				BKE_mask_point_set_handle(data->point, offco, data->curvature_only, data->aspx, data->aspy, data->handle, data->vec);
+				BKE_mask_point_set_handle(data->point, offco, data->curvature_only, data->handle, data->vec);
 			}
 			else if (data->action == SLIDE_ACTION_POINT) {
 				float delta[2];
@@ -747,20 +744,21 @@
 			}
 			else if (data->action == SLIDE_ACTION_FEATHER) {
 				float vec[2], no[2], p[2], c[2], w, offco[2];
-				float *weight;
+				float *weight = NULL;
 
 				add_v2_v2v2(offco, data->feather, dco);
 
 				if (data->uw) {
 					float u = projection_on_spline(data->spline, data->point, data->uw->u, offco);
 
-					if (u > 0.0f && u < 1.0f)
+					if (u > 0.0f && u < 1.0f) {
 						data->uw->u = u;
 
-					data->uw = BKE_mask_point_sort_uw(data->point, data->uw);
-					weight = &data->uw->w;
-					BKE_mask_point_normal(data->spline, data->point, data->uw->u, no);
-					BKE_mask_point_segment_co(data->spline, data->point, data->uw->u, p);
+						data->uw = BKE_mask_point_sort_uw(data->point, data->uw);
+						weight = &data->uw->w;
+						BKE_mask_point_normal(data->spline, data->point, data->uw->u, no);
+						BKE_mask_point_segment_co(data->spline, data->point, data->uw->u, p);
+					}
 				}
 				else {
 					weight = &bezt->weight;
@@ -768,18 +766,17 @@
 					copy_v2_v2(p, bezt->vec[1]);
 				}
 
-				sub_v2_v2v2(c, offco, p);
-				project_v2_v2v2(vec, c, no);
+				if (weight) {
+					sub_v2_v2v2(c, offco, p);
+					project_v2_v2v2(vec, c, no);
 
-				vec[0] *= data->aspx;
-				vec[1] *= data->aspy;
+					w = len_v2(vec);
 
-				w = len_v2(vec);
+					if (dot_v2v2(no, vec) <= 0.0f)
+						w = 0.0f;
 
-				if (dot_v2v2(no, vec) > 0.0f)
 					*weight = w;
-				else
-					*weight = 0;
+				}
 			}
 
 			WM_event_add_notifier(C, NC_MASK | NA_EDITED, data->mask);

Modified: branches/soc-2011-tomato/source/blender/editors/transform/transform_conversions.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/transform/transform_conversions.c	2012-06-01 11:03:44 UTC (rev 47311)
+++ branches/soc-2011-tomato/source/blender/editors/transform/transform_conversions.c	2012-06-01 11:44:46 UTC (rev 47312)
@@ -6071,7 +6071,7 @@
 		td->loc2d[1]= td->loc[1]*invy;
 
 		if (tdm->is_handle)
-			BKE_mask_point_set_handle(tdm->point, td->loc2d, t->flag & T_ALT_TRANSFORM, aspx, aspy, tdm->orig_handle, tdm->vec);
+			BKE_mask_point_set_handle(tdm->point, td->loc2d, t->flag & T_ALT_TRANSFORM, tdm->orig_handle, tdm->vec);
 	}
 }
 




More information about the Bf-blender-cvs mailing list