Commit: a9a1aaf7e4d911853d5368d406374cdc365d488b
Author: Tianwei Shen
Date:   Tue May 31 03:08:03 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rBa9a1aaf7e4d911853d5368d406374cdc365d488b

add correspondence data struct

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

M       source/blender/blenkernel/BKE_tracking.h
M       source/blender/editors/space_clip/tracking_ops_correspondence.c
M       source/blender/makesdna/DNA_tracking_types.h

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

diff --git a/source/blender/blenkernel/BKE_tracking.h 
b/source/blender/blenkernel/BKE_tracking.h
index 4366d00..36b4a81 100644
--- a/source/blender/blenkernel/BKE_tracking.h
+++ b/source/blender/blenkernel/BKE_tracking.h
@@ -37,6 +37,7 @@ struct ImBuf;
 struct ListBase;
 struct MovieReconstructContext;
 struct MovieTrackingTrack;
+struct MovieTrackingCorrespondence;
 struct MovieTrackingMarker;
 struct MovieTrackingPlaneTrack;
 struct MovieTrackingPlaneMarker;
@@ -288,6 +289,10 @@ void BKE_tracking_dopesheet_tag_update(struct 
MovieTracking *tracking);
 void BKE_tracking_dopesheet_update(struct MovieTracking *tracking);
 
 /* Correspondence */
+void BKE_tracking_correspondence_unique_name(struct ListBase *tracksbase, 
struct MovieTrackingCorrespondence *corr);
+struct MovieTrackingCorrespondence *BKE_tracking_correspondence_add(struct 
MovieTracking *tracking, struct ListBase *corr_base,
+                                                                    struct 
MovieTrackingTrack *primary_track,
+                                                                    struct 
MovieTrackingTrack *witness_track);
 
 #define TRACK_SELECTED(track)               ((track)->flag & SELECT || 
(track)->pat_flag & SELECT || (track)->search_flag & SELECT)
 
diff --git a/source/blender/editors/space_clip/tracking_ops_correspondence.c 
b/source/blender/editors/space_clip/tracking_ops_correspondence.c
index ca51b76..efc68a3 100644
--- a/source/blender/editors/space_clip/tracking_ops_correspondence.c
+++ b/source/blender/editors/space_clip/tracking_ops_correspondence.c
@@ -60,6 +60,36 @@
 #include "clip_intern.h"
 #include "tracking_ops_intern.h"
 
+// TODO(tianwei): may move these functions to tracking.c in the future
+/* Ensure specified correspondence has got unique name,
+ * if it's not name of specified correspondence will be changed
+ * keeping names of all other correspondence unchanged.
+ */
+void BKE_tracking_correspondence_unique_name(ListBase *tracksbase, 
MovieTrackingCorrespondence *corr)
+{
+       BLI_uniquename(tracksbase, corr, 
CTX_DATA_(BLT_I18NCONTEXT_ID_MOVIECLIP, "Correspondence"), '.',
+                      offsetof(MovieTrackingCorrespondence, name), 
sizeof(corr->name));
+}
+
+/* Add new correspondence to a specified correspondence base.
+ */
+MovieTrackingCorrespondence *BKE_tracking_correspondence_add(MovieTracking 
*tracking, ListBase *corr_base,
+                                                             
MovieTrackingTrack *primary_track,
+                                                             
MovieTrackingTrack *witness_track)
+{
+       MovieTrackingCorrespondence *corr;
+
+       corr = MEM_callocN(sizeof(MovieTrackingCorrespondence), "add 
correspondence");
+       strcpy(corr->name, "Correspondence");
+       corr->primary_track = primary_track;
+       corr->witness_track = witness_track;
+
+       BLI_addtail(corr_base, corr);
+       BKE_tracking_correspondence_unique_name(corr_base, corr);
+
+       return corr;
+}
+
 /********************** add correspondence operator *********************/
 
 static int add_correspondence_exec(bContext *C, wmOperator *op)
@@ -107,8 +137,10 @@ static int add_correspondence_exec(bContext *C, wmOperator 
*op)
                return OPERATOR_CANCELLED;
        }
 
-       // link two tracks, mark these two tracks in a different color
-       //ed_tracking_delect_all_tracks(tracksbase);
+       // TODO(tianwei): link two tracks, mark these two tracks in a different 
color
+
+       // add these correspondence
+       BKE_tracking_correspondence_add(tracking, &(tracking->correspondences), 
primary_track, witness_track);
 
        return OPERATOR_FINISHED;
 }
diff --git a/source/blender/makesdna/DNA_tracking_types.h 
b/source/blender/makesdna/DNA_tracking_types.h
index c2117b1..df3ef6b 100644
--- a/source/blender/makesdna/DNA_tracking_types.h
+++ b/source/blender/makesdna/DNA_tracking_types.h
@@ -162,8 +162,12 @@ typedef struct MovieTrackingTrack {
        float weight, pad;
 } MovieTrackingTrack;
 
+//TODO(tianwei): expand the fields, now only two tracks
 typedef struct MovieTrackingCorrespondence {
-       //TODO(tianwei): expand the fields, now only two tracks
+       struct MovieTrackingCorrespondence *next, *prev;
+
+       char name[64];  /* MAX_NAME */
+
        MovieTrackingTrack *primary_track;
        MovieTrackingTrack *witness_track;
 } MovieTrackingCorrespondence;
@@ -347,6 +351,7 @@ typedef struct MovieTracking {
        MovieTrackingCamera camera;     /* camera intrinsics */
        ListBase tracks;                /* list of tracks used for camera 
object */
        ListBase plane_tracks;          /* list of plane tracks used by camera 
object */
+       ListBase correspondences;               /* list of correspondence for 
multi-view support */
        MovieTrackingReconstruction reconstruction; /* reconstruction data for 
camera object */
        MovieTrackingStabilization stabilization;   /* stabilization data */
        MovieTrackingTrack *act_track;             /* active track */

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

Reply via email to