diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index b7e9d3c937..fa9525e4e3 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -560,11 +560,15 @@ GES_IS_TRACK_AUDIO_TEST_SOURCE_CLASS ges-track-title-source GESTrackTitleSource GESTrackTitleSource +ges_track_title_source_new ges_track_title_source_set_text ges_track_title_source_set_font_desc ges_track_title_source_set_halignment ges_track_title_source_set_valignment -ges_track_title_source_new +ges_track_title_source_get_font_desc +ges_track_title_source_get_halignment +ges_track_title_source_get_text +ges_track_title_source_get_valignment GESTrackTitleSourceClass GESTrackTitleSourcePrivate diff --git a/ges/ges-track-title-source.c b/ges/ges-track-title-source.c index 637ab33ba6..3f55b38425 100644 --- a/ges/ges-track-title-source.c +++ b/ges/ges-track-title-source.c @@ -34,8 +34,12 @@ G_DEFINE_TYPE (GESTrackTitleSource, ges_track_title_source, struct _GESTrackTitleSourcePrivate { - /* Dummy variable */ - void *nothing; + gchar *text; + gchar *font_desc; + GESTextHAlign halign; + GESTextVAlign valign; + GstElement *text_el; + GstElement *background_el; }; enum @@ -75,34 +79,34 @@ ges_track_title_source_init (GESTrackTitleSource * self) self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GES_TYPE_TRACK_TITLE_SOURCE, GESTrackTitleSourcePrivate); - self->text = NULL; - self->font_desc = NULL; - self->text_el = NULL; - self->halign = DEFAULT_HALIGNMENT; - self->valign = DEFAULT_VALIGNMENT; - self->background_el = NULL; + self->priv->text = NULL; + self->priv->font_desc = NULL; + self->priv->text_el = NULL; + self->priv->halign = DEFAULT_HALIGNMENT; + self->priv->valign = DEFAULT_VALIGNMENT; + self->priv->background_el = NULL; } static void ges_track_title_source_dispose (GObject * object) { GESTrackTitleSource *self = GES_TRACK_TITLE_SOURCE (object); - if (self->text) { - g_free (self->text); + if (self->priv->text) { + g_free (self->priv->text); } - if (self->font_desc) { - g_free (self->font_desc); + if (self->priv->font_desc) { + g_free (self->priv->font_desc); } - if (self->text_el) { - g_object_unref (self->text_el); - self->text_el = NULL; + if (self->priv->text_el) { + g_object_unref (self->priv->text_el); + self->priv->text_el = NULL; } - if (self->background_el) { - g_object_unref (self->background_el); - self->background_el = NULL; + if (self->priv->background_el) { + g_object_unref (self->priv->background_el); + self->priv->background_el = NULL; } G_OBJECT_CLASS (ges_track_title_source_parent_class)->dispose (object); @@ -132,6 +136,7 @@ static GstElement * ges_track_title_source_create_element (GESTrackObject * object) { GESTrackTitleSource *self = GES_TRACK_TITLE_SOURCE (object); + GESTrackTitleSourcePrivate *priv = self->priv; GstElement *topbin, *background, *text; GstPad *src; @@ -139,14 +144,14 @@ ges_track_title_source_create_element (GESTrackObject * object) background = gst_element_factory_make ("videotestsrc", "titlesrc-bg"); text = gst_element_factory_make ("textoverlay", "titlsrc-text"); - if (self->text) { - g_object_set (text, "text", self->text, NULL); + if (priv->text) { + g_object_set (text, "text", priv->text, NULL); } - if (self->font_desc) { - g_object_set (text, "font-desc", self->font_desc, NULL); + if (priv->font_desc) { + g_object_set (text, "font-desc", priv->font_desc, NULL); } - g_object_set (text, "valignment", (gint) self->valign, "halignment", - (gint) self->halign, NULL); + g_object_set (text, "valignment", (gint) priv->valign, "halignment", + (gint) priv->halign, NULL); g_object_set (background, "pattern", (gint) GES_VIDEO_TEST_PATTERN_BLACK, NULL); @@ -162,8 +167,8 @@ ges_track_title_source_create_element (GESTrackObject * object) g_object_ref (text); g_object_ref (background); - self->text_el = text; - self->background_el = background; + priv->text_el = text; + priv->background_el = background; return topbin; } @@ -175,18 +180,17 @@ ges_track_title_source_create_element (GESTrackObject * object) * made. * * Sets the text this track object will render. - * */ void ges_track_title_source_set_text (GESTrackTitleSource * self, const gchar * text) { - if (self->text) - g_free (self->text); + if (self->priv->text) + g_free (self->priv->text); - self->text = g_strdup (text); - if (self->text_el) - g_object_set (self->text_el, "text", text, NULL); + self->priv->text = g_strdup (text); + if (self->priv->text_el) + g_object_set (self->priv->text_el, "text", text, NULL); } /** @@ -194,25 +198,25 @@ ges_track_title_source_set_text (GESTrackTitleSource * self, const gchar * text) * @self: the #GESTrackTitleSource * @font_desc: the pango font description * - * Sets the text this track object will render. - * + * Set the pango font description this source will use to render + * the text. */ void ges_track_title_source_set_font_desc (GESTrackTitleSource * self, const gchar * font_desc) { - if (self->font_desc) - g_free (self->font_desc); + if (self->priv->font_desc) + g_free (self->priv->font_desc); - self->font_desc = g_strdup (font_desc); + self->priv->font_desc = g_strdup (font_desc); GST_LOG ("setting font-desc to '%s'", font_desc); - if (self->text_el) - g_object_set (self->text_el, "font-desc", font_desc, NULL); + if (self->priv->text_el) + g_object_set (self->priv->text_el, "font-desc", font_desc, NULL); } /** - * ges_track_title_source_valignment: + * ges_track_title_source_set_valignment: * @self: the #GESTrackTitleSource* to set text on * @valign: #GESTextVAlign * @@ -222,14 +226,14 @@ void ges_track_title_source_set_valignment (GESTrackTitleSource * self, GESTextVAlign valign) { - self->valign = valign; + self->priv->valign = valign; GST_LOG ("set valignment to: %d", valign); - if (self->text_el) - g_object_set (self->text_el, "valignment", valign, NULL); + if (self->priv->text_el) + g_object_set (self->priv->text_el, "valignment", valign, NULL); } /** - * ges_track_title_source_halignment: + * ges_track_title_source_set_halignment: * @self: the #GESTrackTitleSource* to set text on * @halign: #GESTextHAlign * @@ -239,12 +243,62 @@ void ges_track_title_source_set_halignment (GESTrackTitleSource * self, GESTextHAlign halign) { - self->halign = halign; + self->priv->halign = halign; GST_LOG ("set halignment to: %d", halign); - if (self->text_el) - g_object_set (self->text_el, "halignment", halign, NULL); + if (self->priv->text_el) + g_object_set (self->priv->text_el, "halignment", halign, NULL); } +/** + * ges_track_title_source_get_text: + * @source: a #GESTrackTitleSource + * + * Returns: (transfer none): The text currently set on the @source. + */ +const gchar * +ges_track_title_source_get_text (GESTrackTitleSource * source) +{ + return source->priv->text; +} + +/** + * ges_track_title_source_get_font_desc: + * @source: a #GESTrackTitleSource + * + * Returns: (transfer none): The pango font description used by this + * @source. + */ +const gchar * +ges_track_title_source_get_font_desc (GESTrackTitleSource * source) +{ + return source->priv->font_desc; +} + +/** + * ges_track_title_source_get_halignment: + * @source: a #GESTrackTitleSource + * + * Returns: The horizontal aligment used by this source. + */ +GESTextHAlign +ges_track_title_source_get_halignment (GESTrackTitleSource * source) +{ + return source->priv->halign; +} + +/** + * ges_track_title_source_get_valignment: + * @source: a #GESTrackTitleSource + * + * Returns: The vertical aligment used by this source. + */ +GESTextVAlign +ges_track_title_source_get_valignment (GESTrackTitleSource * source) +{ + return source->priv->valign; +} + + GESTrackTitleSource * ges_track_title_source_new (void) { diff --git a/ges/ges-track-title-source.h b/ges/ges-track-title-source.h index bb84069a6b..470a658943 100644 --- a/ges/ges-track-title-source.h +++ b/ges/ges-track-title-source.h @@ -54,13 +54,6 @@ struct _GESTrackTitleSource { GESTrackSource parent; /*< private >*/ - gchar *text; - gchar *font_desc; - GESTextHAlign halign; - GESTextVAlign valign; - GstElement *text_el; - GstElement *background_el; - GESTrackTitleSourcePrivate *priv; /* Padding for API extension */ @@ -83,17 +76,22 @@ struct _GESTrackTitleSourceClass { GType ges_track_title_source_get_type (void); -void ges_track_title_source_set_text(GESTrackTitleSource *self, const - gchar *text); +void ges_track_title_source_set_text(GESTrackTitleSource *self, + const gchar *text); void ges_track_title_source_set_font_desc(GESTrackTitleSource *self, - const gchar *font_desc); + const gchar *font_desc); -void ges_track_title_source_set_halignment(GESTrackTitleSource - *self, GESTextHAlign halgn); +void ges_track_title_source_set_halignment(GESTrackTitleSource *self, + GESTextHAlign halign); -void ges_track_title_source_set_valignment(GESTrackTitleSource - *self, GESTextVAlign valign); +void ges_track_title_source_set_valignment(GESTrackTitleSource *self, + GESTextVAlign valign); + +const gchar *ges_track_title_source_get_text (GESTrackTitleSource *source); +const gchar *ges_track_title_source_get_font_desc (GESTrackTitleSource *source); +GESTextHAlign ges_track_title_source_get_halignment (GESTrackTitleSource *source); +GESTextVAlign ges_track_title_source_get_valignment (GESTrackTitleSource *source); GESTrackTitleSource* ges_track_title_source_new (void); diff --git a/tests/check/ges/titles.c b/tests/check/ges/titles.c index f1eead9d02..991f26f8b7 100644 --- a/tests/check/ges/titles.c +++ b/tests/check/ges/titles.c @@ -150,14 +150,18 @@ GST_START_TEST (test_title_source_in_layer) ges_timeline_object_find_track_object (GES_TIMELINE_OBJECT (source), v, GES_TYPE_TRACK_TITLE_SOURCE); + /* Check the text is still the same */ + assert_equals_string (ges_track_title_source_get_text (GES_TRACK_TITLE_SOURCE + (trobj)), "some text"); + /* test the font-desc property */ g_object_set (source, "font-desc", (gchar *) "sans 72", NULL); g_object_get (source, "font-desc", &text, NULL); assert_equals_string ("sans 72", text); g_free (text); - text = ((GESTrackTitleSource *) trobj)->font_desc; - assert_equals_string ("sans 72", text); + assert_equals_string ("sans 72", + ges_track_title_source_get_font_desc (GES_TRACK_TITLE_SOURCE (trobj))); /* test halign and valign */ g_object_set (source, "halignment", (gint) @@ -166,10 +170,10 @@ GST_START_TEST (test_title_source_in_layer) assert_equals_int (halign, GES_TEXT_HALIGN_LEFT); assert_equals_int (valign, GES_TEXT_VALIGN_TOP); - halign = ((GESTrackTitleSource *) trobj)->halign; - valign = ((GESTrackTitleSource *) trobj)->valign; - assert_equals_int (halign, GES_TEXT_HALIGN_LEFT); - assert_equals_int (valign, GES_TEXT_VALIGN_TOP); + assert_equals_int (ges_track_title_source_get_halignment + (GES_TRACK_TITLE_SOURCE (trobj)), GES_TEXT_HALIGN_LEFT); + assert_equals_int (ges_track_title_source_get_valignment + (GES_TRACK_TITLE_SOURCE (trobj)), GES_TEXT_VALIGN_TOP); GST_DEBUG ("removing the source");