TimelineTitleSource: Move private variables to instance private

Fixe/Add getter and setters methods for those variables

Fixup documentation
This commit is contained in:
Thibault Saunier 2011-01-07 13:48:53 +01:00
parent b8493f8896
commit 595e6434cb
4 changed files with 206 additions and 77 deletions

View file

@ -490,6 +490,16 @@ GES_TIMELINE_TEST_SOURCE_GET_CLASS
<TITLE>GESTimelineTitleSource</TITLE> <TITLE>GESTimelineTitleSource</TITLE>
GESTimelineTitleSource GESTimelineTitleSource
ges_timeline_title_source_new ges_timeline_title_source_new
ges_timeline_title_source_set_mute
ges_timeline_title_source_set_text
ges_timeline_title_source_set_font_desc
ges_timeline_title_source_set_valignment
ges_timeline_title_source_set_halignment
ges_timeline_title_source_is_muted
ges_timeline_title_source_get_text
ges_timeline_title_source_get_font_desc
ges_timeline_title_source_get_valignment
ges_timeline_title_source_get_halignment
<SUBSECTION Standard> <SUBSECTION Standard>
GESTimelineTitleSourceClass GESTimelineTitleSourceClass
GESTimelineTitleSourcePrivate GESTimelineTitleSourcePrivate

View file

