Blender  V2.93
tracksN.cc
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2011 Blender Foundation.
17  * All rights reserved.
18  */
19 
20 #include "intern/tracksN.h"
21 #include "intern/utildefines.h"
22 #include "libmv/autotrack/marker.h"
23 #include "libmv/autotrack/tracks.h"
24 
25 using mv::Marker;
26 using mv::Tracks;
27 
28 void libmv_apiMarkerToMarker(const libmv_Marker& libmv_marker, Marker* marker) {
29  marker->clip = libmv_marker.clip;
30  marker->frame = libmv_marker.frame;
31  marker->track = libmv_marker.track;
32  marker->center(0) = libmv_marker.center[0];
33  marker->center(1) = libmv_marker.center[1];
34  for (int i = 0; i < 4; i++) {
35  marker->patch.coordinates(i, 0) = libmv_marker.patch[i][0];
36  marker->patch.coordinates(i, 1) = libmv_marker.patch[i][1];
37  }
38  marker->search_region.min(0) = libmv_marker.search_region_min[0];
39  marker->search_region.min(1) = libmv_marker.search_region_min[1];
40  marker->search_region.max(0) = libmv_marker.search_region_max[0];
41  marker->search_region.max(1) = libmv_marker.search_region_max[1];
42  marker->weight = libmv_marker.weight;
43  marker->source = (Marker::Source)libmv_marker.source;
44  marker->status = (Marker::Status)libmv_marker.status;
45  marker->reference_clip = libmv_marker.reference_clip;
46  marker->reference_frame = libmv_marker.reference_frame;
47  marker->model_type = (Marker::ModelType)libmv_marker.model_type;
48  marker->model_id = libmv_marker.model_id;
49  marker->disabled_channels = libmv_marker.disabled_channels;
50 }
51 
52 void libmv_markerToApiMarker(const Marker& marker, libmv_Marker* libmv_marker) {
53  libmv_marker->clip = marker.clip;
54  libmv_marker->frame = marker.frame;
55  libmv_marker->track = marker.track;
56  libmv_marker->center[0] = marker.center(0);
57  libmv_marker->center[1] = marker.center(1);
58  for (int i = 0; i < 4; i++) {
59  libmv_marker->patch[i][0] = marker.patch.coordinates(i, 0);
60  libmv_marker->patch[i][1] = marker.patch.coordinates(i, 1);
61  }
62  libmv_marker->search_region_min[0] = marker.search_region.min(0);
63  libmv_marker->search_region_min[1] = marker.search_region.min(1);
64  libmv_marker->search_region_max[0] = marker.search_region.max(0);
65  libmv_marker->search_region_max[1] = marker.search_region.max(1);
66  libmv_marker->weight = marker.weight;
67  libmv_marker->source = (libmv_MarkerSource)marker.source;
68  libmv_marker->status = (libmv_MarkerStatus)marker.status;
69  libmv_marker->reference_clip = marker.reference_clip;
70  libmv_marker->reference_frame = marker.reference_frame;
71  libmv_marker->model_type = (libmv_MarkerModelType)marker.model_type;
72  libmv_marker->model_id = marker.model_id;
73  libmv_marker->disabled_channels = marker.disabled_channels;
74 }
75 
78 
79  return (libmv_TracksN*)tracks;
80 }
81 
82 void libmv_tracksDestroyN(libmv_TracksN* libmv_tracks) {
83  LIBMV_OBJECT_DELETE(libmv_tracks, Tracks);
84 }
85 
87  const libmv_Marker* libmv_marker) {
88  Marker marker;
89  libmv_apiMarkerToMarker(*libmv_marker, &marker);
90  ((Tracks*)libmv_tracks)->AddMarker(marker);
91 }
92 
94  int clip,
95  int frame,
96  int track,
97  libmv_Marker* libmv_marker) {
98  Marker marker;
99  ((Tracks*)libmv_tracks)->GetMarker(clip, frame, track, &marker);
100  libmv_markerToApiMarker(marker, libmv_marker);
101 }
102 
104  int clip,
105  int frame,
106  int track) {
107  ((Tracks*)libmv_tracks)->RemoveMarker(clip, frame, track);
108 }
109 
110 void libmv_tracksRemoveMarkersForTrack(libmv_TracksN* libmv_tracks, int track) {
111  ((Tracks*)libmv_tracks)->RemoveMarkersForTrack(track);
112 }
113 
115  return ((Tracks*)libmv_tracks)->MaxClip();
116 }
117 
118 int libmv_tracksMaxFrameN(libmv_TracksN* libmv_tracks, int clip) {
119  return ((Tracks*)libmv_tracks)->MaxFrame(clip);
120 }
121 
123  return ((Tracks*)libmv_tracks)->MaxTrack();
124 }
125 
127  return ((Tracks*)libmv_tracks)->NumMarkers();
128 }
int track
Definition: tracksN.h:65
float search_region_max[2]
Definition: tracksN.h:69
float center[2]
Definition: tracksN.h:66
float search_region_min[2]
Definition: tracksN.h:68
int frame
Definition: tracksN.h:64
int disabled_channels
Definition: tracksN.h:77
libmv_MarkerModelType model_type
Definition: tracksN.h:75
float patch[4][2]
Definition: tracksN.h:67
int reference_frame
Definition: tracksN.h:74
int reference_clip
Definition: tracksN.h:73
float weight
Definition: tracksN.h:70
libmv_MarkerSource source
Definition: tracksN.h:71
int clip
Definition: tracksN.h:63
int model_id
Definition: tracksN.h:76
libmv_MarkerStatus status
Definition: tracksN.h:72
Region search_region
Definition: marker.h:77
int disabled_channels
Definition: marker.h:105
int frame
Definition: marker.h:42
int clip
Definition: marker.h:41
float weight
Definition: marker.h:57
Vec2f center
Definition: marker.h:47
Quad2Df patch
Definition: marker.h:51
ModelType model_type
Definition: marker.h:90
int reference_frame
Definition: marker.h:81
Source source
Definition: marker.h:68
Status status
Definition: marker.h:73
int model_id
Definition: marker.h:93
int track
Definition: marker.h:43
int reference_clip
Definition: marker.h:80
Eigen::Matrix< T, 4, D > coordinates
Definition: quad.h:50
ListBase tracks
Definition: tracking.c:75
void libmv_apiMarkerToMarker(const libmv_Marker &libmv_marker, Marker *marker)
Definition: tracksN.cc:28
void libmv_tracksAddMarkerN(libmv_TracksN *libmv_tracks, const libmv_Marker *libmv_marker)
Definition: tracksN.cc:86
int libmv_tracksNumMarkersN(libmv_TracksN *libmv_tracks)
Definition: tracksN.cc:126
int libmv_tracksMaxClipN(libmv_TracksN *libmv_tracks)
Definition: tracksN.cc:114
libmv_TracksN * libmv_tracksNewN(void)
Definition: tracksN.cc:76
void libmv_markerToApiMarker(const Marker &marker, libmv_Marker *libmv_marker)
Definition: tracksN.cc:52
int libmv_tracksMaxTrackN(libmv_TracksN *libmv_tracks)
Definition: tracksN.cc:122
void libmv_tracksDestroyN(libmv_TracksN *libmv_tracks)
Definition: tracksN.cc:82
void libmv_tracksRemoveMarkersForTrack(libmv_TracksN *libmv_tracks, int track)
Definition: tracksN.cc:110
int libmv_tracksMaxFrameN(libmv_TracksN *libmv_tracks, int clip)
Definition: tracksN.cc:118
void libmv_tracksRemoveMarkerN(libmv_TracksN *libmv_tracks, int clip, int frame, int track)
Definition: tracksN.cc:103
void libmv_tracksGetMarkerN(libmv_TracksN *libmv_tracks, int clip, int frame, int track, libmv_Marker *libmv_marker)
Definition: tracksN.cc:93
libmv_MarkerSource
Definition: tracksN.h:35
libmv_MarkerStatus
Definition: tracksN.h:43
struct libmv_TracksN libmv_TracksN
Definition: tracksN.h:31
libmv_MarkerModelType
Definition: tracksN.h:49
#define LIBMV_OBJECT_NEW(type,...)
Definition: utildefines.h:42
#define LIBMV_OBJECT_DELETE(what, type)
Definition: utildefines.h:45