]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wrappers and a demo for the animate contrib
authorRobin Dunn <robin@alldunn.com>
Mon, 4 Apr 2005 23:15:29 +0000 (23:15 +0000)
committerRobin Dunn <robin@alldunn.com>
Mon, 4 Apr 2005 23:15:29 +0000 (23:15 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33337 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

23 files changed:
wxPython/config.py
wxPython/contrib/animate/_animate_rename.i [new file with mode: 0644]
wxPython/contrib/animate/animate.i [new file with mode: 0644]
wxPython/contrib/animate/gtk/animate.py [new file with mode: 0644]
wxPython/contrib/animate/gtk/animate_wrap.cpp [new file with mode: 0644]
wxPython/demo/GIFAnimationCtrl.py [new file with mode: 0644]
wxPython/demo/Main.py
wxPython/demo/bitmaps/ani-avtr.gif [new file with mode: 0644]
wxPython/demo/bitmaps/ani-bookworm.gif [new file with mode: 0644]
wxPython/demo/bitmaps/ani-bttrfly.gif [new file with mode: 0644]
wxPython/demo/bitmaps/ani-hooked.gif [new file with mode: 0644]
wxPython/demo/bitmaps/ani-man.gif [new file with mode: 0644]
wxPython/demo/bitmaps/ani-phone.gif [new file with mode: 0644]
wxPython/demo/bitmaps/ani-walker.gif [new file with mode: 0644]
wxPython/demo/bitmaps/tbttrfly.gif [new file with mode: 0644]
wxPython/distrib/DIRLIST
wxPython/distrib/mac/wxPythonOSX/build
wxPython/distrib/make_installer.py
wxPython/distrib/wxPythonFull.spec.in
wxPython/docs/BUILD.txt
wxPython/docs/CHANGES.txt
wxPython/setup.py
wxPython/wxPython/animate.py [new file with mode: 0644]

index 851c315f895628c8cd6e27f86ecd17bb859c9c1b..8e8b617d3d4aa45ce9477c661a5a2f94b023cc5b 100644 (file)
@@ -82,6 +82,7 @@ BUILD_GLCANVAS = 1 # If true, build the contrib/glcanvas extension module
 BUILD_OGL = 0      # If true, build the contrib/ogl extension module
 BUILD_STC = 1      # If true, build the contrib/stc extension module
 BUILD_GIZMOS = 1   # Build a module for the gizmos contrib library
+BUILD_ANIMATE = 1  # Build a module for the animate contrib library
 BUILD_DLLWIDGET = 0# Build a module that enables unknown wx widgets
                    # to be loaded from a DLL and to be used from Python.
 
diff --git a/wxPython/contrib/animate/_animate_rename.i b/wxPython/contrib/animate/_animate_rename.i
new file mode 100644 (file)
index 0000000..eec258e
--- /dev/null
@@ -0,0 +1,16 @@
+// A bunch of %rename directives generated by BuildRenamers in config.py
+// in order to remove the wx prefix from all global scope names.
+
+#ifndef BUILDING_RENAMERS
+
+%rename(ANIM_UNSPECIFIED)                   wxANIM_UNSPECIFIED;
+%rename(ANIM_DONOTREMOVE)                   wxANIM_DONOTREMOVE;
+%rename(ANIM_TOBACKGROUND)                  wxANIM_TOBACKGROUND;
+%rename(ANIM_TOPREVIOUS)                    wxANIM_TOPREVIOUS;
+%rename(AnimationPlayer)                    wxAnimationPlayer;
+%rename(AnimationBase)                      wxAnimationBase;
+%rename(GIFAnimation)                       wxGIFAnimation;
+%rename(AN_FIT_ANIMATION)                   wxAN_FIT_ANIMATION;
+%rename(GIFAnimationCtrl)                   wxGIFAnimationCtrl;
+
+#endif
diff --git a/wxPython/contrib/animate/animate.i b/wxPython/contrib/animate/animate.i
new file mode 100644 (file)
index 0000000..ea09116
--- /dev/null
@@ -0,0 +1,323 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        animate.i
+// Purpose:     Wrappers for the animation classes in wx/contrib
+//
+// Author:      Robin Dunn
+//
+// Created:     4-April-2005
+// RCS-ID:      $Id$
+// Copyright:   (c) 2005 by Total Control Software
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+%define DOCSTRING
+"Simple animation player classes, including `wxGIFAnimationCtrl` for displaying
+animated GIF files
+"
+%enddef
+
+%module(package="wx", docstring=DOCSTRING) animate
+
+
+%{
+#include "wx/wxPython/wxPython.h"
+#include "wx/wxPython/pyclasses.h"
+#include <wx/animate/animate.h>
+%}
+
+//---------------------------------------------------------------------------
+
+%import core.i
+%pythoncode { import wx }
+%pythoncode { __docfilter__ = wx._core.__DocFilter(globals()) }
+
+
+MAKE_CONST_WXSTRING2(AnimationControlNameStr,     wxT("animationControl"));
+MAKE_CONST_WXSTRING_NOSWIG(EmptyString);
+
+%include _animate_rename.i
+
+//---------------------------------------------------------------------------
+
+
+enum wxAnimationDisposal
+{
+    wxANIM_UNSPECIFIED = -1,
+    wxANIM_DONOTREMOVE = 0,
+    wxANIM_TOBACKGROUND = 1,
+    wxANIM_TOPREVIOUS = 2
+} ;
+
+
+/* wxAnimationPlayer
+ * Create an object of this class, and either pass an wxXXXAnimation object in
+ * the constructor, or call SetAnimation. Then call Play().  The wxAnimation
+ * object is only destroyed in the destructor if destroyAnimation is true in
+ * the constructor.
+ */
+
+class wxAnimationPlayer : public wxObject
+{
+public:
+    wxAnimationPlayer(wxAnimationBase *animation = NULL,
+                      bool destroyAnimation = false);
+    ~wxAnimationPlayer();
+
+
+    void SetAnimation(wxAnimationBase* animation, bool destroyAnimation = false);
+    wxAnimationBase* GetAnimation() const;
+
+    void SetDestroyAnimation(bool destroyAnimation);
+    bool GetDestroyAnimation() const;
+
+    void SetCurrentFrame(int currentFrame);
+    int GetCurrentFrame() const;
+
+    void SetWindow(wxWindow* window);
+    wxWindow* GetWindow() const;
+
+    void SetPosition(const wxPoint& pos);
+    wxPoint GetPosition() const;
+
+    void SetLooped(bool looped);
+    bool GetLooped() const;
+
+    bool HasAnimation() const;
+
+    bool IsPlaying() const;
+
+    // Specify whether the GIF's background colour is to be shown,
+    // or whether the window background should show through (the default)
+    void UseBackgroundColour(bool useBackground);
+    bool UsingBackgroundColour() const;
+
+    // Set and use a user-specified background colour (valid for transparent
+    // animations only)
+    void SetCustomBackgroundColour(const wxColour& col,
+                                   bool useCustomBackgroundColour = true);
+
+    bool UsingCustomBackgroundColour() const;
+    const wxColour& GetCustomBackgroundColour() const;
+
+    // Another refinement - suppose we're drawing the animation in a separate
+    // control or window. We may wish to use the background of the parent
+    // window as the background of our animation. This allows us to specify
+    // whether to grab from the parent or from this window.
+    void UseParentBackground(bool useParent);
+    bool UsingParentBackground() const;
+
+
+    // Play
+    virtual bool Play(wxWindow& window, const wxPoint& pos = wxPoint(0, 0), bool looped = true);
+
+    // Build animation (list of wxImages). If not called before Play
+    // is called, Play will call this automatically.
+    virtual bool Build();
+
+    // Stop the animation
+    virtual void Stop();
+
+    // Draw the current view of the animation into this DC.
+    // Call this from your OnPaint, for example.
+    virtual void Draw(wxDC& dc);
+
+
+    virtual int GetFrameCount() const;
+    virtual wxImage* GetFrame(int i) const; // Creates a new wxImage
+    virtual wxAnimationDisposal GetDisposalMethod(int i) const;
+    virtual wxRect GetFrameRect(int i) const; // Position and size of frame
+    virtual int GetDelay(int i) const; // Delay for this frame
+
+    virtual wxSize GetLogicalScreenSize() const;
+    virtual bool GetBackgroundColour(wxColour& col) const ;
+    virtual bool GetTransparentColour(wxColour& col) const ;
+
+
+    // Play the frame
+    virtual bool PlayFrame(int frame, wxWindow& window, const wxPoint& pos);
+    %Rename(PlayNextFrame,
+            virtual bool, PlayFrame());
+    
+    virtual void DrawFrame(int frame, wxDC& dc, const wxPoint& pos);
+    virtual void DrawBackground(wxDC& dc, const wxPoint& pos, const wxColour& colour);
+
+    // Clear the wxImage cache
+    virtual void ClearCache();
+
+    // Save the pertinent area of the window so we can restore
+    // it if drawing transparently
+    void SaveBackground(const wxRect& rect);
+
+    wxBitmap& GetBackingStore();
+
+};
+
+
+//---------------------------------------------------------------------------
+
+/* wxAnimationBase
+ * Base class for animations.
+ * A wxXXXAnimation only stores the animation, providing accessors to
+ * wxAnimationPlayer.  Currently an animation is read-only, but we could
+ * extend the API for adding frames programmatically, and perhaps have a
+ * wxMemoryAnimation class that stores its frames in memory, and is able to
+ * save all files with suitable filenames. You could then use e.g. Ulead GIF
+ * Animator to load the image files into a GIF animation.
+ */
+
+class wxAnimationBase : public wxObject
+{
+public:
+    //wxAnimationBase() {};  // It's an ABC
+    ~wxAnimationBase() {};
+
+//// Accessors. Should be overridden by each derived class.
+
+    virtual int GetFrameCount() const;
+    virtual wxImage* GetFrame(int i) const;
+    virtual wxAnimationDisposal GetDisposalMethod(int i) const;
+    virtual wxRect GetFrameRect(int i) const; // Position and size of frame
+    virtual int GetDelay(int i) const; // Delay for this frame
+
+    virtual wxSize GetLogicalScreenSize() const;
+    virtual bool GetBackgroundColour(wxColour& col) const;
+    virtual bool GetTransparentColour(wxColour& col) const;
+
+    // Is the animation OK?
+    virtual bool IsValid() const;
+
+    virtual bool LoadFile(const wxString& filename);
+};
+
+
+// TODO:  Add a wxPyAnimationBase class
+
+//---------------------------------------------------------------------------
+
+/* wxGIFAnimation
+ * This will be moved to a separate file in due course.
+ */
+class wxGIFAnimation : public wxAnimationBase
+{
+public:
+    wxGIFAnimation() ;
+    ~wxGIFAnimation() ;
+
+//// Accessors
+
+    virtual int GetFrameCount() const;
+    virtual wxImage* GetFrame(int i) const;
+    virtual wxAnimationDisposal GetDisposalMethod(int i) const;
+    virtual wxRect GetFrameRect(int i) const; // Position and size of frame
+    virtual int GetDelay(int i) const; // Delay for this frame
+
+    virtual wxSize GetLogicalScreenSize() const ;
+    virtual bool GetBackgroundColour(wxColour& col) const ;
+    virtual bool GetTransparentColour(wxColour& col) const ;
+
+    virtual bool IsValid() const;
+
+//// Operations
+
+    virtual bool LoadFile(const wxString& filename);
+
+};
+
+
+//---------------------------------------------------------------------------
+
+/*
+ * wxAnimationCtrlBase
+ * Abstract base class for format-specific animation controls.
+ * This class implements most of the functionality; all a derived
+ * class has to do is create the appropriate animation class on demand.
+ */
+
+// Resize to animation size if this is set
+enum { wxAN_FIT_ANIMATION };
+
+
+// class  wxAnimationCtrlBase: public wxControl
+// {
+// public:
+//     %pythonAppend wxAnimationCtrlBase         "self._setOORInfo(self)"
+//     %pythonAppend wxAnimationCtrlBase()       ""
+
+//     wxAnimationCtrlBase(wxWindow *parent, wxWindowID id,
+//                         const wxString& filename = wxPyEmptyString,
+//                         const wxPoint& pos = wxDefaultPosition,
+//                         const wxSize& size = wxDefaultSize,
+//                         long style = wxAN_FIT_ANIMATION|wxNO_BORDER,
+//                         const wxString& name = wxPyAnimationControlNameStr);
+//     %RenameCtor(PreAnimationCtrlBase, wxAnimationCtrlBase());
+
+//     bool Create(wxWindow *parent, wxWindowID id,
+//                 const wxString& filename = wxPyEmptyString,
+//                 const wxPoint& pos = wxDefaultPosition,
+//                 const wxSize& size = wxDefaultSize,
+//                 long style = wxAN_FIT_ANIMATION|wxNO_BORDER,
+//                 const wxString& name = wxPyAnimationControlNameStr);
+
+//     //// Operations
+//     virtual bool LoadFile(const wxString& filename = wxPyEmptyString);
+//     virtual bool Play(bool looped = true) ;
+//     virtual void Stop();
+//     virtual void FitToAnimation();
+
+//     //// Accessors
+//     virtual bool IsPlaying() const;
+//     virtual wxAnimationPlayer& GetPlayer();
+//     virtual wxAnimationBase* GetAnimation();
+
+//     const wxString& GetFilename() const;
+//     void SetFilename(const wxString& filename);
+
+// };
+
+
+/*
+ * wxGIFAnimationCtrl
+ * Provides a GIF animation class when required.
+ */
+
+MustHaveApp(wxGIFAnimationCtrl);
+class wxGIFAnimationCtrl: public wxControl  //wxAnimationCtrlBase
+{
+public:
+    %pythonAppend wxGIFAnimationCtrl         "self._setOORInfo(self)"
+    %pythonAppend wxGIFAnimationCtrl()       ""
+
+    wxGIFAnimationCtrl(wxWindow *parent, wxWindowID id=-1,
+                       const wxString& filename = wxPyEmptyString,
+                       const wxPoint& pos = wxDefaultPosition,
+                       const wxSize& size = wxDefaultSize,
+                       long style = wxAN_FIT_ANIMATION|wxNO_BORDER,
+                       const wxString& name = wxPyAnimationControlNameStr);
+    %RenameCtor(PreGIFAnimationCtrl, wxGIFAnimationCtrl());
+
+    bool Create(wxWindow *parent, wxWindowID id=-1,
+                const wxString& filename = wxPyEmptyString,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = wxAN_FIT_ANIMATION|wxNO_BORDER,
+                const wxString& name = wxPyAnimationControlNameStr);
+
+    //// Operations
+    virtual bool LoadFile(const wxString& filename = wxPyEmptyString);
+    virtual bool Play(bool looped = true) ;
+    virtual void Stop();
+    virtual void FitToAnimation();
+
+    //// Accessors
+    virtual bool IsPlaying() const;
+    virtual wxAnimationPlayer& GetPlayer();
+    virtual wxAnimationBase* GetAnimation();
+
+    const wxString& GetFilename() const;
+    void SetFilename(const wxString& filename);
+    
+};
+
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+
diff --git a/wxPython/contrib/animate/gtk/animate.py b/wxPython/contrib/animate/gtk/animate.py
new file mode 100644 (file)
index 0000000..a86f400
--- /dev/null
@@ -0,0 +1,446 @@
+# This file was created automatically by SWIG.
+# Don't modify this file, modify the SWIG interface instead.
+
+"""
+Simple animation player classes, including `wxGIFAnimationCtrl` for displaying
+animated GIF files
+
+"""
+
+import _animate
+
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name) or (name == "thisown"):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+del types
+
+
+def _swig_setattr_nondynamic_method(set):
+    def set_attr(self,name,value):
+        if hasattr(self,name) or (name in ("this", "thisown")):
+            set(self,name,value)
+        else:
+            raise AttributeError("You cannot add attributes to %s" % self)
+    return set_attr
+
+
+import _core
+import wx 
+__docfilter__ = wx._core.__DocFilter(globals()) 
+ANIM_UNSPECIFIED = _animate.ANIM_UNSPECIFIED
+ANIM_DONOTREMOVE = _animate.ANIM_DONOTREMOVE
+ANIM_TOBACKGROUND = _animate.ANIM_TOBACKGROUND
+ANIM_TOPREVIOUS = _animate.ANIM_TOPREVIOUS
+class AnimationPlayer(_core.Object):
+    """Proxy of C++ AnimationPlayer class"""
+    def __repr__(self):
+        return "<%s.%s; proxy of C++ wxAnimationPlayer instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
+    def __init__(self, *args, **kwargs):
+        """__init__(self, AnimationBase animation=None, bool destroyAnimation=False) -> AnimationPlayer"""
+        newobj = _animate.new_AnimationPlayer(*args, **kwargs)
+        self.this = newobj.this
+        self.thisown = 1
+        del newobj.thisown
+    def __del__(self, destroy=_animate.delete_AnimationPlayer):
+        """__del__(self)"""
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+
+    def SetAnimation(*args, **kwargs):
+        """SetAnimation(self, AnimationBase animation, bool destroyAnimation=False)"""
+        return _animate.AnimationPlayer_SetAnimation(*args, **kwargs)
+
+    def GetAnimation(*args, **kwargs):
+        """GetAnimation(self) -> AnimationBase"""
+        return _animate.AnimationPlayer_GetAnimation(*args, **kwargs)
+
+    def SetDestroyAnimation(*args, **kwargs):
+        """SetDestroyAnimation(self, bool destroyAnimation)"""
+        return _animate.AnimationPlayer_SetDestroyAnimation(*args, **kwargs)
+
+    def GetDestroyAnimation(*args, **kwargs):
+        """GetDestroyAnimation(self) -> bool"""
+        return _animate.AnimationPlayer_GetDestroyAnimation(*args, **kwargs)
+
+    def SetCurrentFrame(*args, **kwargs):
+        """SetCurrentFrame(self, int currentFrame)"""
+        return _animate.AnimationPlayer_SetCurrentFrame(*args, **kwargs)
+
+    def GetCurrentFrame(*args, **kwargs):
+        """GetCurrentFrame(self) -> int"""
+        return _animate.AnimationPlayer_GetCurrentFrame(*args, **kwargs)
+
+    def SetWindow(*args, **kwargs):
+        """SetWindow(self, Window window)"""
+        return _animate.AnimationPlayer_SetWindow(*args, **kwargs)
+
+    def GetWindow(*args, **kwargs):
+        """GetWindow(self) -> Window"""
+        return _animate.AnimationPlayer_GetWindow(*args, **kwargs)
+
+    def SetPosition(*args, **kwargs):
+        """SetPosition(self, Point pos)"""
+        return _animate.AnimationPlayer_SetPosition(*args, **kwargs)
+
+    def GetPosition(*args, **kwargs):
+        """GetPosition(self) -> Point"""
+        return _animate.AnimationPlayer_GetPosition(*args, **kwargs)
+
+    def SetLooped(*args, **kwargs):
+        """SetLooped(self, bool looped)"""
+        return _animate.AnimationPlayer_SetLooped(*args, **kwargs)
+
+    def GetLooped(*args, **kwargs):
+        """GetLooped(self) -> bool"""
+        return _animate.AnimationPlayer_GetLooped(*args, **kwargs)
+
+    def HasAnimation(*args, **kwargs):
+        """HasAnimation(self) -> bool"""
+        return _animate.AnimationPlayer_HasAnimation(*args, **kwargs)
+
+    def IsPlaying(*args, **kwargs):
+        """IsPlaying(self) -> bool"""
+        return _animate.AnimationPlayer_IsPlaying(*args, **kwargs)
+
+    def UseBackgroundColour(*args, **kwargs):
+        """UseBackgroundColour(self, bool useBackground)"""
+        return _animate.AnimationPlayer_UseBackgroundColour(*args, **kwargs)
+
+    def UsingBackgroundColour(*args, **kwargs):
+        """UsingBackgroundColour(self) -> bool"""
+        return _animate.AnimationPlayer_UsingBackgroundColour(*args, **kwargs)
+
+    def SetCustomBackgroundColour(*args, **kwargs):
+        """SetCustomBackgroundColour(self, Colour col, bool useCustomBackgroundColour=True)"""
+        return _animate.AnimationPlayer_SetCustomBackgroundColour(*args, **kwargs)
+
+    def UsingCustomBackgroundColour(*args, **kwargs):
+        """UsingCustomBackgroundColour(self) -> bool"""
+        return _animate.AnimationPlayer_UsingCustomBackgroundColour(*args, **kwargs)
+
+    def GetCustomBackgroundColour(*args, **kwargs):
+        """GetCustomBackgroundColour(self) -> Colour"""
+        return _animate.AnimationPlayer_GetCustomBackgroundColour(*args, **kwargs)
+
+    def UseParentBackground(*args, **kwargs):
+        """UseParentBackground(self, bool useParent)"""
+        return _animate.AnimationPlayer_UseParentBackground(*args, **kwargs)
+
+    def UsingParentBackground(*args, **kwargs):
+        """UsingParentBackground(self) -> bool"""
+        return _animate.AnimationPlayer_UsingParentBackground(*args, **kwargs)
+
+    def Play(*args, **kwargs):
+        """Play(self, Window window, Point pos=wxPoint(0, 0), bool looped=True) -> bool"""
+        return _animate.AnimationPlayer_Play(*args, **kwargs)
+
+    def Build(*args, **kwargs):
+        """Build(self) -> bool"""
+        return _animate.AnimationPlayer_Build(*args, **kwargs)
+
+    def Stop(*args, **kwargs):
+        """Stop(self)"""
+        return _animate.AnimationPlayer_Stop(*args, **kwargs)
+
+    def Draw(*args, **kwargs):
+        """Draw(self, DC dc)"""
+        return _animate.AnimationPlayer_Draw(*args, **kwargs)
+
+    def GetFrameCount(*args, **kwargs):
+        """GetFrameCount(self) -> int"""
+        return _animate.AnimationPlayer_GetFrameCount(*args, **kwargs)
+
+    def GetFrame(*args, **kwargs):
+        """GetFrame(self, int i) -> Image"""
+        return _animate.AnimationPlayer_GetFrame(*args, **kwargs)
+
+    def GetDisposalMethod(*args, **kwargs):
+        """GetDisposalMethod(self, int i) -> int"""
+        return _animate.AnimationPlayer_GetDisposalMethod(*args, **kwargs)
+
+    def GetFrameRect(*args, **kwargs):
+        """GetFrameRect(self, int i) -> Rect"""
+        return _animate.AnimationPlayer_GetFrameRect(*args, **kwargs)
+
+    def GetDelay(*args, **kwargs):
+        """GetDelay(self, int i) -> int"""
+        return _animate.AnimationPlayer_GetDelay(*args, **kwargs)
+
+    def GetLogicalScreenSize(*args, **kwargs):
+        """GetLogicalScreenSize(self) -> Size"""
+        return _animate.AnimationPlayer_GetLogicalScreenSize(*args, **kwargs)
+
+    def GetBackgroundColour(*args, **kwargs):
+        """GetBackgroundColour(self, Colour col) -> bool"""
+        return _animate.AnimationPlayer_GetBackgroundColour(*args, **kwargs)
+
+    def GetTransparentColour(*args, **kwargs):
+        """GetTransparentColour(self, Colour col) -> bool"""
+        return _animate.AnimationPlayer_GetTransparentColour(*args, **kwargs)
+
+    def PlayFrame(*args, **kwargs):
+        """PlayFrame(self, int frame, Window window, Point pos) -> bool"""
+        return _animate.AnimationPlayer_PlayFrame(*args, **kwargs)
+
+    def PlayNextFrame(*args, **kwargs):
+        """PlayNextFrame(self) -> bool"""
+        return _animate.AnimationPlayer_PlayNextFrame(*args, **kwargs)
+
+    def DrawFrame(*args, **kwargs):
+        """DrawFrame(self, int frame, DC dc, Point pos)"""
+        return _animate.AnimationPlayer_DrawFrame(*args, **kwargs)
+
+    def DrawBackground(*args, **kwargs):
+        """DrawBackground(self, DC dc, Point pos, Colour colour)"""
+        return _animate.AnimationPlayer_DrawBackground(*args, **kwargs)
+
+    def ClearCache(*args, **kwargs):
+        """ClearCache(self)"""
+        return _animate.AnimationPlayer_ClearCache(*args, **kwargs)
+
+    def SaveBackground(*args, **kwargs):
+        """SaveBackground(self, Rect rect)"""
+        return _animate.AnimationPlayer_SaveBackground(*args, **kwargs)
+
+    def GetBackingStore(*args, **kwargs):
+        """GetBackingStore(self) -> Bitmap"""
+        return _animate.AnimationPlayer_GetBackingStore(*args, **kwargs)
+
+
+class AnimationPlayerPtr(AnimationPlayer):
+    def __init__(self, this):
+        self.this = this
+        if not hasattr(self,"thisown"): self.thisown = 0
+        self.__class__ = AnimationPlayer
+_animate.AnimationPlayer_swigregister(AnimationPlayerPtr)
+cvar = _animate.cvar
+AnimationControlNameStr = cvar.AnimationControlNameStr
+
+class AnimationBase(_core.Object):
+    """Proxy of C++ AnimationBase class"""
+    def __init__(self): raise RuntimeError, "No constructor defined"
+    def __repr__(self):
+        return "<%s.%s; proxy of C++ wxAnimationBase instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
+    def __del__(self, destroy=_animate.delete_AnimationBase):
+        """__del__(self)"""
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+
+    def GetFrameCount(*args, **kwargs):
+        """GetFrameCount(self) -> int"""
+        return _animate.AnimationBase_GetFrameCount(*args, **kwargs)
+
+    def GetFrame(*args, **kwargs):
+        """GetFrame(self, int i) -> Image"""
+        return _animate.AnimationBase_GetFrame(*args, **kwargs)
+
+    def GetDisposalMethod(*args, **kwargs):
+        """GetDisposalMethod(self, int i) -> int"""
+        return _animate.AnimationBase_GetDisposalMethod(*args, **kwargs)
+
+    def GetFrameRect(*args, **kwargs):
+        """GetFrameRect(self, int i) -> Rect"""
+        return _animate.AnimationBase_GetFrameRect(*args, **kwargs)
+
+    def GetDelay(*args, **kwargs):
+        """GetDelay(self, int i) -> int"""
+        return _animate.AnimationBase_GetDelay(*args, **kwargs)
+
+    def GetLogicalScreenSize(*args, **kwargs):
+        """GetLogicalScreenSize(self) -> Size"""
+        return _animate.AnimationBase_GetLogicalScreenSize(*args, **kwargs)
+
+    def GetBackgroundColour(*args, **kwargs):
+        """GetBackgroundColour(self, Colour col) -> bool"""
+        return _animate.AnimationBase_GetBackgroundColour(*args, **kwargs)
+
+    def GetTransparentColour(*args, **kwargs):
+        """GetTransparentColour(self, Colour col) -> bool"""
+        return _animate.AnimationBase_GetTransparentColour(*args, **kwargs)
+
+    def IsValid(*args, **kwargs):
+        """IsValid(self) -> bool"""
+        return _animate.AnimationBase_IsValid(*args, **kwargs)
+
+    def LoadFile(*args, **kwargs):
+        """LoadFile(self, String filename) -> bool"""
+        return _animate.AnimationBase_LoadFile(*args, **kwargs)
+
+
+class AnimationBasePtr(AnimationBase):
+    def __init__(self, this):
+        self.this = this
+        if not hasattr(self,"thisown"): self.thisown = 0
+        self.__class__ = AnimationBase
+_animate.AnimationBase_swigregister(AnimationBasePtr)
+
+class GIFAnimation(AnimationBase):
+    """Proxy of C++ GIFAnimation class"""
+    def __repr__(self):
+        return "<%s.%s; proxy of C++ wxGIFAnimation instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
+    def __init__(self, *args, **kwargs):
+        """__init__(self) -> GIFAnimation"""
+        newobj = _animate.new_GIFAnimation(*args, **kwargs)
+        self.this = newobj.this
+        self.thisown = 1
+        del newobj.thisown
+    def __del__(self, destroy=_animate.delete_GIFAnimation):
+        """__del__(self)"""
+        try:
+            if self.thisown: destroy(self)
+        except: pass
+
+    def GetFrameCount(*args, **kwargs):
+        """GetFrameCount(self) -> int"""
+        return _animate.GIFAnimation_GetFrameCount(*args, **kwargs)
+
+    def GetFrame(*args, **kwargs):
+        """GetFrame(self, int i) -> Image"""
+        return _animate.GIFAnimation_GetFrame(*args, **kwargs)
+
+    def GetDisposalMethod(*args, **kwargs):
+        """GetDisposalMethod(self, int i) -> int"""
+        return _animate.GIFAnimation_GetDisposalMethod(*args, **kwargs)
+
+    def GetFrameRect(*args, **kwargs):
+        """GetFrameRect(self, int i) -> Rect"""
+        return _animate.GIFAnimation_GetFrameRect(*args, **kwargs)
+
+    def GetDelay(*args, **kwargs):
+        """GetDelay(self, int i) -> int"""
+        return _animate.GIFAnimation_GetDelay(*args, **kwargs)
+
+    def GetLogicalScreenSize(*args, **kwargs):
+        """GetLogicalScreenSize(self) -> Size"""
+        return _animate.GIFAnimation_GetLogicalScreenSize(*args, **kwargs)
+
+    def GetBackgroundColour(*args, **kwargs):
+        """GetBackgroundColour(self, Colour col) -> bool"""
+        return _animate.GIFAnimation_GetBackgroundColour(*args, **kwargs)
+
+    def GetTransparentColour(*args, **kwargs):
+        """GetTransparentColour(self, Colour col) -> bool"""
+        return _animate.GIFAnimation_GetTransparentColour(*args, **kwargs)
+
+    def IsValid(*args, **kwargs):
+        """IsValid(self) -> bool"""
+        return _animate.GIFAnimation_IsValid(*args, **kwargs)
+
+    def LoadFile(*args, **kwargs):
+        """LoadFile(self, String filename) -> bool"""
+        return _animate.GIFAnimation_LoadFile(*args, **kwargs)
+
+
+class GIFAnimationPtr(GIFAnimation):
+    def __init__(self, this):
+        self.this = this
+        if not hasattr(self,"thisown"): self.thisown = 0
+        self.__class__ = GIFAnimation
+_animate.GIFAnimation_swigregister(GIFAnimationPtr)
+
+AN_FIT_ANIMATION = _animate.AN_FIT_ANIMATION
+class GIFAnimationCtrl(_core.Control):
+    """Proxy of C++ GIFAnimationCtrl class"""
+    def __repr__(self):
+        return "<%s.%s; proxy of C++ wxGIFAnimationCtrl instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,)
+    def __init__(self, *args, **kwargs):
+        """
+        __init__(self, Window parent, int id=-1, String filename=EmptyString, 
+            Point pos=DefaultPosition, Size size=DefaultSize, 
+            long style=wxAN_FIT_ANIMATION|wxNO_BORDER, 
+            String name=AnimationControlNameStr) -> GIFAnimationCtrl
+        """
+        newobj = _animate.new_GIFAnimationCtrl(*args, **kwargs)
+        self.this = newobj.this
+        self.thisown = 1
+        del newobj.thisown
+        self._setOORInfo(self)
+
+    def Create(*args, **kwargs):
+        """
+        Create(self, Window parent, int id=-1, String filename=EmptyString, 
+            Point pos=DefaultPosition, Size size=DefaultSize, 
+            long style=wxAN_FIT_ANIMATION|wxNO_BORDER, 
+            String name=AnimationControlNameStr) -> bool
+        """
+        return _animate.GIFAnimationCtrl_Create(*args, **kwargs)
+
+    def LoadFile(*args, **kwargs):
+        """LoadFile(self, String filename=EmptyString) -> bool"""
+        return _animate.GIFAnimationCtrl_LoadFile(*args, **kwargs)
+
+    def Play(*args, **kwargs):
+        """Play(self, bool looped=True) -> bool"""
+        return _animate.GIFAnimationCtrl_Play(*args, **kwargs)
+
+    def Stop(*args, **kwargs):
+        """Stop(self)"""
+        return _animate.GIFAnimationCtrl_Stop(*args, **kwargs)
+
+    def FitToAnimation(*args, **kwargs):
+        """FitToAnimation(self)"""
+        return _animate.GIFAnimationCtrl_FitToAnimation(*args, **kwargs)
+
+    def IsPlaying(*args, **kwargs):
+        """IsPlaying(self) -> bool"""
+        return _animate.GIFAnimationCtrl_IsPlaying(*args, **kwargs)
+
+    def GetPlayer(*args, **kwargs):
+        """GetPlayer(self) -> AnimationPlayer"""
+        return _animate.GIFAnimationCtrl_GetPlayer(*args, **kwargs)
+
+    def GetAnimation(*args, **kwargs):
+        """GetAnimation(self) -> AnimationBase"""
+        return _animate.GIFAnimationCtrl_GetAnimation(*args, **kwargs)
+
+    def GetFilename(*args, **kwargs):
+        """GetFilename(self) -> String"""
+        return _animate.GIFAnimationCtrl_GetFilename(*args, **kwargs)
+
+    def SetFilename(*args, **kwargs):
+        """SetFilename(self, String filename)"""
+        return _animate.GIFAnimationCtrl_SetFilename(*args, **kwargs)
+
+
+class GIFAnimationCtrlPtr(GIFAnimationCtrl):
+    def __init__(self, this):
+        self.this = this
+        if not hasattr(self,"thisown"): self.thisown = 0
+        self.__class__ = GIFAnimationCtrl
+_animate.GIFAnimationCtrl_swigregister(GIFAnimationCtrlPtr)
+
+def PreGIFAnimationCtrl(*args, **kwargs):
+    """PreGIFAnimationCtrl() -> GIFAnimationCtrl"""
+    val = _animate.new_PreGIFAnimationCtrl(*args, **kwargs)
+    val.thisown = 1
+    return val
+
+
diff --git a/wxPython/contrib/animate/gtk/animate_wrap.cpp b/wxPython/contrib/animate/gtk/animate_wrap.cpp
new file mode 100644 (file)
index 0000000..e6de42c
--- /dev/null
@@ -0,0 +1,5018 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.24
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPYTHON
+
+#ifdef __cplusplus
+template<class T> class SwigValueWrapper {
+    T *tt;
+public:
+    SwigValueWrapper() : tt(0) { }
+    SwigValueWrapper(const SwigValueWrapper<T>& rhs) : tt(new T(*rhs.tt)) { }
+    SwigValueWrapper(const T& t) : tt(new T(t)) { }
+    ~SwigValueWrapper() { delete tt; } 
+    SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; }
+    operator T&() const { return *tt; }
+    T *operator&() { return tt; }
+private:
+    SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
+};
+#endif
+
+
+#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
+#  if defined(__SUNPRO_CC) 
+#    define SWIG_TEMPLATE_DISAMBIGUATOR template
+#  else
+#    define SWIG_TEMPLATE_DISAMBIGUATOR 
+#  endif
+#endif
+
+
+#include <Python.h>
+
+/***********************************************************************
+ * swigrun.swg
+ *
+ *     This file contains generic CAPI SWIG runtime support for pointer
+ *     type checking.
+ *
+ ************************************************************************/
+
+/* This should only be incremented when either the layout of swig_type_info changes,
+   or for whatever reason, the runtime changes incompatibly */
+#define SWIG_RUNTIME_VERSION "1"
+
+/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
+#ifdef SWIG_TYPE_TABLE
+#define SWIG_QUOTE_STRING(x) #x
+#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
+#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
+#else
+#define SWIG_TYPE_TABLE_NAME
+#endif
+
+#include <string.h>
+
+#ifndef SWIGINLINE
+#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#  define SWIGINLINE inline
+#else
+#  define SWIGINLINE
+#endif
+#endif
+
+/*
+  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
+  creating a static or dynamic library from the swig runtime code.
+  In 99.9% of the cases, swig just needs to declare them as 'static'.
+  
+  But only do this if is strictly necessary, ie, if you have problems
+  with your compiler or so.
+*/
+#ifndef SWIGRUNTIME
+#define SWIGRUNTIME static
+#endif
+#ifndef SWIGRUNTIMEINLINE
+#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+  const char             *name;
+  swig_converter_func     converter;
+  const char             *str;
+  void                   *clientdata;
+  swig_dycast_func        dcast;
+  struct swig_type_info  *next;
+  struct swig_type_info  *prev;
+} swig_type_info;
+
+/* 
+  Compare two type names skipping the space characters, therefore
+  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
+
+  Return 0 when the two name types are equivalent, as in
+  strncmp, but skipping ' '.
+*/
+SWIGRUNTIME int
+SWIG_TypeNameComp(const char *f1, const char *l1,
+                 const char *f2, const char *l2) {
+  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
+    while ((*f1 == ' ') && (f1 != l1)) ++f1;
+    while ((*f2 == ' ') && (f2 != l2)) ++f2;
+    if (*f1 != *f2) return *f1 - *f2;
+  }
+  return (l1 - f1) - (l2 - f2);
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+*/
+SWIGRUNTIME int
+SWIG_TypeEquiv(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+
+/*
+  Register a type mapping with the type-checking
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
+  swig_type_info *tc, *head, *ret, *next;
+  /* Check to see if this type has already been registered */
+  tc = *tl;
+  while (tc) {
+    /* check simple type equivalence */
+    int typeequiv = (strcmp(tc->name, ti->name) == 0);   
+    /* check full type equivalence, resolving typedefs */
+    if (!typeequiv) {
+      /* only if tc is not a typedef (no '|' on it) */
+      if (tc->str && ti->str && !strstr(tc->str,"|")) {
+       typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
+      }
+    }
+    if (typeequiv) {
+      /* Already exists in the table.  Just add additional types to the list */
+      if (ti->clientdata) tc->clientdata = ti->clientdata;
+      head = tc;
+      next = tc->next;
+      goto l1;
+    }
+    tc = tc->prev;
+  }
+  head = ti;
+  next = 0;
+
+  /* Place in list */
+  ti->prev = *tl;
+  *tl = ti;
+
+  /* Build linked lists */
+  l1:
+  ret = head;
+  tc = ti + 1;
+  /* Patch up the rest of the links */
+  while (tc->name) {
+    head->next = tc;
+    tc->prev = head;
+    head = tc;
+    tc++;
+  }
+  if (next) next->prev = head;
+  head->next = next;
+
+  return ret;
+}
+
+/*
+  Check the typename
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeCheck(const char *c, swig_type_info *ty) {
+  swig_type_info *s;
+  if (!ty) return 0;        /* Void pointer */
+  s = ty->next;             /* First element always just a name */
+  do {
+    if (strcmp(s->name,c) == 0) {
+      if (s == ty->next) return s;
+      /* Move s to the top of the linked list */
+      s->prev->next = s->next;
+      if (s->next) {
+        s->next->prev = s->prev;
+      }
+      /* Insert s as second element in the list */
+      s->next = ty->next;
+      if (ty->next) ty->next->prev = s;
+      ty->next = s;
+      s->prev = ty;
+      return s;
+    }
+    s = s->next;
+  } while (s && (s != ty->next));
+  return 0;
+}
+
+/*
+  Cast a pointer up an inheritance hierarchy
+*/
+SWIGRUNTIMEINLINE void *
+SWIG_TypeCast(swig_type_info *ty, void *ptr) {
+  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
+}
+
+/* 
+   Dynamic pointer casting. Down an inheritance hierarchy
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
+  swig_type_info *lastty = ty;
+  if (!ty || !ty->dcast) return ty;
+  while (ty && (ty->dcast)) {
+    ty = (*ty->dcast)(ptr);
+    if (ty) lastty = ty;
+  }
+  return lastty;
+}
+
+/*
+  Return the name associated with this type
+*/
+SWIGRUNTIMEINLINE const char *
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/*
+  Return the pretty name associated with this type,
+  that is an unmangled type name in a form presentable to the user.
+*/
+SWIGRUNTIME const char *
+SWIG_TypePrettyName(const swig_type_info *type) {
+  /* The "str" field contains the equivalent pretty names of the
+     type, separated by vertical-bar characters.  We choose
+     to print the last name, as it is often (?) the most
+     specific. */
+  if (type->str != NULL) {
+    const char *last_name = type->str;
+    const char *s;
+    for (s = type->str; *s; s++)
+      if (*s == '|') last_name = s+1;
+    return last_name;
+  }
+  else
+    return type->name;
+}
+
+/*
+  Search for a swig_type_info structure
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
+  swig_type_info *ty = tl;
+  while (ty) {
+    if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
+    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+    ty = ty->prev;
+  }
+  return 0;
+}
+
+/* 
+   Set the clientdata field for a type
+*/
+SWIGRUNTIME void
+SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
+  swig_type_info *tc, *equiv;
+  if (ti->clientdata) return;
+  /* if (ti->clientdata == clientdata) return; */
+  ti->clientdata = clientdata;
+  equiv = ti->next;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0))
+          SWIG_TypeClientDataTL(tl,tc,clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack binary data into a string
+*/
+SWIGRUNTIME char *
+SWIG_PackData(char *c, void *ptr, size_t sz) {
+  static char hex[17] = "0123456789abcdef";
+  unsigned char *u = (unsigned char *) ptr;
+  const unsigned char *eu =  u + sz;
+  register unsigned char uu;
+  for (; u != eu; ++u) {
+    uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* 
+   Unpack binary data from a string
+*/
+SWIGRUNTIME const char *
+SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
+  register unsigned char *u = (unsigned char *) ptr;
+  register const unsigned char *eu =  u + sz;
+  for (; u != eu; ++u) {
+    register int d = *(c++);
+    register unsigned char uu = 0;
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    else 
+      return (char *) 0;
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    else 
+      return (char *) 0;
+    *u = uu;
+  }
+  return c;
+}
+
+/*
+  This function will propagate the clientdata field of type to any new
+  swig_type_info structures that have been added into the list of
+  equivalent types.  It is like calling SWIG_TypeClientData(type,
+  clientdata) a second time.
+*/
+SWIGRUNTIME void
+SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
+  swig_type_info *equiv = type->next;
+  swig_type_info *tc;
+  if (!type->clientdata) return;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
+          SWIG_TypeClientDataTL(tl,tc, type->clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack 'void *' into a string buffer.
+*/
+SWIGRUNTIME char *
+SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
+  char *r = buff;
+  if ((2*sizeof(void *) + 2) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,&ptr,sizeof(void *));
+  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
+  strcpy(r,name);
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      *ptr = (void *) 0;
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sizeof(void *));
+}
+
+SWIGRUNTIME char *
+SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
+  char *r = buff;
+  size_t lname = (name ? strlen(name) : 0);
+  if ((2*sz + 2 + lname) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  if (lname) {
+    strncpy(r,name,lname+1);
+  } else {
+    *r = 0;
+  }
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      memset(ptr,0,sz);
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sz);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/***********************************************************************
+ * common.swg
+ *
+ *     This file contains generic SWIG runtime support for pointer
+ *     type checking as well as a few commonly used macros to control
+ *     external linkage.
+ *
+ * Author : David Beazley (beazley@cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ * 
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#  if !defined(STATIC_LINKED)
+#    define SWIGEXPORT(a) __declspec(dllexport) a
+#  else
+#    define SWIGEXPORT(a) a
+#  endif
+#else
+#  define SWIGEXPORT(a) a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*************************************************************************/
+
+
+/* The static type info list */
+
+static swig_type_info *swig_type_list = 0;
+static swig_type_info **swig_type_list_handle = &swig_type_list;
+  
+
+/* Register a type mapping with the type-checking */
+static swig_type_info *
+SWIG_TypeRegister(swig_type_info *ti) {
+  return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
+}
+
+/* Search for a swig_type_info structure */
+static swig_type_info *
+SWIG_TypeQuery(const char *name) {
+  return SWIG_TypeQueryTL(*swig_type_list_handle, name);
+}
+
+/* Set the clientdata field for a type */
+static void
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
+}
+
+/* This function will propagate the clientdata field of type to
+* any new swig_type_info structures that have been added into the list
+* of equivalent types.  It is like calling
+* SWIG_TypeClientData(type, clientdata) a second time.
+*/
+static void
+SWIG_PropagateClientData(swig_type_info *type) {
+  SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------
+ * SWIG API. Portion that goes into the runtime
+ * ----------------------------------------------------------------------------- */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * for internal method declarations
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIGINTERN
+#define SWIGINTERN static 
+#endif
+
+#ifndef SWIGINTERNSHORT
+#ifdef __cplusplus
+#define SWIGINTERNSHORT static inline 
+#else /* C case */
+#define SWIGINTERNSHORT static 
+#endif /* __cplusplus */
+#endif
+
+
+/*
+  Exception handling in wrappers
+*/
+#define SWIG_fail                goto fail
+#define SWIG_arg_fail(arg)       SWIG_Python_ArgFail(arg)
+#define SWIG_append_errmsg(msg)   SWIG_Python_AddErrMesg(msg,0)
+#define SWIG_preppend_errmsg(msg) SWIG_Python_AddErrMesg(msg,1)
+#define SWIG_type_error(type,obj) SWIG_Python_TypeError(type,obj)
+#define SWIG_null_ref(type)       SWIG_Python_NullRef(type)
+
+/*
+  Contract support
+*/
+#define SWIG_contract_assert(expr, msg) \
+ if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg ); goto fail; } else
+
+/* -----------------------------------------------------------------------------
+ * Constant declarations
+ * ----------------------------------------------------------------------------- */
+
+/* Constant Types */
+#define SWIG_PY_INT     1
+#define SWIG_PY_FLOAT   2
+#define SWIG_PY_STRING  3
+#define SWIG_PY_POINTER 4
+#define SWIG_PY_BINARY  5
+
+/* Constant information structure */
+typedef struct swig_const_info {
+    int type;
+    char *name;
+    long lvalue;
+    double dvalue;
+    void   *pvalue;
+    swig_type_info **ptype;
+} swig_const_info;
+
+
+/* -----------------------------------------------------------------------------
+ * Alloc. memory flags
+ * ----------------------------------------------------------------------------- */
+#define SWIG_OLDOBJ  1
+#define SWIG_NEWOBJ  SWIG_OLDOBJ + 1
+#define SWIG_PYSTR   SWIG_NEWOBJ + 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/***********************************************************************
+ * pyrun.swg
+ *
+ *     This file contains the runtime support for Python modules
+ *     and includes code for managing global variables and pointer
+ *     type checking.
+ *
+ * Author : David Beazley (beazley@cs.uchicago.edu)
+ ************************************************************************/
+
+/* Common SWIG API */
+#define SWIG_ConvertPtr(obj, pp, type, flags)    SWIG_Python_ConvertPtr(obj, pp, type, flags)
+#define SWIG_NewPointerObj(p, type, flags)       SWIG_Python_NewPointerObj(p, type, flags)
+#define SWIG_MustGetPtr(p, type, argnum, flags)  SWIG_Python_MustGetPtr(p, type, argnum, flags)
+
+/* Python-specific SWIG API */
+#define SWIG_ConvertPacked(obj, ptr, sz, ty, flags)   SWIG_Python_ConvertPacked(obj, ptr, sz, ty, flags)
+#define SWIG_NewPackedObj(ptr, sz, type)              SWIG_Python_NewPackedObj(ptr, sz, type)
+
+
+/* -----------------------------------------------------------------------------
+ * Pointer declarations
+ * ----------------------------------------------------------------------------- */
+/*
+  Use SWIG_NO_COBJECT_TYPES to force the use of strings to represent
+  C/C++ pointers in the python side. Very useful for debugging, but
+  not always safe.
+*/
+#if !defined(SWIG_NO_COBJECT_TYPES) && !defined(SWIG_COBJECT_TYPES)
+#  define SWIG_COBJECT_TYPES
+#endif
+
+/* Flags for pointer conversion */
+#define SWIG_POINTER_EXCEPTION     0x1
+#define SWIG_POINTER_DISOWN        0x2
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * Create a new pointer string 
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIG_BUFFER_SIZE
+#define SWIG_BUFFER_SIZE 1024
+#endif
+
+#if defined(SWIG_COBJECT_TYPES)
+#if !defined(SWIG_COBJECT_PYTHON)
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Object type, and use it instead of PyCObject
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *ptr;
+  const char *desc;
+} PySwigObject;
+
+/* Declarations for objects of type PySwigObject */
+
+SWIGRUNTIME int
+PySwigObject_print(PySwigObject *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result))) {
+    fputs("<Swig Object at ", fp); fputs(result, fp); fputs(">", fp);
+    return 0; 
+  } else {
+    return 1; 
+  }
+}
+  
+SWIGRUNTIME PyObject *
+PySwigObject_repr(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromFormat("<Swig Object at %s>", result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_str(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromString(result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_long(PySwigObject *v)
+{
+  return PyLong_FromUnsignedLong((unsigned long) v->ptr);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_oct(PySwigObject *v)
+{
+  char buf[100];
+  unsigned long x = (unsigned long)v->ptr;
+  if (x == 0)
+    strcpy(buf, "0");
+  else
+    PyOS_snprintf(buf, sizeof(buf), "0%lo", x);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_hex(PySwigObject *v)
+{
+  char buf[100];
+  PyOS_snprintf(buf, sizeof(buf), "0x%lx", (unsigned long)v->ptr);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME int
+PySwigObject_compare(PySwigObject *v, PySwigObject *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    void *i = v->ptr;
+    void *j = w->ptr;
+    return (i < j) ? -1 : (i > j) ? 1 : 0;
+  }
+}
+
+SWIGRUNTIME void
+PySwigObject_dealloc(PySwigObject *self)
+{
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigObject_GetType() {
+  static char PySwigObject_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  
+  static PyNumberMethods PySwigObject_as_number = {
+    (binaryfunc)0, /*nb_add*/
+    (binaryfunc)0, /*nb_subtract*/
+    (binaryfunc)0, /*nb_multiply*/
+    (binaryfunc)0, /*nb_divide*/
+    (binaryfunc)0, /*nb_remainder*/
+    (binaryfunc)0, /*nb_divmod*/
+    (ternaryfunc)0,/*nb_power*/
+    (unaryfunc)0,  /*nb_negative*/
+    (unaryfunc)0,  /*nb_positive*/
+    (unaryfunc)0,  /*nb_absolute*/
+    (inquiry)0,    /*nb_nonzero*/
+    0,            /*nb_invert*/
+    0,            /*nb_lshift*/
+    0,            /*nb_rshift*/
+    0,            /*nb_and*/
+    0,            /*nb_xor*/
+    0,            /*nb_or*/
+    (coercion)0,   /*nb_coerce*/
+    (unaryfunc)PySwigObject_long, /*nb_int*/
+    (unaryfunc)PySwigObject_long, /*nb_long*/
+    (unaryfunc)0,                 /*nb_float*/
+    (unaryfunc)PySwigObject_oct,  /*nb_oct*/
+    (unaryfunc)PySwigObject_hex,  /*nb_hex*/
+#if PY_VERSION_HEX >= 0x02000000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ 
+#endif
+  };
+
+  static int type_init = 0;  
+  static PyTypeObject PySwigObject_Type;
+
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,                                 /*ob_size*/
+    "PySwigObject",                    /*tp_name*/
+    sizeof(PySwigObject),              /*tp_basicsize*/
+    0,                                 /*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigObject_dealloc,  /*tp_dealloc*/
+    (printfunc)PySwigObject_print,     /*tp_print*/
+    (getattrfunc)0,                    /*tp_getattr*/
+    (setattrfunc)0,                    /*tp_setattr*/
+    (cmpfunc)PySwigObject_compare,     /*tp_compare*/
+    (reprfunc)PySwigObject_repr,       /*tp_repr*/
+    &PySwigObject_as_number,           /*tp_as_number*/
+    0,                                 /*tp_as_sequence*/
+    0,                                 /*tp_as_mapping*/
+    (hashfunc)0,                       /*tp_hash*/
+    (ternaryfunc)0,                    /*tp_call*/
+    (reprfunc)PySwigObject_str,                /*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigObject_Type__doc__,          /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigObject_Type = tmp;
+    type_init = 1;
+  }
+
+  return &PySwigObject_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_FromVoidPtrAndDesc(void *ptr, const char *desc)
+{
+  PySwigObject *self = PyObject_NEW(PySwigObject, PySwigObject_GetType());
+  if (self == NULL) return NULL;
+  self->ptr = ptr;
+  self->desc = desc;
+  return (PyObject *)self;
+}
+
+SWIGRUNTIMEINLINE void *
+PySwigObject_AsVoidPtr(PyObject *self)
+{
+  return ((PySwigObject *)self)->ptr;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigObject_GetDesc(PyObject *self)
+{
+  return ((PySwigObject *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigObject_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigObject_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
+}
+
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Packed type, and use it instead of string
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *pack;
+  const char *desc;
+  size_t size;
+} PySwigPacked;
+
+SWIGRUNTIME int
+PySwigPacked_print(PySwigPacked *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  fputs("<Swig Packed ", fp); 
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    fputs("at ", fp); 
+    fputs(result, fp); 
+  }
+  fputs(v->desc,fp); 
+  fputs(">", fp);
+  return 0; 
+}
+  
+SWIGRUNTIME PyObject *
+PySwigPacked_repr(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    return PyString_FromFormat("<Swig Packed at %s%s>", result, v->desc);
+  } else {
+    return PyString_FromFormat("<Swig Packed %s>", v->desc);
+  }  
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_str(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
+    return PyString_FromFormat("%s%s", result, v->desc);
+  } else {
+    return PyString_FromFormat("%s", v->desc);
+  }  
+}
+
+SWIGRUNTIME int
+PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    size_t i = v->size;
+    size_t j = w->size;
+    int s = (i < j) ? -1 : (i > j) ? 1 : 0;
+    return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
+  }
+}
+
+SWIGRUNTIME void
+PySwigPacked_dealloc(PySwigPacked *self)
+{
+  free(self->pack);
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigPacked_GetType() {
+  static char PySwigPacked_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  static int type_init = 0;
+  
+  static PyTypeObject PySwigPacked_Type;
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,                                 /*ob_size*/
+    "PySwigPacked",                    /*tp_name*/
+    sizeof(PySwigPacked),              /*tp_basicsize*/
+    0,                                 /*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigPacked_dealloc,  /*tp_dealloc*/
+    (printfunc)PySwigPacked_print,     /*tp_print*/
+    (getattrfunc)0,                    /*tp_getattr*/
+    (setattrfunc)0,                    /*tp_setattr*/
+    (cmpfunc)PySwigPacked_compare,     /*tp_compare*/
+    (reprfunc)PySwigPacked_repr,       /*tp_repr*/
+    0,                                 /*tp_as_number*/
+    0,                                 /*tp_as_sequence*/
+    0,                                 /*tp_as_mapping*/
+    (hashfunc)0,                       /*tp_hash*/
+    (ternaryfunc)0,                    /*tp_call*/
+    (reprfunc)PySwigPacked_str,                /*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigPacked_Type__doc__,          /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000         
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigPacked_Type = tmp;
+    type_init = 1;
+  }
+  
+      
+
+  return &PySwigPacked_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_FromDataAndDesc(void *ptr, size_t size, const char *desc)
+{
+  PySwigPacked *self = PyObject_NEW(PySwigPacked, PySwigPacked_GetType());
+  if (self == NULL) {
+    return NULL;
+  } else {
+    void *pack = malloc(size);
+    memcpy(pack, ptr, size);
+    self->pack = pack;
+    self->desc = desc;
+    self->size = size;
+    return (PyObject *) self;
+  }
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
+{
+  PySwigPacked *self = (PySwigPacked *)obj;
+  if (self->size != size) return 0;
+  memcpy(ptr, self->pack, size);
+  return self->desc;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_GetDesc(PyObject *self)
+{
+  return ((PySwigPacked *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigPacked_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigPacked_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
+}
+
+#else
+/* -----------------------------------------------------------------------------
+ * Use the old Python PyCObject instead of PySwigObject
+ * ----------------------------------------------------------------------------- */
+
+#define PySwigObject_GetDesc(obj)                 PyCObject_GetDesc(obj)
+#define PySwigObject_Check(obj)                   PyCObject_Check(obj)
+#define PySwigObject_AsVoidPtr(obj)       PyCObject_AsVoidPtr(obj)
+#define PySwigObject_FromVoidPtrAndDesc(p, d)  PyCObject_FromVoidPtrAndDesc(p, d, NULL)
+
+#endif
+
+#endif
+
+/* -----------------------------------------------------------------------------
+ * errors manipulation
+ * ----------------------------------------------------------------------------- */
+
+SWIGRUNTIME void
+SWIG_Python_TypeError(const char *type, PyObject *obj)
+{
+  if (type) {
+#if defined(SWIG_COBJECT_TYPES)
+    if (PySwigObject_Check(obj)) {
+      const char *otype = (const char *) PySwigObject_GetDesc(obj);
+      if (otype) {
+       PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
+                    type, otype);
+       return;
+      }
+    } else 
+#endif      
+    {
+      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
+      if (otype) {
+       PyObject *str = PyObject_Str(obj);
+       const char *cstr = str ? PyString_AsString(str) : 0;
+       if (cstr) {
+         PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
+                      type, otype, cstr);
+       } else {
+         PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
+                      type, otype);
+       }
+       Py_DECREF(str);
+       return;
+      }
+    }   
+    PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "unexpected type is received");
+  }
+}
+
+SWIGRUNTIMEINLINE void
+SWIG_Python_NullRef(const char *type)
+{
+  if (type) {
+    PyErr_Format(PyExc_TypeError, "null reference of type '%s' was received",type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "null reference was received");
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_AddErrMesg(const char* mesg, int infront)
+{
+  if (PyErr_Occurred()) {
+    PyObject *type = 0;
+    PyObject *value = 0;
+    PyObject *traceback = 0;
+    PyErr_Fetch(&type, &value, &traceback);
+    if (value) {
+      PyObject *old_str = PyObject_Str(value);
+      Py_XINCREF(type);
+      PyErr_Clear();
+      if (infront) {
+       PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
+      } else {
+       PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
+      }
+      Py_DECREF(old_str);
+    }
+    return 1;
+  } else {
+    return 0;
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_ArgFail(int argnum)
+{
+  if (PyErr_Occurred()) {
+    /* add information about failing argument */
+    char mesg[256];
+    sprintf(mesg, "argument number %d:", argnum);
+    return SWIG_Python_AddErrMesg(mesg, 1);
+  } else {
+    return 0;
+  }
+}
+
+
+/* -----------------------------------------------------------------------------
+ * pointers/data manipulation
+ * ----------------------------------------------------------------------------- */
+
+/* Convert a pointer value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+  static PyObject *SWIG_this = 0;
+  int    newref = 0;
+  PyObject  *pyobj = 0;
+  void *vptr;
+  
+  if (!obj) return 0;
+  if (obj == Py_None) {
+    *ptr = 0;
+    return 0;
+  }
+
+#ifdef SWIG_COBJECT_TYPES
+  if (!(PySwigObject_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PySwigObject_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  }  
+  vptr = PySwigObject_AsVoidPtr(obj);
+  c = (const char *) PySwigObject_GetDesc(obj);
+  if (newref) { Py_DECREF(obj); }
+  goto type_check;
+#else
+  if (!(PyString_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyString_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  } 
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackVoidPtr(c, &vptr, ty->name);
+  if (newref) { Py_DECREF(obj); }
+  if (!c) goto type_error;
+#endif
+
+type_check:
+
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+    *ptr = SWIG_TypeCast(tc,vptr);
+  } else {
+    *ptr = vptr;
+  }
+
+  if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
+    PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False);
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (pyobj && !obj) {    
+    obj = pyobj;
+    if (PyCFunction_Check(obj)) {
+      /* here we get the method pointer for callbacks */
+      char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
+      c = doc ? strstr(doc, "swig_ptr: ") : 0;
+      if (c) {
+       c = SWIG_UnpackVoidPtr(c + 10, &vptr, ty->name);
+       if (!c) goto type_error;
+       goto type_check;
+      }
+    }
+  }
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ pointer", obj);
+    }
+  }
+  return -1;
+}
+
+/* Convert a pointer value, signal an exception on a type mismatch */
+SWIGRUNTIME void *
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+  void *result;
+  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
+    PyErr_Clear();
+    if (flags & SWIG_POINTER_EXCEPTION) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+      SWIG_Python_ArgFail(argnum);
+    }
+  }
+  return result;
+}
+
+/* Convert a packed value value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  c = PySwigPacked_UnpackData(obj, ptr, sz);
+#else
+  if ((!obj) || (!PyString_Check(obj))) goto type_error;
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackDataName(c, ptr, sz, ty->name);
+#endif
+  if (!c) goto type_error;
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ packed data", obj);
+    }
+  }
+  return -1;
+}  
+
+/* Create a new array object */
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  robj = PySwigObject_FromVoidPtrAndDesc((void *) ptr, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackVoidPtr(result, ptr, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  if (!robj || (robj == Py_None)) return robj;
+  if (type->clientdata) {
+    PyObject *inst;
+    PyObject *args = Py_BuildValue((char*)"(O)", robj);
+    Py_DECREF(robj);
+    inst = PyObject_CallObject((PyObject *) type->clientdata, args);
+    Py_DECREF(args);
+    if (inst) {
+      if (own) {
+        PyObject_SetAttrString(inst,(char*)"thisown",Py_True);
+      }
+      robj = inst;
+    }
+  }
+  return robj;
+}
+
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  robj = PySwigPacked_FromDataAndDesc((void *) ptr, sz, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackDataName(result, ptr, sz, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  return robj;
+}
+
+/* -----------------------------------------------------------------------------*
+ *  Get type list 
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+void *SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+SWIGRUNTIME swig_type_info **
+SWIG_Python_GetTypeListHandle() {
+  static void *type_pointer = (void *)0;
+  /* first check if module already created */
+  if (!type_pointer) {
+#ifdef SWIG_LINK_RUNTIME
+    type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
+#else
+    type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+                                   (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+    if (PyErr_Occurred()) {
+      PyErr_Clear();
+      type_pointer = (void *)0;
+    }
+  }
+#endif
+  return (swig_type_info **) type_pointer;
+}
+
+/*
+  Search for a swig_type_info structure
+ */
+SWIGRUNTIMEINLINE swig_type_info *
+SWIG_Python_GetTypeList() {
+  swig_type_info **tlh = SWIG_Python_GetTypeListHandle();
+  return tlh ? *tlh : (swig_type_info*)0;
+}
+
+#define SWIG_Runtime_GetTypeList SWIG_Python_GetTypeList 
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define  SWIGTYPE_p_wxRect swig_types[0] 
+#define  SWIGTYPE_p_wxGIFAnimationCtrl swig_types[1] 
+#define  SWIGTYPE_p_wxObject swig_types[2] 
+#define  SWIGTYPE_p_unsigned_char swig_types[3] 
+#define  SWIGTYPE_p_wxColour swig_types[4] 
+#define  SWIGTYPE_p_wxAnimationPlayer swig_types[5] 
+#define  SWIGTYPE_p_wxWindow swig_types[6] 
+#define  SWIGTYPE_p_unsigned_long swig_types[7] 
+#define  SWIGTYPE_p_wxBitmap swig_types[8] 
+#define  SWIGTYPE_p_form_ops_t swig_types[9] 
+#define  SWIGTYPE_p_unsigned_int swig_types[10] 
+#define  SWIGTYPE_unsigned_int swig_types[11] 
+#define  SWIGTYPE_p_wxDuplexMode swig_types[12] 
+#define  SWIGTYPE_p_wxGIFAnimation swig_types[13] 
+#define  SWIGTYPE_p_char swig_types[14] 
+#define  SWIGTYPE_p_wxAnimationBase swig_types[15] 
+#define  SWIGTYPE_p_wxPoint swig_types[16] 
+#define  SWIGTYPE_p_wxDC swig_types[17] 
+#define  SWIGTYPE_p_wxEvtHandler swig_types[18] 
+#define  SWIGTYPE_std__ptrdiff_t swig_types[19] 
+#define  SWIGTYPE_ptrdiff_t swig_types[20] 
+#define  SWIGTYPE_p_wxControl swig_types[21] 
+#define  SWIGTYPE_p_wxPaperSize swig_types[22] 
+#define  SWIGTYPE_p_wxImage swig_types[23] 
+#define  SWIGTYPE_p_wxSize swig_types[24] 
+#define  SWIGTYPE_p_int swig_types[25] 
+static swig_type_info *swig_types[27];
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+/*-----------------------------------------------
+              @(target):= _animate.so
+  ------------------------------------------------*/
+#define SWIG_init    init_animate
+
+#define SWIG_name    "_animate"
+
+#include "wx/wxPython/wxPython.h"
+#include "wx/wxPython/pyclasses.h"
+#include <wx/animate/animate.h>
+
+ static const wxString wxPyAnimationControlNameStr(wxT("animationControl")); 
+ static const wxString wxPyEmptyString(wxEmptyString); 
+
+  /*@/opt/swig/share/swig/1.3.24/python/pymacros.swg,66,SWIG_define@*/
+#define SWIG_From_int PyInt_FromLong
+/*@@*/
+
+
+#include <limits.h>
+
+
+SWIGINTERN int
+  SWIG_CheckLongInRange(long value, long min_value, long max_value,
+                       const char *errmsg)
+{
+  if (value < min_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError, 
+                  "value %ld is less than '%s' minimum %ld", 
+                  value, errmsg, min_value);
+    }
+    return 0;    
+  } else if (value > max_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError,
+                  "value %ld is greater than '%s' maximum %ld", 
+                  value, errmsg, max_value);
+    }
+    return 0;
+  }
+  return 1;
+}
+
+
+SWIGINTERN int
+SWIG_AsVal_long(PyObject* obj, long* val)
+{
+    if (PyNumber_Check(obj)) {
+        if (val) *val = PyInt_AsLong(obj);
+        return 1;
+    }
+    else {
+        SWIG_type_error("number", obj);
+    }
+    return 0;
+}
+
+
+#if INT_MAX != LONG_MAX
+SWIGINTERN int
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{ 
+  const char* errmsg = val ? "int" : (char*)0;
+  long v;
+  if (SWIG_AsVal_long(obj, &v)) {
+    if (SWIG_CheckLongInRange(v, INT_MIN,INT_MAX, errmsg)) {
+      if (val) *val = (int)(v);
+      return 1;
+    } else {
+      return 0;
+    }
+  } else {
+    PyErr_Clear();
+  }
+  if (val) {
+    SWIG_type_error(errmsg, obj);
+  }
+  return 0;    
+}
+#else
+SWIGINTERNSHORT int
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{
+  return SWIG_AsVal_long(obj,(long*)val);
+}
+#endif
+
+
+SWIGINTERN int
+  SWIG_AsVal_bool(PyObject *obj, bool *val)
+{
+  if (obj == Py_True) {
+    if (val) *val = true;
+    return 1;
+  }
+  if (obj == Py_False) {
+    if (val) *val = false;
+    return 1;
+  }
+  int res = 0;
+  if (SWIG_AsVal_int(obj, &res)) {    
+    if (val) *val = res ? true : false;
+    return 1;
+  } else {
+    PyErr_Clear();
+  }  
+  if (val) {
+    SWIG_type_error("bool", obj);
+  }
+  return 0;
+}
+
+
+SWIGINTERNSHORT bool
+SWIG_As_bool(PyObject* obj)
+{
+  bool v;
+  if (!SWIG_AsVal_bool(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier. 
+     */
+    memset((void*)&v, 0, sizeof(bool));
+  }
+  return v;
+}
+
+  
+SWIGINTERNSHORT int
+SWIG_Check_bool(PyObject* obj)
+{
+  return SWIG_AsVal_bool(obj, (bool*)0);
+}
+
+
+SWIGINTERNSHORT int
+SWIG_As_int(PyObject* obj)
+{
+  int v;
+  if (!SWIG_AsVal_int(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier. 
+     */
+    memset((void*)&v, 0, sizeof(int));
+  }
+  return v;
+}
+
+  
+SWIGINTERNSHORT int
+SWIG_Check_int(PyObject* obj)
+{
+  return SWIG_AsVal_int(obj, (int*)0);
+}
+
+
+SWIGINTERNSHORT long
+SWIG_As_long(PyObject* obj)
+{
+  long v;
+  if (!SWIG_AsVal_long(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier. 
+     */
+    memset((void*)&v, 0, sizeof(long));
+  }
+  return v;
+}
+
+  
+SWIGINTERNSHORT int
+SWIG_Check_long(PyObject* obj)
+{
+  return SWIG_AsVal_long(obj, (long*)0);
+}
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+static int _wrap_AnimationControlNameStr_set(PyObject *) {
+    PyErr_SetString(PyExc_TypeError,"Variable AnimationControlNameStr is read-only.");
+    return 1;
+}
+
+
+static PyObject *_wrap_AnimationControlNameStr_get(void) {
+    PyObject *pyobj;
+    
+    {
+#if wxUSE_UNICODE
+        pyobj = PyUnicode_FromWideChar((&wxPyAnimationControlNameStr)->c_str(), (&wxPyAnimationControlNameStr)->Len());
+#else
+        pyobj = PyString_FromStringAndSize((&wxPyAnimationControlNameStr)->c_str(), (&wxPyAnimationControlNameStr)->Len());
+#endif
+    }
+    return pyobj;
+}
+
+
+static PyObject *_wrap_new_AnimationPlayer(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) NULL ;
+    bool arg2 = (bool) false ;
+    wxAnimationPlayer *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "animation",(char *) "destroyAnimation", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|OO:new_AnimationPlayer",kwnames,&obj0,&obj1)) goto fail;
+    if (obj0) {
+        SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+        if (SWIG_arg_fail(1)) SWIG_fail;
+    }
+    if (obj1) {
+        {
+            arg2 = (bool)(SWIG_As_bool(obj1)); 
+            if (SWIG_arg_fail(2)) SWIG_fail;
+        }
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxAnimationPlayer *)new wxAnimationPlayer(arg1,arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxAnimationPlayer, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_AnimationPlayer(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:delete_AnimationPlayer",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        delete arg1;
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_SetAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxAnimationBase *arg2 = (wxAnimationBase *) 0 ;
+    bool arg3 = (bool) false ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "animation",(char *) "destroyAnimation", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO|O:AnimationPlayer_SetAnimation",kwnames,&obj0,&obj1,&obj2)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(2)) SWIG_fail;
+    if (obj2) {
+        {
+            arg3 = (bool)(SWIG_As_bool(obj2)); 
+            if (SWIG_arg_fail(3)) SWIG_fail;
+        }
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SetAnimation(arg2,arg3);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxAnimationBase *result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetAnimation",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxAnimationBase *)((wxAnimationPlayer const *)arg1)->GetAnimation();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxAnimationBase, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_SetDestroyAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "destroyAnimation", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_SetDestroyAnimation",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (bool)(SWIG_As_bool(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SetDestroyAnimation(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetDestroyAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetDestroyAnimation",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->GetDestroyAnimation();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_SetCurrentFrame(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "currentFrame", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_SetCurrentFrame",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SetCurrentFrame(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetCurrentFrame(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetCurrentFrame",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (int)((wxAnimationPlayer const *)arg1)->GetCurrentFrame();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_SetWindow(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxWindow *arg2 = (wxWindow *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "window", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_SetWindow",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_wxWindow, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(2)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SetWindow(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetWindow(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxWindow *result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetWindow",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxWindow *)((wxAnimationPlayer const *)arg1)->GetWindow();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = wxPyMake_wxObject(result, 0); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_SetPosition(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxPoint *arg2 = 0 ;
+    wxPoint temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "pos", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_SetPosition",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxPoint_helper(obj1, &arg2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SetPosition((wxPoint const &)*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetPosition(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxPoint result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetPosition",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = ((wxAnimationPlayer const *)arg1)->GetPosition();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        wxPoint * resultptr;
+        resultptr = new wxPoint((wxPoint &)(result));
+        resultobj = SWIG_NewPointerObj((void *)(resultptr), SWIGTYPE_p_wxPoint, 1);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_SetLooped(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "looped", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_SetLooped",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (bool)(SWIG_As_bool(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SetLooped(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetLooped(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetLooped",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->GetLooped();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_HasAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_HasAnimation",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->HasAnimation();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_IsPlaying(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_IsPlaying",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->IsPlaying();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_UseBackgroundColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "useBackground", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_UseBackgroundColour",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (bool)(SWIG_As_bool(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->UseBackgroundColour(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_UsingBackgroundColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_UsingBackgroundColour",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->UsingBackgroundColour();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_SetCustomBackgroundColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxColour *arg2 = 0 ;
+    bool arg3 = (bool) true ;
+    wxColour temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "col",(char *) "useCustomBackgroundColour", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO|O:AnimationPlayer_SetCustomBackgroundColour",kwnames,&obj0,&obj1,&obj2)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxColour_helper(obj1, &arg2)) SWIG_fail;
+    }
+    if (obj2) {
+        {
+            arg3 = (bool)(SWIG_As_bool(obj2)); 
+            if (SWIG_arg_fail(3)) SWIG_fail;
+        }
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SetCustomBackgroundColour((wxColour const &)*arg2,arg3);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_UsingCustomBackgroundColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_UsingCustomBackgroundColour",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->UsingCustomBackgroundColour();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetCustomBackgroundColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxColour *result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetCustomBackgroundColour",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        {
+            wxColour const &_result_ref = ((wxAnimationPlayer const *)arg1)->GetCustomBackgroundColour();
+            result = (wxColour *) &_result_ref;
+        }
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxColour, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_UseParentBackground(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool arg2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "useParent", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_UseParentBackground",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (bool)(SWIG_As_bool(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->UseParentBackground(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_UsingParentBackground(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_UsingParentBackground",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->UsingParentBackground();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_Play(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxWindow *arg2 = 0 ;
+    wxPoint const &arg3_defvalue = wxPoint(0, 0) ;
+    wxPoint *arg3 = (wxPoint *) &arg3_defvalue ;
+    bool arg4 = (bool) true ;
+    bool result;
+    wxPoint temp3 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "window",(char *) "pos",(char *) "looped", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO|OO:AnimationPlayer_Play",kwnames,&obj0,&obj1,&obj2,&obj3)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_wxWindow, SWIG_POINTER_EXCEPTION | 0);
+        if (SWIG_arg_fail(2)) SWIG_fail;
+        if (arg2 == NULL) {
+            SWIG_null_ref("wxWindow");
+        }
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    if (obj2) {
+        {
+            arg3 = &temp3;
+            if ( ! wxPoint_helper(obj2, &arg3)) SWIG_fail;
+        }
+    }
+    if (obj3) {
+        {
+            arg4 = (bool)(SWIG_As_bool(obj3)); 
+            if (SWIG_arg_fail(4)) SWIG_fail;
+        }
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->Play(*arg2,(wxPoint const &)*arg3,arg4);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_Build(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_Build",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->Build();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_Stop(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_Stop",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->Stop();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_Draw(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxDC *arg2 = 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "dc", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_Draw",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_wxDC, SWIG_POINTER_EXCEPTION | 0);
+        if (SWIG_arg_fail(2)) SWIG_fail;
+        if (arg2 == NULL) {
+            SWIG_null_ref("wxDC");
+        }
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->Draw(*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetFrameCount(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetFrameCount",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (int)((wxAnimationPlayer const *)arg1)->GetFrameCount();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetFrame(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int arg2 ;
+    wxImage *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_GetFrame",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxImage *)((wxAnimationPlayer const *)arg1)->GetFrame(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxImage, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetDisposalMethod(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int arg2 ;
+    wxAnimationDisposal result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_GetDisposalMethod",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxAnimationDisposal)((wxAnimationPlayer const *)arg1)->GetDisposalMethod(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_From_int((result));
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetFrameRect(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int arg2 ;
+    wxRect result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_GetFrameRect",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = ((wxAnimationPlayer const *)arg1)->GetFrameRect(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        wxRect * resultptr;
+        resultptr = new wxRect((wxRect &)(result));
+        resultobj = SWIG_NewPointerObj((void *)(resultptr), SWIGTYPE_p_wxRect, 1);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetDelay(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_GetDelay",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (int)((wxAnimationPlayer const *)arg1)->GetDelay(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetLogicalScreenSize(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxSize result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetLogicalScreenSize",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = ((wxAnimationPlayer const *)arg1)->GetLogicalScreenSize();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        wxSize * resultptr;
+        resultptr = new wxSize((wxSize &)(result));
+        resultobj = SWIG_NewPointerObj((void *)(resultptr), SWIGTYPE_p_wxSize, 1);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetBackgroundColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxColour *arg2 = 0 ;
+    bool result;
+    wxColour temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "col", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_GetBackgroundColour",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxColour_helper(obj1, &arg2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->GetBackgroundColour(*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetTransparentColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxColour *arg2 = 0 ;
+    bool result;
+    wxColour temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "col", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_GetTransparentColour",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxColour_helper(obj1, &arg2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationPlayer const *)arg1)->GetTransparentColour(*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_PlayFrame(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int arg2 ;
+    wxWindow *arg3 = 0 ;
+    wxPoint *arg4 = 0 ;
+    bool result;
+    wxPoint temp4 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "frame",(char *) "window",(char *) "pos", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOOO:AnimationPlayer_PlayFrame",kwnames,&obj0,&obj1,&obj2,&obj3)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        SWIG_Python_ConvertPtr(obj2, (void **)&arg3, SWIGTYPE_p_wxWindow, SWIG_POINTER_EXCEPTION | 0);
+        if (SWIG_arg_fail(3)) SWIG_fail;
+        if (arg3 == NULL) {
+            SWIG_null_ref("wxWindow");
+        }
+        if (SWIG_arg_fail(3)) SWIG_fail;
+    }
+    {
+        arg4 = &temp4;
+        if ( ! wxPoint_helper(obj3, &arg4)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->PlayFrame(arg2,*arg3,(wxPoint const &)*arg4);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_PlayNextFrame(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_PlayNextFrame",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->PlayFrame();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_DrawFrame(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    int arg2 ;
+    wxDC *arg3 = 0 ;
+    wxPoint *arg4 = 0 ;
+    wxPoint temp4 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "frame",(char *) "dc",(char *) "pos", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOOO:AnimationPlayer_DrawFrame",kwnames,&obj0,&obj1,&obj2,&obj3)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        SWIG_Python_ConvertPtr(obj2, (void **)&arg3, SWIGTYPE_p_wxDC, SWIG_POINTER_EXCEPTION | 0);
+        if (SWIG_arg_fail(3)) SWIG_fail;
+        if (arg3 == NULL) {
+            SWIG_null_ref("wxDC");
+        }
+        if (SWIG_arg_fail(3)) SWIG_fail;
+    }
+    {
+        arg4 = &temp4;
+        if ( ! wxPoint_helper(obj3, &arg4)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->DrawFrame(arg2,*arg3,(wxPoint const &)*arg4);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_DrawBackground(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxDC *arg2 = 0 ;
+    wxPoint *arg3 = 0 ;
+    wxColour *arg4 = 0 ;
+    wxPoint temp3 ;
+    wxColour temp4 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "dc",(char *) "pos",(char *) "colour", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOOO:AnimationPlayer_DrawBackground",kwnames,&obj0,&obj1,&obj2,&obj3)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_wxDC, SWIG_POINTER_EXCEPTION | 0);
+        if (SWIG_arg_fail(2)) SWIG_fail;
+        if (arg2 == NULL) {
+            SWIG_null_ref("wxDC");
+        }
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        arg3 = &temp3;
+        if ( ! wxPoint_helper(obj2, &arg3)) SWIG_fail;
+    }
+    {
+        arg4 = &temp4;
+        if ( ! wxColour_helper(obj3, &arg4)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->DrawBackground(*arg2,(wxPoint const &)*arg3,(wxColour const &)*arg4);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_ClearCache(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_ClearCache",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->ClearCache();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_SaveBackground(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxRect *arg2 = 0 ;
+    wxRect temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "rect", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationPlayer_SaveBackground",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxRect_helper(obj1, &arg2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SaveBackground((wxRect const &)*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationPlayer_GetBackingStore(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationPlayer *arg1 = (wxAnimationPlayer *) 0 ;
+    wxBitmap *result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationPlayer_GetBackingStore",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationPlayer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        {
+            wxBitmap &_result_ref = (arg1)->GetBackingStore();
+            result = (wxBitmap *) &_result_ref;
+        }
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        wxBitmap* resultptr = new wxBitmap(*result);
+        resultobj = SWIG_NewPointerObj((void*)(resultptr), SWIGTYPE_p_wxBitmap, 1);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject * AnimationPlayer_swigregister(PyObject *, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_wxAnimationPlayer, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_delete_AnimationBase(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:delete_AnimationBase",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        delete arg1;
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_GetFrameCount(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationBase_GetFrameCount",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (int)((wxAnimationBase const *)arg1)->GetFrameCount();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_GetFrame(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    int arg2 ;
+    wxImage *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationBase_GetFrame",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxImage *)((wxAnimationBase const *)arg1)->GetFrame(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxImage, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_GetDisposalMethod(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    int arg2 ;
+    wxAnimationDisposal result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationBase_GetDisposalMethod",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxAnimationDisposal)((wxAnimationBase const *)arg1)->GetDisposalMethod(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_From_int((result));
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_GetFrameRect(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    int arg2 ;
+    wxRect result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationBase_GetFrameRect",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = ((wxAnimationBase const *)arg1)->GetFrameRect(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        wxRect * resultptr;
+        resultptr = new wxRect((wxRect &)(result));
+        resultobj = SWIG_NewPointerObj((void *)(resultptr), SWIGTYPE_p_wxRect, 1);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_GetDelay(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationBase_GetDelay",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (int)((wxAnimationBase const *)arg1)->GetDelay(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_GetLogicalScreenSize(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    wxSize result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationBase_GetLogicalScreenSize",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = ((wxAnimationBase const *)arg1)->GetLogicalScreenSize();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        wxSize * resultptr;
+        resultptr = new wxSize((wxSize &)(result));
+        resultobj = SWIG_NewPointerObj((void *)(resultptr), SWIGTYPE_p_wxSize, 1);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_GetBackgroundColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    wxColour *arg2 = 0 ;
+    bool result;
+    wxColour temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "col", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationBase_GetBackgroundColour",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxColour_helper(obj1, &arg2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationBase const *)arg1)->GetBackgroundColour(*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_GetTransparentColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    wxColour *arg2 = 0 ;
+    bool result;
+    wxColour temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "col", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationBase_GetTransparentColour",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxColour_helper(obj1, &arg2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationBase const *)arg1)->GetTransparentColour(*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_IsValid(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:AnimationBase_IsValid",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxAnimationBase const *)arg1)->IsValid();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_AnimationBase_LoadFile(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxAnimationBase *arg1 = (wxAnimationBase *) 0 ;
+    wxString *arg2 = 0 ;
+    bool result;
+    bool temp2 = false ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "filename", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:AnimationBase_LoadFile",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxAnimationBase, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = wxString_in_helper(obj1);
+        if (arg2 == NULL) SWIG_fail;
+        temp2 = true;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->LoadFile((wxString const &)*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    {
+        if (temp2)
+        delete arg2;
+    }
+    return resultobj;
+    fail:
+    {
+        if (temp2)
+        delete arg2;
+    }
+    return NULL;
+}
+
+
+static PyObject * AnimationBase_swigregister(PyObject *, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_wxAnimationBase, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_new_GIFAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *result;
+    char *kwnames[] = {
+        NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)":new_GIFAnimation",kwnames)) goto fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxGIFAnimation *)new wxGIFAnimation();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxGIFAnimation, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_delete_GIFAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:delete_GIFAnimation",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        delete arg1;
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_GetFrameCount(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimation_GetFrameCount",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (int)((wxGIFAnimation const *)arg1)->GetFrameCount();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_GetFrame(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    int arg2 ;
+    wxImage *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GIFAnimation_GetFrame",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxImage *)((wxGIFAnimation const *)arg1)->GetFrame(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxImage, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_GetDisposalMethod(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    int arg2 ;
+    wxAnimationDisposal result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GIFAnimation_GetDisposalMethod",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxAnimationDisposal)((wxGIFAnimation const *)arg1)->GetDisposalMethod(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_From_int((result));
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_GetFrameRect(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    int arg2 ;
+    wxRect result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GIFAnimation_GetFrameRect",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = ((wxGIFAnimation const *)arg1)->GetFrameRect(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        wxRect * resultptr;
+        resultptr = new wxRect((wxRect &)(result));
+        resultobj = SWIG_NewPointerObj((void *)(resultptr), SWIGTYPE_p_wxRect, 1);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_GetDelay(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "i", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GIFAnimation_GetDelay",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (int)((wxGIFAnimation const *)arg1)->GetDelay(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_GetLogicalScreenSize(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    wxSize result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimation_GetLogicalScreenSize",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = ((wxGIFAnimation const *)arg1)->GetLogicalScreenSize();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        wxSize * resultptr;
+        resultptr = new wxSize((wxSize &)(result));
+        resultobj = SWIG_NewPointerObj((void *)(resultptr), SWIGTYPE_p_wxSize, 1);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_GetBackgroundColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    wxColour *arg2 = 0 ;
+    bool result;
+    wxColour temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "col", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GIFAnimation_GetBackgroundColour",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxColour_helper(obj1, &arg2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxGIFAnimation const *)arg1)->GetBackgroundColour(*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_GetTransparentColour(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    wxColour *arg2 = 0 ;
+    bool result;
+    wxColour temp2 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "col", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GIFAnimation_GetTransparentColour",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = &temp2;
+        if ( ! wxColour_helper(obj1, &arg2)) SWIG_fail;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxGIFAnimation const *)arg1)->GetTransparentColour(*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_IsValid(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimation_IsValid",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxGIFAnimation const *)arg1)->IsValid();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimation_LoadFile(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimation *arg1 = (wxGIFAnimation *) 0 ;
+    wxString *arg2 = 0 ;
+    bool result;
+    bool temp2 = false ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "filename", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GIFAnimation_LoadFile",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimation, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = wxString_in_helper(obj1);
+        if (arg2 == NULL) SWIG_fail;
+        temp2 = true;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->LoadFile((wxString const &)*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    {
+        if (temp2)
+        delete arg2;
+    }
+    return resultobj;
+    fail:
+    {
+        if (temp2)
+        delete arg2;
+    }
+    return NULL;
+}
+
+
+static PyObject * GIFAnimation_swigregister(PyObject *, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_wxGIFAnimation, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyObject *_wrap_new_GIFAnimationCtrl(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxWindow *arg1 = (wxWindow *) 0 ;
+    int arg2 = (int) -1 ;
+    wxString const &arg3_defvalue = wxPyEmptyString ;
+    wxString *arg3 = (wxString *) &arg3_defvalue ;
+    wxPoint const &arg4_defvalue = wxDefaultPosition ;
+    wxPoint *arg4 = (wxPoint *) &arg4_defvalue ;
+    wxSize const &arg5_defvalue = wxDefaultSize ;
+    wxSize *arg5 = (wxSize *) &arg5_defvalue ;
+    long arg6 = (long) wxAN_FIT_ANIMATION|wxNO_BORDER ;
+    wxString const &arg7_defvalue = wxPyAnimationControlNameStr ;
+    wxString *arg7 = (wxString *) &arg7_defvalue ;
+    wxGIFAnimationCtrl *result;
+    bool temp3 = false ;
+    wxPoint temp4 ;
+    wxSize temp5 ;
+    bool temp7 = false ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    PyObject * obj6 = 0 ;
+    char *kwnames[] = {
+        (char *) "parent",(char *) "id",(char *) "filename",(char *) "pos",(char *) "size",(char *) "style",(char *) "name", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|OOOOOO:new_GIFAnimationCtrl",kwnames,&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxWindow, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    if (obj1) {
+        {
+            arg2 = (int)(SWIG_As_int(obj1)); 
+            if (SWIG_arg_fail(2)) SWIG_fail;
+        }
+    }
+    if (obj2) {
+        {
+            arg3 = wxString_in_helper(obj2);
+            if (arg3 == NULL) SWIG_fail;
+            temp3 = true;
+        }
+    }
+    if (obj3) {
+        {
+            arg4 = &temp4;
+            if ( ! wxPoint_helper(obj3, &arg4)) SWIG_fail;
+        }
+    }
+    if (obj4) {
+        {
+            arg5 = &temp5;
+            if ( ! wxSize_helper(obj4, &arg5)) SWIG_fail;
+        }
+    }
+    if (obj5) {
+        {
+            arg6 = (long)(SWIG_As_long(obj5)); 
+            if (SWIG_arg_fail(6)) SWIG_fail;
+        }
+    }
+    if (obj6) {
+        {
+            arg7 = wxString_in_helper(obj6);
+            if (arg7 == NULL) SWIG_fail;
+            temp7 = true;
+        }
+    }
+    {
+        if (!wxPyCheckForApp()) SWIG_fail;
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxGIFAnimationCtrl *)new wxGIFAnimationCtrl(arg1,arg2,(wxString const &)*arg3,(wxPoint const &)*arg4,(wxSize const &)*arg5,arg6,(wxString const &)*arg7);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxGIFAnimationCtrl, 1);
+    {
+        if (temp3)
+        delete arg3;
+    }
+    {
+        if (temp7)
+        delete arg7;
+    }
+    return resultobj;
+    fail:
+    {
+        if (temp3)
+        delete arg3;
+    }
+    {
+        if (temp7)
+        delete arg7;
+    }
+    return NULL;
+}
+
+
+static PyObject *_wrap_new_PreGIFAnimationCtrl(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *result;
+    char *kwnames[] = {
+        NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)":new_PreGIFAnimationCtrl",kwnames)) goto fail;
+    {
+        if (!wxPyCheckForApp()) SWIG_fail;
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxGIFAnimationCtrl *)new wxGIFAnimationCtrl();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxGIFAnimationCtrl, 1);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_Create(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    wxWindow *arg2 = (wxWindow *) 0 ;
+    int arg3 = (int) -1 ;
+    wxString const &arg4_defvalue = wxPyEmptyString ;
+    wxString *arg4 = (wxString *) &arg4_defvalue ;
+    wxPoint const &arg5_defvalue = wxDefaultPosition ;
+    wxPoint *arg5 = (wxPoint *) &arg5_defvalue ;
+    wxSize const &arg6_defvalue = wxDefaultSize ;
+    wxSize *arg6 = (wxSize *) &arg6_defvalue ;
+    long arg7 = (long) wxAN_FIT_ANIMATION|wxNO_BORDER ;
+    wxString const &arg8_defvalue = wxPyAnimationControlNameStr ;
+    wxString *arg8 = (wxString *) &arg8_defvalue ;
+    bool result;
+    bool temp4 = false ;
+    wxPoint temp5 ;
+    wxSize temp6 ;
+    bool temp8 = false ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    PyObject * obj5 = 0 ;
+    PyObject * obj6 = 0 ;
+    PyObject * obj7 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "parent",(char *) "id",(char *) "filename",(char *) "pos",(char *) "size",(char *) "style",(char *) "name", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO|OOOOOO:GIFAnimationCtrl_Create",kwnames,&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_wxWindow, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(2)) SWIG_fail;
+    if (obj2) {
+        {
+            arg3 = (int)(SWIG_As_int(obj2)); 
+            if (SWIG_arg_fail(3)) SWIG_fail;
+        }
+    }
+    if (obj3) {
+        {
+            arg4 = wxString_in_helper(obj3);
+            if (arg4 == NULL) SWIG_fail;
+            temp4 = true;
+        }
+    }
+    if (obj4) {
+        {
+            arg5 = &temp5;
+            if ( ! wxPoint_helper(obj4, &arg5)) SWIG_fail;
+        }
+    }
+    if (obj5) {
+        {
+            arg6 = &temp6;
+            if ( ! wxSize_helper(obj5, &arg6)) SWIG_fail;
+        }
+    }
+    if (obj6) {
+        {
+            arg7 = (long)(SWIG_As_long(obj6)); 
+            if (SWIG_arg_fail(7)) SWIG_fail;
+        }
+    }
+    if (obj7) {
+        {
+            arg8 = wxString_in_helper(obj7);
+            if (arg8 == NULL) SWIG_fail;
+            temp8 = true;
+        }
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->Create(arg2,arg3,(wxString const &)*arg4,(wxPoint const &)*arg5,(wxSize const &)*arg6,arg7,(wxString const &)*arg8);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    {
+        if (temp4)
+        delete arg4;
+    }
+    {
+        if (temp8)
+        delete arg8;
+    }
+    return resultobj;
+    fail:
+    {
+        if (temp4)
+        delete arg4;
+    }
+    {
+        if (temp8)
+        delete arg8;
+    }
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_LoadFile(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    wxString const &arg2_defvalue = wxPyEmptyString ;
+    wxString *arg2 = (wxString *) &arg2_defvalue ;
+    bool result;
+    bool temp2 = false ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "filename", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|O:GIFAnimationCtrl_LoadFile",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    if (obj1) {
+        {
+            arg2 = wxString_in_helper(obj1);
+            if (arg2 == NULL) SWIG_fail;
+            temp2 = true;
+        }
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->LoadFile((wxString const &)*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    {
+        if (temp2)
+        delete arg2;
+    }
+    return resultobj;
+    fail:
+    {
+        if (temp2)
+        delete arg2;
+    }
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_Play(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    bool arg2 = (bool) true ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "looped", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|O:GIFAnimationCtrl_Play",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    if (obj1) {
+        {
+            arg2 = (bool)(SWIG_As_bool(obj1)); 
+            if (SWIG_arg_fail(2)) SWIG_fail;
+        }
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)(arg1)->Play(arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_Stop(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimationCtrl_Stop",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->Stop();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_FitToAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimationCtrl_FitToAnimation",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->FitToAnimation();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_IsPlaying(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    bool result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimationCtrl_IsPlaying",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (bool)((wxGIFAnimationCtrl const *)arg1)->IsPlaying();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+        resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj);
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_GetPlayer(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    wxAnimationPlayer *result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimationCtrl_GetPlayer",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        {
+            wxAnimationPlayer &_result_ref = (arg1)->GetPlayer();
+            result = (wxAnimationPlayer *) &_result_ref;
+        }
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxAnimationPlayer, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_GetAnimation(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    wxAnimationBase *result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimationCtrl_GetAnimation",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        result = (wxAnimationBase *)(arg1)->GetAnimation();
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_wxAnimationBase, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_GetFilename(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    wxString *result;
+    PyObject * obj0 = 0 ;
+    char *kwnames[] = {
+        (char *) "self", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O:GIFAnimationCtrl_GetFilename",kwnames,&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        {
+            wxString const &_result_ref = ((wxGIFAnimationCtrl const *)arg1)->GetFilename();
+            result = (wxString *) &_result_ref;
+        }
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    {
+#if wxUSE_UNICODE
+        resultobj = PyUnicode_FromWideChar(result->c_str(), result->Len());
+#else
+        resultobj = PyString_FromStringAndSize(result->c_str(), result->Len());
+#endif
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_GIFAnimationCtrl_SetFilename(PyObject *, PyObject *args, PyObject *kwargs) {
+    PyObject *resultobj;
+    wxGIFAnimationCtrl *arg1 = (wxGIFAnimationCtrl *) 0 ;
+    wxString *arg2 = 0 ;
+    bool temp2 = false ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    char *kwnames[] = {
+        (char *) "self",(char *) "filename", NULL 
+    };
+    
+    if(!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GIFAnimationCtrl_SetFilename",kwnames,&obj0,&obj1)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_wxGIFAnimationCtrl, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        arg2 = wxString_in_helper(obj1);
+        if (arg2 == NULL) SWIG_fail;
+        temp2 = true;
+    }
+    {
+        PyThreadState* __tstate = wxPyBeginAllowThreads();
+        (arg1)->SetFilename((wxString const &)*arg2);
+        
+        wxPyEndAllowThreads(__tstate);
+        if (PyErr_Occurred()) SWIG_fail;
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    {
+        if (temp2)
+        delete arg2;
+    }
+    return resultobj;
+    fail:
+    {
+        if (temp2)
+        delete arg2;
+    }
+    return NULL;
+}
+
+
+static PyObject * GIFAnimationCtrl_swigregister(PyObject *, PyObject *args) {
+    PyObject *obj;
+    if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
+    SWIG_TypeClientData(SWIGTYPE_p_wxGIFAnimationCtrl, obj);
+    Py_INCREF(obj);
+    return Py_BuildValue((char *)"");
+}
+static PyMethodDef SwigMethods[] = {
+        { (char *)"new_AnimationPlayer", (PyCFunction) _wrap_new_AnimationPlayer, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"delete_AnimationPlayer", (PyCFunction) _wrap_delete_AnimationPlayer, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_SetAnimation", (PyCFunction) _wrap_AnimationPlayer_SetAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetAnimation", (PyCFunction) _wrap_AnimationPlayer_GetAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_SetDestroyAnimation", (PyCFunction) _wrap_AnimationPlayer_SetDestroyAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetDestroyAnimation", (PyCFunction) _wrap_AnimationPlayer_GetDestroyAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_SetCurrentFrame", (PyCFunction) _wrap_AnimationPlayer_SetCurrentFrame, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetCurrentFrame", (PyCFunction) _wrap_AnimationPlayer_GetCurrentFrame, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_SetWindow", (PyCFunction) _wrap_AnimationPlayer_SetWindow, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetWindow", (PyCFunction) _wrap_AnimationPlayer_GetWindow, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_SetPosition", (PyCFunction) _wrap_AnimationPlayer_SetPosition, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetPosition", (PyCFunction) _wrap_AnimationPlayer_GetPosition, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_SetLooped", (PyCFunction) _wrap_AnimationPlayer_SetLooped, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetLooped", (PyCFunction) _wrap_AnimationPlayer_GetLooped, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_HasAnimation", (PyCFunction) _wrap_AnimationPlayer_HasAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_IsPlaying", (PyCFunction) _wrap_AnimationPlayer_IsPlaying, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_UseBackgroundColour", (PyCFunction) _wrap_AnimationPlayer_UseBackgroundColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_UsingBackgroundColour", (PyCFunction) _wrap_AnimationPlayer_UsingBackgroundColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_SetCustomBackgroundColour", (PyCFunction) _wrap_AnimationPlayer_SetCustomBackgroundColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_UsingCustomBackgroundColour", (PyCFunction) _wrap_AnimationPlayer_UsingCustomBackgroundColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetCustomBackgroundColour", (PyCFunction) _wrap_AnimationPlayer_GetCustomBackgroundColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_UseParentBackground", (PyCFunction) _wrap_AnimationPlayer_UseParentBackground, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_UsingParentBackground", (PyCFunction) _wrap_AnimationPlayer_UsingParentBackground, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_Play", (PyCFunction) _wrap_AnimationPlayer_Play, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_Build", (PyCFunction) _wrap_AnimationPlayer_Build, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_Stop", (PyCFunction) _wrap_AnimationPlayer_Stop, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_Draw", (PyCFunction) _wrap_AnimationPlayer_Draw, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetFrameCount", (PyCFunction) _wrap_AnimationPlayer_GetFrameCount, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetFrame", (PyCFunction) _wrap_AnimationPlayer_GetFrame, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetDisposalMethod", (PyCFunction) _wrap_AnimationPlayer_GetDisposalMethod, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetFrameRect", (PyCFunction) _wrap_AnimationPlayer_GetFrameRect, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetDelay", (PyCFunction) _wrap_AnimationPlayer_GetDelay, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetLogicalScreenSize", (PyCFunction) _wrap_AnimationPlayer_GetLogicalScreenSize, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetBackgroundColour", (PyCFunction) _wrap_AnimationPlayer_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetTransparentColour", (PyCFunction) _wrap_AnimationPlayer_GetTransparentColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_PlayFrame", (PyCFunction) _wrap_AnimationPlayer_PlayFrame, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_PlayNextFrame", (PyCFunction) _wrap_AnimationPlayer_PlayNextFrame, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_DrawFrame", (PyCFunction) _wrap_AnimationPlayer_DrawFrame, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_DrawBackground", (PyCFunction) _wrap_AnimationPlayer_DrawBackground, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_ClearCache", (PyCFunction) _wrap_AnimationPlayer_ClearCache, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_SaveBackground", (PyCFunction) _wrap_AnimationPlayer_SaveBackground, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_GetBackingStore", (PyCFunction) _wrap_AnimationPlayer_GetBackingStore, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationPlayer_swigregister", AnimationPlayer_swigregister, METH_VARARGS, NULL},
+        { (char *)"delete_AnimationBase", (PyCFunction) _wrap_delete_AnimationBase, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_GetFrameCount", (PyCFunction) _wrap_AnimationBase_GetFrameCount, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_GetFrame", (PyCFunction) _wrap_AnimationBase_GetFrame, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_GetDisposalMethod", (PyCFunction) _wrap_AnimationBase_GetDisposalMethod, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_GetFrameRect", (PyCFunction) _wrap_AnimationBase_GetFrameRect, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_GetDelay", (PyCFunction) _wrap_AnimationBase_GetDelay, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_GetLogicalScreenSize", (PyCFunction) _wrap_AnimationBase_GetLogicalScreenSize, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_GetBackgroundColour", (PyCFunction) _wrap_AnimationBase_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_GetTransparentColour", (PyCFunction) _wrap_AnimationBase_GetTransparentColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_IsValid", (PyCFunction) _wrap_AnimationBase_IsValid, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_LoadFile", (PyCFunction) _wrap_AnimationBase_LoadFile, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"AnimationBase_swigregister", AnimationBase_swigregister, METH_VARARGS, NULL},
+        { (char *)"new_GIFAnimation", (PyCFunction) _wrap_new_GIFAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"delete_GIFAnimation", (PyCFunction) _wrap_delete_GIFAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_GetFrameCount", (PyCFunction) _wrap_GIFAnimation_GetFrameCount, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_GetFrame", (PyCFunction) _wrap_GIFAnimation_GetFrame, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_GetDisposalMethod", (PyCFunction) _wrap_GIFAnimation_GetDisposalMethod, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_GetFrameRect", (PyCFunction) _wrap_GIFAnimation_GetFrameRect, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_GetDelay", (PyCFunction) _wrap_GIFAnimation_GetDelay, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_GetLogicalScreenSize", (PyCFunction) _wrap_GIFAnimation_GetLogicalScreenSize, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_GetBackgroundColour", (PyCFunction) _wrap_GIFAnimation_GetBackgroundColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_GetTransparentColour", (PyCFunction) _wrap_GIFAnimation_GetTransparentColour, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_IsValid", (PyCFunction) _wrap_GIFAnimation_IsValid, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_LoadFile", (PyCFunction) _wrap_GIFAnimation_LoadFile, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimation_swigregister", GIFAnimation_swigregister, METH_VARARGS, NULL},
+        { (char *)"new_GIFAnimationCtrl", (PyCFunction) _wrap_new_GIFAnimationCtrl, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"new_PreGIFAnimationCtrl", (PyCFunction) _wrap_new_PreGIFAnimationCtrl, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_Create", (PyCFunction) _wrap_GIFAnimationCtrl_Create, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_LoadFile", (PyCFunction) _wrap_GIFAnimationCtrl_LoadFile, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_Play", (PyCFunction) _wrap_GIFAnimationCtrl_Play, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_Stop", (PyCFunction) _wrap_GIFAnimationCtrl_Stop, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_FitToAnimation", (PyCFunction) _wrap_GIFAnimationCtrl_FitToAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_IsPlaying", (PyCFunction) _wrap_GIFAnimationCtrl_IsPlaying, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_GetPlayer", (PyCFunction) _wrap_GIFAnimationCtrl_GetPlayer, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_GetAnimation", (PyCFunction) _wrap_GIFAnimationCtrl_GetAnimation, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_GetFilename", (PyCFunction) _wrap_GIFAnimationCtrl_GetFilename, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_SetFilename", (PyCFunction) _wrap_GIFAnimationCtrl_SetFilename, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"GIFAnimationCtrl_swigregister", GIFAnimationCtrl_swigregister, METH_VARARGS, NULL},
+        { NULL, NULL, 0, NULL }
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static void *_p_wxLayoutConstraintsTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxLayoutConstraints *) x));
+}
+static void *_p_wxGBSizerItemTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxSizerItem *) ((wxGBSizerItem *) x));
+}
+static void *_p_wxSizerItemTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxSizerItem *) x));
+}
+static void *_p_wxScrollEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxScrollEvent *) x));
+}
+static void *_p_wxIndividualLayoutConstraintTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxIndividualLayoutConstraint *) x));
+}
+static void *_p_wxStaticBoxSizerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxSizer *)(wxBoxSizer *) ((wxStaticBoxSizer *) x));
+}
+static void *_p_wxBoxSizerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxSizer *) ((wxBoxSizer *) x));
+}
+static void *_p_wxSizerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxSizer *) x));
+}
+static void *_p_wxGridBagSizerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxSizer *)(wxGridSizer *)(wxFlexGridSizer *) ((wxGridBagSizer *) x));
+}
+static void *_p_wxUpdateUIEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxUpdateUIEvent *) x));
+}
+static void *_p_wxEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxEvent *) x));
+}
+static void *_p_wxFlexGridSizerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxSizer *)(wxGridSizer *) ((wxFlexGridSizer *) x));
+}
+static void *_p_wxGridSizerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxSizer *) ((wxGridSizer *) x));
+}
+static void *_p_wxInitDialogEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxInitDialogEvent *) x));
+}
+static void *_p_wxAnimationBaseTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxAnimationBase *) x));
+}
+static void *_p_wxPaintEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxPaintEvent *) x));
+}
+static void *_p_wxNcPaintEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxNcPaintEvent *) x));
+}
+static void *_p_wxPaletteChangedEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxPaletteChangedEvent *) x));
+}
+static void *_p_wxDisplayChangedEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxDisplayChangedEvent *) x));
+}
+static void *_p_wxMouseCaptureChangedEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxMouseCaptureChangedEvent *) x));
+}
+static void *_p_wxSysColourChangedEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxSysColourChangedEvent *) x));
+}
+static void *_p_wxControlTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *)(wxWindow *) ((wxControl *) x));
+}
+static void *_p_wxSetCursorEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxSetCursorEvent *) x));
+}
+static void *_p_wxFSFileTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxFSFile *) x));
+}
+static void *_p_wxPySizerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxSizer *) ((wxPySizer *) x));
+}
+static void *_p_wxPyEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxPyEvent *) x));
+}
+static void *_p_wxNotifyEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxNotifyEvent *) x));
+}
+static void *_p_wxShowEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxShowEvent *) x));
+}
+static void *_p_wxAnimationPlayerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxAnimationPlayer *) x));
+}
+static void *_p_wxMenuItemTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxMenuItem *) x));
+}
+static void *_p_wxDateEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxDateEvent *) x));
+}
+static void *_p_wxIdleEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxIdleEvent *) x));
+}
+static void *_p_wxWindowCreateEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxWindowCreateEvent *) x));
+}
+static void *_p_wxQueryNewPaletteEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxQueryNewPaletteEvent *) x));
+}
+static void *_p_wxMaximizeEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxMaximizeEvent *) x));
+}
+static void *_p_wxIconizeEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxIconizeEvent *) x));
+}
+static void *_p_wxSizeEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxSizeEvent *) x));
+}
+static void *_p_wxMoveEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxMoveEvent *) x));
+}
+static void *_p_wxActivateEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxActivateEvent *) x));
+}
+static void *_p_wxXPMHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *) ((wxXPMHandler *) x));
+}
+static void *_p_wxPNMHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *) ((wxPNMHandler *) x));
+}
+static void *_p_wxJPEGHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *) ((wxJPEGHandler *) x));
+}
+static void *_p_wxPCXHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *) ((wxPCXHandler *) x));
+}
+static void *_p_wxGIFHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *) ((wxGIFHandler *) x));
+}
+static void *_p_wxPNGHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *) ((wxPNGHandler *) x));
+}
+static void *_p_wxANIHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *)(wxBMPHandler *)(wxICOHandler *)(wxCURHandler *) ((wxANIHandler *) x));
+}
+static void *_p_wxCURHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *)(wxBMPHandler *)(wxICOHandler *) ((wxCURHandler *) x));
+}
+static void *_p_wxICOHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *)(wxBMPHandler *) ((wxICOHandler *) x));
+}
+static void *_p_wxBMPHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *) ((wxBMPHandler *) x));
+}
+static void *_p_wxImageHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxImageHandler *) x));
+}
+static void *_p_wxTIFFHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxImageHandler *) ((wxTIFFHandler *) x));
+}
+static void *_p_wxEvtHandlerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxEvtHandler *) x));
+}
+static void *_p_wxStdDialogButtonSizerTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxSizer *)(wxBoxSizer *) ((wxStdDialogButtonSizer *) x));
+}
+static void *_p_wxAcceleratorTableTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxAcceleratorTable *) x));
+}
+static void *_p_wxImageTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxImage *) x));
+}
+static void *_p_wxScrollWinEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxScrollWinEvent *) x));
+}
+static void *_p_wxWindowDestroyEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxWindowDestroyEvent *) x));
+}
+static void *_p_wxNavigationKeyEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxNavigationKeyEvent *) x));
+}
+static void *_p_wxKeyEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxKeyEvent *) x));
+}
+static void *_p_wxWindowTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *) ((wxWindow *) x));
+}
+static void *_p_wxMenuTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *) ((wxMenu *) x));
+}
+static void *_p_wxMenuBarTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *)(wxWindow *) ((wxMenuBar *) x));
+}
+static void *_p_wxFileSystemTo_p_wxObject(void *x) {
+    return (void *)((wxObject *)  ((wxFileSystem *) x));
+}
+static void *_p_wxGIFAnimationTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxAnimationBase *) ((wxGIFAnimation *) x));
+}
+static void *_p_wxContextMenuEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxContextMenuEvent *) x));
+}
+static void *_p_wxMenuEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxMenuEvent *) x));
+}
+static void *_p_wxPyAppTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *) ((wxPyApp *) x));
+}
+static void *_p_wxCloseEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxCloseEvent *) x));
+}
+static void *_p_wxMouseEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxMouseEvent *) x));
+}
+static void *_p_wxEraseEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxEraseEvent *) x));
+}
+static void *_p_wxPyCommandEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxPyCommandEvent *) x));
+}
+static void *_p_wxCommandEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxCommandEvent *) x));
+}
+static void *_p_wxDropFilesEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxDropFilesEvent *) x));
+}
+static void *_p_wxFocusEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *) ((wxFocusEvent *) x));
+}
+static void *_p_wxChildFocusEventTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvent *)(wxCommandEvent *) ((wxChildFocusEvent *) x));
+}
+static void *_p_wxGIFAnimationCtrlTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *)(wxWindow *)(wxControl *) ((wxGIFAnimationCtrl *) x));
+}
+static void *_p_wxControlWithItemsTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *)(wxWindow *)(wxControl *) ((wxControlWithItems *) x));
+}
+static void *_p_wxPyValidatorTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *)(wxValidator *) ((wxPyValidator *) x));
+}
+static void *_p_wxValidatorTo_p_wxObject(void *x) {
+    return (void *)((wxObject *) (wxEvtHandler *) ((wxValidator *) x));
+}
+static void *_p_wxControlTo_p_wxWindow(void *x) {
+    return (void *)((wxWindow *)  ((wxControl *) x));
+}
+static void *_p_wxControlWithItemsTo_p_wxWindow(void *x) {
+    return (void *)((wxWindow *) (wxControl *) ((wxControlWithItems *) x));
+}
+static void *_p_wxGIFAnimationCtrlTo_p_wxWindow(void *x) {
+    return (void *)((wxWindow *) (wxControl *) ((wxGIFAnimationCtrl *) x));
+}
+static void *_p_wxMenuBarTo_p_wxWindow(void *x) {
+    return (void *)((wxWindow *)  ((wxMenuBar *) x));
+}
+static void *_p_wxGIFAnimationTo_p_wxAnimationBase(void *x) {
+    return (void *)((wxAnimationBase *)  ((wxGIFAnimation *) x));
+}
+static void *_p_wxControlTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *) (wxWindow *) ((wxControl *) x));
+}
+static void *_p_wxWindowTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *)  ((wxWindow *) x));
+}
+static void *_p_wxControlWithItemsTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *) (wxWindow *)(wxControl *) ((wxControlWithItems *) x));
+}
+static void *_p_wxPyAppTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *)  ((wxPyApp *) x));
+}
+static void *_p_wxGIFAnimationCtrlTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *) (wxWindow *)(wxControl *) ((wxGIFAnimationCtrl *) x));
+}
+static void *_p_wxValidatorTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *)  ((wxValidator *) x));
+}
+static void *_p_wxPyValidatorTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *) (wxValidator *) ((wxPyValidator *) x));
+}
+static void *_p_wxMenuBarTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *) (wxWindow *) ((wxMenuBar *) x));
+}
+static void *_p_wxMenuTo_p_wxEvtHandler(void *x) {
+    return (void *)((wxEvtHandler *)  ((wxMenu *) x));
+}
+static void *_p_wxControlWithItemsTo_p_wxControl(void *x) {
+    return (void *)((wxControl *)  ((wxControlWithItems *) x));
+}
+static void *_p_wxGIFAnimationCtrlTo_p_wxControl(void *x) {
+    return (void *)((wxControl *)  ((wxGIFAnimationCtrl *) x));
+}
+static swig_type_info _swigt__p_wxRect[] = {{"_p_wxRect", 0, "wxRect *", 0, 0, 0, 0},{"_p_wxRect", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxGIFAnimationCtrl[] = {{"_p_wxGIFAnimationCtrl", 0, "wxGIFAnimationCtrl *", 0, 0, 0, 0},{"_p_wxGIFAnimationCtrl", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxObject[] = {{"_p_wxObject", 0, "wxObject *", 0, 0, 0, 0},{"_p_wxLayoutConstraints", _p_wxLayoutConstraintsTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxGBSizerItem", _p_wxGBSizerItemTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxSizerItem", _p_wxSizerItemTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxScrollEvent", _p_wxScrollEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxIndividualLayoutConstraint", _p_wxIndividualLayoutConstraintTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxStaticBoxSizer", _p_wxStaticBoxSizerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxBoxSizer", _p_wxBoxSizerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxSizer", _p_wxSizerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxGridBagSizer", _p_wxGridBagSizerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxUpdateUIEvent", _p_wxUpdateUIEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxMenu", _p_wxMenuTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxEvent", _p_wxEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxGridSizer", _p_wxGridSizerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxFlexGridSizer", _p_wxFlexGridSizerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxInitDialogEvent", _p_wxInitDialogEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxAnimationBase", _p_wxAnimationBaseTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPaintEvent", _p_wxPaintEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxNcPaintEvent", _p_wxNcPaintEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPaletteChangedEvent", _p_wxPaletteChangedEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxDisplayChangedEvent", _p_wxDisplayChangedEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxMouseCaptureChangedEvent", _p_wxMouseCaptureChangedEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxSysColourChangedEvent", _p_wxSysColourChangedEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxControl", _p_wxControlTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxSetCursorEvent", _p_wxSetCursorEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxFSFile", _p_wxFSFileTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPySizer", _p_wxPySizerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPyEvent", _p_wxPyEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxNotifyEvent", _p_wxNotifyEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxShowEvent", _p_wxShowEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxAnimationPlayer", _p_wxAnimationPlayerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxMenuItem", _p_wxMenuItemTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxWindowCreateEvent", _p_wxWindowCreateEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxIdleEvent", _p_wxIdleEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxDateEvent", _p_wxDateEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxQueryNewPaletteEvent", _p_wxQueryNewPaletteEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxMaximizeEvent", _p_wxMaximizeEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxIconizeEvent", _p_wxIconizeEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxSizeEvent", _p_wxSizeEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxMoveEvent", _p_wxMoveEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxActivateEvent", _p_wxActivateEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxXPMHandler", _p_wxXPMHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPNMHandler", _p_wxPNMHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxJPEGHandler", _p_wxJPEGHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPCXHandler", _p_wxPCXHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxGIFHandler", _p_wxGIFHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPNGHandler", _p_wxPNGHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxANIHandler", _p_wxANIHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxCURHandler", _p_wxCURHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxICOHandler", _p_wxICOHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxBMPHandler", _p_wxBMPHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxImageHandler", _p_wxImageHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxTIFFHandler", _p_wxTIFFHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxEvtHandler", _p_wxEvtHandlerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxStdDialogButtonSizer", _p_wxStdDialogButtonSizerTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxAcceleratorTable", _p_wxAcceleratorTableTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxImage", _p_wxImageTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxScrollWinEvent", _p_wxScrollWinEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxObject", 0, 0, 0, 0, 0, 0},{"_p_wxWindowDestroyEvent", _p_wxWindowDestroyEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxNavigationKeyEvent", _p_wxNavigationKeyEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxKeyEvent", _p_wxKeyEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxWindow", _p_wxWindowTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxMenuBar", _p_wxMenuBarTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxFileSystem", _p_wxFileSystemTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxGIFAnimation", _p_wxGIFAnimationTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxContextMenuEvent", _p_wxContextMenuEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxMenuEvent", _p_wxMenuEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPyApp", _p_wxPyAppTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxMouseEvent", _p_wxMouseEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxEraseEvent", _p_wxEraseEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxCloseEvent", _p_wxCloseEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxCommandEvent", _p_wxCommandEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPyCommandEvent", _p_wxPyCommandEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxDropFilesEvent", _p_wxDropFilesEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxFocusEvent", _p_wxFocusEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxChildFocusEvent", _p_wxChildFocusEventTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxGIFAnimationCtrl", _p_wxGIFAnimationCtrlTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxControlWithItems", _p_wxControlWithItemsTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxPyValidator", _p_wxPyValidatorTo_p_wxObject, 0, 0, 0, 0, 0},{"_p_wxValidator", _p_wxValidatorTo_p_wxObject, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_unsigned_char[] = {{"_p_unsigned_char", 0, "unsigned char *|byte *", 0, 0, 0, 0},{"_p_unsigned_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxColour[] = {{"_p_wxColour", 0, "wxColour *", 0, 0, 0, 0},{"_p_wxColour", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxAnimationPlayer[] = {{"_p_wxAnimationPlayer", 0, "wxAnimationPlayer *", 0, 0, 0, 0},{"_p_wxAnimationPlayer", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxWindow[] = {{"_p_wxWindow", 0, "wxWindow *", 0, 0, 0, 0},{"_p_wxControl", _p_wxControlTo_p_wxWindow, 0, 0, 0, 0, 0},{"_p_wxWindow", 0, 0, 0, 0, 0, 0},{"_p_wxControlWithItems", _p_wxControlWithItemsTo_p_wxWindow, 0, 0, 0, 0, 0},{"_p_wxGIFAnimationCtrl", _p_wxGIFAnimationCtrlTo_p_wxWindow, 0, 0, 0, 0, 0},{"_p_wxMenuBar", _p_wxMenuBarTo_p_wxWindow, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_unsigned_long[] = {{"_p_unsigned_long", 0, "unsigned long *|wxUIntPtr *", 0, 0, 0, 0},{"_p_unsigned_long", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxBitmap[] = {{"_p_wxBitmap", 0, "wxBitmap *", 0, 0, 0, 0},{"_p_wxBitmap", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_form_ops_t[] = {{"_p_form_ops_t", 0, "enum form_ops_t *|form_ops_t *", 0, 0, 0, 0},{"_p_form_ops_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_unsigned_int[] = {{"_p_unsigned_int", 0, "unsigned int *|time_t *", 0, 0, 0, 0},{"_p_unsigned_int", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__unsigned_int[] = {{"_unsigned_int", 0, "unsigned int|std::size_t", 0, 0, 0, 0},{"_unsigned_int", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxDuplexMode[] = {{"_p_wxDuplexMode", 0, "enum wxDuplexMode *|wxDuplexMode *", 0, 0, 0, 0},{"_p_wxDuplexMode", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxGIFAnimation[] = {{"_p_wxGIFAnimation", 0, "wxGIFAnimation *", 0, 0, 0, 0},{"_p_wxGIFAnimation", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0, 0, 0, 0},{"_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxAnimationBase[] = {{"_p_wxAnimationBase", 0, "wxAnimationBase *", 0, 0, 0, 0},{"_p_wxAnimationBase", 0, 0, 0, 0, 0, 0},{"_p_wxGIFAnimation", _p_wxGIFAnimationTo_p_wxAnimationBase, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxPoint[] = {{"_p_wxPoint", 0, "wxPoint *", 0, 0, 0, 0},{"_p_wxPoint", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxDC[] = {{"_p_wxDC", 0, "wxDC *", 0, 0, 0, 0},{"_p_wxDC", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxEvtHandler[] = {{"_p_wxEvtHandler", 0, "wxEvtHandler *", 0, 0, 0, 0},{"_p_wxControl", _p_wxControlTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{"_p_wxControlWithItems", _p_wxControlWithItemsTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{"_p_wxWindow", _p_wxWindowTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{"_p_wxEvtHandler", 0, 0, 0, 0, 0, 0},{"_p_wxGIFAnimationCtrl", _p_wxGIFAnimationCtrlTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{"_p_wxPyApp", _p_wxPyAppTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{"_p_wxMenuBar", _p_wxMenuBarTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{"_p_wxValidator", _p_wxValidatorTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{"_p_wxPyValidator", _p_wxPyValidatorTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{"_p_wxMenu", _p_wxMenuTo_p_wxEvtHandler, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__std__ptrdiff_t[] = {{"_std__ptrdiff_t", 0, "std::ptrdiff_t", 0, 0, 0, 0},{"_std__ptrdiff_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__ptrdiff_t[] = {{"_ptrdiff_t", 0, "ptrdiff_t", 0, 0, 0, 0},{"_ptrdiff_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxControl[] = {{"_p_wxControl", 0, "wxControl *", 0, 0, 0, 0},{"_p_wxControl", 0, 0, 0, 0, 0, 0},{"_p_wxControlWithItems", _p_wxControlWithItemsTo_p_wxControl, 0, 0, 0, 0, 0},{"_p_wxGIFAnimationCtrl", _p_wxGIFAnimationCtrlTo_p_wxControl, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxPaperSize[] = {{"_p_wxPaperSize", 0, "enum wxPaperSize *|wxPaperSize *", 0, 0, 0, 0},{"_p_wxPaperSize", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxImage[] = {{"_p_wxImage", 0, "wxImage *", 0, 0, 0, 0},{"_p_wxImage", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_wxSize[] = {{"_p_wxSize", 0, "wxSize *", 0, 0, 0, 0},{"_p_wxSize", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_int[] = {{"_p_int", 0, "int *|wxEventType *", 0, 0, 0, 0},{"_p_int", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_wxRect, 
+_swigt__p_wxGIFAnimationCtrl, 
+_swigt__p_wxObject, 
+_swigt__p_unsigned_char, 
+_swigt__p_wxColour, 
+_swigt__p_wxAnimationPlayer, 
+_swigt__p_wxWindow, 
+_swigt__p_unsigned_long, 
+_swigt__p_wxBitmap, 
+_swigt__p_form_ops_t, 
+_swigt__p_unsigned_int, 
+_swigt__unsigned_int, 
+_swigt__p_wxDuplexMode, 
+_swigt__p_wxGIFAnimation, 
+_swigt__p_char, 
+_swigt__p_wxAnimationBase, 
+_swigt__p_wxPoint, 
+_swigt__p_wxDC, 
+_swigt__p_wxEvtHandler, 
+_swigt__std__ptrdiff_t, 
+_swigt__ptrdiff_t, 
+_swigt__p_wxControl, 
+_swigt__p_wxPaperSize, 
+_swigt__p_wxImage, 
+_swigt__p_wxSize, 
+_swigt__p_int, 
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_const_info swig_const_table[] = {
+{0, 0, 0, 0.0, 0, 0}};
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+    
+    /* Python-specific SWIG API */
+#define SWIG_newvarlink()                             SWIG_Python_newvarlink()
+#define SWIG_addvarlink(p, name, get_attr, set_attr)  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
+#define SWIG_InstallConstants(d, constants)           SWIG_Python_InstallConstants(d, constants)
+    
+    /* -----------------------------------------------------------------------------
+     * global variable support code.
+     * ----------------------------------------------------------------------------- */
+    
+    typedef struct swig_globalvar {
+        char       *name;                  /* Name of global variable */
+        PyObject *(*get_attr)();           /* Return the current value */
+        int       (*set_attr)(PyObject *); /* Set the value */
+        struct swig_globalvar *next;
+    } swig_globalvar;
+    
+    typedef struct swig_varlinkobject {
+        PyObject_HEAD
+        swig_globalvar *vars;
+    } swig_varlinkobject;
+    
+    static PyObject *
+    swig_varlink_repr(swig_varlinkobject *v) {
+        v = v;
+        return PyString_FromString("<Swig global variables>");
+    }
+    
+    static int
+    swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) {
+        swig_globalvar  *var;
+        flags = flags;
+        fprintf(fp,"Swig global variables { ");
+        for (var = v->vars; var; var=var->next) {
+            fprintf(fp,"%s", var->name);
+            if (var->next) fprintf(fp,", ");
+        }
+        fprintf(fp," }\n");
+        return 0;
+    }
+    
+    static PyObject *
+    swig_varlink_getattr(swig_varlinkobject *v, char *n) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->get_attr)();
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return NULL;
+    }
+    
+    static int
+    swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->set_attr)(p);
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return 1;
+    }
+    
+    static PyTypeObject varlinktype = {
+        PyObject_HEAD_INIT(0)              
+        0,                                  /* Number of items in variable part (ob_size) */
+        (char *)"swigvarlink",              /* Type name (tp_name) */
+        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
+        0,                                  /* Itemsize (tp_itemsize) */
+        0,                                  /* Deallocator (tp_dealloc) */ 
+        (printfunc) swig_varlink_print,     /* Print (tp_print) */
+        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
+        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* tp_compare */
+        (reprfunc) swig_varlink_repr,       /* tp_repr */
+        0,                                  /* tp_as_number */
+        0,                                  /* tp_as_sequence */
+        0,                                  /* tp_as_mapping */
+        0,                                  /* tp_hash */
+        0,                                  /* tp_call */
+        0,                                  /* tp_str */
+        0,                                  /* tp_getattro */
+        0,                                  /* tp_setattro */
+        0,                                  /* tp_as_buffer */
+        0,                                  /* tp_flags */
+        0,                                  /* tp_doc */
+#if PY_VERSION_HEX >= 0x02000000
+        0,                                  /* tp_traverse */
+        0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+        0,                                  /* tp_richcompare */
+        0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+        0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+        0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+    
+    /* Create a variable linking object for use later */
+    static PyObject *
+    SWIG_Python_newvarlink(void) {
+        swig_varlinkobject *result = 0;
+        result = PyMem_NEW(swig_varlinkobject,1);
+        varlinktype.ob_type = &PyType_Type;    /* Patch varlinktype into a PyType */
+        result->ob_type = &varlinktype;
+        result->vars = 0;
+        result->ob_refcnt = 0;
+        Py_XINCREF((PyObject *) result);
+        return ((PyObject*) result);
+    }
+    
+    static void
+    SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
+        swig_varlinkobject *v;
+        swig_globalvar *gv;
+        v= (swig_varlinkobject *) p;
+        gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
+        gv->name = (char *) malloc(strlen(name)+1);
+        strcpy(gv->name,name);
+        gv->get_attr = get_attr;
+        gv->set_attr = set_attr;
+        gv->next = v->vars;
+        v->vars = gv;
+    }
+    
+    /* -----------------------------------------------------------------------------
+     * constants/methods manipulation
+     * ----------------------------------------------------------------------------- */
+    
+    /* Install Constants */
+    static void
+    SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
+        PyObject *obj = 0;
+        size_t i;
+        for (i = 0; constants[i].type; i++) {
+            switch(constants[i].type) {
+                case SWIG_PY_INT:
+                obj = PyInt_FromLong(constants[i].lvalue);
+                break;
+                case SWIG_PY_FLOAT:
+                obj = PyFloat_FromDouble(constants[i].dvalue);
+                break;
+                case SWIG_PY_STRING:
+                if (constants[i].pvalue) {
+                    obj = PyString_FromString((char *) constants[i].pvalue);
+                } else {
+                    Py_INCREF(Py_None);
+                    obj = Py_None;
+                }
+                break;
+                case SWIG_PY_POINTER:
+                obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+                break;
+                case SWIG_PY_BINARY:
+                obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
+                break;
+                default:
+                obj = 0;
+                break;
+            }
+            if (obj) {
+                PyDict_SetItemString(d,constants[i].name,obj);
+                Py_DECREF(obj);
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*/
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    /* -----------------------------------------------------------------------------*/
+    
+    static void
+    SWIG_Python_FixMethods(PyMethodDef *methods,
+    swig_const_info *const_table,
+    swig_type_info **types,
+    swig_type_info **types_initial) {
+        size_t i;
+        for (i = 0; methods[i].ml_name; ++i) {
+            char *c = methods[i].ml_doc;
+            if (c && (c = strstr(c, "swig_ptr: "))) {
+                int j;
+                swig_const_info *ci = 0;
+                char *name = c + 10;
+                for (j = 0; const_table[j].type; j++) {
+                    if (strncmp(const_table[j].name, name, 
+                    strlen(const_table[j].name)) == 0) {
+                        ci = &(const_table[j]);
+                        break;
+                    }
+                }
+                if (ci) {
+                    size_t shift = (ci->ptype) - types;
+                    swig_type_info *ty = types_initial[shift];
+                    size_t ldoc = (c - methods[i].ml_doc);
+                    size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+                    char *ndoc = (char*)malloc(ldoc + lptr + 10);
+                    char *buff = ndoc;
+                    void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue: (void *)(ci->lvalue);
+                    strncpy(buff, methods[i].ml_doc, ldoc);
+                    buff += ldoc;
+                    strncpy(buff, "swig_ptr: ", 10);
+                    buff += 10;
+                    SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
+                    methods[i].ml_doc = ndoc;
+                }
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*
+     *  Initialize type list
+     * -----------------------------------------------------------------------------*/
+    
+#if PY_MAJOR_VERSION < 2
+    /* PyModule_AddObject function was introduced in Python 2.0.  The following function
+    is copied out of Python/modsupport.c in python version 2.3.4 */
+    static int
+    PyModule_AddObject(PyObject *m, char *name, PyObject *o)
+    {
+        PyObject *dict;
+        if (!PyModule_Check(m)) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs module as first arg");
+            return -1;
+        }
+        if (!o) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs non-NULL value");
+            return -1;
+        }
+        
+        dict = PyModule_GetDict(m);
+        if (dict == NULL) {
+            /* Internal error -- modules must have a dict! */
+            PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+            PyModule_GetName(m));
+            return -1;
+        }
+        if (PyDict_SetItemString(dict, name, o))
+        return -1;
+        Py_DECREF(o);
+        return 0;
+    }
+#endif
+    
+    static swig_type_info **
+    SWIG_Python_SetTypeListHandle(swig_type_info **type_list_handle) {
+        static PyMethodDef swig_empty_runtime_method_table[] = {
+            {
+                NULL, NULL, 0, NULL
+            } 
+        };/* Sentinel */
+        
+        PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+        swig_empty_runtime_method_table);
+        PyObject *pointer = PyCObject_FromVoidPtr((void *) type_list_handle, NULL);
+        if (pointer && module) {
+            PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
+        }
+        return type_list_handle;
+    } 
+    
+    static swig_type_info **
+    SWIG_Python_LookupTypePointer(swig_type_info **type_list_handle) {
+        swig_type_info **type_pointer;
+        
+        /* first check if module already created */
+        type_pointer = SWIG_Python_GetTypeListHandle();
+        if (type_pointer) {
+            return type_pointer;
+        } else {
+            /* create a new module and variable */
+            return SWIG_Python_SetTypeListHandle(type_list_handle);
+        }
+    }
+    
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------*
+ *  Partial Init method
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void *) SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void) SWIG_init(void) {
+    static PyObject *SWIG_globals = 0; 
+    static int       typeinit = 0;
+    PyObject *m, *d;
+    int       i;
+    if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
+    
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_types_initial);
+    
+    m = Py_InitModule((char *) SWIG_name, SwigMethods);
+    d = PyModule_GetDict(m);
+    
+    if (!typeinit) {
+#ifdef SWIG_LINK_RUNTIME
+        swig_type_list_handle = (swig_type_info **) SWIG_ReturnGlobalTypeList(swig_type_list_handle);
+#else
+#  ifndef SWIG_STATIC_RUNTIME
+        swig_type_list_handle = SWIG_Python_LookupTypePointer(swig_type_list_handle);
+#  endif
+#endif
+        for (i = 0; swig_types_initial[i]; i++) {
+            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+        }
+        typeinit = 1;
+    }
+    SWIG_InstallConstants(d,swig_const_table);
+    
+    PyDict_SetItemString(d,(char*)"cvar", SWIG_globals);
+    SWIG_addvarlink(SWIG_globals,(char*)"AnimationControlNameStr",_wrap_AnimationControlNameStr_get, _wrap_AnimationControlNameStr_set);
+    {
+        PyDict_SetItemString(d,"ANIM_UNSPECIFIED", SWIG_From_int((int)(wxANIM_UNSPECIFIED))); 
+    }
+    {
+        PyDict_SetItemString(d,"ANIM_DONOTREMOVE", SWIG_From_int((int)(wxANIM_DONOTREMOVE))); 
+    }
+    {
+        PyDict_SetItemString(d,"ANIM_TOBACKGROUND", SWIG_From_int((int)(wxANIM_TOBACKGROUND))); 
+    }
+    {
+        PyDict_SetItemString(d,"ANIM_TOPREVIOUS", SWIG_From_int((int)(wxANIM_TOPREVIOUS))); 
+    }
+    {
+        PyDict_SetItemString(d,"AN_FIT_ANIMATION", SWIG_From_int((int)(wxAN_FIT_ANIMATION))); 
+    }
+}
+
diff --git a/wxPython/demo/GIFAnimationCtrl.py b/wxPython/demo/GIFAnimationCtrl.py
new file mode 100644 (file)
index 0000000..a91c6f0
--- /dev/null
@@ -0,0 +1,61 @@
+
+import wx
+from wx.animate import GIFAnimationCtrl
+
+from Main import opj
+
+GIFNames = [
+    "bitmaps/ani-bttrfly.gif",
+    "bitmaps/ani-avtr.gif",
+    "bitmaps/ani-phone.gif",
+#    "bitmaps/ani-walker.gif",
+    "bitmaps/ani-man.gif",
+    "bitmaps/ani-bookworm.gif",
+    "bitmaps/ani-hooked.gif",
+    ]
+
+#----------------------------------------------------------------------
+
+class TestPanel(wx.Panel):
+    def __init__(self, parent, log):
+        self.log = log
+        wx.Panel.__init__(self, parent, -1)
+
+        sizer = wx.FlexGridSizer(2,3,5,5)
+        for name in GIFNames:
+            ani = GIFAnimationCtrl(self, -1, opj(name))
+            ani.GetPlayer().UseBackgroundColour(True)
+            ani.Play()
+            sizer.Add(ani, 0, wx.ALL, 10)
+
+        border = wx.BoxSizer()
+        border.Add(sizer, 1, wx.EXPAND|wx.ALL, 20)
+        self.SetSizer(border)
+        
+
+#----------------------------------------------------------------------
+
+def runTest(frame, nb, log):
+    win = TestPanel(nb, log)
+    return win
+
+#----------------------------------------------------------------------
+
+
+
+overview = """<html><body>
+<h2><center>wx.animate.GIFAnimationCtrl</center></h2>
+
+wx.animate.GIFAnimationCtrl is like a wx.StaticBitmap but is able to
+display an animation by extracing frames from a multi-images GIF file.
+
+</body></html>
+"""
+
+
+
+if __name__ == '__main__':
+    import sys,os
+    import run
+    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
+
index 7da1fcad42072b08d6d73dc44a1616374833ccec..25cd0792779d7badc9d2797fef7544a7dc225347 100644 (file)
@@ -48,6 +48,7 @@ _treeList = [
     # new stuff
     ('Recent Additions/Updates', [
         'FoldPanelBar',
+        'GIFAnimationCtrl',
         ]),
 
     # managed windows == things with a (optional) caption you can close
@@ -153,6 +154,7 @@ _treeList = [
         'FloatBar',  
         'FloatCanvas',
         'FoldPanelBar',
+        'GIFAnimationCtrl',
         'HtmlWindow',
         'IntCtrl',
         'MediaCtrl',
@@ -211,6 +213,7 @@ _treeList = [
         'ArtProvider',
         'Cursor',
         'DragImage',
+        'GIFAnimationCtrl',
         'Image',
         'ImageAlpha',
         'ImageFromStream',
diff --git a/wxPython/demo/bitmaps/ani-avtr.gif b/wxPython/demo/bitmaps/ani-avtr.gif
new file mode 100644 (file)
index 0000000..0cefe1f
Binary files /dev/null and b/wxPython/demo/bitmaps/ani-avtr.gif differ
diff --git a/wxPython/demo/bitmaps/ani-bookworm.gif b/wxPython/demo/bitmaps/ani-bookworm.gif
new file mode 100644 (file)
index 0000000..95ceeab
Binary files /dev/null and b/wxPython/demo/bitmaps/ani-bookworm.gif differ
diff --git a/wxPython/demo/bitmaps/ani-bttrfly.gif b/wxPython/demo/bitmaps/ani-bttrfly.gif
new file mode 100644 (file)
index 0000000..b84ac35
Binary files /dev/null and b/wxPython/demo/bitmaps/ani-bttrfly.gif differ
diff --git a/wxPython/demo/bitmaps/ani-hooked.gif b/wxPython/demo/bitmaps/ani-hooked.gif
new file mode 100644 (file)
index 0000000..7041b8e
Binary files /dev/null and b/wxPython/demo/bitmaps/ani-hooked.gif differ
diff --git a/wxPython/demo/bitmaps/ani-man.gif b/wxPython/demo/bitmaps/ani-man.gif
new file mode 100644 (file)
index 0000000..ece99fd
Binary files /dev/null and b/wxPython/demo/bitmaps/ani-man.gif differ
diff --git a/wxPython/demo/bitmaps/ani-phone.gif b/wxPython/demo/bitmaps/ani-phone.gif
new file mode 100644 (file)
index 0000000..5eb09ed
Binary files /dev/null and b/wxPython/demo/bitmaps/ani-phone.gif differ
diff --git a/wxPython/demo/bitmaps/ani-walker.gif b/wxPython/demo/bitmaps/ani-walker.gif
new file mode 100644 (file)
index 0000000..0b90744
Binary files /dev/null and b/wxPython/demo/bitmaps/ani-walker.gif differ
diff --git a/wxPython/demo/bitmaps/tbttrfly.gif b/wxPython/demo/bitmaps/tbttrfly.gif
new file mode 100644 (file)
index 0000000..de6f2f4
Binary files /dev/null and b/wxPython/demo/bitmaps/tbttrfly.gif differ
index bff0cf78569949a716b43d0d9aef867f28cc9675..a4a065fc38d3a48e6c52d128bc7d268db5f7303e 100644 (file)
@@ -16,6 +16,10 @@ wxPython/contrib/activex/wxie
 wxPython/contrib/activex/wxie/doxydoc
 wxPython/contrib/activex/wxie/latex
 wxPython/contrib/dllwidget
+wxPython/contrib/animate
+wxPython/contrib/animate/gtk
+wxPython/contrib/animate/mac
+wxPython/contrib/animate/msw
 wxPython/contrib/gizmos
 wxPython/contrib/gizmos/gtk
 wxPython/contrib/gizmos/mac
index 0ecf121a549b171122cd4107dad9fc3f07ef5a81..d06e2147ced27bdfcbcd2171fcae10001875f321 100755 (executable)
@@ -258,6 +258,7 @@ if [ $skipbuild != yes ]; then
     touch lib/libwx*.r*
 
     make $MAKEJOBS
+    make $MAKEJOBS -C contrib/src/animate
     make $MAKEJOBS -C contrib/src/gizmos
     make $MAKEJOBS -C contrib/src/stc
 
@@ -277,9 +278,10 @@ fi
 if [ $skipinstall != yes ]; then
     # Install wxWidgets
     cd $WXBLD
-    make prefix=$INSTALLROOT$PREFIX install
-    make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
-    make -C contrib/src/stc prefix=$INSTALLROOT$PREFIX install
+    make                        prefix=$INSTALLROOT$PREFIX install
+    make -C contrib/src/animate prefix=$INSTALLROOT$PREFIX install
+    make -C contrib/src/gizmos  prefix=$INSTALLROOT$PREFIX install
+    make -C contrib/src/stc     prefix=$INSTALLROOT$PREFIX install
 
 
     # relink wx-config with a relative link
index 21b77a504be3772a2750e5a38beaba9fcfb2806e..ed0e57dfd4e256676239b8e2170f26437b1a3c2f 100644 (file)
@@ -83,6 +83,7 @@ Source: "wx\_calendar.pyd";                    DestDir: "{app}\%(PKGDIR)s\wx"; C
 Source: "wx\_controls_.pyd";                   DestDir: "{app}\%(PKGDIR)s\wx"; Components: core
 Source: "wx\_core_.pyd";                       DestDir: "{app}\%(PKGDIR)s\wx"; Components: core
 Source: "wx\_gdi_.pyd";                        DestDir: "{app}\%(PKGDIR)s\wx"; Components: core
+Source: "wx\_animate.pyd";                      DestDir: "{app}\%(PKGDIR)s\wx"; Components: core
 Source: "wx\_gizmos.pyd";                      DestDir: "{app}\%(PKGDIR)s\wx"; Components: core
 Source: "wx\_glcanvas.pyd";                    DestDir: "{app}\%(PKGDIR)s\wx"; Components: core
 Source: "wx\_grid.pyd";                        DestDir: "{app}\%(PKGDIR)s\wx"; Components: core
index 198b24a2438df6ca34cee46d8d3a93c355e502c5..3f08f2b0faf7a9456c98224ba7bfba128dd06d06 100644 (file)
@@ -211,8 +211,8 @@ cd bld
 
 
 make 
+make -C contrib/src/animate 
 make -C contrib/src/gizmos 
-##make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
 make -C contrib/src/stc
 
 
@@ -238,8 +238,8 @@ WXDIR=`pwd`
 # Install wxGTK and contribs
 cd bld
 make prefix=$RPM_BUILD_ROOT%{wxpref} install
+make -C contrib/src/animate prefix=$RPM_BUILD_ROOT%{wxpref} install
 make -C contrib/src/gizmos prefix=$RPM_BUILD_ROOT%{wxpref} install
-##make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0" prefix=$RPM_BUILD_ROOT%{wxpref} install
 make -C contrib/src/stc prefix=$RPM_BUILD_ROOT%{wxpref} install
 
 
index e606e4fc44e2d666e20eae8689024d3656aa2a1d..8b1abf3bbb4c7b3f0b6ea9e791202126865dd978 100644 (file)
@@ -141,6 +141,7 @@ place, then do the same for wxPython.
    dir I don't lose my scripts too.)  This is what it looks like::
 
         make $* \
+            && make -C contrib/src/animate $* \
             && make -C contrib/src/gizmos $* \
             && make -C contrib/src/stc $* 
    
@@ -392,6 +393,7 @@ accordingly if you are using the bash shell.
    same command from the following directories in order to build the
    contrib libraries::
 
+        %WXDIR%\contrib\build\animate
         %WXDIR%\contrib\build\gizmos
         %WXDIR%\contrib\build\stc
 
index 3a4685573e77af41d4c848203e8c15d23362e13e..ac68fd1751c77c33d077d2532fb73259e9f1e8ff 100644 (file)
@@ -64,6 +64,13 @@ this gives more flexibility on where the data can come from.
 
 Added MDI support to XRC
 
+Added wx.animate module and a demo.  The wx.animate module provides a
+control that is able to display an animated GIF file.
+
+wx.lib.plot.py: Applied patch from Werner F. Bruhin that allows either
+vertical and/or horizontal gridlines.
+
+
 
 
 
index 23e701403f03a67ea6e0d26187ee8a86e3c79306..9775964ee1127cebc49561f7ee1ded17986e8244 100755 (executable)
@@ -648,6 +648,33 @@ if BUILD_GIZMOS:
     wxpExtensions.append(ext)
 
 
+#----------------------------------------------------------------------
+# Define the ANIMATE  extension module
+#----------------------------------------------------------------------
+
+if BUILD_ANIMATE:
+    msg('Preparing ANIMATE...')
+    location = 'contrib/animate'
+
+    swig_sources = run_swig(['animate.i'], location, GENDIR, PKGDIR,
+                            USE_SWIG, swig_force, swig_args, swig_deps)
+
+    ext = Extension('_animate',
+                    swig_sources,
+
+                    include_dirs =  includes + CONTRIBS_INC,
+                    define_macros = defines,
+
+                    library_dirs = libdirs,
+                    libraries = libs + makeLibName('animate'),
+
+                    extra_compile_args = cflags,
+                    extra_link_args = lflags,
+                    )
+
+    wxpExtensions.append(ext)
+
+
 
 #----------------------------------------------------------------------
 # Define the DLLWIDGET  extension module
diff --git a/wxPython/wxPython/animate.py b/wxPython/wxPython/animate.py
new file mode 100644 (file)
index 0000000..71da191
--- /dev/null
@@ -0,0 +1,38 @@
+## This file reverse renames symbols in the wx package to give
+## them their wx prefix again, for backwards compatibility.
+##
+## Generated by BuildRenamers in config.py
+
+# This silly stuff here is so the wxPython.wx module doesn't conflict
+# with the wx package.  We need to import modules from the wx package
+# here, then we'll put the wxPython.wx entry back in sys.modules.
+import sys
+_wx = None
+if sys.modules.has_key('wxPython.wx'):
+    _wx = sys.modules['wxPython.wx']
+    del sys.modules['wxPython.wx']
+
+import wx.animate
+
+sys.modules['wxPython.wx'] = _wx
+del sys, _wx
+
+
+# Now assign all the reverse-renamed names:
+wxAnimationControlNameStr = wx.animate.AnimationControlNameStr
+wxANIM_UNSPECIFIED = wx.animate.ANIM_UNSPECIFIED
+wxANIM_DONOTREMOVE = wx.animate.ANIM_DONOTREMOVE
+wxANIM_TOBACKGROUND = wx.animate.ANIM_TOBACKGROUND
+wxANIM_TOPREVIOUS = wx.animate.ANIM_TOPREVIOUS
+wxAnimationPlayer = wx.animate.AnimationPlayer
+wxAnimationPlayerPtr = wx.animate.AnimationPlayerPtr
+wxAnimationBase = wx.animate.AnimationBase
+wxAnimationBasePtr = wx.animate.AnimationBasePtr
+wxGIFAnimation = wx.animate.GIFAnimation
+wxGIFAnimationPtr = wx.animate.GIFAnimationPtr
+wxAN_FIT_ANIMATION = wx.animate.AN_FIT_ANIMATION
+wxGIFAnimationCtrl = wx.animate.GIFAnimationCtrl
+wxGIFAnimationCtrlPtr = wx.animate.GIFAnimationCtrlPtr
+wxPreGIFAnimationCtrl = wx.animate.PreGIFAnimationCtrl
+
+