Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-05-28 16:44:15 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-05-28 16:45:05 +0400
commitdcf2a071a008787946d6a15f134c012570e17a48 (patch)
treec566d7f71b4f8dbdaf3dc4299b4cbffb1d29adb9 /source/blender/editors/transform
parentbef5cb3aa2e5a7a992f3fa096943ba671c98e7b1 (diff)
Fix mask transform when display aspect is not 1:1
Requires some more intense testing.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r--source/blender/editors/transform/transform.c8
-rw-r--r--source/blender/editors/transform/transform_conversions.c4
-rw-r--r--source/blender/editors/transform/transform_generics.c9
3 files changed, 6 insertions, 15 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 5667b774b71..cf9f89e333c 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -334,7 +334,6 @@ void projectIntViewEx(TransInfo *t, const float vec[3], int adr[2], const eV3DPr
SpaceImage *sima = t->sa->spacedata.first;
if (t->options & CTX_MASK) {
- /* not working quite right, TODO (see below too) */
float aspx, aspy;
float v[2];
@@ -347,9 +346,6 @@ void projectIntViewEx(TransInfo *t, const float vec[3], int adr[2], const eV3DPr
BKE_mask_coord_to_image(sima->image, &sima->iuser, v, v);
- v[0] = v[0] / aspx;
- v[1] = v[1] / aspy;
-
ED_image_point_pos__reverse(sima, t->ar, v, v);
adr[0] = v[0];
@@ -405,7 +401,6 @@ void projectIntViewEx(TransInfo *t, const float vec[3], int adr[2], const eV3DPr
MovieClip *clip = ED_space_clip_get_clip(sc);
if (clip) {
- /* not working quite right, TODO (see above too) */
float aspx, aspy;
float v[2];
@@ -418,9 +413,6 @@ void projectIntViewEx(TransInfo *t, const float vec[3], int adr[2], const eV3DPr
BKE_mask_coord_to_movieclip(sc->clip, &sc->user, v, v);
- v[0] = v[0] / aspx;
- v[1] = v[1] / aspy;
-
ED_clip_point_stable_pos__reverse(sc, t->ar, v, v);
adr[0] = v[0];
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index ac52cf6b53f..cd58adc2991 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -6628,6 +6628,8 @@ static void MaskHandleToTransData(MaskSplinePoint *point, eMaskWhichHandle which
td->flag = 0;
td->loc = td2d->loc;
mul_v2_m3v2(td->center, parent_matrix, bezt->vec[1]);
+ td->center[0] *= asp[0];
+ td->center[1] *= asp[1];
copy_v3_v3(td->iloc, td->loc);
memset(td->axismtx, 0, sizeof(td->axismtx));
@@ -6689,6 +6691,8 @@ static void MaskPointToTransData(Scene *scene, MaskSplinePoint *point,
td->flag = 0;
td->loc = td2d->loc;
mul_v2_m3v2(td->center, parent_matrix, bezt->vec[1]);
+ td->center[0] *= asp[0];
+ td->center[1] *= asp[1];
copy_v3_v3(td->iloc, td->loc);
memset(td->axismtx, 0, sizeof(td->axismtx));
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 4b01f620410..6eb88212714 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -1567,19 +1567,14 @@ void calculateCenterCursor2D(TransInfo *t, float r_center[2])
if (cursor) {
if (t->options & CTX_MASK) {
float co[2];
- float frame_size[2];
if (t->spacetype == SPACE_IMAGE) {
SpaceImage *sima = (SpaceImage *)t->sa->spacedata.first;
- ED_space_image_get_size_fl(sima, frame_size);
- BKE_mask_coord_from_frame(co, cursor, frame_size);
- ED_space_image_get_aspect(sima, &aspx, &aspy);
+ BKE_mask_coord_from_image(sima->image, &sima->iuser, co, cursor);
}
else if (t->spacetype == SPACE_CLIP) {
SpaceClip *space_clip = (SpaceClip *) t->sa->spacedata.first;
- ED_space_clip_get_size_fl(space_clip, frame_size);
- BKE_mask_coord_from_frame(co, cursor, frame_size);
- ED_space_clip_get_aspect(space_clip, &aspx, &aspy);
+ BKE_mask_coord_from_movieclip(space_clip->clip, &space_clip->user, co, cursor);
}
else {
BLI_assert(!"Shall not happen");