1///////////////////////////////////////////////////////////////////////////// 2// Name: wx/animate.h 3// Purpose: wxAnimation and wxAnimationCtrl 4// Author: Julian Smart and Guillermo Rodriguez Garcia 5// Modified by: Francesco Montorsi 6// Created: 13/8/99 7// RCS-ID: $Id: animate.h 53135 2008-04-12 02:31:04Z VZ $ 8// Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_ANIMATE_H_ 13#define _WX_ANIMATE_H_ 14 15#include "wx/defs.h" 16 17#if wxUSE_ANIMATIONCTRL 18 19#include "wx/animdecod.h" 20#include "wx/control.h" 21#include "wx/timer.h" 22#include "wx/bitmap.h" 23 24class WXDLLIMPEXP_FWD_ADV wxAnimation; 25 26extern WXDLLIMPEXP_DATA_ADV(wxAnimation) wxNullAnimation; 27extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxAnimationCtrlNameStr[]; 28 29 30// ---------------------------------------------------------------------------- 31// wxAnimationBase 32// ---------------------------------------------------------------------------- 33 34class WXDLLIMPEXP_ADV wxAnimationBase : public wxGDIObject 35{ 36public: 37 wxAnimationBase() {} 38 39 virtual bool IsOk() const = 0; 40 41 // can be -1 42 virtual int GetDelay(unsigned int frame) const = 0; 43 44 virtual unsigned int GetFrameCount() const = 0; 45 virtual wxImage GetFrame(unsigned int frame) const = 0; 46 virtual wxSize GetSize() const = 0; 47 48 virtual bool LoadFile(const wxString& name, 49 wxAnimationType type = wxANIMATION_TYPE_ANY) = 0; 50 virtual bool Load(wxInputStream& stream, 51 wxAnimationType type = wxANIMATION_TYPE_ANY) = 0; 52 53protected: 54 DECLARE_ABSTRACT_CLASS(wxAnimationBase) 55}; 56 57 58 59// ---------------------------------------------------------------------------- 60// wxAnimationCtrlBase 61// ---------------------------------------------------------------------------- 62 63// do not autoresize to the animation's size when SetAnimation() is called 64#define wxAC_NO_AUTORESIZE (0x0010) 65 66// default style does not include wxAC_NO_AUTORESIZE, that is, the control 67// auto-resizes by default to fit the new animation when SetAnimation() is called 68#define wxAC_DEFAULT_STYLE (wxNO_BORDER) 69 70class WXDLLIMPEXP_ADV wxAnimationCtrlBase : public wxControl 71{ 72public: 73 wxAnimationCtrlBase() { } 74 75 // public API 76 virtual bool LoadFile(const wxString& filename, 77 wxAnimationType type = wxANIMATION_TYPE_ANY) = 0; 78 79 virtual void SetAnimation(const wxAnimation &anim) = 0; 80 virtual wxAnimation GetAnimation() const = 0; 81 82 virtual bool Play() = 0; 83 virtual void Stop() = 0; 84 85 virtual bool IsPlaying() const = 0; 86 87 virtual void SetInactiveBitmap(const wxBitmap &bmp); 88 89 // always return the original bitmap set in this control 90 wxBitmap GetInactiveBitmap() const 91 { return m_bmpStatic; } 92 93protected: 94 // the inactive bitmap as it was set by the user 95 wxBitmap m_bmpStatic; 96 97 // the inactive bitmap currently shown in the control 98 // (may differ in the size from m_bmpStatic) 99 wxBitmap m_bmpStaticReal; 100 101 // updates m_bmpStaticReal from m_bmpStatic if needed 102 virtual void UpdateStaticImage(); 103 104 // called by SetInactiveBitmap 105 virtual void DisplayStaticImage() = 0; 106 107private: 108 DECLARE_ABSTRACT_CLASS(wxAnimationCtrlBase) 109}; 110 111 112// ---------------------------------------------------------------------------- 113// include the platform-specific version of the wxAnimationCtrl class 114// ---------------------------------------------------------------------------- 115 116#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__) 117 #include "wx/gtk/animate.h" 118#else 119 #include "wx/generic/animate.h" 120#endif 121 122#endif // wxUSE_ANIMATIONCTRL 123 124#endif // _WX_ANIMATE_H_ 125