From 2e5aa9c48d73e1302040bee59e4f41197f33b8ee Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Mon, 4 Apr 2005 23:15:29 +0000 Subject: [PATCH] Added wrappers and a demo for the animate contrib git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33337 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/config.py | 1 + wxPython/contrib/animate/_animate_rename.i | 16 + wxPython/contrib/animate/animate.i | 323 ++ wxPython/contrib/animate/gtk/animate.py | 446 ++ wxPython/contrib/animate/gtk/animate_wrap.cpp | 5018 +++++++++++++++++ wxPython/demo/GIFAnimationCtrl.py | 61 + wxPython/demo/Main.py | 3 + wxPython/demo/bitmaps/ani-avtr.gif | Bin 0 -> 5972 bytes wxPython/demo/bitmaps/ani-bookworm.gif | Bin 0 -> 6635 bytes wxPython/demo/bitmaps/ani-bttrfly.gif | Bin 0 -> 7313 bytes wxPython/demo/bitmaps/ani-hooked.gif | Bin 0 -> 34505 bytes wxPython/demo/bitmaps/ani-man.gif | Bin 0 -> 7369 bytes wxPython/demo/bitmaps/ani-phone.gif | Bin 0 -> 10196 bytes wxPython/demo/bitmaps/ani-walker.gif | Bin 0 -> 9820 bytes wxPython/demo/bitmaps/tbttrfly.gif | Bin 0 -> 7291 bytes wxPython/distrib/DIRLIST | 4 + wxPython/distrib/mac/wxPythonOSX/build | 8 +- wxPython/distrib/make_installer.py | 1 + wxPython/distrib/wxPythonFull.spec.in | 4 +- wxPython/docs/BUILD.txt | 2 + wxPython/docs/CHANGES.txt | 7 + wxPython/setup.py | 27 + wxPython/wxPython/animate.py | 38 + 23 files changed, 5954 insertions(+), 5 deletions(-) create mode 100644 wxPython/contrib/animate/_animate_rename.i create mode 100644 wxPython/contrib/animate/animate.i create mode 100644 wxPython/contrib/animate/gtk/animate.py create mode 100644 wxPython/contrib/animate/gtk/animate_wrap.cpp create mode 100644 wxPython/demo/GIFAnimationCtrl.py create mode 100644 wxPython/demo/bitmaps/ani-avtr.gif create mode 100644 wxPython/demo/bitmaps/ani-bookworm.gif create mode 100644 wxPython/demo/bitmaps/ani-bttrfly.gif create mode 100644 wxPython/demo/bitmaps/ani-hooked.gif create mode 100644 wxPython/demo/bitmaps/ani-man.gif create mode 100644 wxPython/demo/bitmaps/ani-phone.gif create mode 100644 wxPython/demo/bitmaps/ani-walker.gif create mode 100644 wxPython/demo/bitmaps/tbttrfly.gif create mode 100644 wxPython/wxPython/animate.py diff --git a/wxPython/config.py b/wxPython/config.py index 851c315f89..8e8b617d3d 100644 --- a/wxPython/config.py +++ b/wxPython/config.py @@ -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 index 0000000000..eec258e2c9 --- /dev/null +++ b/wxPython/contrib/animate/_animate_rename.i @@ -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 index 0000000000..ea09116514 --- /dev/null +++ b/wxPython/contrib/animate/animate.i @@ -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 +%} + +//--------------------------------------------------------------------------- + +%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 index 0000000000..a86f400d78 --- /dev/null +++ b/wxPython/contrib/animate/gtk/animate.py @@ -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 index 0000000000..e6de42c8cd --- /dev/null +++ b/wxPython/contrib/animate/gtk/animate_wrap.cpp @@ -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 SwigValueWrapper { + T *tt; +public: + SwigValueWrapper() : tt(0) { } + SwigValueWrapper(const SwigValueWrapper& 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& rhs); +}; +#endif + + +#ifndef SWIG_TEMPLATE_DISAMBIGUATOR +# if defined(__SUNPRO_CC) +# define SWIG_TEMPLATE_DISAMBIGUATOR template +# else +# define SWIG_TEMPLATE_DISAMBIGUATOR +# endif +#endif + + +#include + +/*********************************************************************** + * 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 + +#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" == "Class", 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 ||... +*/ +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("", 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("", 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("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("", result, v->desc); + } else { + return PyString_FromFormat("", 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 + + 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 + + +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(""); + } + + 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 index 0000000000..a91c6f0abc --- /dev/null +++ b/wxPython/demo/GIFAnimationCtrl.py @@ -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 = """ +

