+#include "wx/scopedptr.h"
+#include "wx/scopeguard.h"
+
+enum
+{
+ GIF_MARKER_EXT = '!', // 0x21
+ GIF_MARKER_SEP = ',', // 0x2C
+ GIF_MARKER_ENDOFDATA = ';', // 0x3B
+
+ GIF_MARKER_EXT_GRAPHICS_CONTROL = 0xF9,
+ GIF_MARKER_EXT_COMMENT = 0xFE,
+ GIF_MARKER_EXT_APP = 0xFF
+};
+
+#define GetFrame(n) ((GIFImage*)m_frames[n])
+
+//---------------------------------------------------------------------------
+// GIFImage
+//---------------------------------------------------------------------------
+
+// internal class for storing GIF image data
+class GIFImage
+{
+public:
+ // def ctor
+ GIFImage();
+
+ unsigned int w; // width
+ unsigned int h; // height
+ unsigned int left; // x coord (in logical screen)
+ unsigned int top; // y coord (in logical screen)
+ int transparent; // transparent color index (-1 = none)
+ wxAnimationDisposal disposal; // disposal method
+ long delay; // delay in ms (-1 = unused)
+ unsigned char *p; // bitmap
+ unsigned char *pal; // palette
+ unsigned int ncolours; // number of colours
+ wxString comment;
+
+ wxDECLARE_NO_COPY_CLASS(GIFImage);
+};
+
+wxDECLARE_SCOPED_PTR(GIFImage, GIFImagePtr)
+wxDEFINE_SCOPED_PTR(GIFImage, GIFImagePtr)
+
+
+//---------------------------------------------------------------------------
+// GIFImage constructor
+//---------------------------------------------------------------------------
+GIFImage::GIFImage()
+{
+ w = 0;
+ h = 0;
+ left = 0;
+ top = 0;
+ transparent = 0;
+ disposal = wxANIM_DONOTREMOVE;
+ delay = -1;
+ p = (unsigned char *) NULL;
+ pal = (unsigned char *) NULL;
+ ncolours = 0;
+}