diff options
4 files changed, 8 insertions, 17 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c index 8c1cc4b0279..4147750c356 100644 --- a/source/blender/blenkernel/intern/mask.c +++ b/source/blender/blenkernel/intern/mask.c @@ -1133,7 +1133,7 @@ void BKE_mask_coord_to_movieclip(MovieClip *clip, MovieClipUser *user, float r_c BKE_movieclip_get_size_fl(clip, user, frame_size); BKE_movieclip_get_aspect(clip, &aspx, &aspy); - frame_size[1] /= (aspy / aspx); + frame_size[1] *= (aspy / aspx); BKE_mask_coord_to_frame(r_co, co, frame_size); } @@ -1147,7 +1147,7 @@ void BKE_mask_coord_to_image(Image *image, ImageUser *iuser, float r_co[2], cons BKE_image_get_size_fl(image, iuser, frame_size); BKE_image_get_aspect(image, &aspx, &aspy); - frame_size[1] /= (aspy / aspx); + frame_size[1] *= (aspy / aspx); BKE_mask_coord_to_frame(r_co, co, frame_size); } 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"); |