Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/transform/transform_convert_tracking.c')
-rw-r--r--source/blender/editors/transform/transform_convert_tracking.c52
1 files changed, 50 insertions, 2 deletions
diff --git a/source/blender/editors/transform/transform_convert_tracking.c b/source/blender/editors/transform/transform_convert_tracking.c
index 6704567a76b..0f00f5bc318 100644
--- a/source/blender/editors/transform/transform_convert_tracking.c
+++ b/source/blender/editors/transform/transform_convert_tracking.c
@@ -608,11 +608,11 @@ void cancelTransTracking(TransInfo *t)
/** \} */
/* -------------------------------------------------------------------- */
-/** \name Clip Editor Motion Tracking Transform Creation
+/** \name recalc Motion Tracking TransData
*
* \{ */
-void flushTransTracking(TransInfo *t)
+static void flushTransTracking(TransInfo *t)
{
TransData *td;
TransData2D *td2d;
@@ -689,4 +689,52 @@ void flushTransTracking(TransInfo *t)
}
}
+/* helper for recalcData() - for Movie Clip transforms */
+void recalcData_tracking(TransInfo *t)
+{
+ SpaceClip *sc = t->area->spacedata.first;
+
+ if (ED_space_clip_check_show_trackedit(sc)) {
+ MovieClip *clip = ED_space_clip_get_clip(sc);
+ ListBase *tracksbase = BKE_tracking_get_active_tracks(&clip->tracking);
+ MovieTrackingTrack *track;
+ int framenr = ED_space_clip_get_clip_frame_number(sc);
+
+ flushTransTracking(t);
+
+ track = tracksbase->first;
+ while (track) {
+ if (TRACK_VIEW_SELECTED(sc, track) && (track->flag & TRACK_LOCKED) == 0) {
+ MovieTrackingMarker *marker = BKE_tracking_marker_get(track, framenr);
+
+ if (t->mode == TFM_TRANSLATION) {
+ if (TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) {
+ BKE_tracking_marker_clamp(marker, CLAMP_PAT_POS);
+ }
+ if (TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH)) {
+ BKE_tracking_marker_clamp(marker, CLAMP_SEARCH_POS);
+ }
+ }
+ else if (t->mode == TFM_RESIZE) {
+ if (TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) {
+ BKE_tracking_marker_clamp(marker, CLAMP_PAT_DIM);
+ }
+ if (TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH)) {
+ BKE_tracking_marker_clamp(marker, CLAMP_SEARCH_DIM);
+ }
+ }
+ else if (t->mode == TFM_ROTATION) {
+ if (TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) {
+ BKE_tracking_marker_clamp(marker, CLAMP_PAT_POS);
+ }
+ }
+ }
+
+ track = track->next;
+ }
+
+ DEG_id_tag_update(&clip->id, 0);
+ }
+}
+
/** \} */