1
<refentry id="gdk-pixbuf-animation">
3
<refentrytitle>Animations</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>GDK-PIXBUF Library</refmiscinfo>
9
<refname>Animations</refname><refpurpose>Animations as multi-frame structures.</refpurpose>
12
<refsynopsisdiv><title>Synopsis</title>
15
#include <gdk-pixbuf/gdk-pixbuf.h>
18
enum <link linkend="GdkPixbufFrameAction">GdkPixbufFrameAction</link>;
19
<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link>* <link linkend="gdk-pixbuf-animation-new-from-file">gdk_pixbuf_animation_new_from_file</link>
20
(const char *filename);
21
<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link>* <link linkend="gdk-pixbuf-animation-ref">gdk_pixbuf_animation_ref</link>
22
(<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);
23
void <link linkend="gdk-pixbuf-animation-unref">gdk_pixbuf_animation_unref</link> (<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);
24
<link linkend="GList">GList</link>* <link linkend="gdk-pixbuf-animation-get-frames">gdk_pixbuf_animation_get_frames</link> (<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);
25
int <link linkend="gdk-pixbuf-animation-get-width">gdk_pixbuf_animation_get_width</link> (<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);
26
int <link linkend="gdk-pixbuf-animation-get-num-frames">gdk_pixbuf_animation_get_num_frames</link>
27
(<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);
28
int <link linkend="gdk-pixbuf-animation-get-height">gdk_pixbuf_animation_get_height</link> (<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);
29
<link linkend="GdkPixbuf">GdkPixbuf</link>* <link linkend="gdk-pixbuf-frame-get-pixbuf">gdk_pixbuf_frame_get_pixbuf</link> (<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);
30
<link linkend="GdkPixbufFrameAction">GdkPixbufFrameAction</link> <link linkend="gdk-pixbuf-frame-get-action">gdk_pixbuf_frame_get_action</link>
31
(<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);
32
int <link linkend="gdk-pixbuf-frame-get-y-offset">gdk_pixbuf_frame_get_y_offset</link> (<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);
33
int <link linkend="gdk-pixbuf-frame-get-delay-time">gdk_pixbuf_frame_get_delay_time</link> (<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);
34
int <link linkend="gdk-pixbuf-frame-get-x-offset">gdk_pixbuf_frame_get_x_offset</link> (<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);
44
<title>Description</title>
46
The &gdk-pixbuf; library provides a simple mechanism to load and
47
represent animations, primarily animated GIF files. Animations
48
are represented as lists of <link linkend="GdkPixbufFrame">GdkPixbufFrame</link> structures. Each
49
frame structure contains a <link linkend="GdkPixbuf">GdkPixbuf</link> structure and information
50
about the frame's overlay mode and duration.
55
<title>Details</title>
57
<title><anchor id="GdkPixbufFrameAction">enum GdkPixbufFrameAction</title>
58
<programlisting>typedef enum {
59
GDK_PIXBUF_FRAME_RETAIN,
60
GDK_PIXBUF_FRAME_DISPOSE,
61
GDK_PIXBUF_FRAME_REVERT
62
} GdkPixbufFrameAction;
65
Each animation frame can have several things happen to it when the
66
next frame is displayed. The <link linkend="GdkPixbufFrameAction">GdkPixbufFrameAction</link> determines
67
this. These are essentially the overlay modes supported by GIF
69
</para><informaltable pgwide=1 frame="none" role="enum">
71
<colspec colwidth="2*">
72
<colspec colwidth="8*">
75
<entry><literal>GDK_PIXBUF_FRAME_RETAIN</literal></entry>
76
<entry>The previous image should remain displayed,
77
and will potentially be occluded by the new frame.
81
<entry><literal>GDK_PIXBUF_FRAME_DISPOSE</literal></entry>
82
<entry>The animation will be reverted to the state
83
before the frame was shown.
87
<entry><literal>GDK_PIXBUF_FRAME_REVERT</literal></entry>
88
<entry>The animation will be reverted to the first
93
</tbody></tgroup></informaltable></refsect2>
95
<title><anchor id="gdk-pixbuf-animation-new-from-file">gdk_pixbuf_animation_new_from_file ()</title>
96
<programlisting><link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link>* gdk_pixbuf_animation_new_from_file
97
(const char *filename);</programlisting>
99
Creates a new animation by loading it from a file. The file format is
100
detected automatically. If the file's format does not support multi-frame
101
images, then an animation with a single frame will be created.</para>
104
</para><informaltable pgwide=1 frame="none" role="params">
106
<colspec colwidth="2*">
107
<colspec colwidth="8*">
109
<row><entry align="right"><parameter>filename</parameter> :</entry>
110
<entry> Name of file to load.
112
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> A newly created animation with a reference count of 1, or <literal>NULL</literal>
113
if any of several error conditions ocurred: the file could not be opened,
114
there was no loader for the file's format, there was not enough memory to
115
allocate the image buffer, or the image file contained invalid data.
117
</tbody></tgroup></informaltable></refsect2>
119
<title><anchor id="gdk-pixbuf-animation-ref">gdk_pixbuf_animation_ref ()</title>
120
<programlisting><link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link>* gdk_pixbuf_animation_ref
121
(<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);</programlisting>
123
Adds a reference to an animation. It must be released afterwards using
124
<link linkend="gdk-pixbuf-animation-unref">gdk_pixbuf_animation_unref</link>().</para>
127
</para><informaltable pgwide=1 frame="none" role="params">
129
<colspec colwidth="2*">
130
<colspec colwidth="8*">
132
<row><entry align="right"><parameter>animation</parameter> :</entry>
133
<entry> An animation.
135
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> The same as the <parameter>animation</parameter> argument.
137
</tbody></tgroup></informaltable></refsect2>
139
<title><anchor id="gdk-pixbuf-animation-unref">gdk_pixbuf_animation_unref ()</title>
140
<programlisting>void gdk_pixbuf_animation_unref (<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);</programlisting>
142
Removes a reference from an animation. It will be destroyed when the
143
reference count drops to zero. At that point, all the frames in the
144
animation will be freed and their corresponding pixbufs will be unreferenced.</para>
147
</para><informaltable pgwide=1 frame="none" role="params">
149
<colspec colwidth="2*">
150
<colspec colwidth="8*">
152
<row><entry align="right"><parameter>animation</parameter> :</entry>
153
<entry> An animation.
155
</tbody></tgroup></informaltable></refsect2>
157
<title><anchor id="gdk-pixbuf-animation-get-frames">gdk_pixbuf_animation_get_frames ()</title>
158
<programlisting><link linkend="GList">GList</link>* gdk_pixbuf_animation_get_frames (<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);</programlisting>
160
Queries the list of frames of an animation.</para>
163
</para><informaltable pgwide=1 frame="none" role="params">
165
<colspec colwidth="2*">
166
<colspec colwidth="8*">
168
<row><entry align="right"><parameter>animation</parameter> :</entry>
169
<entry> An animation.
171
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> List of frames in the animation; this is a <link linkend="GList">GList</link> of
172
<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> structures.
174
</tbody></tgroup></informaltable></refsect2>
176
<title><anchor id="gdk-pixbuf-animation-get-width">gdk_pixbuf_animation_get_width ()</title>
177
<programlisting>int gdk_pixbuf_animation_get_width (<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);</programlisting>
179
Queries the width of the bounding box of a pixbuf animation.</para>
182
</para><informaltable pgwide=1 frame="none" role="params">
184
<colspec colwidth="2*">
185
<colspec colwidth="8*">
187
<row><entry align="right"><parameter>animation</parameter> :</entry>
188
<entry> An animation.
190
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> Width of the bounding box of the animation.
192
</tbody></tgroup></informaltable></refsect2>
194
<title><anchor id="gdk-pixbuf-animation-get-num-frames">gdk_pixbuf_animation_get_num_frames ()</title>
195
<programlisting>int gdk_pixbuf_animation_get_num_frames
196
(<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);</programlisting>
198
Queries the number of frames in a pixbuf animation.</para>
201
</para><informaltable pgwide=1 frame="none" role="params">
203
<colspec colwidth="2*">
204
<colspec colwidth="8*">
206
<row><entry align="right"><parameter>animation</parameter> :</entry>
207
<entry> An animation.
209
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> Number of frames in the animation.
211
</tbody></tgroup></informaltable></refsect2>
213
<title><anchor id="gdk-pixbuf-animation-get-height">gdk_pixbuf_animation_get_height ()</title>
214
<programlisting>int gdk_pixbuf_animation_get_height (<link linkend="GdkPixbufAnimation">GdkPixbufAnimation</link> *animation);</programlisting>
216
Queries the height of the bounding box of a pixbuf animation.</para>
219
</para><informaltable pgwide=1 frame="none" role="params">
221
<colspec colwidth="2*">
222
<colspec colwidth="8*">
224
<row><entry align="right"><parameter>animation</parameter> :</entry>
225
<entry> An animation.
227
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> Height of the bounding box of the animation.
229
</tbody></tgroup></informaltable></refsect2>
231
<title><anchor id="gdk-pixbuf-frame-get-pixbuf">gdk_pixbuf_frame_get_pixbuf ()</title>
232
<programlisting><link linkend="GdkPixbuf">GdkPixbuf</link>* gdk_pixbuf_frame_get_pixbuf (<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);</programlisting>
234
Queries the pixbuf of an animation frame.</para>
237
</para><informaltable pgwide=1 frame="none" role="params">
239
<colspec colwidth="2*">
240
<colspec colwidth="8*">
242
<row><entry align="right"><parameter>frame</parameter> :</entry>
243
<entry> A pixbuf animation frame.
245
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> A pixbuf.
247
</tbody></tgroup></informaltable></refsect2>
249
<title><anchor id="gdk-pixbuf-frame-get-action">gdk_pixbuf_frame_get_action ()</title>
250
<programlisting><link linkend="GdkPixbufFrameAction">GdkPixbufFrameAction</link> gdk_pixbuf_frame_get_action
251
(<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);</programlisting>
253
Queries the overlay action of an animation frame.</para>
256
</para><informaltable pgwide=1 frame="none" role="params">
258
<colspec colwidth="2*">
259
<colspec colwidth="8*">
261
<row><entry align="right"><parameter>frame</parameter> :</entry>
262
<entry> A pixbuf animation frame.
264
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> Overlay action for this frame.
266
</tbody></tgroup></informaltable></refsect2>
268
<title><anchor id="gdk-pixbuf-frame-get-y-offset">gdk_pixbuf_frame_get_y_offset ()</title>
269
<programlisting>int gdk_pixbuf_frame_get_y_offset (<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);</programlisting>
271
Queries the Y offset of an animation frame.</para>
274
</para><informaltable pgwide=1 frame="none" role="params">
276
<colspec colwidth="2*">
277
<colspec colwidth="8*">
279
<row><entry align="right"><parameter>frame</parameter> :</entry>
280
<entry> A pixbuf animation frame.
282
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> Y offset from the top left corner of the animation.
284
</tbody></tgroup></informaltable></refsect2>
286
<title><anchor id="gdk-pixbuf-frame-get-delay-time">gdk_pixbuf_frame_get_delay_time ()</title>
287
<programlisting>int gdk_pixbuf_frame_get_delay_time (<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);</programlisting>
289
Queries the delay time in milliseconds of an animation frame.</para>
292
</para><informaltable pgwide=1 frame="none" role="params">
294
<colspec colwidth="2*">
295
<colspec colwidth="8*">
297
<row><entry align="right"><parameter>frame</parameter> :</entry>
298
<entry> A pixbuf animation frame.
300
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> Delay time in milliseconds.
302
</tbody></tgroup></informaltable></refsect2>
304
<title><anchor id="gdk-pixbuf-frame-get-x-offset">gdk_pixbuf_frame_get_x_offset ()</title>
305
<programlisting>int gdk_pixbuf_frame_get_x_offset (<link linkend="GdkPixbufFrame">GdkPixbufFrame</link> *frame);</programlisting>
307
Queries the X offset of an animation frame.</para>
310
</para><informaltable pgwide=1 frame="none" role="params">
312
<colspec colwidth="2*">
313
<colspec colwidth="8*">
315
<row><entry align="right"><parameter>frame</parameter> :</entry>
316
<entry> A pixbuf animation frame.
318
<row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry> X offset from the top left corner of the animation.
320
</tbody></tgroup></informaltable></refsect2>
327
<title>See Also</title>
329
<link linkend="GdkPixbufLoader">GdkPixbufLoader</link>