///////////////////////////////////////////////////////////////////////////// // Name: wx/animate.h // Purpose: wxAnimation and wxAnimationCtrl // Author: Julian Smart and Guillermo Rodriguez Garcia // Modified by: Francesco Montorsi // Created: 13/8/99 // Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_ANIMATE_H_ #define _WX_ANIMATE_H_ #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_FWD_CORE wxAnimation; extern WXDLLIMPEXP_DATA_CORE(wxAnimation) wxNullAnimation; extern WXDLLIMPEXP_DATA_CORE(const char) wxAnimationCtrlNameStr[]; // ---------------------------------------------------------------------------- // wxAnimationBase // ---------------------------------------------------------------------------- class WXDLLIMPEXP_CORE wxAnimationBase : public wxObject { public: wxAnimationBase() {} virtual bool IsOk() const = 0; // can be -1 virtual int GetDelay(unsigned int frame) const = 0; virtual unsigned int GetFrameCount() const = 0; virtual wxImage GetFrame(unsigned int frame) 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: wxDECLARE_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 (wxBORDER_NONE) class WXDLLIMPEXP_CORE wxAnimationCtrlBase : public wxControl { public: wxAnimationCtrlBase() { } // public API virtual bool LoadFile(const wxString& filename, wxAnimationType type = wxANIMATION_TYPE_ANY) = 0; virtual bool Load(wxInputStream& stream, 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: wxDECLARE_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_ANIMATE_H_