X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ba5787676d002f76b4c3944cb598b626f10f058d..4e15d1caa03346c126015019c1fdf093033ef40b:/src/generic/animateg.cpp diff --git a/src/generic/animateg.cpp b/src/generic/animateg.cpp index a2bb840349..d6e44ba9a2 100644 --- a/src/generic/animateg.cpp +++ b/src/generic/animateg.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: animateg.cpp +// Name: src/generic/animateg.cpp // Purpose: wxAnimation and wxAnimationCtrl // Author: Julian Smart and Guillermo Rodriguez Garcia // Modified by: Francesco Montorsi @@ -15,7 +15,7 @@ #pragma hdrstop #endif //__BORLANDC__ -#if wxUSE_ANIMATIONCTRL && (!defined(__WXGTK20__) || defined(__WXUNIVERSAL__)) +#if wxUSE_ANIMATIONCTRL #include "wx/animate.h" @@ -42,7 +42,7 @@ wxAnimationDecoderList wxAnimation::sm_handlers; // ---------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS(wxAnimation, wxAnimationBase) -#define M_ANIMDATA wx_static_cast(wxAnimationDecoder*, m_refData) +#define M_ANIMDATA static_cast(m_refData) wxSize wxAnimation::GetSize() const { @@ -138,7 +138,6 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type) m_refData = handler->Clone(); return M_ANIMDATA->Load(stream); } - } wxLogWarning( _("No handler found for animation type.") ); @@ -187,7 +186,7 @@ void wxAnimation::AddHandler( wxAnimationDecoder *handler ) // a good reason to add and remove duplicate handlers (and they // may) we should probably refcount the duplicates. - wxLogDebug( _T("Adding duplicate animation handler for '%d' type"), + wxLogDebug( wxT("Adding duplicate animation handler for '%d' type"), handler->GetType() ); delete handler; } @@ -203,7 +202,7 @@ void wxAnimation::InsertHandler( wxAnimationDecoder *handler ) else { // see AddHandler for additional comments. - wxLogDebug( _T("Inserting duplicate animation handler for '%d' type"), + wxLogDebug( wxT("Inserting duplicate animation handler for '%d' type"), handler->GetType() ); delete handler; } @@ -255,8 +254,8 @@ class wxAnimationModule: public wxModule DECLARE_DYNAMIC_CLASS(wxAnimationModule) public: wxAnimationModule() {} - bool OnInit() { wxAnimation::InitStandardHandlers(); return true; }; - void OnExit() { wxAnimation::CleanUpHandlers(); }; + bool OnInit() { wxAnimation::InitStandardHandlers(); return true; } + void OnExit() { wxAnimation::CleanUpHandlers(); } }; IMPLEMENT_DYNAMIC_CLASS(wxAnimationModule, wxModule) @@ -307,10 +306,17 @@ wxAnimationCtrl::~wxAnimationCtrl() } bool wxAnimationCtrl::LoadFile(const wxString& filename, wxAnimationType type) +{ + wxFileInputStream fis(filename); + if (!fis.IsOk()) + return false; + return Load(fis, type); +} + +bool wxAnimationCtrl::Load(wxInputStream& stream, wxAnimationType type) { wxAnimation anim; - if (!anim.LoadFile(filename, type) || - !anim.IsOk()) + if ( !anim.Load(stream, type) || !anim.IsOk() ) return false; SetAnimation(anim); @@ -418,7 +424,7 @@ bool wxAnimationCtrl::Play(bool looped) int delay = m_animation.GetDelay(0); if (delay == 0) delay = 1; // 0 is invalid timeout for wxTimer. - m_timer.Start(delay); + m_timer.Start(delay, true); return true; } @@ -498,7 +504,7 @@ void wxAnimationCtrl::IncrementalUpdateBackingStore() case wxANIM_TOPREVIOUS: // this disposal should never be used too often. - // E.g. GIF specification explicitely say to keep the usage of this + // E.g. GIF specification explicitly say to keep the usage of this // disposal limited to the minimum. // In fact it may require a lot of time to restore if (m_currentFrame == 1) @@ -589,7 +595,7 @@ void wxAnimationCtrl::DisposeToBackground() } void wxAnimationCtrl::DisposeToBackground(wxDC& dc) -{ +{ wxColour col = IsUsingWindowBackgroundColour() ? GetBackgroundColour() : m_animation.GetBackgroundColour(); @@ -621,8 +627,8 @@ void wxAnimationCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) if ( m_backingStore.IsOk() ) { - // NOTE: we draw the bitmap explicitely ignoring the mask (if any); - // i.e. we don't want to combine the backing store with the + // NOTE: we draw the bitmap explicitly ignoring the mask (if any); + // i.e. we don't want to combine the backing store with the // possibly wrong preexisting contents of the window! dc.DrawBitmap(m_backingStore, 0, 0, false /* no mask */); } @@ -663,7 +669,7 @@ void wxAnimationCtrl::OnTimer(wxTimerEvent &WXUNUSED(event)) int delay = m_animation.GetDelay(m_currentFrame); if (delay == 0) delay = 1; // 0 is invalid timeout for wxTimer. - m_timer.Start(delay); + m_timer.Start(delay, true); } void wxAnimationCtrl::OnSize(wxSizeEvent &WXUNUSED(event)) @@ -675,9 +681,9 @@ void wxAnimationCtrl::OnSize(wxSizeEvent &WXUNUSED(event)) // when using them inside sizers. if (m_animation.IsOk()) { - // be careful to change the backing store *only* if we are - // playing the animation as otherwise we may be displaying - // the inactive bitmap and overwriting the backing store + // be careful to change the backing store *only* if we are + // playing the animation as otherwise we may be displaying + // the inactive bitmap and overwriting the backing store // with the last played frame is wrong in this case if (IsPlaying()) { @@ -687,5 +693,5 @@ void wxAnimationCtrl::OnSize(wxSizeEvent &WXUNUSED(event)) } } -#endif // wxUSE_ANIMATIONCTRL +#endif // wxUSE_ANIMATIONCTRL