]> git.saurik.com Git - wxWidgets.git/blobdiff - src/xrc/xmladv.cpp
Ensure there is valid context for DrawRectangle
[wxWidgets.git] / src / xrc / xmladv.cpp
index ad3c96aa9315d22659d03b0866378f2111477d13..729c5b2892127534860ad0dc997171d67be5ccfc 100644 (file)
     #include "wx/log.h"
 #endif // WX_PRECOMP
 
+#include "wx/animate.h"
+#include "wx/scopedptr.h"
+
 // ============================================================================
 // implementation
 // ============================================================================
 
 #if wxUSE_ANIMATIONCTRL
-wxAnimation wxXmlResourceHandler::GetAnimation(const wxString& param)
+wxAnimation* wxXmlResourceHandlerImpl::GetAnimation(const wxString& param)
 {
     const wxString name = GetParamValue(param);
     if ( name.empty() )
-        return wxNullAnimation;
+        return NULL;
 
     // load the animation from file
-    wxAnimation ani;
+    wxScopedPtr<wxAnimation> ani(new wxAnimation);
 #if wxUSE_FILESYSTEM
     wxFSFile * const
         fsfile = GetCurFileSystem().OpenFile(name, wxFS_READ | wxFS_SEEKABLE);
     if ( fsfile )
     {
-        ani.Load(*fsfile->GetStream());
+        ani->Load(*fsfile->GetStream());
         delete fsfile;
     }
 #else
-    ani.LoadFile(name);
+    ani->LoadFile(name);
 #endif
 
-    if ( !ani.IsOk() )
+    if ( !ani->IsOk() )
     {
-        wxLogError(_("XRC resource: Cannot create animation from '%s'."),
-                   name.c_str());
-        return wxNullAnimation;
+        ReportParamError
+        (
+            param,
+            wxString::Format("cannot create animation from \"%s\"", name)
+        );
+        return NULL;
     }
 
-    return ani;
+    return ani.release();
 }
 #endif // wxUSE_ANIMATIONCTRL