From bf64693b34191a9603bc2426b69cfd52fd33df32 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 29 Aug 2006 18:57:28 +0000 Subject: [PATCH] Now that the typemap is handling buffer-compatible objects correctly we can drop wrapping the parameters in a buffer() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40912 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/src/_bitmap.i | 66 ++++++++++++++++++++---------------------- wxPython/src/_image.i | 15 ++++------ 2 files changed, 36 insertions(+), 45 deletions(-) diff --git a/wxPython/src/_bitmap.i b/wxPython/src/_bitmap.i index f6ee5a0c8d..d43ad7c762 100644 --- a/wxPython/src/_bitmap.i +++ b/wxPython/src/_bitmap.i @@ -416,29 +416,26 @@ the ``type`` parameter.", ""); def BitmapFromBuffer(width, height, dataBuffer, alphaBuffer=None): """ Creates a `wx.Bitmap` from the data in dataBuffer. The dataBuffer - parameter must be a Python object that implements the buffer interface, or - is convertable to a buffer object, such as a string, array, etc. The - dataBuffer object is expected to contain a series of RGB bytes and be - width*height*3 bytes long. A buffer object can optionally be supplied for - the image's alpha channel data, and it is expected to be width*height - bytes long. On Windows the RGB values are 'premultiplied' by the alpha - values. (The other platforms appear to already be premultiplying the - alpha.) - - Unlike `wx.ImageFromBuffer` the bitmap created with this function does not - share the memory buffer with the buffer object. This is because the - native pixel buffer format varies on different platforms, and so instead - an efficient as possible copy of the data is made from the buffer objects - to the bitmap's native pixel buffer. For direct access to a bitmap's - pixel buffer see `wx.NativePixelData` and `wx.AlphaPixelData`. + parameter must be a Python object that implements the buffer + interface, such as a string, array, etc. The dataBuffer object is + expected to contain a series of RGB bytes and be width*height*3 + bytes long. A buffer object can optionally be supplied for the + image's alpha channel data, and it is expected to be width*height + bytes long. On Windows the RGB values are 'premultiplied' by the + alpha values. (The other platforms do the multiplication + themselves.) + + Unlike `wx.ImageFromBuffer` the bitmap created with this function + does not share the memory buffer with the buffer object. This is + because the native pixel buffer format varies on different + platforms, and so instead an efficient as possible copy of the + data is made from the buffer objects to the bitmap's native pixel + buffer. For direct access to a bitmap's pixel buffer see + `wx.NativePixelData` and `wx.AlphaPixelData`. :see: `wx.Bitmap`, `wx.BitmapFromBufferRGBA`, `wx.NativePixelData`, `wx.AlphaPixelData`, `wx.ImageFromBuffer` """ - if not isinstance(dataBuffer, buffer): - dataBuffer = buffer(dataBuffer) - if alphaBuffer is not None and not isinstance(alphaBuffer, buffer): - alphaBuffer = buffer(alphaBuffer) if alphaBuffer is not None: return _gdi_._BitmapFromBufferAlpha(width, height, dataBuffer, alphaBuffer) else: @@ -488,25 +485,24 @@ def BitmapFromBuffer(width, height, dataBuffer, alphaBuffer=None): def BitmapFromBufferRGBA(width, height, dataBuffer): """ Creates a `wx.Bitmap` from the data in dataBuffer. The dataBuffer - parameter must be a Python object that implements the buffer interface, or - is convertable to a buffer object, such as a string, array, etc. The - dataBuffer object is expected to contain a series of RGBA bytes (red, - green, blue and alpha) and be width*height*4 bytes long. On Windows the - RGB values are 'premultiplied' by the alpha values. (The other platforms - appear to already be premultiplying the alpha.) - - Unlike `wx.ImageFromBuffer` the bitmap created with this function does not - share the memory buffer with the buffer object. This is because the - native pixel buffer format varies on different platforms, and so instead - an efficient as possible copy of the data is made from the buffer object - to the bitmap's native pixel buffer. For direct access to a bitmap's - pixel buffer see `wx.NativePixelData` and `wx.AlphaPixelData`. + parameter must be a Python object that implements the buffer + interface, such as a string, array, etc. The dataBuffer object is + expected to contain a series of RGBA bytes (red, green, blue and + alpha) and be width*height*4 bytes long. On Windows the RGB + values are 'premultiplied' by the alpha values. (The other + platforms do the multiplication themselves.) + + Unlike `wx.ImageFromBuffer` the bitmap created with this function + does not share the memory buffer with the buffer object. This is + because the native pixel buffer format varies on different + platforms, and so instead an efficient as possible copy of the + data is made from the buffer object to the bitmap's native pixel + buffer. For direct access to a bitmap's pixel buffer see + `wx.NativePixelData` and `wx.AlphaPixelData`. :see: `wx.Bitmap`, `wx.BitmapFromBuffer`, `wx.NativePixelData`, `wx.AlphaPixelData`, `wx.ImageFromBuffer` """ - if not isinstance(dataBuffer, buffer): - dataBuffer = buffer(dataBuffer) return _gdi_._BitmapFromBufferRGBA(width, height, dataBuffer) } @@ -637,7 +633,7 @@ public: // NOTE: For now I'm not wrapping the Red, Green, Blue and Alpha functions // because I can't hide the premultiplying needed on wxMSW if only the // individual components are wrapped. Instead I've added the Set and Get -// functions and put the puemultiplying in there. +// functions and put the premultiplying in there. // %extend { // byte _get_Red() { return self->Red(); } diff --git a/wxPython/src/_image.i b/wxPython/src/_image.i index 43e9f24626..c183f2c9f2 100644 --- a/wxPython/src/_image.i +++ b/wxPython/src/_image.i @@ -1017,12 +1017,11 @@ range -1.0..1.0 where -1.0 is -360 degrees and 1.0 is 360 degrees", ""); def ImageFromBuffer(width, height, dataBuffer, alphaBuffer=None): """ Creates a `wx.Image` from the data in dataBuffer. The dataBuffer - parameter must be a Python object that implements the buffer interface, or - is convertable to a buffer object, such as a string, array, etc. The - dataBuffer object is expected to contain a series of RGB bytes and be - width*height*3 bytes long. A buffer object can optionally be supplied for - the image's alpha channel data, and it is expected to be width*height - bytes long. + parameter must be a Python object that implements the buffer interface, + such as a string, array, etc. The dataBuffer object is expected to + contain a series of RGB bytes and be width*height*3 bytes long. A buffer + object can optionally be supplied for the image's alpha channel data, and + it is expected to be width*height bytes long. The wx.Image will be created with its data and alpha pointers initialized to the memory address pointed to by the buffer objects, thus saving the @@ -1040,10 +1039,6 @@ def ImageFromBuffer(width, height, dataBuffer, alphaBuffer=None): the objects used for the data and alpha buffers in a way that would cause them to change size. """ - if not isinstance(dataBuffer, buffer): - dataBuffer = buffer(dataBuffer) - if alphaBuffer is not None and not isinstance(alphaBuffer, buffer): - alphaBuffer = buffer(alphaBuffer) image = _core_._ImageFromBuffer(width, height, dataBuffer, alphaBuffer) image._buffer = dataBuffer image._alpha = alphaBuffer -- 2.45.2