]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/msw/_gdi_wrap.cpp
Change the wxCharBuffer typemap to make sure there is data before
[wxWidgets.git] / wxPython / src / msw / _gdi_wrap.cpp
index c16c80e99487377bda2477606b2df9fd36559237..2e68c1e0c8d72e58c13e326202de974e49507d55 100644 (file)
@@ -2926,6 +2926,18 @@ SWIGINTERN bool wxPen___ne__(wxPen *self,wxPen const *other){ return other ? (*s
 #include <wx/rawbmp.h>
 
 
+// See http://tinyurl.com/e5adr for what premultiplying alpha means.  It
+// appears to me that the other platforms are already doing it, so I'll just
+// automatically do it for wxMSW here.
+#ifdef __WXMSW__
+#define wxPy_premultiply(p, a)   ((p) * (a) / 0xff)
+#define wxPy_unpremultiply(p, a) ((a) ? ((p) * 0xff / (a)) : (p))    
+#else
+#define wxPy_premultiply(p, a)   (p)
+#define wxPy_unpremultiply(p, a) (p)    
+#endif
+
+
 #include <wx/image.h>
     
     static char** ConvertListOfStrings(PyObject* listOfStrings) {
@@ -2977,20 +2989,67 @@ SWIGINTERN void wxBitmap_SetSize(wxBitmap *self,wxSize const &size){
             self->SetWidth(size.x);
             self->SetHeight(size.y);
         }
-SWIGINTERN bool wxBitmap___eq__(wxBitmap *self,wxBitmap const *other){ return other ? (*self == *other) : false; }
-SWIGINTERN bool wxBitmap___ne__(wxBitmap *self,wxBitmap const *other){ return other ? (*self != *other) : true;  }
+SWIGINTERN void wxBitmap_CopyFromBuffer(wxBitmap *self,buffer data,int DATASIZE){
+            int height=self->GetHeight();
+            int width=self->GetWidth();
 
-// See http://tinyurl.com/e5adr for what premultiplying alpha means.  It
-// appears to me that the other platforms are already doing it, so I'll just
-// automatically do it for wxMSW here.
-#ifdef __WXMSW__
-#define wxPy_premultiply(p, a)   ((p) * (a) / 0xff)
-#define wxPy_unpremultiply(p, a) ((a) ? ((p) * 0xff / (a)) : (p))    
-#else
-#define wxPy_premultiply(p, a)   (p)
-#define wxPy_unpremultiply(p, a) (p)    
-#endif
+            if (DATASIZE != width * height * 3) {
+                wxPyErr_SetString(PyExc_ValueError, "Invalid data buffer size.");
+            }
+            wxNativePixelData pixData(*self, wxPoint(0,0), wxSize(width, height));
+            if (! pixData) {
+                // raise an exception...
+                wxPyErr_SetString(PyExc_RuntimeError,
+                                  "Failed to gain raw access to bitmap data.");
+                return;
+            }
 
+            wxNativePixelData::Iterator p(pixData);
+            for (int y=0; y<height; y++) {
+                wxNativePixelData::Iterator rowStart = p;
+                for (int x=0; x<width; x++) {
+                    p.Red()   = *(data++);
+                    p.Green() = *(data++);
+                    p.Blue()  = *(data++);
+                    ++p;
+                }
+                p = rowStart;
+                p.OffsetY(pixData, 1);
+            }
+        }
+SWIGINTERN void wxBitmap_CopyFromBufferRGBA(wxBitmap *self,buffer data,int DATASIZE){
+            int height=self->GetHeight();
+            int width=self->GetWidth();
+            
+            if (DATASIZE != width * height * 4) {
+                wxPyErr_SetString(PyExc_ValueError, "Invalid data buffer size.");
+            }
+            wxAlphaPixelData pixData(*self, wxPoint(0,0), wxSize(width, height));
+            if (! pixData) {
+                // raise an exception...
+                wxPyErr_SetString(PyExc_RuntimeError,
+                                  "Failed to gain raw access to bitmap data.");
+                return;
+            }
+
+            pixData.UseAlpha();
+            wxAlphaPixelData::Iterator p(pixData);
+            for (int y=0; y<height; y++) {
+                wxAlphaPixelData::Iterator rowStart = p;
+                for (int x=0; x<width; x++) {
+                    byte a = data[3];
+                    p.Red()   = wxPy_premultiply(*(data++), a);
+                    p.Green() = wxPy_premultiply(*(data++), a);
+                    p.Blue()  = wxPy_premultiply(*(data++), a);
+                    p.Alpha() = a; data++;
+                    ++p;
+                }
+                p = rowStart;
+                p.OffsetY(pixData, 1);
+            }
+        }
+SWIGINTERN bool wxBitmap___eq__(wxBitmap *self,wxBitmap const *other){ return other ? self->IsSameAs(*other) : false; }
+SWIGINTERN bool wxBitmap___ne__(wxBitmap *self,wxBitmap const *other){ return other ? !self->IsSameAs(*other) : true;  }
 
     wxBitmap* _BitmapFromBufferAlpha(int width, int height,
                                     buffer data, int DATASIZE,
@@ -7086,6 +7145,76 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_Bitmap_CopyFromBuffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  wxBitmap *arg1 = (wxBitmap *) 0 ;
+  buffer arg2 ;
+  int arg3 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  Py_ssize_t temp2 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *  kwnames[] = {
+    (char *) "self",(char *) "data", NULL 
+  };
+  
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Bitmap_CopyFromBuffer",kwnames,&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxBitmap, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Bitmap_CopyFromBuffer" "', expected argument " "1"" of type '" "wxBitmap *""'"); 
+  }
+  arg1 = reinterpret_cast< wxBitmap * >(argp1);
+  {
+    if (PyObject_AsReadBuffer(obj1, (const void**)(&arg2), &temp2) == -1) SWIG_fail;
+    arg3 = (int)temp2;
+  }
+  {
+    wxBitmap_CopyFromBuffer(arg1,arg2,arg3);
+    if (PyErr_Occurred()) SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_Bitmap_CopyFromBufferRGBA(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  wxBitmap *arg1 = (wxBitmap *) 0 ;
+  buffer arg2 ;
+  int arg3 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  Py_ssize_t temp2 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *  kwnames[] = {
+    (char *) "self",(char *) "data", NULL 
+  };
+  
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Bitmap_CopyFromBufferRGBA",kwnames,&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxBitmap, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Bitmap_CopyFromBufferRGBA" "', expected argument " "1"" of type '" "wxBitmap *""'"); 
+  }
+  arg1 = reinterpret_cast< wxBitmap * >(argp1);
+  {
+    if (PyObject_AsReadBuffer(obj1, (const void**)(&arg2), &temp2) == -1) SWIG_fail;
+    arg3 = (int)temp2;
+  }
+  {
+    wxBitmap_CopyFromBufferRGBA(arg1,arg2,arg3);
+    if (PyErr_Occurred()) SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_Bitmap___eq__(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   wxBitmap *arg1 = (wxBitmap *) 0 ;
@@ -20337,6 +20466,47 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_DC_GetAsBitmap(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  wxDC *arg1 = (wxDC *) 0 ;
+  wxRect *arg2 = (wxRect *) NULL ;
+  SwigValueWrapper<wxBitmap > result;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *  kwnames[] = {
+    (char *) "self",(char *) "subrect", NULL 
+  };
+  
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"O|O:DC_GetAsBitmap",kwnames,&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxDC, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DC_GetAsBitmap" "', expected argument " "1"" of type '" "wxDC const *""'"); 
+  }
+  arg1 = reinterpret_cast< wxDC * >(argp1);
+  if (obj1) {
+    res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_wxRect, 0 |  0 );
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DC_GetAsBitmap" "', expected argument " "2"" of type '" "wxRect const *""'"); 
+    }
+    arg2 = reinterpret_cast< wxRect * >(argp2);
+  }
+  {
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    result = ((wxDC const *)arg1)->GetAsBitmap((wxRect const *)arg2);
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) SWIG_fail;
+  }
+  resultobj = SWIG_NewPointerObj((new wxBitmap(static_cast< const wxBitmap& >(result))), SWIGTYPE_p_wxBitmap, SWIG_POINTER_OWN |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_DC_SetClippingRegion(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
   wxDC *arg1 = (wxDC *) 0 ;
@@ -24433,7 +24603,7 @@ SWIGINTERN PyObject *DCClipper_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject
 
 SWIGINTERN PyObject *_wrap_new_MemoryDC(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
   PyObject *resultobj = 0;
-  wxBitmap const &arg1_defvalue = wxNullBitmap ;
+  wxBitmap &arg1_defvalue = wxNullBitmap ;
   wxBitmap *arg1 = (wxBitmap *) &arg1_defvalue ;
   wxMemoryDC *result = 0 ;
   void *argp1 = 0 ;
@@ -24445,19 +24615,19 @@ SWIGINTERN PyObject *_wrap_new_MemoryDC(PyObject *SWIGUNUSEDPARM(self), PyObject
   
   if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"|O:new_MemoryDC",kwnames,&obj0)) SWIG_fail;
   if (obj0) {
-    res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_wxBitmap,  0  | 0);
+    res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_wxBitmap,  0 );
     if (!SWIG_IsOK(res1)) {
-      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_MemoryDC" "', expected argument " "1"" of type '" "wxBitmap const &""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_MemoryDC" "', expected argument " "1"" of type '" "wxBitmap &""'"); 
     }
     if (!argp1) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_MemoryDC" "', expected argument " "1"" of type '" "wxBitmap const &""'"); 
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_MemoryDC" "', expected argument " "1"" of type '" "wxBitmap &""'"); 
     }
     arg1 = reinterpret_cast< wxBitmap * >(argp1);
   }
   {
     if (!wxPyCheckForApp()) SWIG_fail;
     PyThreadState* __tstate = wxPyBeginAllowThreads();
-    result = (wxMemoryDC *)new wxMemoryDC((wxBitmap const &)*arg1);
+    result = (wxMemoryDC *)new wxMemoryDC(*arg1);
     wxPyEndAllowThreads(__tstate);
     if (PyErr_Occurred()) SWIG_fail;
   }
