Fix aspect ratio correction for translating motion tracking data

Still has got some issues when translating masks.
This commit is contained in:
Sergey Sharybin
2012-05-19 16:55:20 +00:00
parent 009689fc76
commit ca446f090b

View File

@@ -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;
}
}
}