1 /* video_project.c generated by valac, the Vala compiler
2 * generated from video_project.vala, do not modify */
4 /* Copyright 2009-2010 Yorba Foundation
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.
11 #include <glib-object.h>
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))
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)))
30 struct _ModelVideoProject {
31 ModelProject parent_instance;
32 ModelVideoProjectPrivate * priv;
33 ModelTimecodeTimeSystem* time_provider;
36 struct _ModelVideoProjectClass {
37 ModelProjectClass parent_class;
41 static gpointer model_video_project_parent_class = NULL;
43 GType model_video_project_get_type (void);
45 MODEL_VIDEO_PROJECT_DUMMY_PROPERTY
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);
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_;
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_);
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"
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"
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"
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;
110 self = MODEL_VIDEO_PROJECT (base);
111 result = g_strdup (APP_NAME);
112 #line 29 "video_project.vala"
114 #line 115 "video_project.c"
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};
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"
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"
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"
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"
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"
151 #line 45 "video_project.vala"
153 #line 154 "video_project.c"
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"
171 _g_object_unref0 (video_track);
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"
189 _g_object_unref0 (video_track);
193 static gpointer _g_object_ref0 (gpointer self) {
194 return self ? g_object_ref (self) : NULL;
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"
206 GeeIterator* _track_it;
207 _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self)->tracks));
208 #line 63 "video_project.vala"
210 #line 211 "video_project.c"
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"
219 #line 220 "video_project.c"
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"
231 #line 65 "video_project.vala"
233 #line 234 "video_project.c"
235 #line 65 "video_project.vala"
237 #line 238 "video_project.c"
239 _g_object_unref0 (track);
240 _g_object_unref0 (video_track);
241 _g_object_unref0 (_track_it);
242 #line 66 "video_project.vala"
244 #line 245 "video_project.c"
246 _g_object_unref0 (track);
247 _g_object_unref0 (video_track);
249 _g_object_unref0 (_track_it);
252 #line 68 "video_project.vala"
254 #line 255 "video_project.c"
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;
267 static void model_video_project_instance_init (ModelVideoProject * self) {
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);
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);
287 return model_video_project_type_id__volatile;