@@ -24519,17 +24689,58 @@ SWIGINTERN PyObject *_wrap_MemoryDC_SelectObject(PyObject *SWIGUNUSEDPARM(self),
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MemoryDC_SelectObject" "', expected argument " "1"" of type '" "wxMemoryDC *""'"); 
   }
   arg1 = reinterpret_cast< wxMemoryDC * >(argp1);
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_wxBitmap,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "MemoryDC_SelectObject" "', expected argument " "2"" of type '" "wxBitmap &""'"); 
+  }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "MemoryDC_SelectObject" "', expected argument " "2"" of type '" "wxBitmap &""'"); 
+  }
+  arg2 = reinterpret_cast< wxBitmap * >(argp2);
+  {
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    (arg1)->SelectObject(*arg2);
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) SWIG_fail;
+  }
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_MemoryDC_SelectObjectAsSource(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
+  PyObject *resultobj = 0;
+  wxMemoryDC *arg1 = (wxMemoryDC *) 0 ;
+  wxBitmap *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  char *  kwnames[] = {
+    (char *) "self",(char *) "bmp", NULL 
+  };
+  
+  if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:MemoryDC_SelectObjectAsSource",kwnames,&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxMemoryDC, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MemoryDC_SelectObjectAsSource" "', expected argument " "1"" of type '" "wxMemoryDC *""'"); 
+  }
+  arg1 = reinterpret_cast< wxMemoryDC * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_wxBitmap,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "MemoryDC_SelectObject" "', expected argument " "2"" of type '" "wxBitmap const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "MemoryDC_SelectObjectAsSource" "', expected argument " "2"" of type '" "wxBitmap const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "MemoryDC_SelectObject" "', expected argument " "2"" of type '" "wxBitmap const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "MemoryDC_SelectObjectAsSource" "', expected argument " "2"" of type '" "wxBitmap const &""'"); 
   }
   arg2 = reinterpret_cast< wxBitmap * >(argp2);
   {
     PyThreadState* __tstate = wxPyBeginAllowThreads();
-    (arg1)->SelectObject((wxBitmap const &)*arg2);
+    (arg1)->SelectObjectAsSource((wxBitmap const &)*arg2);
     wxPyEndAllowThreads(__tstate);
     if (PyErr_Occurred()) SWIG_fail;
   }
