]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/gifdecod.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxGIFDecoder, GIF reader for wxImage and wxAnimation
4 // Author: Guillermo Rodriguez Garcia <guille@iies.es>
6 // Last rev: 1999/08/10
7 // Copyright: (c) Guillermo Rodriguez Garcia
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_GIFDECOD_H
12 #define _WX_GIFDECOD_H
15 #pragma interface "gifdecod.h"
21 #include "wx/stream.h"
25 typedef struct _IMAGEN
27 unsigned int w
; /* width */
28 unsigned int h
; /* height */
29 unsigned int left
; /* x coord (in logical screen) */
30 unsigned int top
; /* y coord (in logical screen) */
31 int transparent
; /* transparent color (-1 = none) */
32 int disposal
; /* disposal method */
33 long delay
; /* delay in ms (-1 = unused) */
34 unsigned char *p
; /* bitmap */
35 unsigned char *pal
; /* palette */
36 struct _IMAGEN
*next
; /* next image */
37 struct _IMAGEN
*prev
; /* prev image */
42 #define D_UNSPECIFIED -1 /* not specified */
43 #define D_DONOTDISPOSE 0 /* do not dispose */
44 #define D_TOBACKGROUND 1 /* restore to background colour */
45 #define D_TOPREVIOUS 2 /* restore to previous image */
48 #define E_OK 0 /* everything was OK */
49 #define E_ARCHIVO -1 /* error opening file */
50 #define E_FORMATO -2 /* error in gif header */
51 #define E_MEMORIA -3 /* error allocating memory */
58 unsigned int m_screenw
; /* logical screen width */
59 unsigned int m_screenh
; /* logical screen height */
60 int m_background
; /* background color (-1 = none) */
63 bool m_anim
; /* animated GIF */
64 int m_nimages
; /* number of images */
65 int m_image
; /* current image */
66 IMAGEN
*m_pimage
; /* pointer to current image */
67 IMAGEN
*m_pfirst
; /* pointer to first image */
68 IMAGEN
*m_plast
; /* pointer to last image */
70 /* decoder state vars */
71 int m_restbits
; /* remaining valid bits */
72 unsigned int m_restbyte
; /* remaining bytes in this block */
73 unsigned int m_lastbyte
; /* last byte read */
75 wxInputStream
*m_f
; /* input file */
78 int getcode(int bits
, int abfin
);
79 int dgif(IMAGEN
*img
, int interl
, int bits
);
82 // constructor, destructor, etc.
83 wxGIFDecoder(wxInputStream
*s
, bool anim
= FALSE
);
88 // convert current frame to wxImage
89 bool ConvertToImage(wxImage
*image
) const;
91 // get data of current frame
92 int GetFrameIndex() const;
93 unsigned char* GetData() const;
94 unsigned char* GetPalette() const;
95 unsigned int GetWidth() const;
96 unsigned int GetHeight() const;
97 unsigned int GetLeft() const;
98 unsigned int GetTop() const;
99 int GetDisposalMethod() const;
100 int GetTransparentColour() const;
101 long GetDelay() const;
104 unsigned int GetLogicalScreenWidth() const;
105 unsigned int GetLogicalScreenHeight() const;
106 int GetBackgroundColour() const;
107 int GetNumberOfFrames() const;
108 bool IsAnimation() const;
110 // move through the animation
113 bool GoNextFrame(bool cyclic
= FALSE
);
114 bool GoPrevFrame(bool cyclic
= FALSE
);
115 bool GoFrame(int which
);
119 #endif // wxUSE_STREAM
120 #endif // _WX_GIFDECOD_H