#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
// 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
};
// 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