@@ -26100,6 +26311,22 @@ SWIGINTERN PyObject *GraphicsFont_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObj
   return SWIG_Python_InitShadowInstance(args);
 }
 
+SWIGINTERN PyObject *_wrap_new_GraphicsMatrix(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  wxGraphicsMatrix *result = 0 ;
+  
+  if (!SWIG_Python_UnpackTuple(args,"new_GraphicsMatrix",0,0,0)) SWIG_fail;
+  {
+    result = (wxGraphicsMatrix *)new wxGraphicsMatrix();
+    if (PyErr_Occurred()) SWIG_fail;
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_wxGraphicsMatrix, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_delete_GraphicsMatrix(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   wxGraphicsMatrix *arg1 = (wxGraphicsMatrix *) 0 ;
@@ -26376,11 +26603,11 @@ SWIGINTERN PyObject *_wrap_GraphicsMatrix_IsIdentity(PyObject *SWIGUNUSEDPARM(se
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_wxGraphicsMatrix, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsMatrix_IsIdentity" "', expected argument " "1"" of type '" "wxGraphicsMatrix *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsMatrix_IsIdentity" "', expected argument " "1"" of type '" "wxGraphicsMatrix const *""'"); 
   }
   arg1 = reinterpret_cast< wxGraphicsMatrix * >(argp1);
   {
-    result = (bool)(arg1)->IsIdentity();
+    result = (bool)((wxGraphicsMatrix const *)arg1)->IsIdentity();
     if (PyErr_Occurred()) SWIG_fail;
   }
   {
@@ -26539,7 +26766,7 @@ SWIGINTERN PyObject *_wrap_GraphicsMatrix_TransformPoint(PyObject *SWIGUNUSEDPAR
   if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:GraphicsMatrix_TransformPoint",kwnames,&obj0,&obj1,&obj2)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxGraphicsMatrix, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsMatrix_TransformPoint" "', expected argument " "1"" of type '" "wxGraphicsMatrix *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsMatrix_TransformPoint" "', expected argument " "1"" of type '" "wxGraphicsMatrix const *""'"); 
   }
   arg1 = reinterpret_cast< wxGraphicsMatrix * >(argp1);
   if (!(SWIG_IsOK((res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2),SWIGTYPE_p_double,0))))) {
@@ -26563,7 +26790,7 @@ SWIGINTERN PyObject *_wrap_GraphicsMatrix_TransformPoint(PyObject *SWIGUNUSEDPAR
     res3 = SWIG_AddTmpMask(ecode);
   }
   {
-    (arg1)->TransformPoint(arg2,arg3);
+    ((wxGraphicsMatrix const *)arg1)->TransformPoint(arg2,arg3);
     if (PyErr_Occurred()) SWIG_fail;
   }
   resultobj = SWIG_Py_Void();
@@ -26606,7 +26833,7 @@ SWIGINTERN PyObject *_wrap_GraphicsMatrix_TransformDistance(PyObject *SWIGUNUSED
   if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:GraphicsMatrix_TransformDistance",kwnames,&obj0,&obj1,&obj2)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxGraphicsMatrix, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsMatrix_TransformDistance" "', expected argument " "1"" of type '" "wxGraphicsMatrix *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsMatrix_TransformDistance" "', expected argument " "1"" of type '" "wxGraphicsMatrix const *""'"); 
   }
   arg1 = reinterpret_cast< wxGraphicsMatrix * >(argp1);
   if (!(SWIG_IsOK((res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2),SWIGTYPE_p_double,0))))) {
@@ -26630,7 +26857,7 @@ SWIGINTERN PyObject *_wrap_GraphicsMatrix_TransformDistance(PyObject *SWIGUNUSED
     res3 = SWIG_AddTmpMask(ecode);
   }
   {
-    (arg1)->TransformDistance(arg2,arg3);
+    ((wxGraphicsMatrix const *)arg1)->TransformDistance(arg2,arg3);
     if (PyErr_Occurred()) SWIG_fail;
   }
   resultobj = SWIG_Py_Void();
@@ -26685,6 +26912,29 @@ SWIGINTERN PyObject *GraphicsMatrix_swigregister(PyObject *SWIGUNUSEDPARM(self),
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *GraphicsMatrix_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  return SWIG_Python_InitShadowInstance(args);
+}
+
+SWIGINTERN PyObject *_wrap_new_GraphicsPath(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  wxGraphicsPath *result = 0 ;
+  
+  if (!SWIG_Python_UnpackTuple(args,"new_GraphicsPath",0,0,0)) SWIG_fail;
+  {
+    if (!wxPyCheckForApp()) SWIG_fail;
+    PyThreadState* __tstate = wxPyBeginAllowThreads();
+    result = (wxGraphicsPath *)new wxGraphicsPath();
+    wxPyEndAllowThreads(__tstate);
+    if (PyErr_Occurred()) SWIG_fail;
+  }
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_wxGraphicsPath, SWIG_POINTER_NEW |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_delete_GraphicsPath(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   wxGraphicsPath *arg1 = (wxGraphicsPath *) 0 ;
@@ -27092,11 +27342,11 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_GetCurrentPoint(PyObject *SWIGUNUSEDPARM
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_wxGraphicsPath, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_GetCurrentPoint" "', expected argument " "1"" of type '" "wxGraphicsPath *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_GetCurrentPoint" "', expected argument " "1"" of type '" "wxGraphicsPath const *""'"); 
   }
   arg1 = reinterpret_cast< wxGraphicsPath * >(argp1);
   {
-    result = (arg1)->GetCurrentPoint();
+    result = ((wxGraphicsPath const *)arg1)->GetCurrentPoint();
     if (PyErr_Occurred()) SWIG_fail;
   }
   resultobj = SWIG_NewPointerObj((new wxPoint2D(static_cast< const wxPoint2D& >(result))), SWIGTYPE_p_wxPoint2D, SWIG_POINTER_OWN |  0 );
@@ -27686,7 +27936,7 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_UnGetNativePath(PyObject *SWIGUNUSEDPARM
   if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:GraphicsPath_UnGetNativePath",kwnames,&obj0,&obj1)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxGraphicsPath, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_UnGetNativePath" "', expected argument " "1"" of type '" "wxGraphicsPath *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_UnGetNativePath" "', expected argument " "1"" of type '" "wxGraphicsPath const *""'"); 
   }
   arg1 = reinterpret_cast< wxGraphicsPath * >(argp1);
   res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2), 0, 0);
