[maemo-commits] [maemo-commits] r17792 - projects/haf/trunk/gtk+/gdk-pixbuf
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Mar 24 16:32:39 EET 2009
- Previous message: [maemo-commits] r17791 - projects/haf/trunk/gail/debian
- Next message: [maemo-commits] r17793 - in projects/haf/trunk/gtk+: . debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: csaavedra Date: 2009-03-24 16:32:38 +0200 (Tue, 24 Mar 2009) New Revision: 17792 Modified: projects/haf/trunk/gtk+/gdk-pixbuf/ChangeLog projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf-simple-anim.c projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf-simple-anim.h projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf.symbols Log: 2009-03-24 Claudio Saavedra <csaavedra at igalia.com> From bgo 561139 (GdkPixbufSimpleAnim can't be made to loop) * gdk-pixbuf-simple-anim.c (gdk_pixbuf_simple_anim_class_init), (advance), (gdk_pixbuf_simple_anim_get_property), (gdk_pixbuf_simple_anim_set_property), (gdk_pixbuf_simple_anim_set_loop), (gdk_pixbuf_simple_anim_get_loop): * gdk-pixbuf-simple-anim.h: * gdk-pixbuf.symbols: Add a GdkPixbufSimpleAnim:loop property and its accessors, to allow a simple animation to loop forever. Based on a patch by Tim Evans. Modified: projects/haf/trunk/gtk+/gdk-pixbuf/ChangeLog =================================================================== --- projects/haf/trunk/gtk+/gdk-pixbuf/ChangeLog 2009-03-24 14:23:34 UTC (rev 17791) +++ projects/haf/trunk/gtk+/gdk-pixbuf/ChangeLog 2009-03-24 14:32:38 UTC (rev 17792) @@ -1,3 +1,18 @@ +2009-03-24 Claudio Saavedra <csaavedra at igalia.com> + + From bgo 561139 (GdkPixbufSimpleAnim can't be made to loop) + + * gdk-pixbuf-simple-anim.c (gdk_pixbuf_simple_anim_class_init), + (advance), (gdk_pixbuf_simple_anim_get_property), + (gdk_pixbuf_simple_anim_set_property), + (gdk_pixbuf_simple_anim_set_loop), + (gdk_pixbuf_simple_anim_get_loop): + * gdk-pixbuf-simple-anim.h: + * gdk-pixbuf.symbols: + + Add a GdkPixbufSimpleAnim:loop property and its accessors, to allow a + simple animation to loop forever. Based on a patch by Tim Evans. + 2008-09-12 Matthias Clasen <mclasen at redhat.com> * === Released 2.12.12 === Modified: projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf-simple-anim.c =================================================================== --- projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf-simple-anim.c 2009-03-24 14:23:34 UTC (rev 17791) +++ projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf-simple-anim.c 2009-03-24 14:32:38 UTC (rev 17792) @@ -25,9 +25,12 @@ * Havoc Pennington <hp at redhat.com> */ +#include "config.h" #include <glib.h> +#define GDK_PIXBUF_C_COMPILATION #include "gdk-pixbuf.h" +#include "gdk-pixbuf-private.h" #include "gdk-pixbuf-io.h" #include "gdk-pixbuf-simple-anim.h" #include "gdk-pixbuf-alias.h" @@ -109,6 +112,21 @@ const GTimeVal *start_time); +static void gdk_pixbuf_simple_anim_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gdk_pixbuf_simple_anim_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); + +enum +{ + PROP_0, + PROP_LOOP +}; + G_DEFINE_TYPE (GdkPixbufSimpleAnim, gdk_pixbuf_simple_anim, GDK_TYPE_PIXBUF_ANIMATION) static void @@ -124,13 +142,30 @@ object_class = G_OBJECT_CLASS (klass); anim_class = GDK_PIXBUF_ANIMATION_CLASS (klass); - + + object_class->set_property = gdk_pixbuf_simple_anim_set_property; + object_class->get_property = gdk_pixbuf_simple_anim_get_property; object_class->finalize = gdk_pixbuf_simple_anim_finalize; anim_class->is_static_image = is_static_image; anim_class->get_static_image = get_static_image; anim_class->get_size = get_size; anim_class->get_iter = get_iter; + + /** + * GdkPixbufSimpleAnim:loop: + * + * Whether the animation should loop when it reaches the end. + * + * Since: 2.18 + */ + g_object_class_install_property (object_class, + PROP_LOOP, + g_param_spec_boolean ("loop", + P_("Loop"), + P_("Whether the animation should loop when it reaches the end"), + FALSE, + G_PARAM_READWRITE)); } static void @@ -277,7 +312,7 @@ { GdkPixbufSimpleAnimIter *iter; gint elapsed; - gint loop; + gint loop_count; GList *tmp; GList *old; @@ -302,13 +337,13 @@ /* See how many times we've already played the full animation, * and subtract time for that. */ - loop = elapsed / iter->simple_anim->total_time; + loop_count = elapsed / iter->simple_anim->total_time; elapsed = elapsed % iter->simple_anim->total_time; iter->position = elapsed; /* Now move to the proper frame */ - if (loop < 1) + if (loop_count < 1 || iter->simple_anim->loop) tmp = iter->simple_anim->frames; else tmp = NULL; @@ -437,6 +472,82 @@ animation->frames = g_list_append (animation->frames, frame); } +static void +gdk_pixbuf_simple_anim_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GdkPixbufSimpleAnim *animation = GDK_PIXBUF_SIMPLE_ANIM (object); + switch (prop_id) { + case PROP_LOOP: + g_value_set_boolean (value, + gdk_pixbuf_simple_anim_get_loop (animation)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gdk_pixbuf_simple_anim_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GdkPixbufSimpleAnim *animation = GDK_PIXBUF_SIMPLE_ANIM (object); + + switch (prop_id) { + case PROP_LOOP: + gdk_pixbuf_simple_anim_set_loop (animation, + g_value_get_boolean (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +/** + * gdk_pixbuf_simple_anim_set_loop: + * @animation: a #GtkPixbufSimpleAnim + * @loop: whether to loop the animation + * + * Sets whether @animation should loop indefinitely. + * + * Since: 2.18 + **/ +void +gdk_pixbuf_simple_anim_set_loop (GdkPixbufSimpleAnim *animation, + gboolean loop) +{ + g_return_if_fail (GDK_IS_PIXBUF_SIMPLE_ANIM (animation)); + + if (loop != animation->loop) { + animation->loop = loop; + g_object_notify (G_OBJECT (animation), "loop"); + } +} + +/** + * gdk_pixbuf_simple_anim_get_loop: + * @animation: a #GdkPixbufSimpleAnim + * + * Gets whether @animation will loop indefinitely. + * + * Returns: %TRUE if the animation loops forever, %FALSE otherwise. + * + * Since: 2.18 + **/ +gboolean +gdk_pixbuf_simple_anim_get_loop (GdkPixbufSimpleAnim *animation) +{ + g_return_val_if_fail (GDK_IS_PIXBUF_SIMPLE_ANIM (animation), FALSE); + + return animation->loop; +} + #define __GDK_PIXBUF_SIMPLE_ANIM_C__ #include "gdk-pixbuf-aliasdef.c" Modified: projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf-simple-anim.h =================================================================== --- projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf-simple-anim.h 2009-03-24 14:23:34 UTC (rev 17791) +++ projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf-simple-anim.h 2009-03-24 14:32:38 UTC (rev 17792) @@ -47,6 +47,9 @@ gfloat rate); void gdk_pixbuf_simple_anim_add_frame (GdkPixbufSimpleAnim *animation, GdkPixbuf *pixbuf); +void gdk_pixbuf_simple_anim_set_loop (GdkPixbufSimpleAnim *animation, + gboolean loop); +gboolean gdk_pixbuf_simple_anim_get_loop (GdkPixbufSimpleAnim *animation); G_END_DECLS Modified: projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf.symbols =================================================================== --- projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf.symbols 2009-03-24 14:23:34 UTC (rev 17791) +++ projects/haf/trunk/gtk+/gdk-pixbuf/gdk-pixbuf.symbols 2009-03-24 14:32:38 UTC (rev 17792) @@ -129,6 +129,8 @@ gdk_pixbuf_simple_anim_iter_get_type G_GNUC_CONST gdk_pixbuf_simple_anim_new gdk_pixbuf_simple_anim_add_frame +gdk_pixbuf_simple_anim_set_loop +gdk_pixbuf_simple_anim_get_loop #endif #endif
- Previous message: [maemo-commits] r17791 - projects/haf/trunk/gail/debian
- Next message: [maemo-commits] r17793 - in projects/haf/trunk/gtk+: . debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]