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 
24 class WXDLLIMPEXP_FWD_ADV wxAnimation;
25 
26 extern WXDLLIMPEXP_DATA_ADV(wxAnimation) wxNullAnimation;
27 extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxAnimationCtrlNameStr[];
28 
29 
30 // ----------------------------------------------------------------------------
31 // wxAnimationBase
32 // ----------------------------------------------------------------------------
33 
34 class WXDLLIMPEXP_ADV wxAnimationBase : public wxGDIObject
35 {
36 public:
wxAnimationBase()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 
53 protected:
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 
70 class WXDLLIMPEXP_ADV wxAnimationCtrlBase : public wxControl
71 {
72 public:
wxAnimationCtrlBase()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
GetInactiveBitmap()90     wxBitmap GetInactiveBitmap() const
91         { return m_bmpStatic; }
92 
93 protected:
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 
107 private:
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