]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/animdecod.h
allow using CPPUNIT_ASSERT_EQUAL(int,unsigned) even on 64 bit platforms (see r59576)
[wxWidgets.git] / include / wx / animdecod.h
index 2c65126e75efa734792c3779c106074927593fd9..a4c864c365d09bfe3dc50429251a3735c5d469b8 100644 (file)
 
 #include "wx/defs.h"
 
-#if wxUSE_STREAMS && wxUSE_GIF
+#if wxUSE_STREAMS
 
-#include "wx/stream.h"
-#include "wx/image.h"
+#include "wx/colour.h"
+#include "wx/gdicmn.h"
+
+class WXDLLIMPEXP_FWD_BASE wxInputStream;
+class WXDLLIMPEXP_FWD_CORE wxImage;
 
 /*
 
     wxAnimationDecoders always load an input stream using some optimized format
     to store it which is format-depedent. This allows to store a (possibly big)
     animation using a format which is a good compromise between required memory
-    and time required to blit in on the screen.
+    and time required to blit it on the screen.
 
- 2) wxAnimationDecoders contain the animation data in some internal var.
+ 2) wxAnimationDecoders contain the animation data in some internal variable.
     That's why they derive from wxObjectRefData: they are data which can be shared.
 
  3) wxAnimationDecoders can be used by a wxImageHandler to retrieve a frame
     in wxImage format; the viceversa cannot be done.
 
- 4) wxAnimationDecoders are decoders only, thus do not support save features.
+ 4) wxAnimationDecoders are decoders only, thus they do not support save features.
 
  5) wxAnimationDecoders are directly used by wxAnimation (generic implementation)
     as wxObjectRefData while they need to be 'wrapped' by a wxImageHandler for
@@ -58,11 +61,11 @@ enum wxAnimationDisposal
     // Do not dispose. The graphic is to be left in place.
     wxANIM_DONOTREMOVE = 0,
 
-    // Restore to background color. The area used by the graphic must be 
+    // Restore to background color. The area used by the graphic must be
     // restored to the background color.
     wxANIM_TOBACKGROUND = 1,
 
-    // Restore to previous. The decoder is required to restore the area 
+    // Restore to previous. The decoder is required to restore the area
     // overwritten by the graphic with what was there prior to rendering the graphic.
     wxANIM_TOPREVIOUS = 2
 };
@@ -81,59 +84,60 @@ enum wxAnimationType
 // wxAnimationDecoder class
 // --------------------------------------------------------------------------
 
-class WXDLLEXPORT wxAnimationDecoder : public wxObjectRefData
+class WXDLLIMPEXP_CORE wxAnimationDecoder : public wxObjectRefData
 {
-protected:
-    wxSize m_szAnimation;
-    size_t m_nFrames;
+public:
+    wxAnimationDecoder()
+    {
+        m_nFrames = 0;
+    }
+
+    virtual bool Load( wxInputStream& stream ) = 0;
+    virtual bool CanRead( wxInputStream& stream ) const = 0;
+
+    virtual wxAnimationDecoder *Clone() const = 0;
+    virtual wxAnimationType GetType() const = 0;
+
+    // convert given frame to wxImage
+    virtual bool ConvertToImage(unsigned int frame, wxImage *image) const = 0;
 
-    // this is the colour to use for the wxANIM_TOBACKGROUND disposal.
-    // if not specified by the animation, it's set to wxNullColour
-    wxColour m_background;
 
-public:     // frame specific data getters
+    // frame specific data getters
 
     // not all frames may be of the same size; e.g. GIF allows to
     // specify that between two frames only a smaller portion of the
     // entire animation has changed.
-    virtual wxSize GetFrameSize(size_t frame) const = 0;
+    virtual wxSize GetFrameSize(unsigned int frame) const = 0;
 
     // the position of this frame in case it's not as big as m_szAnimation
     // or wxPoint(0,0) otherwise.
-    virtual wxPoint GetFramePosition(size_t frame) const = 0;
+    virtual wxPoint GetFramePosition(unsigned int frame) const = 0;
 
     // what should be done after displaying this frame.
-    virtual wxAnimationDisposal GetDisposalMethod(size_t frame) const = 0;
+    virtual wxAnimationDisposal GetDisposalMethod(unsigned int frame) const = 0;
 
     // the number of milliseconds this frame should be displayed.
     // if returns -1 then the frame must be displayed forever.
-    virtual long GetDelay(size_t frame) const = 0;
+    virtual long GetDelay(unsigned int frame) const = 0;
+
+    // the transparent colour for this frame if any or wxNullColour.
+    virtual wxColour GetTransparentColour(unsigned int frame) const = 0;
 
     // get global data
     wxSize GetAnimationSize() const { return m_szAnimation; }
     wxColour GetBackgroundColour() const { return m_background; }
-    size_t GetFrameCount() const { return m_nFrames; }
-
-public:
-    wxAnimationDecoder()
-    {
-        m_background = wxNullColour;
-        m_nFrames = 0;
-    }
-    ~wxAnimationDecoder() {}
-
+    unsigned int GetFrameCount() const { return m_nFrames; }
 
-    virtual bool Load( wxInputStream& stream ) = 0;
-    virtual bool CanRead( wxInputStream& stream ) const = 0;
-
-    virtual wxAnimationDecoder *Clone() const = 0;
-    virtual wxAnimationType GetType() const = 0;
+protected:
+    wxSize m_szAnimation;
+    unsigned int m_nFrames;
 
-    // convert given frame to wxImage
-    virtual bool ConvertToImage(size_t frame, wxImage *image) const = 0;
+    // this is the colour to use for the wxANIM_TOBACKGROUND disposal.
+    // if not specified by the animation, it's set to wxNullColour
+    wxColour m_background;
 };
 
+#endif  // wxUSE_STREAMS
 
-#endif  // wxUSE_STREAM && wxUSE_GIF
 #endif  // _WX_ANIMDECOD_H