libyui-gtk  2.44.10
ygdkmngloader.h
1 /********************************************************************
2  * YaST2-GTK - http://en.opensuse.org/YaST2-GTK *
3  ********************************************************************/
4 
5 /* GdkPixbuf doesn't support MNG files... MNG extends PNG adding movie playback
6  capabilities.
7  This code aims for MNG-VLC (smallest subset of the format), though
8  it isn't completely compliable.
9 */
10 
11 #ifndef YGDK_MNG_PIXBUF_H
12 #define YGDK_MNG_PIXBUF_H
13 
14 #define GDK_PIXBUF_ENABLE_BACKEND
15 #include "gdk-pixbuf/gdk-pixbuf-animation.h"
16 G_BEGIN_DECLS
17 
18 #define YGDK_TYPE_MNG_PIXBUF (ygdk_mng_pixbuf_get_type ())
19 #define YGDK_MNG_PIXBUF(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
20  YGDK_TYPE_MNG_PIXBUF, YGdkMngPixbuf))
21 #define YGDK_MNG_PIXBUF_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \
22  YGDK_TYPE_MNG_PIXBUF, YGdkMngPixbufClass))
23 #define YGDK_IS_MNG_PIXBUF(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
24  YGDK_TYPE_MNG_PIXBUF))
25 #define YGDK_IS_MNG_PIXBUF_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
26  YGDK_TYPE_MNG_PIXBUF))
27 #define YGDK_MNG_PIXBUF_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \
28  YGK_TYPE_MNG_PIXBUF, YGdkMngPixbufClass))
29 
30 typedef struct YGdkMngPixbuf
31 {
32  GdkPixbufAnimation parent;
33 
34  // private: (use GdkPixbufAnimation API)
35  GList *frames; // of GdkPixbufs
36  // MHDR header
37  guint32 frame_width, frame_height, ticks_per_second;
38  // TERM header
39  guint32 last_frame_delay, iteration_max;
41 
42 typedef struct YGdkMngPixbufClass
43 {
44  GdkPixbufAnimationClass parent_class;
46 
47 GdkPixbufAnimation *ygdk_mng_pixbuf_new_from_file (const gchar *filename, GError **error);
48 GdkPixbufAnimation *ygdk_mng_pixbuf_new_from_data (const guint8 *data, long size, GError **error);
49 gboolean ygdk_mng_pixbuf_is_file_mng (const gchar *filename);
50 gboolean ygdk_mng_pixbuf_is_data_mng (const guint8 *data, long size);
51 
52 GType ygdk_mng_pixbuf_get_type (void) G_GNUC_CONST;
53 
54 #define YGDK_TYPE_MNG_PIXBUF_ITER (ygdk_mng_pixbuf_iter_get_type ())
55 #define YGDK_MNG_PIXBUF_ITER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
56  YGDK_TYPE_MNG_PIXBUF_ITER, YGdkMngPixbufIter))
57 #define YGDK_MNG_PIXBUF_ITER_CLASS(klass) \
58  (G_TYPE_CHECK_CLASS_CAST ((klass), YGDK_TYPE_MNG_PIXBUF_ITER, YGdkMngPixbufIterClass))
59 #define YGDK_IS_MNG_PIXBUF_ITER_CLASS(klass) \
60  (G_TYPE_CHECK_CLASS_TYPE ((klass), YGDK_TYPE_MNG_PIXBUF_ITER))
61 #define YGDK_MNG_PIXBUF_ITER_GET_CLASS(obj) \
62  (G_TYPE_INSTANCE_GET_CLASS ((obj), YGDK_TYPE_MNG_PIXBUF_ITER, YGdkMngPixbufIterClass))
63 
64 typedef struct YGdkMngPixbufIter {
65  GdkPixbufAnimationIter parent;
66 
67  // private:
68  YGdkMngPixbuf *mng_pixbuf;
69  int cur_frame, cur_iteration;
71 
72 typedef struct YGdkMngPixbufIterClass {
73  GdkPixbufAnimationIterClass parent_class;
75 
76 GType ygdk_mng_pixbuf_iter_get_type (void) G_GNUC_CONST;
77 
78 G_END_DECLS
79 #endif /*YGDK_MNG_PIXBUF_H*/
80