@@ -27694,7 +27944,7 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_UnGetNativePath(PyObject *SWIGUNUSEDPARM
     SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "GraphicsPath_UnGetNativePath" "', expected argument " "2"" of type '" "void *""'"); 
   }
   {
-    (arg1)->UnGetNativePath(arg2);
+    ((wxGraphicsPath const *)arg1)->UnGetNativePath(arg2);
     if (PyErr_Occurred()) SWIG_fail;
   }
   resultobj = SWIG_Py_Void();
@@ -27755,11 +28005,11 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_GetBox(PyObject *SWIGUNUSEDPARM(self), P
   swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_wxGraphicsPath, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_GetBox" "', expected argument " "1"" of type '" "wxGraphicsPath *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_GetBox" "', expected argument " "1"" of type '" "wxGraphicsPath const *""'"); 
   }
   arg1 = reinterpret_cast< wxGraphicsPath * >(argp1);
   {
-    result = (arg1)->GetBox();
+    result = ((wxGraphicsPath const *)arg1)->GetBox();
     if (PyErr_Occurred()) SWIG_fail;
   }
   resultobj = SWIG_NewPointerObj((new wxRect2DDouble(static_cast< const wxRect2DDouble& >(result))), SWIGTYPE_p_wxRect2DDouble, SWIG_POINTER_OWN |  0 );
