X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/72045d5768a126191a907bc640c28e81a11afdd6..e1ef506e13b7c8e96483b7fc0852dcb46688badd:/include/wx/gtk/animate.h diff --git a/include/wx/gtk/animate.h b/include/wx/gtk/animate.h index 6e4704a42c..8a568a7057 100644 --- a/include/wx/gtk/animate.h +++ b/include/wx/gtk/animate.h @@ -12,8 +12,8 @@ #ifndef _WX_GTKANIMATEH__ #define _WX_GTKANIMATEH__ -#include "wx/defs.h" -#include +typedef struct _GdkPixbufAnimation GdkPixbufAnimation; +typedef struct _GdkPixbufAnimationIter GdkPixbufAnimationIter; // ---------------------------------------------------------------------------- // wxAnimation @@ -24,27 +24,16 @@ // refcounted so that assignment is very fast // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxAnimation : public wxAnimationBase +class WXDLLIMPEXP_ADV wxAnimation : public wxAnimationBase { public: - wxAnimation(const wxAnimation &tocopy) - { m_pixbuf=tocopy.m_pixbuf; if (m_pixbuf) g_object_ref(m_pixbuf); } - wxAnimation(GdkPixbufAnimation *p = NULL) - { m_pixbuf=p; } - ~wxAnimation() - { UnRef(); } - - wxAnimation &operator= (const wxAnimation &tocopy) - { - m_pixbuf=tocopy.m_pixbuf; - if (m_pixbuf) g_object_ref(m_pixbuf); - return *this; - } - - bool operator == (const wxAnimation& anim) const - { return m_pixbuf == anim.m_pixbuf; } - bool operator != (const wxAnimation& anim) const - { return m_pixbuf != anim.m_pixbuf; } + wxAnimation(const wxString &name, wxAnimationType type = wxANIMATION_TYPE_ANY) + : m_pixbuf(NULL) { LoadFile(name, type); } + wxAnimation(GdkPixbufAnimation *p = NULL); + wxAnimation(const wxAnimation&); + ~wxAnimation() { UnRef(); } + + wxAnimation& operator= (const wxAnimation&); virtual bool IsOk() const { return m_pixbuf != NULL; } @@ -52,49 +41,36 @@ public: // unfortunately GdkPixbufAnimation does not expose these info: - virtual size_t GetFrameCount() const - { return 0; } - virtual wxImage GetFrame(size_t i) const - { return wxNullImage; } + virtual unsigned int GetFrameCount() const { return 0; } + virtual wxImage GetFrame(unsigned int frame) const; // we can retrieve the delay for a frame only after building // a GdkPixbufAnimationIter... - virtual int GetDelay(size_t i) const - { return 0; } + virtual int GetDelay(unsigned int WXUNUSED(frame)) const { return 0; } - virtual wxSize GetSize() const - { return wxSize(gdk_pixbuf_animation_get_width(m_pixbuf), - gdk_pixbuf_animation_get_height(m_pixbuf)); } + virtual wxSize GetSize() const; virtual bool LoadFile(const wxString &name, wxAnimationType type = wxANIMATION_TYPE_ANY); virtual bool Load(wxInputStream &stream, wxAnimationType type = wxANIMATION_TYPE_ANY); - void UnRef() - { - if (m_pixbuf) - g_object_unref(m_pixbuf); - m_pixbuf = NULL; - } - + // Implementation public: // used by GTK callbacks GdkPixbufAnimation *GetPixbuf() const { return m_pixbuf; } - void SetPixbuf(GdkPixbufAnimation *p) - { m_pixbuf=p; if (m_pixbuf) g_object_ref(m_pixbuf); } + void SetPixbuf(GdkPixbufAnimation* p); protected: GdkPixbufAnimation *m_pixbuf; - // used temporary by Load() - //bool m_bLoadComplete; +private: + void UnRef(); -protected: + typedef wxAnimationBase base_type; DECLARE_DYNAMIC_CLASS(wxAnimation) }; - // ---------------------------------------------------------------------------- // wxAnimationCtrl // ---------------------------------------------------------------------------- @@ -105,7 +81,7 @@ protected: class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase { public: - wxAnimationCtrl() {} + wxAnimationCtrl() { Init(); } wxAnimationCtrl(wxWindow *parent, wxWindowID id, const wxAnimation& anim = wxNullAnimation, @@ -114,9 +90,13 @@ public: long style = wxAC_DEFAULT_STYLE, const wxString& name = wxAnimationCtrlNameStr) { + Init(); + Create(parent, id, anim, pos, size, style, name); } + void Init(); + bool Create(wxWindow *parent, wxWindowID id, const wxAnimation& anim = wxNullAnimation, const wxPoint& pos = wxDefaultPosition, @@ -133,6 +113,7 @@ public: // event handler public: // public API virtual bool LoadFile(const wxString& filename, wxAnimationType type = wxANIMATION_TYPE_ANY); + virtual bool Load(wxInputStream& stream, wxAnimationType type = wxANIMATION_TYPE_ANY); virtual void SetAnimation(const wxAnimation &anim); virtual wxAnimation GetAnimation() const @@ -147,23 +128,13 @@ public: // public API protected: + virtual void DisplayStaticImage(); virtual wxSize DoGetBestSize() const; void FitToAnimation(); void ClearToBackgroundColour(); - void ResetAnim() - { - if (m_anim) - g_object_unref(m_anim); - m_anim = NULL; - } - - void ResetIter() - { - if (m_iter) - g_object_unref(m_iter); - m_iter = NULL; - } + void ResetAnim(); + void ResetIter(); protected: // internal vars @@ -174,6 +145,7 @@ protected: // internal vars bool m_bPlaying; private: + typedef wxAnimationCtrlBase base_type; DECLARE_DYNAMIC_CLASS(wxAnimationCtrl) DECLARE_EVENT_TABLE() };