]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/animate/animate.cpp
wxFrameLayout contains wxPen by value, so the wxPen class declaration from wx/pen...
[wxWidgets.git] / contrib / src / animate / animate.cpp
index 2bca70edb856075c2cb96934133ecc83f630b097..64309fc8a6e6414d66180bf8435d0edc4d39f06a 100644 (file)
@@ -245,7 +245,7 @@ bool wxAnimationPlayer::PlayFrame(int frame, wxWindow& window, const wxPoint& WX
     // Draw all intermediate frames that haven't been removed from the
     // animation
     int i;
-    for (i = 0; i < (frame - 1); i++)
+    for (i = 0; i < frame; i++)
     {
         if ((GetDisposalMethod(i) == wxANIM_DONOTREMOVE) || (GetDisposalMethod(i) == wxANIM_UNSPECIFIED))
         {
@@ -270,7 +270,11 @@ bool wxAnimationPlayer::PlayFrame()
     PlayFrame(GetCurrentFrame(), * GetWindow(), GetPosition());
 
     // Set the timer for the next frame
-    m_timer.Start(GetDelay(GetCurrentFrame()));
+    int delay = GetDelay(GetCurrentFrame());
+    if (delay == 0)
+        delay = 1;      // 0 is invalid timeout for wxTimer.
+    
+    m_timer.Start(delay);
 
     m_currentFrame ++;
 
@@ -416,7 +420,7 @@ wxImage* wxGIFAnimation::GetFrame(int i) const
 {
     wxASSERT_MSG( (m_decoder != (wxGIFDecoder*) NULL), _T("m_decoder must be non-NULL"));
 
-    m_decoder->GoFrame(i);
+    m_decoder->GoFrame(i + 1);
 
     wxImage* image = new wxImage;
     m_decoder->ConvertToImage(image);
@@ -427,7 +431,7 @@ wxAnimationDisposal wxGIFAnimation::GetDisposalMethod(int i) const
 {
     wxASSERT_MSG( (m_decoder != (wxGIFDecoder*) NULL), _T("m_decoder must be non-NULL"));
 
-    m_decoder->GoFrame(i);
+    m_decoder->GoFrame(i + 1);
 
     int disposalMethod = m_decoder->GetDisposalMethod();
     return (wxAnimationDisposal) disposalMethod;
@@ -437,7 +441,7 @@ wxRect wxGIFAnimation::GetFrameRect(int i) const
 {
     wxASSERT_MSG( (m_decoder != (wxGIFDecoder*) NULL), _T("m_decoder must be non-NULL"));
 
-    m_decoder->GoFrame(i);
+    m_decoder->GoFrame(i + 1);
 
     wxRect rect(m_decoder->GetLeft(), m_decoder->GetTop(), m_decoder->GetWidth(), m_decoder->GetHeight());
     return rect;
@@ -447,7 +451,7 @@ int wxGIFAnimation::GetDelay(int i) const
 {
     wxASSERT_MSG( (m_decoder != (wxGIFDecoder*) NULL), _T("m_decoder must be non-NULL"));
 
-    m_decoder->GoFrame(i);
+    m_decoder->GoFrame(i + 1);
     return m_decoder->GetDelay();
 }
 
@@ -572,6 +576,8 @@ bool wxAnimationCtrlBase::Create(wxWindow *parent, wxWindowID id,
     m_animationPlayer.SetPosition(wxPoint(0, 0));
     m_animationPlayer.SetDestroyAnimation(FALSE);
 
+    LoadFile(filename);
+    
     return TRUE;
 }