[Bf-blender-cvs] [585574d] master: Tracking: Split tracking_ops into smaller files

Sergey Sharybin noreply at git.blender.org
Fri Jan 15 11:16:12 CET 2016


Commit: 585574dc301904d0a3672b1956d50c8455a0e3e6
Author: Sergey Sharybin
Date:   Fri Jan 15 14:02:26 2016 +0500
Branches: master
https://developer.blender.org/rB585574dc301904d0a3672b1956d50c8455a0e3e6

Tracking: Split tracking_ops into smaller files

The file started to be rather really huge and difficult to follow.
Should be no functional changes.

===================================================================

M	source/blender/editors/space_clip/CMakeLists.txt
M	source/blender/editors/space_clip/tracking_ops.c
A	source/blender/editors/space_clip/tracking_ops_detect.c
A	source/blender/editors/space_clip/tracking_ops_intern.h
A	source/blender/editors/space_clip/tracking_ops_orient.c
A	source/blender/editors/space_clip/tracking_ops_plane.c
A	source/blender/editors/space_clip/tracking_ops_solve.c
A	source/blender/editors/space_clip/tracking_ops_stabilize.c
A	source/blender/editors/space_clip/tracking_ops_track.c
A	source/blender/editors/space_clip/tracking_ops_utils.c

===================================================================

diff --git a/source/blender/editors/space_clip/CMakeLists.txt b/source/blender/editors/space_clip/CMakeLists.txt
index d17d185..32d48c9 100644
--- a/source/blender/editors/space_clip/CMakeLists.txt
+++ b/source/blender/editors/space_clip/CMakeLists.txt
@@ -53,9 +53,17 @@ set(SRC
 	clip_utils.c
 	space_clip.c
 	tracking_ops.c
+	tracking_ops_detect.c
+	tracking_ops_orient.c
+	tracking_ops_plane.c
+	tracking_ops_solve.c
+	tracking_ops_track.c
+	tracking_ops_stabilize.c
+	tracking_ops_utils.c
 	tracking_select.c
 
 	clip_intern.h
+	tracking_ops_intern.h
 )
 
 add_definitions(${GL_DEFINITIONS})
diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c
index 088c316..af1a540 100644
--- a/source/blender/editors/space_clip/tracking_ops.c
+++ b/source/blender/editors/space_clip/tracking_ops.c
@@ -31,28 +31,18 @@
 
 #include "MEM_guardedalloc.h"
 
-#include "DNA_camera_types.h"
-#include "DNA_constraint_types.h"
-#include "DNA_gpencil_types.h"
-#include "DNA_movieclip_types.h"
-#include "DNA_object_types.h"   /* SELECT */
-#include "DNA_scene_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_space_types.h"
 
 #include "BLI_utildefines.h"
 #include "BLI_math.h"
-#include "BLI_listbase.h"
 #include "BLI_blenlib.h"
 
-#include "BKE_main.h"
 #include "BKE_context.h"
-#include "BKE_constraint.h"
 #include "BKE_movieclip.h"
 #include "BKE_tracking.h"
-#include "BKE_global.h"
 #include "BKE_depsgraph.h"
-#include "BKE_object.h"
 #include "BKE_report.h"
-#include "BKE_library.h"
 #include "BKE_sound.h"
 
 #include "WM_api.h"
@@ -61,19 +51,13 @@
 #include "ED_screen.h"
 #include "ED_clip.h"
 
-#include "IMB_imbuf_types.h"
-#include "IMB_imbuf.h"
-
-
 #include "RNA_access.h"
 #include "RNA_define.h"
 
 #include "BLT_translation.h"
 
-#include "PIL_time.h"
-
-
-#include "clip_intern.h"    // own include
+#include "clip_intern.h"
+#include "tracking_ops_intern.h"
 
 /********************** add marker operator *********************/
 
@@ -117,7 +101,9 @@ static int add_marker_exec(bContext *C, wmOperator *op)
 		return OPERATOR_CANCELLED;
 	}
 
-	/* reset offset from locked position, so frame jumping wouldn't be so confusing */
+	/* Reset offset from locked position, so frame jumping wouldn't be so
+	 * confusing.
+	 */
 	sc->xlockof = 0;
 	sc->ylockof = 0;
 
@@ -599,20 +585,6 @@ static bool slide_check_corners(float (*corners)[2])
 	return true;
 }
 
