[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