Revision: 44452
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44452
Author:   nazgul
Date:     2012-02-26 08:14:14 +0000 (Sun, 26 Feb 2012)
Log Message:
-----------
Fixed for selected bundles drawing in 3D viewport:

- If track was hidded in clip editor it wasn't highlighted in 3d viewport
  even if it's selected.
- If two tracks has got the same bundle coordinate and one of them is
  selected it might not be highlighted in 3d viewport because of
  draw order.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_tracking.h
    trunk/blender/source/blender/blenkernel/intern/tracking.c
    trunk/blender/source/blender/editors/space_clip/clip_draw.c
    trunk/blender/source/blender/editors/space_clip/tracking_ops.c
    trunk/blender/source/blender/editors/space_view3d/drawobject.c

Modified: trunk/blender/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_tracking.h      2012-02-26 
07:16:50 UTC (rev 44451)
+++ trunk/blender/source/blender/blenkernel/BKE_tracking.h      2012-02-26 
08:14:14 UTC (rev 44452)
@@ -163,12 +163,19 @@
 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
 #define TRACK_CLEAR_ALL                        2

Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c   2012-02-26 
07:16:50 UTC (rev 44451)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c   2012-02-26 
08:14:14 UTC (rev 44452)
@@ -626,7 +626,7 @@
        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 @@
        /* 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 @@
                /* 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,13 +2883,15 @@
                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);
+                       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);
+                               }
                        }
-                       else {
-                               BKE_tracking_track_flag(cur, TRACK_AREA_ALL, 
SELECT, 1);
-                       }
 
                        cur= cur->next;
                }

Modified: trunk/blender/source/blender/editors/space_clip/clip_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_draw.c 2012-02-26 
07:16:50 UTC (rev 44451)
+++ trunk/blender/source/blender/editors/space_clip/clip_draw.c 2012-02-26 
08:14:14 UTC (rev 44452)
@@ -586,7 +586,7 @@
        }
 
        /* 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);

Modified: trunk/blender/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/tracking_ops.c      
2012-02-26 07:16:50 UTC (rev 44451)
+++ trunk/blender/source/blender/editors/space_clip/tracking_ops.c      
2012-02-26 08:14:14 UTC (rev 44452)
@@ -1240,7 +1240,8 @@
                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 @@
 
        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);
 

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c      
2012-02-26 07:16:50 UTC (rev 44451)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c      
2012-02-26 08:14:14 UTC (rev 44452)
@@ -1521,7 +1521,8 @@
 }
 
 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 @@
        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 @@
        *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 @@
        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 @@
        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)) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to