]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gifdecod.h
better file data support
[wxWidgets.git] / include / wx / gifdecod.h
index 09a8927f9959d9482b726be0221f61bff045371e..c46283825e6485817741ca50216531562c4a817e 100644 (file)
 #ifndef _WX_GIFDECOD_H
 #define _WX_GIFDECOD_H
 
-#ifdef __GNUG__
-#pragma interface "gifdecod.h"
-#endif
-
-#include "wx/setup.h"
+#include "wx/defs.h"
 
 #if wxUSE_STREAMS && wxUSE_GIF
 
 
 
 // --------------------------------------------------------------------------
-// constants
+// Constants
 // --------------------------------------------------------------------------
 
-// disposal method
+// Error codes:
+//  Note that the error code wxGIF_TRUNCATED means that the image itself
+//  is most probably OK, but the decoder didn't reach the end of the data
+//  stream; this means that if it was not reading directly from file,
+//  the stream will not be correctly positioned. the
+//
+enum
+{
+    wxGIF_OK = 0,                   /* everything was OK */
+    wxGIF_INVFORMAT,                /* error in gif header */
+    wxGIF_MEMERR,                   /* error allocating memory */
+    wxGIF_TRUNCATED                 /* file appears to be truncated */
+};
+
+// Disposal method
+//  Experimental; subject to change.
+//
 enum
 {
     wxGIF_D_UNSPECIFIED = -1,       /* not specified */
@@ -36,13 +48,6 @@ enum
     wxGIF_D_TOPREVIOUS = 2          /* restore to previous image */
 };
 
-// error codes
-enum
-{
-    wxGIF_OK = 0,                   /* everything was OK */
-    wxGIF_INVFORMAT = 1,            /* error in gif header */
-    wxGIF_MEMERR = 2                /* error allocating memory */
-};
 
 #define MAX_BLOCK_SIZE 256          /* max. block size */
 
@@ -55,6 +60,9 @@ enum
 class GIFImage
 {
 public:
+    // def ctor
+    GIFImage();
+
     unsigned int w;                 /* width */
     unsigned int h;                 /* height */
     unsigned int left;              /* x coord (in logical screen) */
@@ -66,6 +74,8 @@ public:
     unsigned char *pal;             /* palette */
     GIFImage *next;                 /* next image */
     GIFImage *prev;                 /* prev image */
+
+    DECLARE_NO_COPY_CLASS(GIFImage)
 };
 
 
@@ -99,7 +109,7 @@ private:
     int getcode(int bits, int abfin);
     int dgif(GIFImage *img, int interl, int bits);
 
-protected:
+public:
     // get data of current frame
     int GetFrameIndex() const;
     unsigned char* GetData() const;
@@ -122,13 +132,13 @@ protected:
     // move through the animation
     bool GoFirstFrame();
     bool GoLastFrame();
-    bool GoNextFrame(bool cyclic = FALSE);
-    bool GoPrevFrame(bool cyclic = FALSE);
+    bool GoNextFrame(bool cyclic = false);
+    bool GoPrevFrame(bool cyclic = false);
     bool GoFrame(int which);
 
 public:
     // constructor, destructor, etc.
-    wxGIFDecoder(wxInputStream *s, bool anim = FALSE);
+    wxGIFDecoder(wxInputStream *s, bool anim = false);
     ~wxGIFDecoder();
     bool CanRead();
     int ReadGIF();
@@ -136,6 +146,8 @@ public:
 
     // convert current frame to wxImage
     bool ConvertToImage(wxImage *image) const;
+
+    DECLARE_NO_COPY_CLASS(wxGIFDecoder)
 };