[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