From ca446f090bb1347e4855cf941166340d2f024668 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 19 May 2012 16:55:20 +0000 Subject: [PATCH] Fix aspect ratio correction for translating motion tracking data Still has got some issues when translating masks. --- source/blender/editors/transform/transform.c | 28 ++++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index d06de6be3ae..480edf2d855 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -164,6 +164,7 @@ void convertViewVec(TransInfo *t, float r_vec[3], int dx, int dy) View2D *v2d = t->view; float divx, divy; float mulx, muly; + float aspx = 1.0f, aspy = 1.0f; divx = v2d->mask.xmax-v2d->mask.xmin; divy = v2d->mask.ymax-v2d->mask.ymin; @@ -181,13 +182,16 @@ void convertViewVec(TransInfo *t, float r_vec[3], int dx, int dy) r_vec[1] = muly * (dy) / divy; r_vec[2] = 0.0f; - /* TODO - NOT WORKING, this isnt so bad since its only display aspect */ - if (t->options & CTX_MASK) { - float aspx, aspy; - ED_space_clip_mask_aspect(t->sa->spacedata.first, &aspx, &aspy); - r_vec[0] *= aspx; - r_vec[1] *= aspy; + if (t->options & CTX_MOVIECLIP) { + ED_space_clip_aspect_dimension_aware(t->sa->spacedata.first, &aspx, &aspy); } + else if (t->options & CTX_MASK) { + /* TODO - NOT WORKING, this isnt so bad since its only display aspect */ + ED_space_clip_mask_aspect(t->sa->spacedata.first, &aspx, &aspy); + } + + r_vec[0] *= aspx; + r_vec[1] *= aspy; } else { printf("%s: called in an invalid context\n", __func__); @@ -349,21 +353,17 @@ void removeAspectRatio(TransInfo *t, float vec[2]) else if ((t->spacetype==SPACE_CLIP) && (t->mode==TFM_TRANSLATION)) { if (t->options & (CTX_MOVIECLIP | CTX_MASK)) { SpaceClip *sc = t->sa->spacedata.first; - float aspx, aspy; + float aspx = 1.0f, aspy = 1.0f; if (t->options & CTX_MOVIECLIP) { ED_space_clip_aspect_dimension_aware(sc, &aspx, &aspy); - - vec[0] *= aspx; - vec[1] *= aspy; } else if (t->options & CTX_MASK) { - ED_space_clip_aspect(sc, &aspx, &aspy); ED_space_clip_mask_aspect(sc, &aspx, &aspy); - - vec[0] *= aspx; - vec[1] *= aspy; } + + vec[0] *= aspx; + vec[1] *= aspy; } } }