Add a title clip to the timeline
[vidi-player.git] / vidi / Timeline.py
index 59c891a..da8e83c 100755 (executable)
@@ -29,6 +29,10 @@ GES.init()
 
 from .Player import Player
 
+TITLE_BACKGROUND = 0xFF000000
+TITLE_COLOR = 0xFFFFFFFF
+TITLE_OUTLINE_COLOR = 0x00000000
+TITLE_FONT_DESC = "Georgia, 24"
 
 class Timeline(object):
     def __init__(self):
@@ -47,6 +51,23 @@ class Timeline(object):
         ges_pipeline.set_timeline(self.timeline)
         self.player = Player(ges_pipeline)
 
+    def add_title_clip(self, text, start_time, duration):
+        title_clip = GES.TitleClip()
+        title_clip.set_start(start_time * Gst.SECOND)
+        title_clip.set_duration(duration * Gst.SECOND)
+        self.layer.add_clip(title_clip)
+
+        # Now that the clip is inserted in the timeline, it has a source which
+        # can be used to set its properties. (comment taken from Pitivi)
+        title_source = title_clip.find_track_element(None, GES.TitleSource)
+        title_source.set_child_property("text", text)
+        title_source.set_child_property("background", TITLE_BACKGROUND)
+        title_source.set_child_property("color", TITLE_COLOR)
+        title_source.set_child_property("outline-color", TITLE_OUTLINE_COLOR)
+        title_source.set_child_property("font-desc", TITLE_FONT_DESC)
+        title_source.set_child_property("halignment", GES.TextVAlign.ABSOLUTE)
+        title_source.set_child_property("valignment", GES.TextHAlign.ABSOLUTE)
+
     def add_clip(self, clip_path, start_time, duration):
         clip_uri = Gst.filename_to_uri(clip_path)
         asset = GES.UriClipAsset.request_sync(clip_uri)