[Bf-blender-cvs] [896725e] master: Mask point slide: clean-up of SlidePointData structure

Sergey Sharybin noreply at git.blender.org
Fri Apr 4 11:12:18 CEST 2014


Commit: 896725e0bbd77c3203ae3edcb88a032d191ef220
Author: Sergey Sharybin
Date:   Fri Apr 4 15:11:39 2014 +0600
https://developer.blender.org/rB896725e0bbd77c3203ae3edcb88a032d191ef220

Mask point slide: clean-up of SlidePointData structure

===================================================================

M	source/blender/editors/mask/mask_ops.c

===================================================================

diff --git a/source/blender/editors/mask/mask_ops.c b/source/blender/editors/mask/mask_ops.c
index 797cc79..1434542 100644
--- a/source/blender/editors/mask/mask_ops.c
+++ b/source/blender/editors/mask/mask_ops.c
@@ -462,30 +462,38 @@ enum {
 };
 
 typedef struct SlidePointData {
+	/* Generic fields. */
 	int action;
-
-	float prev_mouse_coord[2];
-	float prev_handle_coord[2];
-	float prev_feather_coord[2];
-
-	float co[2];
-	float vec[3][3];
-	char old_h1, old_h2;
-
 	Mask *mask;
 	MaskLayer *masklay;
 	MaskSpline *spline, *orig_spline;
 	MaskSplinePoint *point;
 	MaskSplinePointUW *uw;
 	eMaskWhichHandle which_handle;
-	float handle[2], no[2], feather[2];
 	int width, height;
-	float weight, weight_scalar;
 
-	bool curvature_only, accurate;
-	bool initial_feather, overall_feather;
+	float prev_mouse_coord[2];
+	float no[2];
+
+	bool is_curvature_only,
+	     is_accurate,
+	     is_initial_feather,
+	     is_overall_feather;
 
 	bool is_sliding_new_point;
+
+	/* Data needed to restre the state. */
+	float vec[3][3];
+	char old_h1, old_h2;
+
+	/* Point sliding. */
+
+	/* Handle sliding. */
+	float orig_handle_coord[2], prev_handle_coord[2];
+
+	/* Feather sliding. */
+	float prev_feather_coord[2];
+	float weight, weight_scalar;
 } SlidePointData;
 
 static bool slide_point_check_initial_feather(MaskSpline *spline)
@@ -628,7 +636,7 @@ static void *slide_point_customdata(bContext *C, wmOperator *op, const wmEvent *
 			BKE_mask_point_segment_co(spline, point, uw->u, co_uw);
 			BKE_mask_point_normal(spline, point, uw->u, customdata->no);
 
-			madd_v2_v2v2fl(customdata->feather, co_uw, customdata->no, uw->w * weight_scalar);
+			madd_v2_v2v2fl(customdata->prev_feather_coord, co_uw, customdata->no, uw->w * weight_scalar);
 		}
 		else {
 			BezTriple *bezt = &point->bezt;
@@ -637,22 +645,21 @@ static void *slide_point_customdata(bContext *C, wmOperator *op, const wmEvent *
 			customdata->weight_scalar = 1.0f;
 			BKE_mask_point_normal(spline, point, 0.0f, customdata->no);
 
-			madd_v2_v2v2fl(customdata->feather, bezt->vec[1], customdata->no, bezt->weight);
+			madd_v2_v2v2fl(customdata->prev_feather_coord, bezt->vec[1], customdata->no, bezt->weight);
 		}
 
-		if (customdata->action == SLIDE_ACTION_FEATHER)
-			customdata->initial_feather = slide_point_check_initial_feather(spline);
+		if (customdata->action == SLIDE_ACTION_FEATHER) {
+			customdata->is_initial_feather = slide_point_check_initial_feather(spline);
+		}
 
 		copy_m3_m3(customdata->vec, point->bezt.vec);
 		if (which_handle != MASK_WHICH_HANDLE_NONE) {
-			BKE_mask_point_handle(point, which_handle, customdata->handle);
-			copy_v2_v2(customdata->prev_handle_coord, customdata->handle);
+			BKE_mask_point_handle(point, which_handle, customdata->orig_handle_coord);
+			copy_v2_v2(customdata->prev_handle_coord, customdata->orig_handle_coord);
 		}
 		customdata->which_handle = which_handle;
-		ED_mask_mouse_pos(sa, ar, event->mval, customdata->co);
 
-		copy_v2_v2(customdata->prev_mouse_coord, customdata->co);
-		copy_v2_v2(customdata->prev_feather_coord, customdata->feather);
+		ED_mask_mouse_pos(sa, ar, event->mval, customdata->prev_mouse_coord);
 	}
 
 	return customdata;