-static void hide_cursor(bContext *C)
-{
-	wmWindow *win = CTX_wm_window(C);
-
-	WM_cursor_set(win, CURSOR_NONE);
-}
-
-static void show_cursor(bContext *C)
-{
-	wmWindow *win = CTX_wm_window(C);
-
-	WM_cursor_set(win, CURSOR_STD);
-}
-
 MovieTrackingTrack *tracking_marker_check_slide(bContext *C,
                                                 const wmEvent *event,
                                                 int *area_r,
@@ -816,7 +788,7 @@ static int slide_marker_invoke(bContext *C, wmOperator *op, const wmEvent *event
 
 		op->customdata = slidedata;
 
-		hide_cursor(C);
+		clip_tracking_hide_cursor(C);
 		WM_event_add_modal_handler(C, op);
 
 		WM_event_add_notifier(C, NC_GEOM | ND_SELECT, NULL);
@@ -1084,7 +1056,7 @@ static int slide_marker_modal(bContext *C, wmOperator *op, const wmEvent *event)
 				apply_mouse_slide(C, op->customdata);
 				free_slide_data(op->customdata);
 
-				show_cursor(C);
+				clip_tracking_show_cursor(C);
 
 				return OPERATOR_FINISHED;
 			}
@@ -1096,7 +1068,7 @@ static int slide_marker_modal(bContext *C, wmOperator *op, const wmEvent *event)
 
 			free_slide_data(op->customdata);
 
-			show_cursor(C);
+			clip_tracking_show_cursor(C);
 
 			WM_event_add_notifier(C, NC_MOVIECLIP | NA_EDITED, NULL);
 
@@ -1128,1842 +1100,226 @@ void CLIP_OT_slide_marker(wmOperatorType *ot)
 	                     -FLT_MAX, FLT_MAX);
 }
 
-/********************** track operator *********************/
-
-typedef struct TrackMarkersJob {
-	struct AutoTrackContext *context;   /* Tracking context */
-	int sfra, efra, lastfra;    /* Start, end and recently tracked frames */
-	int backwards;              /* Backwards tracking flag */
-	MovieClip *clip;            /* Clip which is tracking */
-	float delay;                /* Delay in milliseconds to allow tracking at fixed FPS */
-
-	struct Main *main;
-	struct Scene *scene;
-	struct bScreen *screen;
-} TrackMarkersJob;
+/********************** clear track operator *********************/
 
-static bool track_markers_testbreak(void)
+static int clear_track_path_exec(bContext *C, wmOperator *op)
 {
-	return G.is_break;
-}
+	SpaceClip *sc = CTX_wm_space_clip(C);
+	MovieClip *clip = ED_space_clip_get_clip(sc);
+	MovieTracking *tracking = &clip->tracking;
+	ListBase *tracksbase = BKE_tracking_get_active_tracks(tracking);
+	int action = RNA_enum_get(op->ptr, "action");
+	const bool clear_active = RNA_boolean_get(op->ptr, "clear_active");
+	int framenr = ED_space_clip_get_clip_frame_number(sc);
 
