Initial commit
[fillmore] / src / lombard / lombard / video_project.c
1 /* video_project.c generated by valac, the Vala compiler
2  * generated from video_project.vala, do not modify */
3
4 /* Copyright 2009-2010 Yorba Foundation
5  *
6  * This software is licensed under the GNU Lesser General Public License
7  * (version 2.1 or later).  See the COPYING file in this distribution. 
8  */
9
10 #include <glib.h>
11 #include <glib-object.h>
12 #include <marina.h>
13 #include <stdlib.h>
14 #include <string.h>
15 #include <gee.h>
16
17
18 #define MODEL_TYPE_VIDEO_PROJECT (model_video_project_get_type ())
19 #define MODEL_VIDEO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProject))
20 #define MODEL_VIDEO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProjectClass))
21 #define MODEL_IS_VIDEO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_PROJECT))
22 #define MODEL_IS_VIDEO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_PROJECT))
23 #define MODEL_VIDEO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProjectClass))
24
25 typedef struct _ModelVideoProject ModelVideoProject;
26 typedef struct _ModelVideoProjectClass ModelVideoProjectClass;
27 typedef struct _ModelVideoProjectPrivate ModelVideoProjectPrivate;
28 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
29
30 struct _ModelVideoProject {
31         ModelProject parent_instance;
32         ModelVideoProjectPrivate * priv;
33         ModelTimecodeTimeSystem* time_provider;
34 };
35
36 struct _ModelVideoProjectClass {
37         ModelProjectClass parent_class;
38 };
39
40
41 static gpointer model_video_project_parent_class = NULL;
42
43 GType model_video_project_get_type (void);
44 enum  {
45         MODEL_VIDEO_PROJECT_DUMMY_PROPERTY
46 };
47 static void model_video_project_real_load_complete (ModelProject* base);
48 ModelVideoProject* model_video_project_new (const char* filename, GError** error);
49 ModelVideoProject* model_video_project_construct (GType object_type, const char* filename, GError** error);
50 #define APP_NAME "Lombard"
51 static char* model_video_project_real_get_app_name (ModelProject* base);
52 gboolean model_video_project_get_framerate_fraction (ModelVideoProject* self, Fraction* rate);
53 static void model_video_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result);
54 void model_video_project_go_previous_frame (ModelVideoProject* self);
55 void model_video_project_go_next_frame (ModelVideoProject* self);
56 static void model_video_project_finalize (GObject* obj);
57
58
59
60 #line 14 "video_project.vala"
61 static void model_video_project_real_load_complete (ModelProject* base) {
62 #line 63 "video_project.c"
63         ModelVideoProject * self;
64         ModelVideoTrack* _tmp0_;
65         gboolean _tmp1_;
66         self = MODEL_VIDEO_PROJECT (base);
67 #line 15 "video_project.vala"
68         if ((_tmp1_ = (_tmp0_ = model_project_find_video_track (MODEL_PROJECT (self))) == NULL, _g_object_unref0 (_tmp0_), _tmp1_)) {
69 #line 70 "video_project.c"
70                 ModelVideoTrack* _tmp2_;
71 #line 16 "video_project.vala"
72                 model_project_add_track (MODEL_PROJECT (self), MODEL_TRACK (_tmp2_ = model_video_track_new (MODEL_PROJECT (self))));
73 #line 74 "video_project.c"
74                 _g_object_unref0 (_tmp2_);
75         }
76 }
77
78
79 #line 20 "video_project.vala"
80 ModelVideoProject* model_video_project_construct (GType object_type, const char* filename, GError** error) {
81 #line 82 "video_project.c"
82         ModelVideoProject * self;
83 #line 21 "video_project.vala"
84         self = (ModelVideoProject*) model_project_construct (object_type, filename, TRUE, error);
85 #line 23 "video_project.vala"
86         if (self != NULL) {
87 #line 88 "video_project.c"
88                 ModelTimecodeTimeSystem* _tmp0_;
89 #line 24 "video_project.vala"
90                 self->time_provider = (_tmp0_ = model_timecode_time_system_new (), _g_object_unref0 (self->time_provider), _tmp0_);
91 #line 92 "video_project.c"
92         }
93         return self;
94 }
95
96
97 #line 20 "video_project.vala"
98 ModelVideoProject* model_video_project_new (const char* filename, GError** error) {
99 #line 20 "video_project.vala"
100         return model_video_project_construct (MODEL_TYPE_VIDEO_PROJECT, filename, error);
101 #line 102 "video_project.c"
102 }
103
104
105 #line 28 "video_project.vala"
106 static char* model_video_project_real_get_app_name (ModelProject* base) {
107 #line 108 "video_project.c"
108         ModelVideoProject * self;
109         char* result = NULL;
110         self = MODEL_VIDEO_PROJECT (base);
111         result = g_strdup (APP_NAME);
112 #line 29 "video_project.vala"
113         return result;
114 #line 115 "video_project.c"
115 }
116
117
118 #line 32 "video_project.vala"
119 static void model_video_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result) {
120 #line 121 "video_project.c"
121         ModelVideoProject * self;
122         TimeCode _tmp0_ = {0};
123         TimeCode t;
124         self = MODEL_VIDEO_PROJECT (base);
125 #line 32 "video_project.vala"
126         g_return_if_fail (MODEL_IS_CLIP_FILE (f));
127 #line 33 "video_project.vala"
128         t = (_tmp0_);
129 #line 35 "video_project.vala"
130         if (model_clip_file_is_of_type (f, MODEL_MEDIA_TYPE_VIDEO)) {
131 #line 132 "video_project.c"
132                 Fraction rate = {0};
133                 TimeCode _tmp1_ = {0};
134 #line 37 "video_project.vala"
135                 if (!model_video_project_get_framerate_fraction (self, &rate)) {
136 #line 38 "video_project.vala"
137                         rate.numerator = 2997;
138 #line 39 "video_project.vala"
139                         rate.denominator = 100;
140 #line 141 "video_project.c"
141                 }
142 #line 41 "video_project.vala"
143                 t = (frame_to_time (time_to_frame_with_rate (model_clip_file_get_length (f), &rate), &rate, &_tmp1_), _tmp1_);
144 #line 145 "video_project.c"
145         } else {
146 #line 43 "video_project.vala"
147                 time_code_get_from_length (&t, model_clip_file_get_length (f));
148 #line 149 "video_project.c"
149         }
150         *result = t;
151 #line 45 "video_project.vala"
152         return;
153 #line 154 "video_project.c"
154 }
155
156
157 #line 48 "video_project.vala"
158 void model_video_project_go_previous_frame (ModelVideoProject* self) {
159 #line 160 "video_project.c"
160         ModelVideoTrack* video_track;
161 #line 48 "video_project.vala"
162         g_return_if_fail (MODEL_IS_VIDEO_PROJECT (self));
163 #line 49 "video_project.vala"
164         video_track = model_project_find_video_track (MODEL_PROJECT (self));
165 #line 50 "video_project.vala"
166         if (video_track != NULL) {
167 #line 51 "video_project.vala"
168                 view_media_engine_go (MODEL_PROJECT (self)->media_engine, model_video_track_previous_frame (video_track, model_project_transport_get_position (MODEL_PROJECT (self))));
169 #line 170 "video_project.c"
170         }
171         _g_object_unref0 (video_track);
172 }
173
174
175 #line 55 "video_project.vala"
176 void model_video_project_go_next_frame (ModelVideoProject* self) {
177 #line 178 "video_project.c"
178         ModelVideoTrack* video_track;
179 #line 55 "video_project.vala"
180         g_return_if_fail (MODEL_IS_VIDEO_PROJECT (self));
181 #line 56 "video_project.vala"
182         video_track = model_project_find_video_track (MODEL_PROJECT (self));
183 #line 57 "video_project.vala"
184         if (video_track != NULL) {
185 #line 58 "video_project.vala"
186                 view_media_engine_go (MODEL_PROJECT (self)->media_engine, model_video_track_next_frame (video_track, model_project_transport_get_position (MODEL_PROJECT (self))));
187 #line 188 "video_project.c"
188         }
189         _g_object_unref0 (video_track);
190 }
191
192
193 static gpointer _g_object_ref0 (gpointer self) {
194         return self ? g_object_ref (self) : NULL;
195 }
196
197
198 #line 62 "video_project.vala"
199 gboolean model_video_project_get_framerate_fraction (ModelVideoProject* self, Fraction* rate) {
200 #line 201 "video_project.c"
201         gboolean result = FALSE;
202 #line 62 "video_project.vala"
203         g_return_val_if_fail (MODEL_IS_VIDEO_PROJECT (self), FALSE);
204 #line 205 "video_project.c"
205         {
206                 GeeIterator* _track_it;
207                 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self)->tracks));
208 #line 63 "video_project.vala"
209                 while (TRUE) {
210 #line 211 "video_project.c"
211                         ModelTrack* track;
212                         ModelTrack* _tmp0_;
213                         ModelVideoTrack* video_track;
214                         gboolean _tmp1_ = FALSE;
215 #line 63 "video_project.vala"
216                         if (!gee_iterator_next (_track_it)) {
217 #line 63 "video_project.vala"
218                                 break;
219 #line 220 "video_project.c"
220                         }
221 #line 63 "video_project.vala"
222                         track = (ModelTrack*) gee_iterator_get (_track_it);
223 #line 64 "video_project.vala"
224                         video_track = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_VIDEO_TRACK (_tmp0_) ? ((ModelVideoTrack*) _tmp0_) : NULL));
225 #line 65 "video_project.vala"
226                         if (video_track != NULL) {
227 #line 65 "video_project.vala"
228                                 _tmp1_ = model_video_track_get_framerate (video_track, rate);
229 #line 230 "video_project.c"
230                         } else {
231 #line 65 "video_project.vala"
232                                 _tmp1_ = FALSE;
233 #line 234 "video_project.c"
234                         }
235 #line 65 "video_project.vala"
236                         if (_tmp1_) {
237 #line 238 "video_project.c"
238                                 result = TRUE;
239                                 _g_object_unref0 (track);
240                                 _g_object_unref0 (video_track);
241                                 _g_object_unref0 (_track_it);
242 #line 66 "video_project.vala"
243                                 return result;
244 #line 245 "video_project.c"
245                         }
246                         _g_object_unref0 (track);
247                         _g_object_unref0 (video_track);
248                 }
249                 _g_object_unref0 (_track_it);
250         }
251         result = FALSE;
252 #line 68 "video_project.vala"
253         return result;
254 #line 255 "video_project.c"
255 }
256
257
258 static void model_video_project_class_init (ModelVideoProjectClass * klass) {
259         model_video_project_parent_class = g_type_class_peek_parent (klass);
260         MODEL_PROJECT_CLASS (klass)->load_complete = model_video_project_real_load_complete;
261         MODEL_PROJECT_CLASS (klass)->get_app_name = model_video_project_real_get_app_name;
262         MODEL_PROJECT_CLASS (klass)->get_clip_time = model_video_project_real_get_clip_time;
263         G_OBJECT_CLASS (klass)->finalize = model_video_project_finalize;
264 }
265
266
267 static void model_video_project_instance_init (ModelVideoProject * self) {
268 }
269
270
271 static void model_video_project_finalize (GObject* obj) {
272         ModelVideoProject * self;
273         self = MODEL_VIDEO_PROJECT (obj);
274         _g_object_unref0 (self->time_provider);
275         G_OBJECT_CLASS (model_video_project_parent_class)->finalize (obj);
276 }
277
278
279 GType model_video_project_get_type (void) {
280         static volatile gsize model_video_project_type_id__volatile = 0;
281         if (g_once_init_enter (&model_video_project_type_id__volatile)) {
282                 static const GTypeInfo g_define_type_info = { sizeof (ModelVideoProjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_video_project_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelVideoProject), 0, (GInstanceInitFunc) model_video_project_instance_init, NULL };
283                 GType model_video_project_type_id;
284                 model_video_project_type_id = g_type_register_static (MODEL_TYPE_PROJECT, "ModelVideoProject", &g_define_type_info, 0);
285                 g_once_init_leave (&model_video_project_type_id__volatile, model_video_project_type_id);
286         }
287         return model_video_project_type_id__volatile;
288 }
289
290
291
292