Revision: 37953
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37953
Author:   nazgul
Date:     2011-06-29 18:05:07 +0000 (Wed, 29 Jun 2011)
Log Message:
-----------
Camera tracking integration
===========================

- Internal changes:
  * Fixed bundle.sh script to bundle libmv: it was generating
    incorrect CMakeLists header.
  * Rename CLIP_OP_delete to CLIP_OT_delete_track.
  * Fixed crash when BKE_movieclip_acquire_ibuf is called
    with NULL user.
  * Made MovieTrackingMarker structure 8-bytes aligned
  * Use writestruct rather than writedata for track markers.
    This allows to change MovieTrackingMarker safely.
- Added "Delete Marker" operator which deletes marker for
  current frame only. Hotkey is Shift-Del.
- Added MovieClip.size and MovieClip.resolution RNA properties.
  Use last accessed frame number to get ImBuf from sequence.
- Added different actions for "Clear Path" operator:
  * Clear path up to current frame.
  * Clear the whole path.
  * Cleat remained part of path (for frames after current).
- Changed buttons order and icons for tracking. New order is:
  * Track frame backwards.
  * Track sequence backwards.
  * Track sequence forwards.
  * Track frame forwards.

NOTE: this breaks compatibility with existing .blend files again,
      but it should be much easier to change data structures without
      breackaged in the future.

Modified Paths:
--------------
    branches/soc-2011-tomato/extern/libmv/bundle.sh
    branches/soc-2011-tomato/release/datafiles/blenderbuttons
    branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
    branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
    branches/soc-2011-tomato/source/blender/blenloader/intern/writefile.c
    branches/soc-2011-tomato/source/blender/editors/datafiles/blenderbuttons.c
    branches/soc-2011-tomato/source/blender/editors/include/UI_icons.h
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h
    branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
    branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h
    branches/soc-2011-tomato/source/blender/makesrna/intern/rna_movieclip.c

Modified: branches/soc-2011-tomato/extern/libmv/bundle.sh
===================================================================
--- branches/soc-2011-tomato/extern/libmv/bundle.sh     2011-06-29 18:03:03 UTC 
(rev 37952)
+++ branches/soc-2011-tomato/extern/libmv/bundle.sh     2011-06-29 18:05:07 UTC 
(rev 37953)
@@ -48,7 +48,7 @@
 # along with this program; if not, write to the Free Software Foundation,
 # Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
-# The Original Code is Copyright (C) 2006, Blender Foundation
+# The Original Code is Copyright (C) 2011, Blender Foundation
 # All rights reserved.
 #
 # Contributor(s): Blender Foundation,

Modified: branches/soc-2011-tomato/release/datafiles/blenderbuttons
===================================================================
(Binary files differ)

Modified: branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py        
2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py        
2011-06-29 18:05:07 UTC (rev 37953)
@@ -62,22 +62,26 @@
 
             col.label(text="Marker:")
             col.operator("clip.add_marker_move")
-            col.operator("clip.delete")
+            col.operator("clip.delete_track")
+            col.operator("clip.delete_marker")
 
             col = layout.column(align=True)
             col.label(text="2D tracking:")
             row = col.row(align=True)
 
-            op = row.operator("clip.track_markers", text="", icon='REW')
-            op.sequence = True
+            op = row.operator("clip.track_markers", text="", icon='FRAME_PREV')
             op.backwards = True
             op = row.operator("clip.track_markers", text="", 
icon='PLAY_REVERSE')
             op.backwards = True
-            row.operator("clip.track_markers", text="", icon='PLAY')
-            op = row.operator("clip.track_markers", text="", icon='FF')
             op.sequence = True
+            op = row.operator("clip.track_markers", text="", icon='PLAY')
+            op.sequence = True
+            row.operator("clip.track_markers", text="", icon='FRAME_NEXT')
 