-static int track_count_markers(SpaceClip *sc,
-                               MovieClip *clip,
-                               int framenr)
-{
-	int tot = 0;
-	ListBase *tracksbase = BKE_tracking_get_active_tracks(&clip->tracking);
-	for (MovieTrackingTrack *track = tracksbase->first;
-	     track != NULL;
-	     track = track->next)
-	{
-		bool selected = sc ? TRACK_VIEW_SELECTED(sc, track) : TRACK_SELECTED(track);
-		if (selected && (track->flag & TRACK_LOCKED) == 0) {
-			MovieTrackingMarker *marker = BKE_tracking_marker_get(track, framenr);
-			if (!marker || (marker->flag & MARKER_DISABLED) == 0) {
-				tot++;
-			}
+	if (clear_active) {
+		MovieTrackingTrack *track = BKE_tracking_track_get_active(tracking);
+		if (track != NULL) {
+			BKE_tracking_track_path_clear(track, framenr, action);
 		}
 	}
-	return tot;
-}
-
-static void clear_invisible_track_selection(SpaceClip *sc, MovieClip *clip)
-{
-	ListBase *tracksbase = BKE_tracking_get_active_tracks(&clip->tracking);
-	int hidden = 0;
-	if ((sc->flag & SC_SHOW_MARKER_PATTERN) == 0) {
-		hidden |= TRACK_AREA_PAT;
-	}
-	if ((sc->flag & SC_SHOW_MARKER_SEARCH) == 0) {
-		hidden |= TRACK_AREA_SEARCH;
-	}
-	if (hidden) {
+	else {
 		for (MovieTrackingTrack *track = tracksbase->first;
 		     track != NULL;
 		     track = track->next)
 		{
-			if ((track->flag & TRACK_HIDDEN) == 0) {
-				BKE_tracking_track_flag_clear(track, hidden, SELECT);
+			if (TRACK_VIEW_SELECTED(sc, track)) {
+				BKE_tracking_track_path_clear(track, framenr, action);
 			}
 		}
 	}
-}
 
-static void track_init_markers(SpaceClip *sc,
-                               MovieClip *clip,
-                               int framenr,
-                               int *frames_limit_r)
-{
-	ListBase *tracksbase = BKE_tracking_get_active_tracks(&clip->tracking);
-	int frames_limit = 0;
-	if (sc != NULL) {
-		clear_invisible_track_selection(sc, clip);
-	}
-	for (MovieTrackingTrack *track = tracksbase->first;
-	     track != NULL;
-	     track = track->next)
-	{
-		bool selected = (sc != NULL) ? TRACK_VIEW_SELECTED(sc, track)
-		                             : TRACK_SELECTED(track);
-		if (selected) {
-			if ((track->flag & TRACK_HIDDEN) == 0 &&
-			    (track->flag & TRACK_LOCKED) == 0)
-			{
-				BKE_tracking_marker_ensure(track, framenr);
-				if (track->frames_limit) {
-					if (frames_limit == 0) {
-						frames_limit = track->frames_limit;
-					}
-					else {
-						frames_limit = min_ii(frames_limit,
-						                      (int)track->frames_limit);
-					}
-				}
-			}
-		}
-	}
-	*frames_limit_r = frames_limit;
+	BKE_tracking_dopesheet_tag_update(tracking);
+	WM_event_add_notifier(C, NC_MOVIECLIP | NA_EVALUATED, clip);
+
+	return OPERATOR_FINISHED;
 }
 
-static bool track_markers_check_direction(int backwards, int curfra, int efra)
+void CLIP_OT_clear_track_path(wmOperatorType *ot)
 {
-	if (backwards) {
-		if (curfra < efra) {
-			return false;
-		}
-	}
-	else {
-		if (curfra > efra) {
-			return false;
-		}
-	}
+	static EnumPropertyItem clear_path_actions[] = {
+		{TRACK_CLEAR_UPTO, "UPTO", 0, "Clear up-to", "Clear path up to current frame"},
+		{TRACK_CLEAR_REMAINED, "REMAINED", 0, "Clear remained", "Clear path at remaining frames (after current)"},
+		{TRACK_CLEAR_ALL, "ALL", 0, "Clear all", "Clear the whole path"},
+		{0, NULL, 0, NULL, NULL}
+	};
 
-	return true;
+	/* identifiers */
+	ot->name = "Clear Track Path";
+	ot->description = "Clear tracks after/before current position or clear the whole track";
+	ot->idname = "CLIP_OT_clear_track_path";
+
+	/* api callbacks */
+	ot->exec = clear_track_path_exec;
+	ot->poll = ED_space_clip_tracking_poll;
+
+	/* flags */
+	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+
+	/* properties */
+	RNA_def_enum(ot->srna, "action", clear_path_actions, TRACK_CLEAR_REMAINED, "Action", "Clear action to execute");
+	RNA_def_boolean(ot->srna, "clear_active", 0, "Clear Active", "Clear active track only instead of all selected tracks");
 }
 
-static int track_markers_initjob(bContext *C,
-                                 TrackMarkersJob *tmj,
-                                 int backwards)
+/********************** disable markers operator *********************/
+
+static int disable_markers_exec(bContext *C, wmOperator *op)
 {
 	SpaceClip *sc = CTX_wm_space_clip(C);
 	MovieClip *clip = ED_space_clip_get_clip(sc);
-	Scene *scene = CTX_data_scene(C);
-	MovieTrackingSettings *settings = &clip->tracking.settings;
-	int frames_limit;
+	MovieTracking *tracking = &clip->tracking;
+	ListBase *tracksbase = BKE_tracking_get_active_tracks(tracking);
+	int action = RNA_enum_get(op->ptr, "action");
 	int framenr = ED_space_clip_get_clip_frame_number(sc);
 
-	track_init_markers(sc, clip, framenr, &frames_limit);
-
-	tmj->sfra = ED_space_clip_get_clip_frame_number(sc);
-	tmj->clip = clip;
-	tmj->backwards = backwards;
-
-	if (backwards) {
-		tmj->efra = SFRA;
-	}
-	else {
-		tmj->efra = EFRA;
-	}
-
-	/* Limit frames to be tracked by user setting. */
-	if (frames_limit) {
-		if (backwards) {
-			tmj->efra = MAX2(tmj->efra, tmj->sfra - frames_limit);
-		}
-		else {
-			tmj->efra = MIN2(tmj->efra, tmj->sfra + frames_limit);
+	for (MovieTrackingTrack *track = tracksbase->first;
+	     track != NULL;
+	     track = track->next)
+	{
+		if (TRACK_VIEW_SELECTED(sc, track) &&
+		 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list