diff --git a/ges/ges-timeline-title-source.c b/ges/ges-timeline-title-source.c index 2e404a02bc..8e05a4a1f1 100644 --- a/ges/ges-timeline-title-source.c +++ b/ges/ges-timeline-title-source.c @@ -52,6 +52,7 @@ struct _GESTimelineTitleSourcePrivate GESTextVAlign halign; GESTextHAlign valign; GSList *track_titles; + guint32 color; }; enum @@ -62,6 +63,7 @@ enum PROP_FONT_DESC, PROP_HALIGNMENT, PROP_VALIGNMENT, + PROP_COLOR, }; static GESTrackObject @@ -98,6 +100,9 @@ ges_timeline_title_source_get_property (GObject * object, guint property_id, case PROP_VALIGNMENT: g_value_set_enum (value, priv->valign); break; + case PROP_COLOR: + g_value_set_uint (value, priv->color); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -125,6 +130,9 @@ ges_timeline_title_source_set_property (GObject * object, guint property_id, case PROP_VALIGNMENT: ges_timeline_title_source_set_valignment (tfs, g_value_get_enum (value)); break; + case PROP_COLOR: + ges_timeline_title_source_set_color (tfs, g_value_get_uint (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -212,6 +220,17 @@ ges_timeline_title_source_class_init (GESTimelineTitleSourceClass * klass) ges_timeline_title_source_track_object_added; timobj_class->track_object_released = ges_timeline_title_source_track_object_released; + + /** + * GESTimelineTitleSource:color + * + * The color of the text + */ + + g_object_class_install_property (object_class, PROP_COLOR, + g_param_spec_uint ("color", "Color", "The color of the text", + 0, G_MAXUINT32, G_MAXUINT32, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + } static void @@ -227,6 +246,7 @@ ges_timeline_title_source_init (GESTimelineTitleSource * self) self->priv->font_desc = NULL; self->priv->halign = DEFAULT_HALIGNMENT; self->priv->valign = DEFAULT_VALIGNMENT; + self->priv->color = G_MAXUINT32; } /** @@ -365,6 +385,30 @@ ges_timeline_title_source_set_mute (GESTimelineTitleSource * self, g_list_free (trackobjects); } +/** + * ges_timeline_title_source_set_color: + * @self: the #GESTimelineTitleSource* to set + * @color: The color @self is being set to + * + * Sets the color of the text. + * + */ +void +ges_timeline_title_source_set_color (GESTimelineTitleSource * self, + guint32 color) +{ + GSList *tmp; + + GST_DEBUG ("self:%p, color:%d", self, color); + + self->priv->color = color; + + for (tmp = self->priv->track_titles; tmp; tmp = tmp->next) { + ges_track_title_source_set_color (GES_TRACK_TITLE_SOURCE (tmp->data), + self->priv->color); + } +} + /** * ges_timeline_title_source_get_text: * @self: a #GESTimelineTitleSource @@ -425,7 +469,6 @@ ges_timeline_title_source_get_valignment (GESTimelineTitleSource * self) return self->priv->valign; } - /** * ges_timeline_title_source_is_muted: * @self: a #GESTimelineTitleSource @@ -441,6 +484,21 @@ ges_timeline_title_source_is_muted (GESTimelineTitleSource * self) return self->priv->mute; } +/** + * ges_timeline_title_source_get_color: + * @self: a #GESTimelineTitleSource + * + * Get the color used by @self. + * + * Returns: The color used by @self. + * + */ +const guint32 +ges_timeline_title_source_get_color (GESTimelineTitleSource * self) +{ + return self->priv->color; +} + static void ges_timeline_title_source_track_object_released (GESTimelineObject * obj, GESTrackObject * tckobj) @@ -488,6 +546,7 @@ ges_timeline_title_source_create_track_object (GESTimelineObject * obj, priv->halign); ges_track_title_source_set_valignment ((GESTrackTitleSource *) res, priv->valign); + ges_track_title_source_set_color ((GESTrackTitleSource *) res, priv->color); } else if (track->type == GES_TRACK_TYPE_AUDIO) { diff --git a/ges/ges-timeline-title-source.h b/ges/ges-timeline-title-source.h index e6ec97af59..ffbe50ab1b 100644 --- a/ges/ges-timeline-title-source.h +++ b/ges/ges-timeline-title-source.h @@ -93,6 +93,10 @@ void ges_timeline_title_source_set_halignment (GESTimelineTitleSource * self, GESTextHAlign halign); +void +ges_timeline_title_source_set_color (GESTimelineTitleSource * self, + guint32 color); + const gchar* ges_timeline_title_source_get_font_desc (GESTimelineTitleSource * self); @@ -102,6 +106,9 @@ ges_timeline_title_source_get_valignment (GESTimelineTitleSource * self); GESTextHAlign ges_timeline_title_source_get_halignment (GESTimelineTitleSource * self); +const guint32 +ges_timeline_title_source_get_color (GESTimelineTitleSource * self); + gboolean ges_timeline_title_source_is_muted (GESTimelineTitleSource * self); const gchar* ges_timeline_title_source_get_text (GESTimelineTitleSource * self); diff --git a/ges/ges-track-title-source.c b/ges/ges-track-title-source.c index 3fc068bc3d..ac5c53239e 100644 --- a/ges/ges-track-title-source.c +++ b/ges/ges-track-title-source.c @@ -38,6 +38,7 @@ struct _GESTrackTitleSourcePrivate gchar *font_desc; GESTextHAlign halign; GESTextVAlign valign; + guint32 color; GstElement *text_el; GstElement *background_el; }; @@ -84,6 +85,7 @@ ges_track_title_source_init (GESTrackTitleSource * self) self->priv->text_el = NULL; self->priv->halign = DEFAULT_HALIGNMENT; self->priv->valign = DEFAULT_VALIGNMENT; + self->priv->color = G_MAXUINT32; self->priv->background_el = NULL; } @@ -155,6 +157,7 @@ ges_track_title_source_create_element (GESTrackObject * object) g_object_set (background, "pattern", (gint) GES_VIDEO_TEST_PATTERN_BLACK, NULL); + g_object_set (text, "color", (guint32) self->priv->color, NULL); gst_bin_add_many (GST_BIN (topbin), background, text, NULL); @@ -188,6 +191,8 @@ ges_track_title_source_set_text (GESTrackTitleSource * self, const gchar * text) if (self->priv->text) g_free (self->priv->text); + GST_DEBUG ("self:%p, text:%s", self, text); + self->priv->text = g_strdup (text); if (self->priv->text_el) g_object_set (self->priv->text_el, "text", text, NULL); @@ -209,8 +214,9 @@ ges_track_title_source_set_font_desc (GESTrackTitleSource * self, if (self->priv->font_desc) g_free (self->priv->font_desc); + GST_DEBUG ("self:%p, font_dec:%s", self, font_desc); + self->priv->font_desc = g_strdup (font_desc); - GST_LOG ("setting font-desc to '%s'", font_desc); if (self->priv->text_el) g_object_set (self->priv->text_el, "font-desc", font_desc, NULL); } @@ -226,8 +232,9 @@ void ges_track_title_source_set_valignment (GESTrackTitleSource * self, GESTextVAlign valign) { + GST_DEBUG ("self:%p, valign:%d", self, valign); + self->priv->valign = valign; - GST_LOG ("set valignment to: %d", valign); if (self->priv->text_el) g_object_set (self->priv->text_el, "valignment", valign, NULL); } @@ -243,12 +250,30 @@ void ges_track_title_source_set_halignment (GESTrackTitleSource * self, GESTextHAlign halign) { + GST_DEBUG ("self:%p, halign:%d", self, halign); + self->priv->halign = halign; - GST_LOG ("set halignment to: %d", halign); if (self->priv->text_el) g_object_set (self->priv->text_el, "halignment", halign, NULL); } +/** + * ges_track_title_source_set_color: + * @self: the #GESTrackTitleSource* to set + * @color: the color @self is being set to + * + * Sets the color of the text. + */ +void +ges_track_title_source_set_color (GESTrackTitleSource * self, guint32 color) +{ + GST_DEBUG ("self:%p, color:%d", self, color); + + self->priv->color = color; + if (self->priv->text_el) + g_object_set (self->priv->text_el, "color", color, NULL); +} + /** * ges_track_title_source_get_text: * @source: a #GESTrackTitleSource @@ -282,9 +307,9 @@ ges_track_title_source_get_font_desc (GESTrackTitleSource * source) * ges_track_title_source_get_halignment: * @source: a #GESTrackTitleSource * - * Get the horizontal aligment used by this source. + * Get the horizontal aligment used by @source. * - * Returns: The horizontal aligment used by this source. + * Returns: The horizontal aligment used by @source. */ GESTextHAlign ges_track_title_source_get_halignment (GESTrackTitleSource * source) @@ -296,9 +321,9 @@ ges_track_title_source_get_halignment (GESTrackTitleSource * source) * ges_track_title_source_get_valignment: * @source: a #GESTrackTitleSource * - * Get the vertical aligment used by this source. + * Get the vertical aligment used by @source. * - * Returns: The vertical aligment used by this source. + * Returns: The vertical aligment used by @source. */ GESTextVAlign ges_track_title_source_get_valignment (GESTrackTitleSource * source) @@ -306,6 +331,20 @@ ges_track_title_source_get_valignment (GESTrackTitleSource * source) return source->priv->valign; } +/** + * ges_track_title_source_get_color: + * @source: a #GESTrackTitleSource + * + * Get the color used by @source. + * + * Returns: The color used by @source. + */ +const guint32 +ges_track_title_source_get_color (GESTrackTitleSource * source) +{ + return source->priv->color; +} + /** * ges_track_title_source_new: diff --git a/ges/ges-track-title-source.h b/ges/ges-track-title-source.h index 470a658943..e48ed3b3a9 100644 --- a/ges/ges-track-title-source.h +++ b/ges/ges-track-title-source.h @@ -76,22 +76,25 @@ struct _GESTrackTitleSourceClass { GType ges_track_title_source_get_type (void); -void ges_track_title_source_set_text(GESTrackTitleSource *self, +void ges_track_title_source_set_text (GESTrackTitleSource *self, const gchar *text); -void ges_track_title_source_set_font_desc(GESTrackTitleSource *self, +void ges_track_title_source_set_font_desc (GESTrackTitleSource *self, const gchar *font_desc); -void ges_track_title_source_set_halignment(GESTrackTitleSource *self, +void ges_track_title_source_set_halignment (GESTrackTitleSource *self, GESTextHAlign halign); -void ges_track_title_source_set_valignment(GESTrackTitleSource *self, +void ges_track_title_source_set_valignment (GESTrackTitleSource *self, GESTextVAlign valign); +void ges_track_title_source_set_color (GESTrackTitleSource *self, + guint32 color); 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); +const guint32 ges_track_title_source_get_color (GESTrackTitleSource *source); GESTrackTitleSource* ges_track_title_source_new (void); diff --git a/tests/check/ges/save_and_load.c b/tests/check/ges/save_and_load.c index 11e62b5389..48ce10fc3e 100644 --- a/tests/check/ges/save_and_load.c +++ b/tests/check/ges/save_and_load.c @@ -188,6 +188,7 @@ GST_START_TEST (test_keyfile_save) KEY ("Object3", "font-desc", "\"Serif\\\\ 36\""); KEY ("Object3", "halignment", "center"); KEY ("Object3", "valignment", "baseline"); + KEY ("Object3", "color", "4294967295"); COMPARE; /* tear-down */ diff --git a/tests/check/ges/titles.c b/tests/check/ges/titles.c index 991f26f8b7..3a4f8c9d87 100644 --- a/tests/check/ges/titles.c +++ b/tests/check/ges/titles.c @@ -121,6 +121,7 @@ GST_START_TEST (test_title_source_in_layer) GESTimelineTitleSource *source; gchar *text; gint halign, valign; + guint32 color; ges_init (); @@ -175,6 +176,14 @@ GST_START_TEST (test_title_source_in_layer) assert_equals_int (ges_track_title_source_get_valignment (GES_TRACK_TITLE_SOURCE (trobj)), GES_TEXT_VALIGN_TOP); + /* test color */ + g_object_set (source, "color", (gint) 2147483647, NULL); + g_object_get (source, "color", &color, NULL); + assert_equals_int (color, 2147483647); + + color = ges_track_title_source_get_color (GES_TRACK_TITLE_SOURCE (trobj)); + assert_equals_int (color, 2147483647); + GST_DEBUG ("removing the source"); ges_timeline_layer_remove_object (layer, (GESTimelineObject *) source);