X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/72045d5768a126191a907bc640c28e81a11afdd6..ad667945478cda0c0a33e154f1d4403402cffb9e:/include/wx/gtk/animate.h diff --git a/include/wx/gtk/animate.h b/include/wx/gtk/animate.h index 6e4704a42c..d9dbe1b72a 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,14 @@ // 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(GdkPixbufAnimation *p = NULL) { m_pixbuf = p; } + wxAnimation(const wxAnimation&); + ~wxAnimation() { UnRef(); } + + wxAnimation& operator= (const wxAnimation&); virtual bool IsOk() const { return m_pixbuf != NULL; } @@ -54,47 +41,36 @@ public: virtual size_t GetFrameCount() const { return 0; } - virtual wxImage GetFrame(size_t i) const - { return wxNullImage; } + virtual wxImage GetFrame(size_t i) const; // we can retrieve the delay for a frame only after building // a GdkPixbufAnimationIter... virtual int GetDelay(size_t i) 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, @@ -144,26 +124,17 @@ public: // public API virtual bool IsPlaying() const; bool SetBackgroundColour( const wxColour &colour ); + void SetInactiveBitmap(const wxBitmap &bmp); protected: virtual wxSize DoGetBestSize() const; void FitToAnimation(); void ClearToBackgroundColour(); + void DisplayStaticImage(); - 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() };