[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