Initial commit
[fillmore] / src / lombard / lombard / video_project.c
diff --git a/src/lombard/lombard/video_project.c b/src/lombard/lombard/video_project.c
new file mode 100644 (file)
index 0000000..dae05f8
--- /dev/null
@@ -0,0 +1,292 @@
+/* video_project.c generated by valac, the Vala compiler
+ * generated from video_project.vala, do not modify */
+
+/* Copyright 2009-2010 Yorba Foundation
+ *
+ * This software is licensed under the GNU Lesser General Public License
+ * (version 2.1 or later).  See the COPYING file in this distribution. 
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <marina.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+
+#define MODEL_TYPE_VIDEO_PROJECT (model_video_project_get_type ())
+#define MODEL_VIDEO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProject))
+#define MODEL_VIDEO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProjectClass))
+#define MODEL_IS_VIDEO_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_VIDEO_PROJECT))
+#define MODEL_IS_VIDEO_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_VIDEO_PROJECT))
+#define MODEL_VIDEO_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_VIDEO_PROJECT, ModelVideoProjectClass))
+
+typedef struct _ModelVideoProject ModelVideoProject;
+typedef struct _ModelVideoProjectClass ModelVideoProjectClass;
+typedef struct _ModelVideoProjectPrivate ModelVideoProjectPrivate;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+struct _ModelVideoProject {
+       ModelProject parent_instance;
+       ModelVideoProjectPrivate * priv;
+       ModelTimecodeTimeSystem* time_provider;
+};
+
+struct _ModelVideoProjectClass {
+       ModelProjectClass parent_class;
+};
+
+
+static gpointer model_video_project_parent_class = NULL;
+
+GType model_video_project_get_type (void);
+enum  {
+       MODEL_VIDEO_PROJECT_DUMMY_PROPERTY
+};
+static void model_video_project_real_load_complete (ModelProject* base);
+ModelVideoProject* model_video_project_new (const char* filename, GError** error);
+ModelVideoProject* model_video_project_construct (GType object_type, const char* filename, GError** error);
+#define APP_NAME "Lombard"
+static char* model_video_project_real_get_app_name (ModelProject* base);
+gboolean model_video_project_get_framerate_fraction (ModelVideoProject* self, Fraction* rate);
+static void model_video_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result);
+void model_video_project_go_previous_frame (ModelVideoProject* self);
+void model_video_project_go_next_frame (ModelVideoProject* self);
+static void model_video_project_finalize (GObject* obj);
+
+
+
+#line 14 "video_project.vala"
+static void model_video_project_real_load_complete (ModelProject* base) {
+#line 63 "video_project.c"
+       ModelVideoProject * self;
+       ModelVideoTrack* _tmp0_;
+       gboolean _tmp1_;
+       self = MODEL_VIDEO_PROJECT (base);
+#line 15 "video_project.vala"
+       if ((_tmp1_ = (_tmp0_ = model_project_find_video_track (MODEL_PROJECT (self))) == NULL, _g_object_unref0 (_tmp0_), _tmp1_)) {
+#line 70 "video_project.c"
+               ModelVideoTrack* _tmp2_;
+#line 16 "video_project.vala"
+               model_project_add_track (MODEL_PROJECT (self), MODEL_TRACK (_tmp2_ = model_video_track_new (MODEL_PROJECT (self))));
+#line 74 "video_project.c"
+               _g_object_unref0 (_tmp2_);
+       }
+}
+
+
+#line 20 "video_project.vala"
+ModelVideoProject* model_video_project_construct (GType object_type, const char* filename, GError** error) {
+#line 82 "video_project.c"
+       ModelVideoProject * self;
+#line 21 "video_project.vala"
+       self = (ModelVideoProject*) model_project_construct (object_type, filename, TRUE, error);
+#line 23 "video_project.vala"
+       if (self != NULL) {
+#line 88 "video_project.c"
+               ModelTimecodeTimeSystem* _tmp0_;
+#line 24 "video_project.vala"
+               self->time_provider = (_tmp0_ = model_timecode_time_system_new (), _g_object_unref0 (self->time_provider), _tmp0_);
+#line 92 "video_project.c"
+       }
+       return self;
+}
+
+
+#line 20 "video_project.vala"
+ModelVideoProject* model_video_project_new (const char* filename, GError** error) {
+#line 20 "video_project.vala"
+       return model_video_project_construct (MODEL_TYPE_VIDEO_PROJECT, filename, error);
+#line 102 "video_project.c"
+}
+
+
+#line 28 "video_project.vala"
+static char* model_video_project_real_get_app_name (ModelProject* base) {
+#line 108 "video_project.c"
+       ModelVideoProject * self;
+       char* result = NULL;
+       self = MODEL_VIDEO_PROJECT (base);
+       result = g_strdup (APP_NAME);
+#line 29 "video_project.vala"
+       return result;
+#line 115 "video_project.c"
+}
+
+
+#line 32 "video_project.vala"
+static void model_video_project_real_get_clip_time (ModelProject* base, ModelClipFile* f, TimeCode* result) {
+#line 121 "video_project.c"
+       ModelVideoProject * self;
+       TimeCode _tmp0_ = {0};
+       TimeCode t;
+       self = MODEL_VIDEO_PROJECT (base);
+#line 32 "video_project.vala"
+       g_return_if_fail (MODEL_IS_CLIP_FILE (f));
+#line 33 "video_project.vala"
+       t = (_tmp0_);
+#line 35 "video_project.vala"
+       if (model_clip_file_is_of_type (f, MODEL_MEDIA_TYPE_VIDEO)) {
+#line 132 "video_project.c"
+               Fraction rate = {0};
+               TimeCode _tmp1_ = {0};
+#line 37 "video_project.vala"
+               if (!model_video_project_get_framerate_fraction (self, &rate)) {
+#line 38 "video_project.vala"
+                       rate.numerator = 2997;
+#line 39 "video_project.vala"
+                       rate.denominator = 100;
+#line 141 "video_project.c"
+               }
+#line 41 "video_project.vala"
+               t = (frame_to_time (time_to_frame_with_rate (model_clip_file_get_length (f), &rate), &rate, &_tmp1_), _tmp1_);
+#line 145 "video_project.c"
+       } else {
+#line 43 "video_project.vala"
+               time_code_get_from_length (&t, model_clip_file_get_length (f));
+#line 149 "video_project.c"
+       }
+       *result = t;
+#line 45 "video_project.vala"
+       return;
+#line 154 "video_project.c"
+}
+
+
+#line 48 "video_project.vala"
+void model_video_project_go_previous_frame (ModelVideoProject* self) {
+#line 160 "video_project.c"
+       ModelVideoTrack* video_track;
+#line 48 "video_project.vala"
+       g_return_if_fail (MODEL_IS_VIDEO_PROJECT (self));
+#line 49 "video_project.vala"
+       video_track = model_project_find_video_track (MODEL_PROJECT (self));
+#line 50 "video_project.vala"
+       if (video_track != NULL) {
+#line 51 "video_project.vala"
+               view_media_engine_go (MODEL_PROJECT (self)->media_engine, model_video_track_previous_frame (video_track, model_project_transport_get_position (MODEL_PROJECT (self))));
+#line 170 "video_project.c"
+       }
+       _g_object_unref0 (video_track);
+}
+
+
+#line 55 "video_project.vala"
+void model_video_project_go_next_frame (ModelVideoProject* self) {
+#line 178 "video_project.c"
+       ModelVideoTrack* video_track;
+#line 55 "video_project.vala"
+       g_return_if_fail (MODEL_IS_VIDEO_PROJECT (self));
+#line 56 "video_project.vala"
+       video_track = model_project_find_video_track (MODEL_PROJECT (self));
+#line 57 "video_project.vala"
+       if (video_track != NULL) {
+#line 58 "video_project.vala"
+               view_media_engine_go (MODEL_PROJECT (self)->media_engine, model_video_track_next_frame (video_track, model_project_transport_get_position (MODEL_PROJECT (self))));
+#line 188 "video_project.c"
+       }
+       _g_object_unref0 (video_track);
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+       return self ? g_object_ref (self) : NULL;
+}
+
+
+#line 62 "video_project.vala"
+gboolean model_video_project_get_framerate_fraction (ModelVideoProject* self, Fraction* rate) {
+#line 201 "video_project.c"
+       gboolean result = FALSE;
+#line 62 "video_project.vala"
+       g_return_val_if_fail (MODEL_IS_VIDEO_PROJECT (self), FALSE);
+#line 205 "video_project.c"
+       {
+               GeeIterator* _track_it;
+               _track_it = gee_abstract_collection_iterator (GEE_ABSTRACT_COLLECTION (MODEL_PROJECT (self)->tracks));
+#line 63 "video_project.vala"
+               while (TRUE) {
+#line 211 "video_project.c"
+                       ModelTrack* track;
+                       ModelTrack* _tmp0_;
+                       ModelVideoTrack* video_track;
+                       gboolean _tmp1_ = FALSE;
+#line 63 "video_project.vala"
+                       if (!gee_iterator_next (_track_it)) {
+#line 63 "video_project.vala"
+                               break;
+#line 220 "video_project.c"
+                       }
+#line 63 "video_project.vala"
+                       track = (ModelTrack*) gee_iterator_get (_track_it);
+#line 64 "video_project.vala"
+                       video_track = _g_object_ref0 ((_tmp0_ = track, MODEL_IS_VIDEO_TRACK (_tmp0_) ? ((ModelVideoTrack*) _tmp0_) : NULL));
+#line 65 "video_project.vala"
+                       if (video_track != NULL) {
+#line 65 "video_project.vala"
+                               _tmp1_ = model_video_track_get_framerate (video_track, rate);
+#line 230 "video_project.c"
+                       } else {
+#line 65 "video_project.vala"
+                               _tmp1_ = FALSE;
+#line 234 "video_project.c"
+                       }
+#line 65 "video_project.vala"
+                       if (_tmp1_) {
+#line 238 "video_project.c"
+                               result = TRUE;
+                               _g_object_unref0 (track);
+                               _g_object_unref0 (video_track);
+                               _g_object_unref0 (_track_it);
+#line 66 "video_project.vala"
+                               return result;
+#line 245 "video_project.c"
+                       }
+                       _g_object_unref0 (track);
+                       _g_object_unref0 (video_track);
+               }
+               _g_object_unref0 (_track_it);
+       }
+       result = FALSE;
+#line 68 "video_project.vala"
+       return result;
+#line 255 "video_project.c"
+}
+
+
+static void model_video_project_class_init (ModelVideoProjectClass * klass) {
+       model_video_project_parent_class = g_type_class_peek_parent (klass);
+       MODEL_PROJECT_CLASS (klass)->load_complete = model_video_project_real_load_complete;
+       MODEL_PROJECT_CLASS (klass)->get_app_name = model_video_project_real_get_app_name;
+       MODEL_PROJECT_CLASS (klass)->get_clip_time = model_video_project_real_get_clip_time;
+       G_OBJECT_CLASS (klass)->finalize = model_video_project_finalize;
+}
+
+
+static void model_video_project_instance_init (ModelVideoProject * self) {
+}
+
+
+static void model_video_project_finalize (GObject* obj) {
+       ModelVideoProject * self;
+       self = MODEL_VIDEO_PROJECT (obj);
+       _g_object_unref0 (self->time_provider);
+       G_OBJECT_CLASS (model_video_project_parent_class)->finalize (obj);
+}
+
+
+GType model_video_project_get_type (void) {
+       static volatile gsize model_video_project_type_id__volatile = 0;
+       if (g_once_init_enter (&model_video_project_type_id__volatile)) {
+               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 };
+               GType model_video_project_type_id;
+               model_video_project_type_id = g_type_register_static (MODEL_TYPE_PROJECT, "ModelVideoProject", &g_define_type_info, 0);
+               g_once_init_leave (&model_video_project_type_id__volatile, model_video_project_type_id);
+       }
+       return model_video_project_type_id__volatile;
+}
+
+
+
+