X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/68bc8549d81adc1b6f031bdbb03b91a71944197c..b9ac87bc5cbe46227195e32c44e25831f8206e3c:/wxPython/src/image.i diff --git a/wxPython/src/image.i b/wxPython/src/image.i index f3d7dc9294..7f125f11bc 100644 --- a/wxPython/src/image.i +++ b/wxPython/src/image.i @@ -136,11 +136,11 @@ public: bool SetMaskFromImage(const wxImage & mask, byte mr, byte mg, byte mb); - void DoFloodFill (wxCoord x, wxCoord y, - const wxBrush & fillBrush, - const wxColour& testColour, - int style = wxFLOOD_SURFACE, - int LogicalFunction = wxCOPY /* currently unused */ ) ; +// void DoFloodFill (wxCoord x, wxCoord y, +// const wxBrush & fillBrush, +// const wxColour& testColour, +// int style = wxFLOOD_SURFACE, +// int LogicalFunction = wxCOPY /* currently unused */ ) ; static bool CanRead( const wxString& name ); static int GetImageCount( const wxString& name, long type = wxBITMAP_TYPE_ANY ); @@ -167,12 +167,33 @@ public: //void SetData( unsigned char *data ); %addmethods { + PyObject* GetDataBuffer() { + unsigned char* data = self->GetData(); + int len = self->GetWidth() * self->GetHeight() * 3; + return PyBuffer_FromReadWriteMemory(data, len); + } + PyObject* GetData() { unsigned char* data = self->GetData(); int len = self->GetWidth() * self->GetHeight() * 3; return PyString_FromStringAndSize((char*)data, len); } + void SetDataBuffer(PyObject* data) { + unsigned char* buffer; + int size; + + if (!PyArg_Parse(data, "w#", &buffer, &size)) + return; + + if (size != self->GetWidth() * self->GetHeight() * 3) { + PyErr_SetString(PyExc_TypeError, "Incorrect buffer size"); + return; + } + + self->SetData(buffer); + } + void SetData(PyObject* data) { unsigned char* dataPtr; @@ -185,6 +206,7 @@ public: dataPtr = (unsigned char*) malloc(len); memcpy(dataPtr, PyString_AsString(data), len); self->SetData(dataPtr); + // wxImage takes ownership of dataPtr... } }