-            layout.operator("clip.clear_track_path")
+            col = layout.column(align=True)
+            col.operator("clip.clear_track_path", text="Clear Remained 
Path").action = 'REMAINED'
+            col.operator("clip.clear_track_path", text="Clear Path Up 
To").action = 'UPTO'
+            col.operator("clip.clear_track_path", text="Clear Track 
Path").action = 'ALL'
         else:
             layout.operator('clip.open')
 
@@ -280,7 +284,8 @@
 
         sc = context.space_data
 
-        layout.operator("clip.delete")
+        layout.operator("clip.delete_track")
+        layout.operator("clip.delete_marker")
         layout.menu("CLIP_MT_marker")
 
 

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h  
2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h  
2011-06-29 18:05:07 UTC (rev 37953)
@@ -58,4 +58,8 @@
 
 void BKE_movieclip_get_cache_segments(struct MovieClip *clip, int *totseg_r, 
int **points_r);
 
+#define TRACK_CLEAR_UPTO               0
+#define TRACK_CLEAR_REMAINED   1
+#define TRACK_CLEAR_ALL                        2
+
 #endif

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h   
2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h   
2011-06-29 18:05:07 UTC (rev 37953)
@@ -44,13 +44,15 @@
 void BKE_tracking_clamp_track(struct MovieTrackingTrack *track, int event);
 void BKE_tracking_track_flag(struct MovieTrackingTrack *track, int area, int 
flag, int clear);
 void BKE_tracking_insert_marker(struct MovieTrackingTrack *track, struct 
MovieTrackingMarker *marker);
+void BKE_tracking_delete_marker(struct MovieTrackingTrack *track, int framenr);
 struct MovieTrackingMarker *BKE_tracking_get_marker(struct MovieTrackingTrack 
*track, int framenr);
 struct MovieTrackingMarker *BKE_tracking_ensure_marker(struct 
MovieTrackingTrack *track, int framenr);
+struct MovieTrackingMarker *BKE_tracking_exact_marker(struct 
MovieTrackingTrack *track, int framenr);
 int BKE_tracking_has_marker(struct MovieTrackingTrack *track, int framenr);
 
 void BKE_tracking_free_track(struct MovieTrackingTrack *track);
 struct MovieTrackingTrack *BKE_tracking_copy_track(struct MovieTrackingTrack 
*track);
-void BKE_tracking_clear_path(struct MovieTrackingTrack *track, int ref_frame);
+void BKE_tracking_clear_path(struct MovieTrackingTrack *track, int ref_frame, 
int action);
 void BKE_tracking_free(struct MovieTracking *tracking);
 
 struct ImBuf *BKE_tracking_acquire_pattern_imbuf(struct ImBuf *ibuf, struct 
MovieTrackingTrack *track, struct MovieTrackingMarker *marker, int pos[2]);

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c       
2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c       
2011-06-29 18:05:07 UTC (rev 37953)
@@ -183,7 +183,7 @@
        if(clip->ibuf_cache) {
                MovieClipImBufCacheKey key;
 
-               key.framenr= user->framenr;
+               key.framenr= user?user->framenr:clip->lastframe;
                return BKE_moviecache_get(clip->ibuf_cache, &key);
        }
 

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c        
2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c        
2011-06-29 18:05:07 UTC (rev 37953)
@@ -172,6 +172,28 @@
        }
 }
 
+void BKE_tracking_delete_marker(MovieTrackingTrack *track, int framenr)
+{
+       int a= 1;
+
+       while(a<track->markersnr) {
+               if(track->markers[a].framenr==framenr) {
+                       if(track->markersnr>1) {
+                               memmove(track->markers+a, track->markers+a+1, 
(track->markersnr-a-1)*sizeof(MovieTrackingMarker));
+                               track->markersnr--;
+                               track->markers= MEM_reallocN(track->markers, 
sizeof(MovieTrackingMarker)*track->markersnr);
+                       } else {
+                               MEM_freeN(track->markers);
+                               track->markers= NULL;
+                               track->markersnr= 0;
+                       }
+
+                       break;
+               }
+
+               a++;
+       }}
+
 MovieTrackingMarker *BKE_tracking_get_marker(MovieTrackingTrack *track, int 
framenr)
 {
        int a= track->markersnr-1;
@@ -231,6 +253,16 @@
        return marker;
 }
 
+MovieTrackingMarker *BKE_tracking_exact_marker(MovieTrackingTrack *track, int 
framenr)
+{
+       MovieTrackingMarker *marker= BKE_tracking_get_marker(track, framenr);
+
+       if(marker && marker->framenr!=framenr)
+               return NULL;
+
+       return marker;
+}
+
 int BKE_tracking_has_marker(MovieTrackingTrack *track, int framenr)
 {
        return BKE_tracking_get_marker(track, framenr) != 0;
@@ -253,17 +285,49 @@
        return new_track;
 }
 
-void BKE_tracking_clear_path(MovieTrackingTrack *track, int ref_frame)
+void BKE_tracking_clear_path(MovieTrackingTrack *track, int ref_frame, int 
action)
 {
-       int a= 1;
+       int a;
 
-       while(a<track->markersnr) {
-               if(track->markers[a].framenr>ref_frame) {
-                       track->markersnr= a;
-                       track->markers= MEM_reallocN(track->markers, 
sizeof(MovieTrackingMarker)*track->markersnr);
+       if(action==TRACK_CLEAR_REMAINED) {
+               a= 1;
+               while(a<track->markersnr) {
+                       if(track->markers[a].framenr>ref_frame) {
+                               track->markersnr= a;
+                               track->markers= MEM_reallocN(track->markers, 
sizeof(MovieTrackingMarker)*track->markersnr);
+
+                               break;
+                       }
+
+                       a++;
                }
+       } else if(action==TRACK_CLEAR_UPTO) {
+               a= track->markersnr-1;
+               while(a>=0) {
+                       if(track->markers[a].framenr<=ref_frame) {
+                               memmove(track->markers, track->markers+a, 
(track->markersnr-a)*sizeof(MovieTrackingMarker));
 
-               a++;
+                               track->markersnr= track->markersnr-a;
+                               track->markers= MEM_reallocN(track->markers, 
sizeof(MovieTrackingMarker)*track->markersnr);
+
+                               break;
+                       }
+
+                       a--;
+               }
+       } else if(action==TRACK_CLEAR_ALL) {
+               MovieTrackingMarker *marker, marker_new;
+
+               marker= BKE_tracking_get_marker(track, ref_frame);
+               if(marker)
+                       marker_new= *marker;
+
+               MEM_freeN(track->markers);
+               track->markers= NULL;
+               track->markersnr= 0;
+
+               if(marker)
+                       BKE_tracking_insert_marker(track, &marker_new);
        }
 }
 

Modified: branches/soc-2011-tomato/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenloader/intern/writefile.c       
2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenloader/intern/writefile.c       
2011-06-29 18:05:07 UTC (rev 37953)
@@ -2426,8 +2426,9 @@
                        track= clip->tracking.tracks.first;
                        while(track) {
                                writestruct(wd, DATA, "MovieTrackingTrack", 1, 
track);
+
                                if(track->markers)
-                                       writedata(wd, DATA, 
track->markersnr*sizeof(MovieTrackingMarker), track->markers);
+                                       writestruct(wd, DATA, 
"MovieTrackingMarker", track->markersnr, track->markers);
 
                                track= track->next;
                        }

Modified: 
branches/soc-2011-tomato/source/blender/editors/datafiles/blenderbuttons.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/datafiles/blenderbuttons.c  
2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/editors/datafiles/blenderbuttons.c  
2011-06-29 18:05:07 UTC (rev 37953)
@@ -1,6603 +1,6611 @@
 /* DataToC output of file <blenderbuttons> */
 
-int datatoc_blenderbuttons_size= 211084;
+int datatoc_blenderbuttons_size= 211354;
 char datatoc_blenderbuttons[]= {
-137, 80, 78, 71, 13, 10, 26, 10,  0,  0,  0, 13,
- 73, 72, 68, 82,  0,  0,  2, 90,  0,  0,  2,128,  8,  6,  0,  0,  0, 
68,254,214,163,  0,  0, 10, 79,105, 67, 67, 80, 80,104,111,
-116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101,  0,  
0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222,
-244, 66, 75,136,128,148, 75,111, 82, 21,  8, 32, 82, 66,139,128, 20,145, 38, 
42, 33,  9, 16, 74,136, 33,161,217, 21, 81,193, 17,

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to