diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-04-29 16:32:26 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-04-29 16:32:26 +0400 |
commit | c27c87dde4f627565df7cb000b7eba45c2604ce4 (patch) | |
tree | b08cecd61310a99d013e4bbbcabb70f92685b648 /source/blender/editors/transform | |
parent | 16d4c49c464ba4c56d96120003456e92688432f1 (diff) |
Camera tracking: backport refactoring made in local branches with masking and dopesheet view into trunk
Mostly related on changes in poll functions for tracking operators and some changes
to how interface is initializing for different view types.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform.c | 37 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_conversions.c | 23 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 13 |
3 files changed, 55 insertions, 18 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 233719033c7..82bb30d660f 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -225,7 +225,11 @@ void projectIntView(TransInfo *t, const float vec[3], int adr[2]) adr[1]= out[1]; } else if (t->spacetype==SPACE_CLIP) { - UI_view2d_to_region_no_clip(t->view, vec[0], vec[1], adr, adr+1); + float v[2]; + + copy_v2_v2(v, vec); + + UI_view2d_to_region_no_clip(t->view, v[0], v[1], adr, adr+1); } } @@ -274,6 +278,19 @@ void applyAspectRatio(TransInfo *t, float *vec) vec[0] /= aspx; vec[1] /= aspy; } + else if ((t->spacetype==SPACE_CLIP) && (t->mode==TFM_TRANSLATION)) { + if (t->options & CTX_MOVIECLIP) { + SpaceClip *sc = t->sa->spacedata.first; + float aspx, aspy; + int width, height; + + ED_space_clip_size(sc, &width, &height); + ED_space_clip_aspect(sc, &aspx, &aspy); + + vec[0] *= width / aspx; + vec[1] *= height / aspy; + } + } } void removeAspectRatio(TransInfo *t, float *vec) @@ -294,6 +311,19 @@ void removeAspectRatio(TransInfo *t, float *vec) vec[0] *= aspx; vec[1] *= aspy; } + else if ((t->spacetype==SPACE_CLIP) && (t->mode==TFM_TRANSLATION)) { + if (t->options & CTX_MOVIECLIP) { + SpaceClip *sc = t->sa->spacedata.first; + float aspx, aspy; + int width, height; + + ED_space_clip_size(sc, &width, &height); + ED_space_clip_aspect(sc, &aspx, &aspy); + + vec[0] *= aspx / width; + vec[1] *= aspy / height; + } + } } static void viewRedrawForce(const bContext *C, TransInfo *t) @@ -624,10 +654,10 @@ int transformEvent(TransInfo *t, wmEvent *event) t->redraw |= TREDRAW_HARD; } else if (t->mode == TFM_TRANSLATION) { - if (t->options&CTX_MOVIECLIP) { + if(t->options & CTX_MOVIECLIP) { restoreTransObjects(t); - t->flag^= T_ALT_TRANSFORM; + t->flag ^= T_ALT_TRANSFORM; t->redraw |= TREDRAW_HARD; } } @@ -1561,6 +1591,7 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int t->draw_handle_cursor = WM_paint_cursor_activate(CTX_wm_manager(C), helpline_poll, drawHelpline, t); } else if (t->spacetype == SPACE_CLIP) { + SpaceClip *sc = CTX_wm_space_clip(C); unit_m3(t->spacemtx); t->draw_handle_view = ED_region_draw_cb_activate(t->ar->type, drawTransformView, t, REGION_DRAW_POST_VIEW); t->options |= CTX_MOVIECLIP; diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 00c8e0a1d34..859ae1e1b1b 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -4924,14 +4924,16 @@ void special_aftertrans_update(bContext *C, TransInfo *t) ED_node_link_intersect_test(t->sa, 0); } else if (t->spacetype == SPACE_CLIP) { - SpaceClip *sc = t->sa->spacedata.first; - MovieClip *clip = ED_space_clip(sc); - - if (t->scene->nodetree) { - /* tracks can be used for stabilization nodes, - * flush update for such nodes */ - nodeUpdateID(t->scene->nodetree, &clip->id); - WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); + if (t->options & CTX_MOVIECLIP) { + SpaceClip *sc = t->sa->spacedata.first; + MovieClip *clip = ED_space_clip(sc); + + if (t->scene->nodetree) { + /* tracks can be used for stabilization nodes, + * flush update for such nodes */ + nodeUpdateID(t->scene->nodetree, &clip->id); + WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); + } } } else if (t->spacetype == SPACE_ACTION) { @@ -5402,6 +5404,8 @@ static void createTransNodeData(bContext *C, TransInfo *t) /* *** CLIP EDITOR *** */ +/* * motion tracking * */ + enum { transDataTracking_ModeTracks = 0, transDataTracking_ModeCurves = 1, @@ -5923,7 +5927,8 @@ void createTransData(bContext *C, TransInfo *t) } else if (t->spacetype == SPACE_CLIP) { t->flag |= T_POINTS|T_2D_EDIT; - createTransTrackingData(C, t); + if (t->options & CTX_MOVIECLIP) + createTransTrackingData(C, t); } else if (t->obedit) { t->ext = NULL; diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 217e0d36fce..c1b995e8a53 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -633,15 +633,16 @@ static void recalcData_image(TransInfo *t) } /* helper for recalcData() - for Movie Clip transforms */ -static void recalcData_clip(TransInfo *t) +static void recalcData_spaceclip(TransInfo *t) { SpaceClip *sc = t->sa->spacedata.first; + MovieClip *clip = ED_space_clip(sc); ListBase *tracksbase = BKE_tracking_get_tracks(&clip->tracking); MovieTrackingTrack *track; - + flushTransTracking(t); - + track = tracksbase->first; while (track) { if (TRACK_VIEW_SELECTED(sc, track) && (track->flag & TRACK_LOCKED)==0) { @@ -658,10 +659,10 @@ static void recalcData_clip(TransInfo *t) BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM); } } - + track = track->next; } - + DAG_id_tag_update(&clip->id, 0); } @@ -900,7 +901,7 @@ void recalcData(TransInfo *t) recalcData_view3d(t); } else if (t->spacetype == SPACE_CLIP) { - recalcData_clip(t); + recalcData_spaceclip(t); } } |