]>
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>
7 // Copyright: (c) 1999 Guillermo Rodriguez Garcia
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_GIFDECOD_H
12 #define _WX_GIFDECOD_H
15 #pragma interface "gifdecod.h"
20 #if wxUSE_STREAMS && wxUSE_GIF
22 #include "wx/stream.h"
26 typedef struct _IMAGEN
28 unsigned int w
; /* width */
29 unsigned int h
; /* height */
30 unsigned int left
; /* x coord (in logical screen) */
31 unsigned int top
; /* y coord (in logical screen) */
32 int transparent
; /* transparent color (-1 = none) */
33 int disposal
; /* disposal method (-1 = unspecified) */
34 long delay
; /* delay in ms (-1 = unused) */
35 unsigned char *p
; /* bitmap */
36 unsigned char *pal
; /* palette */
37 struct _IMAGEN
*next
; /* next image */
38 struct _IMAGEN
*prev
; /* prev image */
43 #define D_UNSPECIFIED -1 /* not specified */
44 #define D_DONOTDISPOSE 0 /* do not dispose */
45 #define D_TOBACKGROUND 1 /* restore to background colour */
46 #define D_TOPREVIOUS 2 /* restore to previous image */
49 #define E_OK 0 /* everything was OK */
50 #define E_FORMATO 1 /* error in gif header */
51 #define E_MEMORIA 2 /* error allocating memory */
53 class WXDLLEXPORT wxGIFDecoder
57 unsigned int m_screenw
; /* logical screen width */
58 unsigned int m_screenh
; /* logical screen height */
59 int m_background
; /* background color (-1 = none) */
62 bool m_anim
; /* animated GIF */
63 int m_nimages
; /* number of images */
64 int m_image
; /* current image */
65 IMAGEN
*m_pimage
; /* pointer to current image */
66 IMAGEN
*m_pfirst
; /* pointer to first image */
67 IMAGEN
*m_plast
; /* pointer to last image */
69 /* decoder state vars */
70 int m_restbits
; /* remaining valid bits */
71 unsigned int m_restbyte
; /* remaining bytes in this block */
72 unsigned int m_lastbyte
; /* last byte read */
74 wxInputStream
*m_f
; /* input file */
77 int getcode(int bits
, int abfin
);
78 int dgif(IMAGEN
*img
, int interl
, int bits
);
81 // constructor, destructor, etc.
82 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 && wxUSE_GIF
120 #endif // _WX_GIFDECOD_H