@@ -27774,7 +28024,7 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_Contains__SWIG_0(PyObject *SWIGUNUSEDPAR
   wxGraphicsPath *arg1 = (wxGraphicsPath *) 0 ;
   wxDouble arg2 ;
   wxDouble arg3 ;
-  int arg4 = (int) wxWINDING_RULE ;
+  int arg4 = (int) wxODDEVEN_RULE ;
   bool result;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -27788,7 +28038,7 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_Contains__SWIG_0(PyObject *SWIGUNUSEDPAR
   if ((nobjs < 3) || (nobjs > 4)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_wxGraphicsPath, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_Contains" "', expected argument " "1"" of type '" "wxGraphicsPath *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_Contains" "', expected argument " "1"" of type '" "wxGraphicsPath const *""'"); 
   }
   arg1 = reinterpret_cast< wxGraphicsPath * >(argp1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
@@ -27809,7 +28059,7 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_Contains__SWIG_0(PyObject *SWIGUNUSEDPAR
     arg4 = static_cast< int >(val4);
   }
   {
-    result = (bool)(arg1)->Contains(arg2,arg3,arg4);
+    result = (bool)((wxGraphicsPath const *)arg1)->Contains(arg2,arg3,arg4);
     if (PyErr_Occurred()) SWIG_fail;
   }
   {
@@ -27825,7 +28075,7 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_Contains__SWIG_1(PyObject *SWIGUNUSEDPAR
   PyObject *resultobj = 0;
   wxGraphicsPath *arg1 = (wxGraphicsPath *) 0 ;
   wxPoint2DDouble *arg2 = 0 ;
-  int arg3 = (int) wxWINDING_RULE ;
+  int arg3 = (int) wxODDEVEN_RULE ;
   bool result;
   void *argp1 = 0 ;
   int res1 = 0 ;
@@ -27837,7 +28087,7 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_Contains__SWIG_1(PyObject *SWIGUNUSEDPAR
   if ((nobjs < 2) || (nobjs > 3)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_wxGraphicsPath, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_Contains" "', expected argument " "1"" of type '" "wxGraphicsPath *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GraphicsPath_Contains" "', expected argument " "1"" of type '" "wxGraphicsPath const *""'"); 
   }
   arg1 = reinterpret_cast< wxGraphicsPath * >(argp1);
   res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_wxPoint2DDouble,  0  | 0);
@@ -27856,7 +28106,7 @@ SWIGINTERN PyObject *_wrap_GraphicsPath_Contains__SWIG_1(PyObject *SWIGUNUSEDPAR
     arg3 = static_cast< int >(val3);
   }
   {
-    result = (bool)(arg1)->Contains((wxPoint2DDouble const &)*arg2,arg3);
+    result = (bool)((wxGraphicsPath const *)arg1)->Contains((wxPoint2DDouble const &)*arg2,arg3);
     if (PyErr_Occurred()) SWIG_fail;
   }
   {
@@ -27911,6 +28161,10 @@ SWIGINTERN PyObject *GraphicsPath_swigregister(PyObject *SWIGUNUSEDPARM(self), P
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *GraphicsPath_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  return SWIG_Python_InitShadowInstance(args);
+}
+
 SWIGINTERN int NullGraphicsPen_set(PyObject *) {
   SWIG_Error(SWIG_AttributeError,"Variable NullGraphicsPen is read-only.");
   return 1;
@@ -29322,7 +29576,7 @@ SWIGINTERN PyObject *_wrap_GraphicsContext_FillPath(PyObject *SWIGUNUSEDPARM(sel
   PyObject *resultobj = 0;
   wxGraphicsContext *arg1 = (wxGraphicsContext *) 0 ;
   wxGraphicsPath *arg2 = 0 ;
-  int arg3 = (int) wxWINDING_RULE ;
+  int arg3 = (int) wxODDEVEN_RULE ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -29372,7 +29626,7 @@ SWIGINTERN PyObject *_wrap_GraphicsContext_DrawPath(PyObject *SWIGUNUSEDPARM(sel
   PyObject *resultobj = 0;
   wxGraphicsContext *arg1 = (wxGraphicsContext *) 0 ;
   wxGraphicsPath *arg2 = 0 ;
-  int arg3 = (int) wxWINDING_RULE ;
+  int arg3 = (int) wxODDEVEN_RULE ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   void *argp2 = 0 ;
@@ -30013,7 +30267,7 @@ SWIGINTERN PyObject *_wrap_GraphicsContext_DrawLines(PyObject *SWIGUNUSEDPARM(se
   wxGraphicsContext *arg1 = (wxGraphicsContext *) 0 ;
   size_t arg2 ;
   wxPoint2D *arg3 = (wxPoint2D *) 0 ;
-  int arg4 = (int) wxWINDING_RULE ;
+  int arg4 = (int) wxODDEVEN_RULE ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   int val4 ;
@@ -38878,6 +39132,8 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"Bitmap_SetDepth", (PyCFunction) _wrap_Bitmap_SetDepth, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Bitmap_SetSize", (PyCFunction) _wrap_Bitmap_SetSize, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Bitmap_CopyFromCursor", (PyCFunction) _wrap_Bitmap_CopyFromCursor, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Bitmap_CopyFromBuffer", (PyCFunction) _wrap_Bitmap_CopyFromBuffer, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"Bitmap_CopyFromBufferRGBA", (PyCFunction) _wrap_Bitmap_CopyFromBufferRGBA, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Bitmap___eq__", (PyCFunction) _wrap_Bitmap___eq__, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Bitmap___ne__", (PyCFunction) _wrap_Bitmap___ne__, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"Bitmap_swigregister", Bitmap_swigregister, METH_VARARGS, NULL},
@@ -39234,6 +39490,7 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"DC_DrawRotatedTextPoint", (PyCFunction) _wrap_DC_DrawRotatedTextPoint, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"DC_Blit", (PyCFunction) _wrap_DC_Blit, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"DC_BlitPointSize", (PyCFunction) _wrap_DC_BlitPointSize, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"DC_GetAsBitmap", (PyCFunction) _wrap_DC_GetAsBitmap, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"DC_SetClippingRegion", (PyCFunction) _wrap_DC_SetClippingRegion, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"DC_SetClippingRegionPointSize", (PyCFunction) _wrap_DC_SetClippingRegionPointSize, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"DC_SetClippingRegionAsRegion", (PyCFunction) _wrap_DC_SetClippingRegionAsRegion, METH_VARARGS | METH_KEYWORDS, NULL},
@@ -39344,6 +39601,7 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"new_MemoryDC", (PyCFunction) _wrap_new_MemoryDC, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"new_MemoryDCFromDC", (PyCFunction) _wrap_new_MemoryDCFromDC, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"MemoryDC_SelectObject", (PyCFunction) _wrap_MemoryDC_SelectObject, METH_VARARGS | METH_KEYWORDS, NULL},
+        { (char *)"MemoryDC_SelectObjectAsSource", (PyCFunction) _wrap_MemoryDC_SelectObjectAsSource, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"MemoryDC_swigregister", MemoryDC_swigregister, METH_VARARGS, NULL},
         { (char *)"MemoryDC_swiginit", MemoryDC_swiginit, METH_VARARGS, NULL},
         { (char *)"new_ScreenDC", (PyCFunction)_wrap_new_ScreenDC, METH_NOARGS, NULL},
@@ -39418,6 +39676,7 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"delete_GraphicsFont", (PyCFunction)_wrap_delete_GraphicsFont, METH_O, NULL},
         { (char *)"GraphicsFont_swigregister", GraphicsFont_swigregister, METH_VARARGS, NULL},
         { (char *)"GraphicsFont_swiginit", GraphicsFont_swiginit, METH_VARARGS, NULL},
+        { (char *)"new_GraphicsMatrix", (PyCFunction)_wrap_new_GraphicsMatrix, METH_NOARGS, NULL},
         { (char *)"delete_GraphicsMatrix", (PyCFunction)_wrap_delete_GraphicsMatrix, METH_O, NULL},
         { (char *)"GraphicsMatrix_Concat", (PyCFunction) _wrap_GraphicsMatrix_Concat, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"GraphicsMatrix_Copy", (PyCFunction) _wrap_GraphicsMatrix_Copy, METH_VARARGS | METH_KEYWORDS, NULL},
@@ -39432,6 +39691,8 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"GraphicsMatrix_TransformDistance", (PyCFunction) _wrap_GraphicsMatrix_TransformDistance, METH_VARARGS | METH_KEYWORDS, NULL},
         { (char *)"GraphicsMatrix_GetNativeMatrix", (PyCFunction)_wrap_GraphicsMatrix_GetNativeMatrix, METH_O, NULL},
         { (char *)"GraphicsMatrix_swigregister", GraphicsMatrix_swigregister, METH_VARARGS, NULL},
+        { (char *)"GraphicsMatrix_swiginit", GraphicsMatrix_swiginit, METH_VARARGS, NULL},
+        { (char *)"new_GraphicsPath", (PyCFunction)_wrap_new_GraphicsPath, METH_NOARGS, NULL},
         { (char *)"delete_GraphicsPath", (PyCFunction)_wrap_delete_GraphicsPath, METH_O, NULL},
         { (char *)"GraphicsPath_MoveToPoint", _wrap_GraphicsPath_MoveToPoint, METH_VARARGS, NULL},
         { (char *)"GraphicsPath_AddLineToPoint", _wrap_GraphicsPath_AddLineToPoint, METH_VARARGS, NULL},
@@ -39452,6 +39713,7 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"GraphicsPath_GetBox", (PyCFunction)_wrap_GraphicsPath_GetBox, METH_O, NULL},
         { (char *)"GraphicsPath_Contains", _wrap_GraphicsPath_Contains, METH_VARARGS, NULL},
         { (char *)"GraphicsPath_swigregister", GraphicsPath_swigregister, METH_VARARGS, NULL},
+        { (char *)"GraphicsPath_swiginit", GraphicsPath_swiginit, METH_VARARGS, NULL},
         { (char *)"delete_GraphicsContext", (PyCFunction)_wrap_delete_GraphicsContext, METH_O, NULL},
         { (char *)"GraphicsContext_Create", _wrap_GraphicsContext_Create, METH_VARARGS, NULL},
         { (char *)"GraphicsContext_CreateFromNative", (PyCFunction) _wrap_GraphicsContext_CreateFromNative, METH_VARARGS | METH_KEYWORDS, NULL},