Fix part of [ 1570325 ] wxAnimationCtrl for wxAdv library
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -49,6 +49,7 @@ public: | |||||||
|     virtual wxPoint GetFramePosition(size_t frame) const; |     virtual wxPoint GetFramePosition(size_t frame) const; | ||||||
|     virtual wxAnimationDisposal GetDisposalMethod(size_t frame) const; |     virtual wxAnimationDisposal GetDisposalMethod(size_t frame) const; | ||||||
|     virtual long GetDelay(size_t frame) const; |     virtual long GetDelay(size_t frame) const; | ||||||
|  |     virtual wxColour GetTransparentColour(size_t frame) const; | ||||||
|  |  | ||||||
| public: | public: | ||||||
|     // constructor, destructor, etc. |     // constructor, destructor, etc. | ||||||
|   | |||||||
| @@ -112,6 +112,9 @@ public:     // frame specific data getters | |||||||
|     // if returns -1 then the frame must be displayed forever. |     // if returns -1 then the frame must be displayed forever. | ||||||
|     virtual long GetDelay(size_t frame) const = 0; |     virtual long GetDelay(size_t frame) const = 0; | ||||||
|  |  | ||||||
|  |     // the transparent colour for this frame if any or wxNullColour. | ||||||
|  |     virtual wxColour GetTransparentColour(size_t frame) const = 0; | ||||||
|  |  | ||||||
|     // get global data |     // get global data | ||||||
|     wxSize GetAnimationSize() const { return m_szAnimation; } |     wxSize GetAnimationSize() const { return m_szAnimation; } | ||||||
|     wxColour GetBackgroundColour() const { return m_background; } |     wxColour GetBackgroundColour() const { return m_background; } | ||||||
|   | |||||||
| @@ -42,7 +42,9 @@ public: | |||||||
| public:     // extended interface used by the generic implementation of wxAnimationCtrl | public:     // extended interface used by the generic implementation of wxAnimationCtrl | ||||||
|  |  | ||||||
|     wxPoint GetFramePosition(size_t frame) const; |     wxPoint GetFramePosition(size_t frame) const; | ||||||
|  |     wxSize GetFrameSize(size_t frame) const; | ||||||
|     wxAnimationDisposal GetDisposalMethod(size_t frame) const; |     wxAnimationDisposal GetDisposalMethod(size_t frame) const; | ||||||
|  |     wxColour GetTransparentColour(size_t frame) const; | ||||||
|     wxColour GetBackgroundColour() const; |     wxColour GetBackgroundColour() const; | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
| @@ -68,7 +70,7 @@ public: | |||||||
| class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase | class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     wxAnimationCtrl(); |     wxAnimationCtrl() { Init(); } | ||||||
|     wxAnimationCtrl(wxWindow *parent, |     wxAnimationCtrl(wxWindow *parent, | ||||||
|             wxWindowID id, |             wxWindowID id, | ||||||
|             const wxAnimation& anim = wxNullAnimation, |             const wxAnimation& anim = wxNullAnimation, | ||||||
| @@ -77,9 +79,13 @@ public: | |||||||
|             long style = wxAC_DEFAULT_STYLE, |             long style = wxAC_DEFAULT_STYLE, | ||||||
|             const wxString& name = wxAnimationCtrlNameStr) |             const wxString& name = wxAnimationCtrlNameStr) | ||||||
|     { |     { | ||||||
|  |         Init(); | ||||||
|  |  | ||||||
|         Create(parent, id, anim, pos, size, style, name); |         Create(parent, id, anim, pos, size, style, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     void Init(); | ||||||
|  |  | ||||||
|     bool Create(wxWindow *parent, wxWindowID id, |     bool Create(wxWindow *parent, wxWindowID id, | ||||||
|                 const wxAnimation& anim = wxNullAnimation, |                 const wxAnimation& anim = wxNullAnimation, | ||||||
|                 const wxPoint& pos = wxDefaultPosition, |                 const wxPoint& pos = wxDefaultPosition, | ||||||
| @@ -135,9 +141,10 @@ protected:      // internal utilities | |||||||
|  |  | ||||||
|     // Draw the background; use this when e.g. previous frame had wxANIM_TOBACKGROUND disposal. |     // Draw the background; use this when e.g. previous frame had wxANIM_TOBACKGROUND disposal. | ||||||
|     void DisposeToBackground(wxDC& dc); |     void DisposeToBackground(wxDC& dc); | ||||||
|  |     void DisposeToBackground(wxDC& dc, const wxPoint &pos, const wxSize &sz); | ||||||
|  |  | ||||||
|     void IncrementalUpdateBackingStore(); |     void IncrementalUpdateBackingStore(); | ||||||
|     void RebuildBackingStoreUpToFrame(size_t); |     bool RebuildBackingStoreUpToFrame(size_t); | ||||||
|     void DrawFrame(wxDC &dc, size_t); |     void DrawFrame(wxDC &dc, size_t); | ||||||
|  |  | ||||||
|     virtual wxSize DoGetBestSize() const; |     virtual wxSize DoGetBestSize() const; | ||||||
|   | |||||||
| @@ -71,7 +71,8 @@ public: | |||||||
|     unsigned char* GetData(size_t frame) const; |     unsigned char* GetData(size_t frame) const; | ||||||
|     unsigned char* GetPalette(size_t frame) const; |     unsigned char* GetPalette(size_t frame) const; | ||||||
|     unsigned int GetNcolours(size_t frame) const; |     unsigned int GetNcolours(size_t frame) const; | ||||||
|     int GetTransparentColour(size_t frame) const; |     int GetTransparentColourIndex(size_t frame) const; | ||||||
|  |     wxColour GetTransparentColour(size_t frame) const; | ||||||
|  |  | ||||||
|     virtual wxSize GetFrameSize(size_t frame) const; |     virtual wxSize GetFrameSize(size_t frame) const; | ||||||
|     virtual wxPoint GetFramePosition(size_t frame) const; |     virtual wxPoint GetFramePosition(size_t frame) const; | ||||||
|   | |||||||
| @@ -89,7 +89,7 @@ private: | |||||||
| class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase | class WXDLLIMPEXP_ADV wxAnimationCtrl: public wxAnimationCtrlBase | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     wxAnimationCtrl(); |     wxAnimationCtrl() { Init(); } | ||||||
|     wxAnimationCtrl(wxWindow *parent, |     wxAnimationCtrl(wxWindow *parent, | ||||||
|                         wxWindowID id, |                         wxWindowID id, | ||||||
|                         const wxAnimation& anim = wxNullAnimation, |                         const wxAnimation& anim = wxNullAnimation, | ||||||
| @@ -98,9 +98,13 @@ public: | |||||||
|                         long style = wxAC_DEFAULT_STYLE, |                         long style = wxAC_DEFAULT_STYLE, | ||||||
|                         const wxString& name = wxAnimationCtrlNameStr) |                         const wxString& name = wxAnimationCtrlNameStr) | ||||||
|     { |     { | ||||||
|  |         Init(); | ||||||
|  |  | ||||||
|         Create(parent, id, anim, pos, size, style, name); |         Create(parent, id, anim, pos, size, style, name); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     void Init(); | ||||||
|  |  | ||||||
|     bool Create(wxWindow *parent, wxWindowID id, |     bool Create(wxWindow *parent, wxWindowID id, | ||||||
|                 const wxAnimation& anim = wxNullAnimation, |                 const wxAnimation& anim = wxNullAnimation, | ||||||
|                 const wxPoint& pos = wxDefaultPosition, |                 const wxPoint& pos = wxDefaultPosition, | ||||||
|   | |||||||
| @@ -96,6 +96,18 @@ long wxANIDecoder::GetDelay(size_t frame) const | |||||||
|     return m_info[frame].m_delay; |     return m_info[frame].m_delay; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | wxColour wxANIDecoder::GetTransparentColour(size_t frame) const | ||||||
|  | { | ||||||
|  |     size_t idx = m_info[frame].m_imageIndex; | ||||||
|  |  | ||||||
|  |     if (!m_images[idx].HasMask()) | ||||||
|  |         return wxNullColour; | ||||||
|  |  | ||||||
|  |     return wxColour(m_images[idx].GetMaskRed(), | ||||||
|  |                     m_images[idx].GetMaskGreen(), | ||||||
|  |                     m_images[idx].GetMaskBlue()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||||||
| // ANI reading and decoding | // ANI reading and decoding | ||||||
|   | |||||||
| @@ -125,7 +125,7 @@ bool wxGIFDecoder::ConvertToImage(size_t frame, wxImage *image) const | |||||||
|     pal = GetPalette(frame); |     pal = GetPalette(frame); | ||||||
|     src = GetData(frame); |     src = GetData(frame); | ||||||
|     dst = image->GetData(); |     dst = image->GetData(); | ||||||
|     transparent = GetTransparentColour(frame); |     transparent = GetTransparentColourIndex(frame); | ||||||
|  |  | ||||||
|     /* set transparent colour mask */ |     /* set transparent colour mask */ | ||||||
|     if (transparent != -1) |     if (transparent != -1) | ||||||
| @@ -206,10 +206,22 @@ long wxGIFDecoder::GetDelay(size_t frame) const | |||||||
|     return GetFrame(frame)->delay; |     return GetFrame(frame)->delay; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | wxColour wxGIFDecoder::GetTransparentColour(size_t frame) const | ||||||
|  | { | ||||||
|  |     unsigned char *pal = GetFrame(frame)->pal; | ||||||
|  |     int n = GetFrame(frame)->transparent; | ||||||
|  |     if (n == -1) | ||||||
|  |         return wxNullColour; | ||||||
|  |  | ||||||
|  |     return wxColour(pal[n*3 + 0], | ||||||
|  |                     pal[n*3 + 1], | ||||||
|  |                     pal[n*3 + 2]); | ||||||
|  | } | ||||||
|  |  | ||||||
| unsigned char* wxGIFDecoder::GetData(size_t frame) const    { return (GetFrame(frame)->p); } | unsigned char* wxGIFDecoder::GetData(size_t frame) const    { return (GetFrame(frame)->p); } | ||||||
| unsigned char* wxGIFDecoder::GetPalette(size_t frame) const { return (GetFrame(frame)->pal); } | unsigned char* wxGIFDecoder::GetPalette(size_t frame) const { return (GetFrame(frame)->pal); } | ||||||
| unsigned int wxGIFDecoder::GetNcolours(size_t frame) const  { return (GetFrame(frame)->ncolours); } | unsigned int wxGIFDecoder::GetNcolours(size_t frame) const  { return (GetFrame(frame)->ncolours); } | ||||||
| int wxGIFDecoder::GetTransparentColour(size_t frame) const  { return (GetFrame(frame)->transparent); } | int wxGIFDecoder::GetTransparentColourIndex(size_t frame) const  { return (GetFrame(frame)->transparent); } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -82,6 +82,13 @@ wxPoint wxAnimation::GetFramePosition(size_t frame) const | |||||||
|     return M_ANIMDATA->GetFramePosition(frame); |     return M_ANIMDATA->GetFramePosition(frame); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | wxSize wxAnimation::GetFrameSize(size_t frame) const | ||||||
|  | { | ||||||
|  |     wxCHECK_MSG( IsOk(), wxDefaultSize, wxT("invalid animation") ); | ||||||
|  |  | ||||||
|  |     return M_ANIMDATA->GetFrameSize(frame); | ||||||
|  | } | ||||||
|  |  | ||||||
| wxAnimationDisposal wxAnimation::GetDisposalMethod(size_t frame) const | wxAnimationDisposal wxAnimation::GetDisposalMethod(size_t frame) const | ||||||
| { | { | ||||||
|     wxCHECK_MSG( IsOk(), wxANIM_UNSPECIFIED, wxT("invalid animation") ); |     wxCHECK_MSG( IsOk(), wxANIM_UNSPECIFIED, wxT("invalid animation") ); | ||||||
| @@ -89,6 +96,13 @@ wxAnimationDisposal wxAnimation::GetDisposalMethod(size_t frame) const | |||||||
|     return M_ANIMDATA->GetDisposalMethod(frame); |     return M_ANIMDATA->GetDisposalMethod(frame); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | wxColour wxAnimation::GetTransparentColour(size_t frame) const | ||||||
|  | { | ||||||
|  |     wxCHECK_MSG( IsOk(), wxNullColour, wxT("invalid animation") ); | ||||||
|  |  | ||||||
|  |     return M_ANIMDATA->GetTransparentColour(frame); | ||||||
|  | } | ||||||
|  |  | ||||||
| wxColour wxAnimation::GetBackgroundColour() const | wxColour wxAnimation::GetBackgroundColour() const | ||||||
| { | { | ||||||
|     wxCHECK_MSG( IsOk(), wxNullColour, wxT("invalid animation") ); |     wxCHECK_MSG( IsOk(), wxNullColour, wxT("invalid animation") ); | ||||||
| @@ -259,12 +273,15 @@ BEGIN_EVENT_TABLE(wxAnimationCtrl, wxAnimationCtrlBase) | |||||||
|     EVT_TIMER(wxID_ANY, wxAnimationCtrl::OnTimer) |     EVT_TIMER(wxID_ANY, wxAnimationCtrl::OnTimer) | ||||||
| END_EVENT_TABLE() | END_EVENT_TABLE() | ||||||
|  |  | ||||||
| wxAnimationCtrl::wxAnimationCtrl() | void wxAnimationCtrl::Init() | ||||||
| { | { | ||||||
|     m_currentFrame = 0; |     m_currentFrame = 0; | ||||||
|     m_looped = false; |     m_looped = false; | ||||||
|     m_isPlaying = false; |     m_isPlaying = false; | ||||||
|     m_useWinBackgroundColour = false; |  | ||||||
|  |     // use the window background colour by default to be consistent | ||||||
|  |     // with the GTK+ native version | ||||||
|  |     m_useWinBackgroundColour = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| bool wxAnimationCtrl::Create(wxWindow *parent, wxWindowID id, | bool wxAnimationCtrl::Create(wxWindow *parent, wxWindowID id, | ||||||
| @@ -272,10 +289,6 @@ bool wxAnimationCtrl::Create(wxWindow *parent, wxWindowID id, | |||||||
|             const wxSize& size, long style, const wxString& name) |             const wxSize& size, long style, const wxString& name) | ||||||
| { | { | ||||||
|     m_animation = animation; |     m_animation = animation; | ||||||
|     m_currentFrame = 0; |  | ||||||
|     m_looped = true; |  | ||||||
|     m_isPlaying = false; |  | ||||||
|     m_useWinBackgroundColour = false; |  | ||||||
|     m_timer.SetOwner(this); |     m_timer.SetOwner(this); | ||||||
|  |  | ||||||
|     if (!base_type::Create(parent, id, pos, size, style, wxDefaultValidator, name)) |     if (!base_type::Create(parent, id, pos, size, style, wxDefaultValidator, name)) | ||||||
| @@ -325,7 +338,13 @@ void wxAnimationCtrl::SetAnimation(const wxAnimation& animation) | |||||||
|     // display first frame |     // display first frame | ||||||
|     m_currentFrame = 0; |     m_currentFrame = 0; | ||||||
|     if (m_animation.IsOk()) |     if (m_animation.IsOk()) | ||||||
|         RebuildBackingStoreUpToFrame(0); |     { | ||||||
|  |         if (!RebuildBackingStoreUpToFrame(0)) | ||||||
|  |         { | ||||||
|  |             m_animation = wxNullAnimation; | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         // clear to |         // clear to | ||||||
| @@ -364,12 +383,14 @@ bool wxAnimationCtrl::Play(bool looped) | |||||||
|     int oldframe = m_currentFrame; |     int oldframe = m_currentFrame; | ||||||
|     m_looped = looped; |     m_looped = looped; | ||||||
|     m_currentFrame = 0; |     m_currentFrame = 0; | ||||||
|     m_isPlaying = true; |  | ||||||
|  |  | ||||||
|     // small optimization: if the back store was already updated to the |     // small optimization: if the back store was already updated to the | ||||||
|     // first frame, don't rebuild it |     // first frame, don't rebuild it | ||||||
|     if (oldframe != 0) |     if (oldframe != 0) | ||||||
|         RebuildBackingStoreUpToFrame(0); |         if (!RebuildBackingStoreUpToFrame(0)) | ||||||
|  |             return false; | ||||||
|  |  | ||||||
|  |     m_isPlaying = true; | ||||||
|  |  | ||||||
|     // DrawCurrentFrame() will use our updated backing store |     // DrawCurrentFrame() will use our updated backing store | ||||||
|     wxClientDC clientDC(this); |     wxClientDC clientDC(this); | ||||||
| @@ -390,7 +411,7 @@ bool wxAnimationCtrl::Play(bool looped) | |||||||
| // wxAnimationCtrl - rendering methods | // wxAnimationCtrl - rendering methods | ||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
|  |  | ||||||
| void wxAnimationCtrl::RebuildBackingStoreUpToFrame(size_t frame) | bool wxAnimationCtrl::RebuildBackingStoreUpToFrame(size_t frame) | ||||||
| { | { | ||||||
|     // if we've not created the backing store yet or it's too |     // if we've not created the backing store yet or it's too | ||||||
|     // small, then recreate it |     // small, then recreate it | ||||||
| @@ -402,7 +423,8 @@ void wxAnimationCtrl::RebuildBackingStoreUpToFrame(size_t frame) | |||||||
|     if ( !m_backingStore.IsOk() || |     if ( !m_backingStore.IsOk() || | ||||||
|             m_backingStore.GetWidth() < w || m_backingStore.GetHeight() < h ) |             m_backingStore.GetWidth() < w || m_backingStore.GetHeight() < h ) | ||||||
|     { |     { | ||||||
|         m_backingStore.Create(w, h); |         if (!m_backingStore.Create(w, h)) | ||||||
|  |             return false; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     wxMemoryDC dc; |     wxMemoryDC dc; | ||||||
| @@ -419,11 +441,16 @@ void wxAnimationCtrl::RebuildBackingStoreUpToFrame(size_t frame) | |||||||
|         { |         { | ||||||
|             DrawFrame(dc, i); |             DrawFrame(dc, i); | ||||||
|         } |         } | ||||||
|  |         else if (m_animation.GetDisposalMethod(i) == wxANIM_TOBACKGROUND) | ||||||
|  |             DisposeToBackground(dc, m_animation.GetFramePosition(i), | ||||||
|  |                                     m_animation.GetFrameSize(i)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // finally draw this frame |     // finally draw this frame | ||||||
|     DrawFrame(dc, frame); |     DrawFrame(dc, frame); | ||||||
|     dc.SelectObject(wxNullBitmap); |     dc.SelectObject(wxNullBitmap); | ||||||
|  |  | ||||||
|  |     return true; | ||||||
| } | } | ||||||
|  |  | ||||||
| void wxAnimationCtrl::IncrementalUpdateBackingStore() | void wxAnimationCtrl::IncrementalUpdateBackingStore() | ||||||
| @@ -447,7 +474,8 @@ void wxAnimationCtrl::IncrementalUpdateBackingStore() | |||||||
|         switch (m_animation.GetDisposalMethod(m_currentFrame-1)) |         switch (m_animation.GetDisposalMethod(m_currentFrame-1)) | ||||||
|         { |         { | ||||||
|         case wxANIM_TOBACKGROUND: |         case wxANIM_TOBACKGROUND: | ||||||
|             DisposeToBackground(dc); |             DisposeToBackground(dc, m_animation.GetFramePosition(m_currentFrame-1), | ||||||
|  |                                     m_animation.GetFrameSize(m_currentFrame-1)); | ||||||
|             break; |             break; | ||||||
|  |  | ||||||
|         case wxANIM_TOPREVIOUS: |         case wxANIM_TOPREVIOUS: | ||||||
| @@ -462,7 +490,8 @@ void wxAnimationCtrl::IncrementalUpdateBackingStore() | |||||||
|                 DisposeToBackground(dc); |                 DisposeToBackground(dc); | ||||||
|             } |             } | ||||||
|             else |             else | ||||||
|                 RebuildBackingStoreUpToFrame(m_currentFrame-2); |                 if (!RebuildBackingStoreUpToFrame(m_currentFrame-2)) | ||||||
|  |                     Stop(); | ||||||
|             break; |             break; | ||||||
|  |  | ||||||
|         case wxANIM_DONOTREMOVE: |         case wxANIM_DONOTREMOVE: | ||||||
| @@ -501,12 +530,23 @@ void wxAnimationCtrl::DisposeToBackground(wxDC& dc) | |||||||
| {  | {  | ||||||
|     wxColour col = IsUsingWindowBackgroundColour() |     wxColour col = IsUsingWindowBackgroundColour() | ||||||
|                     ? GetBackgroundColour() |                     ? GetBackgroundColour() | ||||||
|                     : m_animation.GetBackgroundColour() ; |                     : m_animation.GetBackgroundColour(); | ||||||
|     wxBrush brush(col); |     wxBrush brush(col); | ||||||
|     dc.SetBackground(brush); |     dc.SetBackground(brush); | ||||||
|     dc.Clear(); |     dc.Clear(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void wxAnimationCtrl::DisposeToBackground(wxDC& dc, const wxPoint &pos, const wxSize &sz) | ||||||
|  | { | ||||||
|  |     wxColour col = IsUsingWindowBackgroundColour() | ||||||
|  |                     ? GetBackgroundColour() | ||||||
|  |                     : m_animation.GetBackgroundColour(); | ||||||
|  |     wxBrush brush(col); | ||||||
|  |     dc.SetBrush(brush);         // SetBrush and not SetBackground !! | ||||||
|  |     dc.SetPen(*wxTRANSPARENT_PEN); | ||||||
|  |     dc.DrawRectangle(pos, sz); | ||||||
|  | } | ||||||
|  |  | ||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
| // wxAnimationCtrl - event handlers | // wxAnimationCtrl - event handlers | ||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
| @@ -561,7 +601,8 @@ void wxAnimationCtrl::OnSize(wxSizeEvent &WXUNUSED(event)) | |||||||
|     //     for big animations as the backing store must be |     //     for big animations as the backing store must be | ||||||
|     //     extended and rebuilt. Try to avoid it!! |     //     extended and rebuilt. Try to avoid it!! | ||||||
|     if (m_animation.IsOk()) |     if (m_animation.IsOk()) | ||||||
|         RebuildBackingStoreUpToFrame(m_currentFrame); |         if (!RebuildBackingStoreUpToFrame(m_currentFrame)) | ||||||
|  |             Stop();     // in case we are playing | ||||||
| } | } | ||||||
|  |  | ||||||
| #endif      // wxUSE_ANIMATIONCTRL | #endif      // wxUSE_ANIMATIONCTRL | ||||||
|   | |||||||
| @@ -180,7 +180,7 @@ BEGIN_EVENT_TABLE(wxAnimationCtrl, wxAnimationCtrlBase) | |||||||
|     EVT_TIMER(wxID_ANY, wxAnimationCtrl::OnTimer) |     EVT_TIMER(wxID_ANY, wxAnimationCtrl::OnTimer) | ||||||
| END_EVENT_TABLE() | END_EVENT_TABLE() | ||||||
|  |  | ||||||
| wxAnimationCtrl::wxAnimationCtrl() | void wxAnimationCtrl::Init() | ||||||
| { | { | ||||||
|     m_anim = NULL; |     m_anim = NULL; | ||||||
|     m_iter = NULL; |     m_iter = NULL; | ||||||
| @@ -215,9 +215,6 @@ bool wxAnimationCtrl::Create( wxWindow *parent, wxWindowID id, | |||||||
|     PostCreation(size); |     PostCreation(size); | ||||||
|     SetBestSize(size); |     SetBestSize(size); | ||||||
|  |  | ||||||
|     m_anim = NULL; |  | ||||||
|     m_iter = NULL; |  | ||||||
|     m_bPlaying = false; |  | ||||||
|     if (anim != wxNullAnimation) |     if (anim != wxNullAnimation) | ||||||
|         SetAnimation(anim); |         SetAnimation(anim); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user