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:
-rw-r--r--source/blender/blenkernel/BKE_tracking.h15
-rw-r--r--source/blender/blenkernel/intern/tracking.c20
-rw-r--r--source/blender/editors/space_clip/clip_draw.c2
-rw-r--r--source/blender/editors/space_clip/tracking_ops.c5
-rw-r--r--source/blender/editors/space_view3d/drawobject.c17
5 files changed, 38 insertions, 21 deletions
diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h
index 1be858ecf80..689376afa55 100644
--- a/source/blender/blenkernel/BKE_tracking.h
+++ b/source/blender/blenkernel/BKE_tracking.h
@@ -163,11 +163,18 @@ struct MovieTrackingObject *BKE_tracking_named_object(struct MovieTracking *trac
void BKE_tracking_select_track(struct ListBase *tracksbase, struct MovieTrackingTrack *track, int area, int extend);
void BKE_tracking_deselect_track(struct MovieTrackingTrack *track, int area);
-#define TRACK_SELECTED(track) ((((track)->flag&TRACK_HIDDEN)==0) && ((track)->flag&SELECT || (track)->pat_flag&SELECT || (track)->search_flag&SELECT))
-#define TRACK_AREA_SELECTED(track, area) ((((track)->flag&TRACK_HIDDEN)==0) && ((area)==TRACK_AREA_POINT?(track)->flag&SELECT : ((area)==TRACK_AREA_PAT?(track)->pat_flag&SELECT:(track)->search_flag&SELECT)))
-#define TRACK_VIEW_SELECTED(sc, track) ((TRACK_AREA_SELECTED(track, TRACK_AREA_POINT) || (((sc)->flag&SC_SHOW_MARKER_PATTERN && TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))) || (((sc)->flag&SC_SHOW_MARKER_SEARCH && TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH)))))
+#define TRACK_SELECTED(track) ((track)->flag&SELECT || (track)->pat_flag&SELECT || (track)->search_flag&SELECT)
-#define MARKER_VISIBLE(sc, marker) (((marker)->flag&MARKER_DISABLED)==0 || ((sc)->flag&SC_HIDE_DISABLED)==0)
+#define TRACK_AREA_SELECTED(track, area) ((area)==TRACK_AREA_POINT ? (track)->flag&SELECT : \
+ ((area)==TRACK_AREA_PAT ? (track)->pat_flag&SELECT : \
+ (track)->search_flag&SELECT))
+
+#define TRACK_VIEW_SELECTED(sc, track) ((((track)->flag & TRACK_HIDDEN)==0) && \
+ ( TRACK_AREA_SELECTED(track, TRACK_AREA_POINT) || \
+ (((sc)->flag & SC_SHOW_MARKER_PATTERN) && TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) || \
+ (((sc)->flag & SC_SHOW_MARKER_SEARCH) && TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))))
+
+#define MARKER_VISIBLE(sc, marker) (((marker)->flag & MARKER_DISABLED)==0 || ((sc)->flag & SC_HIDE_DISABLED)==0)
#define TRACK_CLEAR_UPTO 0
#define TRACK_CLEAR_REMAINED 1
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index 373e1e4b9f4..138abb73b49 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -626,7 +626,7 @@ void BKE_tracking_clipboard_copy_tracks(MovieTracking *tracking, MovieTrackingOb
MovieTrackingTrack *track = tracksbase->first;
while (track) {
- if (TRACK_SELECTED(track)) {
+ if (TRACK_SELECTED(track) && (track->flag & TRACK_HIDDEN) == 0) {
MovieTrackingTrack *new_track = duplicate_track(track);
BLI_addtail(&tracking_clipboard.tracks, new_track);
@@ -896,7 +896,7 @@ MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *u
/* count */
track= tracksbase->first;
while(track) {
- if(TRACK_SELECTED(track) && (track->flag&TRACK_LOCKED)==0) {
+ if(TRACK_SELECTED(track) && (track->flag & (TRACK_LOCKED | TRACK_HIDDEN))==0) {
MovieTrackingMarker *marker= BKE_tracking_get_marker(track, user->framenr);
if((marker->flag&MARKER_DISABLED)==0)
@@ -917,7 +917,7 @@ MovieTrackingContext *BKE_tracking_context_new(MovieClip *clip, MovieClipUser *u
/* create tracking data */
track= tracksbase->first;
while(track) {
- if(TRACK_SELECTED(track) && (track->flag&TRACK_LOCKED)==0) {
+ if(TRACK_SELECTED(track) && (track->flag & (TRACK_HIDDEN | TRACK_LOCKED))==0) {
MovieTrackingMarker *marker= BKE_tracking_get_marker(track, user->framenr);
if((marker->flag&MARKER_DISABLED)==0) {
@@ -2883,12 +2883,14 @@ void BKE_tracking_select_track(ListBase *tracksbase, MovieTrackingTrack *track,
MovieTrackingTrack *cur= tracksbase->first;
while(cur) {
- if(cur==track) {
- BKE_tracking_track_flag(cur, TRACK_AREA_ALL, SELECT, 1);
- BKE_tracking_track_flag(cur, area, SELECT, 0);
- }
- else {
- BKE_tracking_track_flag(cur, TRACK_AREA_ALL, SELECT, 1);
+ if ((cur->flag & TRACK_HIDDEN) == 0) {
+ if(cur==track) {
+ BKE_tracking_track_flag(cur, TRACK_AREA_ALL, SELECT, 1);
+ BKE_tracking_track_flag(cur, area, SELECT, 0);
+ }
+ else {
+ BKE_tracking_track_flag(cur, TRACK_AREA_ALL, SELECT, 1);
+ }
}
cur= cur->next;
diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c
index 6dda09a1451..42c127df016 100644
--- a/source/blender/editors/space_clip/clip_draw.c
+++ b/source/blender/editors/space_clip/clip_draw.c
@@ -586,7 +586,7 @@ static void draw_marker_areas(SpaceClip *sc, MovieTrackingTrack *track, MovieTra
}
/* pyramid */
- if(sel && TRACK_SELECTED(track) && (track->tracker==TRACKER_KLT) && (marker->flag&MARKER_DISABLED)==0) {
+ if(sel && TRACK_VIEW_SELECTED(sc, track) && (track->tracker==TRACKER_KLT) && (marker->flag&MARKER_DISABLED)==0) {
if(track->flag&TRACK_LOCKED) {
if(act) UI_ThemeColor(TH_ACT_MARKER);
else if(track->pat_flag&SELECT) UI_ThemeColorShade(TH_LOCK_MARKER, 64);
diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c
index fc48516b378..18a5d8689c8 100644
--- a/source/blender/editors/space_clip/tracking_ops.c
+++ b/source/blender/editors/space_clip/tracking_ops.c
@@ -1240,7 +1240,8 @@ static void clear_invisible_track_selection(SpaceClip *sc, MovieClip *clip)
MovieTrackingTrack *track = tracksbase->first;
while(track) {
- BKE_tracking_track_flag(track, hidden, SELECT, 1);
+ if ((track->flag & TRACK_HIDDEN) == 0)
+ BKE_tracking_track_flag(track, hidden, SELECT, 1);
track = track->next;
}
@@ -1258,7 +1259,7 @@ static void track_init_markers(SpaceClip *sc, MovieClip *clip, int *frames_limit
track= tracksbase->first;
while(track) {
- if(TRACK_SELECTED(track)) {
+ if(TRACK_VIEW_SELECTED(sc, track)) {
if((track->flag&TRACK_HIDDEN)==0 && (track->flag&TRACK_LOCKED)==0) {
BKE_tracking_ensure_marker(track, framenr);
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 88e145245a4..2d716d522f2 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -1521,7 +1521,8 @@ static void draw_bundle_sphere(void)
}
static void draw_viewport_object_reconstruction(Scene *scene, Base *base, View3D *v3d,
- MovieClip *clip, MovieTrackingObject *tracking_object, int flag, int *global_track_index)
+ MovieClip *clip, MovieTrackingObject *tracking_object, int flag,
+ int *global_track_index, int draw_selected)
{
MovieTracking *tracking= &clip->tracking;
MovieTrackingTrack *track;
@@ -1558,6 +1559,9 @@ static void draw_viewport_object_reconstruction(Scene *scene, Base *base, View3D
for (track= tracksbase->first; track; track= track->next) {
int selected= TRACK_SELECTED(track);
+ if ((draw_selected && !selected) || (draw_selected && !selected))
+ continue;
+
if ((track->flag&TRACK_HAS_BUNDLE)==0)
continue;
@@ -1671,7 +1675,8 @@ static void draw_viewport_object_reconstruction(Scene *scene, Base *base, View3D
*global_track_index= tracknr;
}
-static void draw_viewport_reconstruction(Scene *scene, Base *base, View3D *v3d, MovieClip *clip, int flag)
+static void draw_viewport_reconstruction(Scene *scene, Base *base, View3D *v3d, MovieClip *clip,
+ int flag, int draw_selected)
{
MovieTracking *tracking= &clip->tracking;
MovieTrackingObject *tracking_object;
@@ -1694,7 +1699,7 @@ static void draw_viewport_reconstruction(Scene *scene, Base *base, View3D *v3d,
tracking_object= tracking->objects.first;
while (tracking_object) {
draw_viewport_object_reconstruction(scene, base, v3d, clip, tracking_object,
- flag, &global_track_index);
+ flag, &global_track_index, draw_selected);
tracking_object= tracking_object->next;
}
@@ -1724,8 +1729,10 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base
MovieClip *clip= object_get_movieclip(scene, base->object, 0);
/* draw data for movie clip set as active for scene */
- if (clip)
- draw_viewport_reconstruction(scene, base, v3d, clip, flag);
+ if (clip) {
+ draw_viewport_reconstruction(scene, base, v3d, clip, flag, FALSE);
+ draw_viewport_reconstruction(scene, base, v3d, clip, flag, TRUE);
+ }
#ifdef VIEW3D_CAMERA_BORDER_HACK
if (is_view && !(G.f & G_PICKSEL)) {