///////////////////////////////////////////////////////////////////////////// // Name: wx/animate.h // Purpose: wxAnimation and wxAnimationCtrl // Author: Julian Smart and Guillermo Rodriguez Garcia // Modified by: Francesco Montorsi // Created: 13/8/99 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_ANIMATEH__ #define _WX_ANIMATEH__ #include "wx/defs.h" #if wxUSE_ANIMATIONCTRL #include "wx/animdecod.h" #include "wx/control.h" #include "wx/timer.h" #include "wx/bitmap.h" class WXDLLIMPEXP_ADV wxAnimation; extern WXDLLIMPEXP_DATA_ADV(wxAnimation) wxNullAnimation; extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxAnimationCtrlNameStr[]; // ---------------------------------------------------------------------------- // wxAnimationBase // ---------------------------------------------------------------------------- class WXDLLIMPEXP_ADV wxAnimationBase : public wxGDIObject { public: wxAnimationBase() {} virtual bool IsOk() const = 0; // can be -1 virtual int GetDelay(size_t i) const = 0; virtual size_t GetFrameCount() const = 0; virtual wxImage GetFrame(size_t i) const = 0; virtual wxSize GetSize() const = 0; virtual bool LoadFile(const wxString &name, wxAnimationType type = wxANIMATION_TYPE_ANY) = 0; virtual bool Load(wxInputStream &stream, wxAnimationType type = wxANIMATION_TYPE_ANY) = 0; protected: DECLARE_ABSTRACT_CLASS(wxAnimationBase) }; // ---------------------------------------------------------------------------- // wxAnimationCtrlBase // ---------------------------------------------------------------------------- // do not autoresize to the animation's size when SetAnimation() is called #define wxAC_NO_AUTORESIZE (0x0010) // default style does not include wxAC_NO_AUTORESIZE, that is, the control // auto-resizes by default to fit the new animation when SetAnimation() is called #define wxAC_DEFAULT_STYLE (wxNO_BORDER) class WXDLLIMPEXP_ADV wxAnimationCtrlBase : public wxControl { public: wxAnimationCtrlBase() {} public: // public API virtual bool LoadFile(const wxString& filename, wxAnimationType type = wxANIMATION_TYPE_ANY) = 0; virtual void SetAnimation(const wxAnimation &anim) = 0; virtual wxAnimation GetAnimation() const = 0; virtual bool Play() = 0; virtual void Stop() = 0; virtual bool IsPlaying() const = 0; virtual void SetInactiveBitmap(const wxBitmap &bmp); // always return the original bitmap set in this control wxBitmap GetInactiveBitmap() const { return m_bmpStatic; } protected: // the inactive bitmap as it was set by the user wxBitmap m_bmpStatic; // the inactive bitmap currently shown in the control // (may differ in the size from m_bmpStatic) wxBitmap m_bmpStaticReal; // updates m_bmpStaticReal from m_bmpStatic if needed virtual void UpdateStaticImage(); // called by SetInactiveBitmap virtual void DisplayStaticImage() = 0; private: DECLARE_ABSTRACT_CLASS(wxAnimationCtrlBase) }; // ---------------------------------------------------------------------------- // include the platform-specific version of the wxAnimationCtrl class // ---------------------------------------------------------------------------- #if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__) #include "wx/gtk/animate.h" #else #include "wx/generic/animate.h" #endif #endif // wxUSE_ANIMATIONCTRL #endif // _WX_ANIMATEH__