@@ -758,14 +765,16 @@ static int slide_point_modal(bContext *C, wmOperator *op, const wmEvent *event)
 		case LEFTSHIFTKEY:
 		case RIGHTSHIFTKEY:
 			if (ELEM(event->type, LEFTALTKEY, RIGHTALTKEY)) {
-				if (data->action == SLIDE_ACTION_FEATHER)
-					data->overall_feather = (event->val == KM_PRESS);
-				else
-					data->curvature_only = (event->val == KM_PRESS);
+				if (data->action == SLIDE_ACTION_FEATHER) {
+					data->is_overall_feather = (event->val == KM_PRESS);
+				}
+				else {
+					data->is_curvature_only = (event->val == KM_PRESS);
+				}
 			}
 
 			if (ELEM(event->type, LEFTSHIFTKEY, RIGHTSHIFTKEY))
-				data->accurate = (event->val == KM_PRESS);
+				data->is_accurate = (event->val == KM_PRESS);
 
 			/* fall-through */  /* update CV position */
 		case MOUSEMOVE:
@@ -776,7 +785,7 @@ static int slide_point_modal(bContext *C, wmOperator *op, const wmEvent *event)
 
 			ED_mask_mouse_pos(sa, ar, event->mval, co);
 			sub_v2_v2v2(delta, co, data->prev_mouse_coord);
-			if (data->accurate) {
+			if (data->is_accurate) {
 				mul_v2_fl(delta, 0.2f);
 			}
 			copy_v2_v2(data->prev_mouse_coord, co);
@@ -801,8 +810,8 @@ static int slide_point_modal(bContext *C, wmOperator *op, const wmEvent *event)
 				add_v2_v2v2(new_handle, data->prev_handle_coord, delta);
 
 				BKE_mask_point_set_handle(data->point, data->which_handle,
-				                          new_handle, data->curvature_only,
-				                          data->handle, data->vec);
+				                          new_handle, data->is_curvature_only,
+				                          data->orig_handle_coord, data->vec);
 				BKE_mask_point_handle(data->point, data->which_handle, data->prev_handle_coord);
 
 				if (data->is_sliding_new_point) {
@@ -826,7 +835,7 @@ static int slide_point_modal(bContext *C, wmOperator *op, const wmEvent *event)
 				float vec[2], no[2], p[2], c[2], w, offco[2];
 				float *weight = NULL;
 				float weight_scalar = 1.0f;
-				bool overall_feather = data->overall_feather || data->initial_feather;
+				bool is_overall_feather = data->is_overall_feather || data->is_initial_feather;
 
 				add_v2_v2v2(offco, data->prev_feather_coord, delta);
 
@@ -882,7 +891,7 @@ static int slide_point_modal(bContext *C, wmOperator *op, const wmEvent *event)
 
 					w = len_v2(vec);
 
-					if (overall_feather) {
+					if (is_overall_feather) {
 						float delta;
 
 						if (dot_v2v2(no, vec) <= 0.0f)
@@ -899,7 +908,7 @@ static int slide_point_modal(bContext *C, wmOperator *op, const wmEvent *event)
 							data->orig_spline = BKE_mask_spline_copy(data->spline);
 						}
 
-						if (data->initial_feather) {
+						if (data->is_initial_feather) {
 							*weight = w * weight_scalar;
 						}




More information about the Bf-blender-cvs mailing list