wx.animate.GIFAnimationCtrl

+ +wx.animate.GIFAnimationCtrl is like a wx.StaticBitmap but is able to +display an animation by extracing frames from a multi-images GIF file. + + +""" + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) + diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index 7da1fcad42..25cd079277 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -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 index 0000000000000000000000000000000000000000..0cefe1f1fadbfb98e1c87caf84a82d0eb2f8fdfd GIT binary patch literal 5972 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 literal 0 HcmV?d00001 diff --git a/wxPython/demo/bitmaps/ani-bookworm.gif b/wxPython/demo/bitmaps/ani-bookworm.gif new file mode 100644 index 0000000000000000000000000000000000000000..95ceeabd646383241cbcf69cab364da4e370cf95 GIT binary patch literal 6635 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 A?EnA( literal 0 HcmV?d00001 diff --git a/wxPython/demo/bitmaps/ani-bttrfly.gif b/wxPython/demo/bitmaps/ani-bttrfly.gif new file mode 100644 index 0000000000000000000000000000000000000000..b84ac352d69c72ad1efca1a188b105abf8cc98a1 GIT binary patch literal 7313 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 literal 0 HcmV?d00001 diff --git a/wxPython/demo/bitmaps/ani-hooked.gif b/wxPython/demo/bitmaps/ani-hooked.gif new file mode 100644 index 0000000000000000000000000000000000000000..7041b8ef55c092333e5f16787ebdd020c9d67b58 GIT binary patch literal 34505 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 literal 0 HcmV?d00001 diff --git a/wxPython/demo/bitmaps/ani-man.gif b/wxPython/demo/bitmaps/ani-man.gif new file mode 100644 index 0000000000000000000000000000000000000000..ece99fd70ae25fb2397102d94cb6cfce2bfd21d7 GIT binary patch literal 7369 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 literal 0 HcmV?d00001 diff --git a/wxPython/demo/bitmaps/ani-phone.gif b/wxPython/demo/bitmaps/ani-phone.gif new file mode 100644 index 0000000000000000000000000000000000000000..5eb09ed8872442490731d20c3888255246f72bc8 GIT binary patch literal 10196 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 literal 0 HcmV?d00001 diff --git a/wxPython/demo/bitmaps/ani-walker.gif b/wxPython/demo/bitmaps/ani-walker.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b90744f14a55469c7854c4bac71ceba27a08991 GIT binary patch literal 9820 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 literal 0 HcmV?d00001 diff --git a/wxPython/distrib/DIRLIST b/wxPython/distrib/DIRLIST index bff0cf7856..a4a065fc38 100644 --- a/wxPython/distrib/DIRLIST +++ b/wxPython/distrib/DIRLIST @@ -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 diff --git a/wxPython/distrib/mac/wxPythonOSX/build b/wxPython/distrib/mac/wxPythonOSX/build index 0ecf121a54..d06e2147ce 100755 --- a/wxPython/distrib/mac/wxPythonOSX/build +++ b/wxPython/distrib/mac/wxPythonOSX/build @@ -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 diff --git a/wxPython/distrib/make_installer.py b/wxPython/distrib/make_installer.py index 21b77a504b..ed0e57dfd4 100644 --- a/wxPython/distrib/make_installer.py +++ b/wxPython/distrib/make_installer.py @@ -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 diff --git a/wxPython/distrib/wxPythonFull.spec.in b/wxPython/distrib/wxPythonFull.spec.in index 198b24a243..3f08f2b0fa 100644 --- a/wxPython/distrib/wxPythonFull.spec.in +++ b/wxPython/distrib/wxPythonFull.spec.in @@ -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 diff --git a/wxPython/docs/BUILD.txt b/wxPython/docs/BUILD.txt index e606e4fc44..8b1abf3bbb 100644 --- a/wxPython/docs/BUILD.txt +++ b/wxPython/docs/BUILD.txt @@ -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 diff --git a/wxPython/docs/CHANGES.txt b/wxPython/docs/CHANGES.txt index 3a4685573e..ac68fd1751 100644 --- a/wxPython/docs/CHANGES.txt +++ b/wxPython/docs/CHANGES.txt @@ -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. + + diff --git a/wxPython/setup.py b/wxPython/setup.py index 23e701403f..9775964ee1 100755 --- a/wxPython/setup.py +++ b/wxPython/setup.py @@ -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 index 0000000000..71da191550 --- /dev/null +++ b/wxPython/wxPython/animate.py @@ -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 + + -- 2.45.2