RE: How can I show an animate GIF?
- From: martyn 2 russell bt com
- To: christian_schneider_2000 yahoo de, gtk-app-devel-list gnome org
- Subject: RE: How can I show an animate GIF?
- Date: Fri, 4 Jul 2003 18:40:56 +0100
I can load a normal GIF with
"pixbuf = gdk_pixbuf_new_from_file("test.gif", &err);"
and show it in a GTK-Drawing-Area. But then an animate
GIF is shown but not animated
Now I want to show an animate GIF in a
GTK-Drawing-Area. Is this possible?
Which commands are needed?
Yes this should be possible.
You probably want to have a function similar to below to load the animation
first:
GdkPixbufAnimation *animation_new_from_file(const gchar *filename)
{
GdkPixbufAnimation *pba = NULL;
GError *error = NULL;
if(filename == NULL || strlen(filename) < 1)
{
g_warning("%s: filename was NULL", __FUNCTION__);
return NULL;
}
else
g_message("%s: opening file:'%s'", __FUNCTION__, filename);
pba = gdk_pixbuf_animation_new_from_file(filename, &error);
if(pba == NULL)
{
g_warning("%s: error loading file:'%s'", __FUNCTION__,
filename);
/* look at error */
if(error != NULL)
{
g_warning("%s: error domain:'%s', code:%d,
message:'%s'",
__FUNCTION__,
g_quark_to_string(error->domain), error->code, error->message);
g_error_free(error);
}
return NULL;
}
/* NOTE: this has a refcount of 1 it needs to be unref'd */
return pba;
}
This will give you the animation. If nomally you would use something like
gtk_image_set_from_animation(...) but because you want to use it in a
drawable, you will proabably want to use functions from:
http://developer.gnome.org/doc/API/2.0/gdk-pixbuf/gdk-pixbuf-animation.html
and gdk_draw_pixbuf() found here:
http://developer.gnome.org/doc/API/2.0/gdk/gdk-Drawing-Primitives.html#gdk-d
raw-pixbuf
I would suggest you use gdk_pixbuf_animation_get_iter() to get the first
iter of the starting frame of the animation, then use
gdk_pixbuf_animation_iter_get_delay_time() and set a timeout using
g_timeout_add() for the frame delay.
On the callback from that, you can then use
gdk_pixbuf_animation_iter_get_pixbuf() to get the pixbuf for that frame.
Once you have the pixbuf you can use gdk_draw_pixbuf() to put the animation
in the drawing area.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]