[Bf-blender-cvs] [adaeb14b3eb] master: Tracking: Add utility function to find tracking object from a given track

Sergey Sharybin noreply at git.blender.org
Tue Dec 19 12:22:47 CET 2017


Commit: adaeb14b3eb43684b5995d65ef58652b55cc6127
Author: Sergey Sharybin
Date:   Tue Dec 19 12:10:42 2017 +0100
Branches: master
https://developer.blender.org/rBadaeb14b3eb43684b5995d65ef58652b55cc6127

Tracking: Add utility function to find tracking object from a given track

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

M	source/blender/blenkernel/BKE_tracking.h
M	source/blender/blenkernel/intern/tracking.c

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

diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h
index d05ed1800fb..169059b121f 100644
--- a/source/blender/blenkernel/BKE_tracking.h
+++ b/source/blender/blenkernel/BKE_tracking.h
@@ -288,6 +288,13 @@ void BKE_tracking_stabilization_data_to_mat4(int width, int height, float aspect
 void BKE_tracking_dopesheet_tag_update(struct MovieTracking *tracking);
 void BKE_tracking_dopesheet_update(struct MovieTracking *tracking);
 
+/* **** Query/search **** */
+
+struct MovieTrackingObject *BKE_tracking_find_object_for_track(const struct MovieTracking *tracking,
+                                                               const struct MovieTrackingTrack *track);
+
+/* **** Utility macros **** */
+
 #define TRACK_SELECTED(track)               ((track)->flag & SELECT || (track)->pat_flag & SELECT || (track)->search_flag & SELECT)
 
 #define TRACK_AREA_SELECTED(track, area)    ((area) == TRACK_AREA_POINT ? (track)->flag & SELECT : \
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index b4ef381534f..0c464058eba 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -2904,3 +2904,21 @@ void BKE_tracking_dopesheet_update(MovieTracking *tracking)
 
 	dopesheet->ok = true;
 }
+
+/* NOTE: Returns NULL if the track comes from camera object, */
+MovieTrackingObject *BKE_tracking_find_object_for_track(const MovieTracking *tracking,
+                                                        const MovieTrackingTrack *track)
+{
+	const ListBase *tracksbase = &tracking->tracks;
+	if (BLI_findindex(tracksbase, track) != -1) {
+		return NULL;
+	}
+	MovieTrackingObject *object = tracking->objects.first;
+	while (object) {
+		if (BLI_findindex(&object->tracks, track) != -1) {
+			return object;
+		}
+		object = object->next;
+	}
+	return NULL;
+}



More information about the Bf-blender-cvs mailing list