void ED_mask_point_pos__reverse(ScrArea *sa, ARegion *ar, float x, float y, float *xr, float *yr) { float co[2]; if (sa) { switch (sa->spacetype) { case SPACE_CLIP: { SpaceClip *sc = sa->spacedata.first; co[0] = x; co[1] = y; BKE_mask_coord_to_movieclip(sc->clip, &sc->user, co, co); ED_clip_point_stable_pos__reverse(sc, ar, co, co); break; } case SPACE_SEQ: zero_v2(co); /* MASKTODO */ break; case SPACE_IMAGE: { SpaceImage *sima = sa->spacedata.first; co[0] = x; co[1] = y; BKE_mask_coord_to_image(sima->image, &sima->iuser, co, co); ED_image_point_pos__reverse(sima, ar, co, co); break; } default: /* possible other spaces from which mask editing is available */ BLI_assert(0); zero_v2(co); break; } } else { BLI_assert(0); zero_v2(co); } *xr = co[0]; *yr = co[1]; }
static void mask_point_undistort_pos(SpaceClip *sc, float r_co[2], const float co[2]) { BKE_mask_coord_to_movieclip(sc->clip, &sc->user, r_co, co); ED_clip_point_undistorted_pos(sc, r_co, r_co); BKE_mask_coord_from_movieclip(sc->clip, &sc->user, r_co, r_co); }