@ -21,7 +21,7 @@
/** /**
* SECTION:ges-timeline-title-source * SECTION:ges-timeline-title-source
* @short_description: Render stand-alone titles in GESTimelineLayer. * @short_description: Render stand-alone titles in GESTimelineLayer.
* *
* Renders the given text in the specified font, at specified position, and * Renders the given text in the specified font, at specified position, and
* with the specified background pattern. * with the specified background pattern.
* *
@ -46,8 +46,11 @@ G_DEFINE_TYPE (GESTimelineTitleSource, ges_timeline_title_source,
struct _GESTimelineTitleSourcePrivate struct _GESTimelineTitleSourcePrivate
{ {
/* Dummy variable */ gboolean mute;
void *nothing; gchar *text;
gchar *font_desc;
GESTextVAlign halign;
GESTextHAlign valign;
}; };
enum enum
@ -60,26 +63,6 @@ enum
PROP_VALIGNMENT, PROP_VALIGNMENT,
}; };
static void
ges_timeline_title_source_set_mute (GESTimelineTitleSource * self,
gboolean mute);
static void
ges_timeline_title_source_set_text (GESTimelineTitleSource * self,
const gchar * text);
static void
ges_timeline_title_source_set_font_desc (GESTimelineTitleSource * self,
const gchar * font_desc);
static void
ges_timeline_title_source_set_valign (GESTimelineTitleSource * self,
GESTextVAlign valign);
static void
ges_timeline_title_source_set_halign (GESTimelineTitleSource * self,
GESTextHAlign halign);
static GESTrackObject static GESTrackObject
* ges_timeline_title_source_create_track_object (GESTimelineObject * obj, * ges_timeline_title_source_create_track_object (GESTimelineObject * obj,
GESTrack * track); GESTrack * track);
@ -88,23 +71,24 @@ static void
ges_timeline_title_source_get_property (GObject * object, guint property_id, ges_timeline_title_source_get_property (GObject * object, guint property_id,
GValue * value, GParamSpec * pspec) GValue * value, GParamSpec * pspec)
{ {
GESTimelineTitleSource *tfs = GES_TIMELINE_TITLE_SOURCE (object); GESTimelineTitleSourcePrivate *priv =
GES_TIMELINE_TITLE_SOURCE (object)->priv;
switch (property_id) { switch (property_id) {
case PROP_MUTE: case PROP_MUTE:
g_value_set_boolean (value, tfs->mute); g_value_set_boolean (value, priv->mute);
break; break;
case PROP_TEXT: case PROP_TEXT:
g_value_set_string (value, tfs->text); g_value_set_string (value, priv->text);
break; break;
case PROP_FONT_DESC: case PROP_FONT_DESC:
g_value_set_string (value, tfs->font_desc); g_value_set_string (value, priv->font_desc);
break; break;
case PROP_HALIGNMENT: case PROP_HALIGNMENT:
g_value_set_enum (value, tfs->halign); g_value_set_enum (value, priv->halign);
break; break;
case PROP_VALIGNMENT: case PROP_VALIGNMENT:
g_value_set_enum (value, tfs->valign); g_value_set_enum (value, priv->valign);
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@ -128,10 +112,10 @@ ges_timeline_title_source_set_property (GObject * object, guint property_id,
ges_timeline_title_source_set_font_desc (tfs, g_value_get_string (value)); ges_timeline_title_source_set_font_desc (tfs, g_value_get_string (value));
break; break;
case PROP_HALIGNMENT: case PROP_HALIGNMENT:
ges_timeline_title_source_set_halign (tfs, g_value_get_enum (value)); ges_timeline_title_source_set_halignment (tfs, g_value_get_enum (value));
break; break;
case PROP_VALIGNMENT: case PROP_VALIGNMENT:
ges_timeline_title_source_set_valign (tfs, g_value_get_enum (value)); ges_timeline_title_source_set_valignment (tfs, g_value_get_enum (value));
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@ -143,10 +127,10 @@ ges_timeline_title_source_dispose (GObject * object)
{ {
GESTimelineTitleSource *self = GES_TIMELINE_TITLE_SOURCE (object); GESTimelineTitleSource *self = GES_TIMELINE_TITLE_SOURCE (object);
if (self->text) if (self->priv->text)
g_free (self->text); g_free (self->priv->text);
if (self->font_desc) if (self->priv->font_desc)
g_free (self->font_desc); g_free (self->priv->font_desc);
G_OBJECT_CLASS (ges_timeline_title_source_parent_class)->dispose (object); G_OBJECT_CLASS (ges_timeline_title_source_parent_class)->dispose (object);
} }
@ -226,14 +210,23 @@ ges_timeline_title_source_init (GESTimelineTitleSource * self)
GES_TIMELINE_OBJECT (self)->duration = 0; GES_TIMELINE_OBJECT (self)->duration = 0;
/* Not 100% required since a new gobject's content will always be memzero'd */ /* Not 100% required since a new gobject's content will always be memzero'd */
self->mute = FALSE; self->priv->mute = FALSE;
self->text = NULL; self->priv->text = NULL;
self->font_desc = NULL; self->priv->font_desc = NULL;
self->halign = DEFAULT_HALIGNMENT; self->priv->halign = DEFAULT_HALIGNMENT;
self->valign = DEFAULT_VALIGNMENT; self->priv->valign = DEFAULT_VALIGNMENT;
} }
static void /**
* ges_timeline_title_source_set_text:
* @self: the #GESTimelineTitleSource* to set text on
* @text: the text to render. an internal copy of this text will be
* made.
*
* Sets the text this timeline object will render.
*
*/
void
ges_timeline_title_source_set_text (GESTimelineTitleSource * self, ges_timeline_title_source_set_text (GESTimelineTitleSource * self,
const gchar * text) const gchar * text)
{ {
@ -242,10 +235,10 @@ ges_timeline_title_source_set_text (GESTimelineTitleSource * self,
GST_DEBUG ("self:%p, text:%s", self, text); GST_DEBUG ("self:%p, text:%s", self, text);
if (self->text) if (self->priv->text)
g_free (self->text); g_free (self->priv->text);
self->text = g_strdup (text); self->priv->text = g_strdup (text);
/* FIXME : We need a much less crack way to find the trackobject to change */ /* FIXME : We need a much less crack way to find the trackobject to change */
trackobjects = ges_timeline_object_get_track_objects (object); trackobjects = ges_timeline_object_get_track_objects (object);
@ -254,14 +247,22 @@ ges_timeline_title_source_set_text (GESTimelineTitleSource * self,
if (GES_IS_TRACK_TITLE_SOURCE (trackobject)) if (GES_IS_TRACK_TITLE_SOURCE (trackobject))
ges_track_title_source_set_text (GES_TRACK_TITLE_SOURCE ges_track_title_source_set_text (GES_TRACK_TITLE_SOURCE
(trackobject), self->text); (trackobject), self->priv->text);
g_object_unref (GES_TRACK_OBJECT (tmp->data)); g_object_unref (GES_TRACK_OBJECT (tmp->data));
} }
g_list_free (trackobjects); g_list_free (trackobjects);
} }
static void /**
* ges_timeline_title_source_set_font_desc:
* @self: the #GESTimelineTitleSource*
* @font_desc: the pango font description
*
* Sets the pango font description of the text.
*
*/
void
ges_timeline_title_source_set_font_desc (GESTimelineTitleSource * self, ges_timeline_title_source_set_font_desc (GESTimelineTitleSource * self,
const gchar * font_desc) const gchar * font_desc)
{ {
@ -270,10 +271,10 @@ ges_timeline_title_source_set_font_desc (GESTimelineTitleSource * self,
GST_DEBUG ("self:%p, font_desc:%s", self, font_desc); GST_DEBUG ("self:%p, font_desc:%s", self, font_desc);
if (self->font_desc) if (self->priv->font_desc)
g_free (self->font_desc); g_free (self->priv->font_desc);
self->font_desc = g_strdup (font_desc); self->priv->font_desc = g_strdup (font_desc);
/* FIXME : We need a much less crack way to find the trackobject to change */ /* FIXME : We need a much less crack way to find the trackobject to change */
trackobjects = ges_timeline_object_get_track_objects (object); trackobjects = ges_timeline_object_get_track_objects (object);
@ -282,15 +283,23 @@ ges_timeline_title_source_set_font_desc (GESTimelineTitleSource * self,
if (GES_IS_TRACK_TITLE_SOURCE (trackobject)) if (GES_IS_TRACK_TITLE_SOURCE (trackobject))
ges_track_title_source_set_font_desc (GES_TRACK_TITLE_SOURCE ges_track_title_source_set_font_desc (GES_TRACK_TITLE_SOURCE
(trackobject), self->font_desc); (trackobject), self->priv->font_desc);
g_object_unref (GES_TRACK_OBJECT (tmp->data)); g_object_unref (GES_TRACK_OBJECT (tmp->data));
} }
g_list_free (trackobjects); g_list_free (trackobjects);
} }
static void /**
ges_timeline_title_source_set_halign (GESTimelineTitleSource * self, * ges_timeline_title_source_set_halignment:
* @self: the #GESTimelineTitleSource* to set horizontal alignement of text on
* @halign: #GESTextHAlign
*
* Sets the horizontal aligment of the text.
*
*/
void
ges_timeline_title_source_set_halignment (GESTimelineTitleSource * self,
GESTextHAlign halign) GESTextHAlign halign)
{ {
GList *tmp, *trackobjects; GList *tmp, *trackobjects;
@ -298,7 +307,7 @@ ges_timeline_title_source_set_halign (GESTimelineTitleSource * self,
GST_DEBUG ("self:%p, halign:%d", self, halign); GST_DEBUG ("self:%p, halign:%d", self, halign);
self->halign = halign; self->priv->halign = halign;
/* FIXME : We need a much less crack way to find the trackobject to change */ /* FIXME : We need a much less crack way to find the trackobject to change */
trackobjects = ges_timeline_object_get_track_objects (object); trackobjects = ges_timeline_object_get_track_objects (object);
@ -307,15 +316,23 @@ ges_timeline_title_source_set_halign (GESTimelineTitleSource * self,
if (GES_IS_TRACK_TITLE_SOURCE (trackobject)) if (GES_IS_TRACK_TITLE_SOURCE (trackobject))
ges_track_title_source_set_halignment (GES_TRACK_TITLE_SOURCE ges_track_title_source_set_halignment (GES_TRACK_TITLE_SOURCE
(trackobject), self->halign); (trackobject), self->priv->halign);
g_object_unref (GES_TRACK_OBJECT (tmp->data)); g_object_unref (GES_TRACK_OBJECT (tmp->data));
} }
g_list_free (trackobjects); g_list_free (trackobjects);
} }
static void /**
ges_timeline_title_source_set_valign (GESTimelineTitleSource * self, * ges_timeline_title_source_set_valignment:
* @self: the #GESTimelineTitleSource* to set vertical alignement of text on
* @valign: #GESTextVAlign
*
* Sets the vertical aligment of the text.
*
*/
void
ges_timeline_title_source_set_valignment (GESTimelineTitleSource * self,
GESTextVAlign valign) GESTextVAlign valign)
{ {
GList *tmp, *trackobjects; GList *tmp, *trackobjects;
@ -323,7 +340,7 @@ ges_timeline_title_source_set_valign (GESTimelineTitleSource * self,
GST_DEBUG ("self:%p, valign:%d", self, valign); GST_DEBUG ("self:%p, valign:%d", self, valign);
self->valign = valign; self->priv->valign = valign;
/* FIXME : We need a much less crack way to find the trackobject to change */ /* FIXME : We need a much less crack way to find the trackobject to change */
trackobjects = ges_timeline_object_get_track_objects (object); trackobjects = ges_timeline_object_get_track_objects (object);
@ -332,14 +349,22 @@ ges_timeline_title_source_set_valign (GESTimelineTitleSource * self,
if (GES_IS_TRACK_TITLE_SOURCE (trackobject)) if (GES_IS_TRACK_TITLE_SOURCE (trackobject))
ges_track_title_source_set_valignment (GES_TRACK_TITLE_SOURCE ges_track_title_source_set_valignment (GES_TRACK_TITLE_SOURCE
(trackobject), self->valign); (trackobject), self->priv->valign);
g_object_unref (GES_TRACK_OBJECT (tmp->data)); g_object_unref (GES_TRACK_OBJECT (tmp->data));
} }
g_list_free (trackobjects); g_list_free (trackobjects);
} }
static void /**
* ges_timeline_title_source_set_mute:
* @self: the #GESTimelineTitleSource on which to mute or unmute the audio track
* @mute: %TRUE to mute the audio track, %FALSE to unmute it
*
* Sets whether the audio track of this timeline object is muted or not
*
*/
void
ges_timeline_title_source_set_mute (GESTimelineTitleSource * self, ges_timeline_title_source_set_mute (GESTimelineTitleSource * self,
gboolean mute) gboolean mute)
{ {
@ -348,7 +373,7 @@ ges_timeline_title_source_set_mute (GESTimelineTitleSource * self,
GST_DEBUG ("self:%p, mute:%d", self, mute); GST_DEBUG ("self:%p, mute:%d", self, mute);
self->mute = mute; self->priv->mute = mute;
/* Go over tracked objects, and update 'active' status on all audio objects */ /* Go over tracked objects, and update 'active' status on all audio objects */
/* FIXME : We need a much less crack way to find the trackobject to change */ /* FIXME : We need a much less crack way to find the trackobject to change */
@ -364,12 +389,78 @@ ges_timeline_title_source_set_mute (GESTimelineTitleSource * self,
g_list_free (trackobjects); g_list_free (trackobjects);
} }
/**
* ges_timeline_title_source_get_text:
* @self: a #GESTimelineTitleSource
*
* Returns: The text currently set on the @self.
*
*/
const gchar *
ges_timeline_title_source_get_text (GESTimelineTitleSource * self)
{
return self->priv->text;
}
/**
* ges_timeline_title_source_get_font_desc:
* @self: a #GESTimelineTitleSource
*
* Returns: The pango font description used by the @self.
*
*/
const char *
ges_timeline_title_source_get_font_desc (GESTimelineTitleSource * self)
{
return self->priv->font_desc;
}
/**
* ges_timeline_title_source_get_halignment:
* @self: a #GESTimelineTitleSource
*
* Returns: The horizontal aligment used by @self.
*
*/
GESTextHAlign
ges_timeline_title_source_get_halignment (GESTimelineTitleSource * self)
{
return self->priv->halign;
}
/**
* ges_timeline_title_source_get_valignment:
* @self: a #GESTimelineTitleSource
*
* Returns: The vertical aligment used by @self.
*
*/
GESTextVAlign
ges_timeline_title_source_get_valignment (GESTimelineTitleSource * self)
{
return self->priv->valign;
}
/**
* ges_timeline_title_source_is_muted:
* @self: a #GESTimelineTitleSource
*
* Returns: Whether the audio track of @self is muted or not.
*
*/
gboolean
ges_timeline_title_source_is_muted (GESTimelineTitleSource * self)
{
return self->priv->mute;
}
static GESTrackObject * static GESTrackObject *
ges_timeline_title_source_create_track_object (GESTimelineObject * obj, ges_timeline_title_source_create_track_object (GESTimelineObject * obj,
GESTrack * track) GESTrack * track)
{ {
GESTimelineTitleSource *tfs = (GESTimelineTitleSource *) obj; GESTimelineTitleSourcePrivate *priv = GES_TIMELINE_TITLE_SOURCE (obj)->priv;
GESTrackObject *res = NULL; GESTrackObject *res = NULL;
GST_DEBUG ("Creating a GESTrackTitleSource"); GST_DEBUG ("Creating a GESTrackTitleSource");
@ -377,18 +468,18 @@ ges_timeline_title_source_create_track_object (GESTimelineObject * obj,
if (track->type == GES_TRACK_TYPE_VIDEO) { if (track->type == GES_TRACK_TYPE_VIDEO) {
res = (GESTrackObject *) ges_track_title_source_new (); res = (GESTrackObject *) ges_track_title_source_new ();
GST_DEBUG ("Setting text property"); GST_DEBUG ("Setting text property");
ges_track_title_source_set_text ((GESTrackTitleSource *) res, tfs->text); ges_track_title_source_set_text ((GESTrackTitleSource *) res, priv->text);
ges_track_title_source_set_font_desc ((GESTrackTitleSource *) res, ges_track_title_source_set_font_desc ((GESTrackTitleSource *) res,
tfs->font_desc); priv->font_desc);
ges_track_title_source_set_halignment ((GESTrackTitleSource *) res, ges_track_title_source_set_halignment ((GESTrackTitleSource *) res,
tfs->halign); priv->halign);
ges_track_title_source_set_valignment ((GESTrackTitleSource *) res, ges_track_title_source_set_valignment ((GESTrackTitleSource *) res,
tfs->valign); priv->valign);
} }
else if (track->type == GES_TRACK_TYPE_AUDIO) { else if (track->type == GES_TRACK_TYPE_AUDIO) {
res = (GESTrackObject *) ges_track_audio_test_source_new (); res = (GESTrackObject *) ges_track_audio_test_source_new ();
if (tfs->mute) if (priv->mute)
ges_track_object_set_active (res, FALSE); ges_track_object_set_active (res, FALSE);
} }
@ -396,7 +487,7 @@ ges_timeline_title_source_create_track_object (GESTimelineObject * obj,
} }
/** /**
* ges_timeline_titlesource_new: * ges_timeline_title_source_new:
* *
* Creates a new #GESTimelineTitleSource * Creates a new #GESTimelineTitleSource
* *

View file

@ -54,15 +54,9 @@ typedef struct _GESTimelineTitleSourcePrivate GESTimelineTitleSourcePrivate;
*/ */
struct _GESTimelineTitleSource { struct _GESTimelineTitleSource {
/*< private >*/
GESTimelineSource parent; GESTimelineSource parent;
gboolean mute; /*< private >*/
gchar *text;
gchar *font_desc;
GESTextVAlign halign;
GESTextHAlign valign;
GESTimelineTitleSourcePrivate *priv; GESTimelineTitleSourcePrivate *priv;
/* Padding for API extension */ /* Padding for API extension */
@ -79,6 +73,38 @@ struct _GESTimelineTitleSourceClass {
GType ges_timeline_title_source_get_type (void); GType ges_timeline_title_source_get_type (void);
void
ges_timeline_title_source_set_mute (GESTimelineTitleSource * self,
gboolean mute);
void
ges_timeline_title_source_set_text( GESTimelineTitleSource * self,
const gchar * text);
void
ges_timeline_title_source_set_font_desc (GESTimelineTitleSource * self,
const gchar * font_desc);
void
ges_timeline_title_source_set_valignment (GESTimelineTitleSource * self,
GESTextVAlign valign);
void
ges_timeline_title_source_set_halignment (GESTimelineTitleSource * self,
GESTextHAlign halign);
const gchar*
ges_timeline_title_source_get_font_desc (GESTimelineTitleSource * self);
GESTextVAlign
ges_timeline_title_source_get_valignment (GESTimelineTitleSource * self);
GESTextHAlign
ges_timeline_title_source_get_halignment (GESTimelineTitleSource * self);
gboolean ges_timeline_title_source_is_muted (GESTimelineTitleSource * self);
const gchar* ges_timeline_title_source_get_text (GESTimelineTitleSource * self);
GESTimelineTitleSource* ges_timeline_title_source_new (void); GESTimelineTitleSource* ges_timeline_title_source_new (void);
G_END_DECLS G_END_DECLS

View file

@ -578,9 +578,11 @@ connect_to_title_source (GESTimelineObject * object, App * app)
{ {
GESTimelineTitleSource *obj; GESTimelineTitleSource *obj;
obj = GES_TIMELINE_TITLE_SOURCE (object); obj = GES_TIMELINE_TITLE_SOURCE (object);
gtk_combo_box_set_active (app->halign, obj->halign); gtk_combo_box_set_active (app->halign,
gtk_combo_box_set_active (app->valign, obj->valign); ges_timeline_title_source_get_halignment (obj));
gtk_entry_set_text (app->text, obj->text); gtk_combo_box_set_active (app->valign,
ges_timeline_title_source_get_valignment (obj));
gtk_entry_set_text (app->text, ges_timeline_title_source_get_text (obj));
} }
static void static void