aboutsummaryrefslogtreecommitdiffstats
path: root/PySide/QtGui/typesystem_gui_common.xml
diff options
context:
space:
mode:
Diffstat (limited to 'PySide/QtGui/typesystem_gui_common.xml')
-rw-r--r--PySide/QtGui/typesystem_gui_common.xml43
1 files changed, 16 insertions, 27 deletions
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml
index 5ff06da5e..523dae9ef 100644
--- a/PySide/QtGui/typesystem_gui_common.xml
+++ b/PySide/QtGui/typesystem_gui_common.xml
@@ -415,13 +415,11 @@
<value-type name="QBitmap" >
<modify-function signature="fromData(QSize,const uchar*,QImage::Format)">
<modify-argument index="2">
- <replace-type modified-type="PyObject"/>
+ <replace-type modified-type="PyBuffer"/>
</modify-argument>
<inject-code>
- const void* buffer;
- Py_ssize_t size;
- if (PyObject_AsReadBuffer(%PYARG_2, &amp;buffer, &amp;size) != -1)
- %PYARG_0 = %CONVERTTOPYTHON[QBitmap](QBitmap::fromData(%1, (const uchar*)buffer, %3));
+ uchar* buffer = (uchar*) Shiboken::Buffer::getPointer(%PYARG_2);
+ %PYARG_0 = %CONVERTTOPYTHON[QBitmap](QBitmap::fromData(%1, buffer, %3));
</inject-code>
</modify-function>
</value-type>
@@ -553,25 +551,24 @@
<replace-type modified-type="PyObject"/>
</modify-argument>
<inject-code>
- %PYARG_0 = PyBuffer_FromMemory(const_cast&lt;char*&gt;(%CPPSELF.data()), %CPPSELF.size());
+ %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.data(), %CPPSELF.size());
</inject-code>
</modify-function>
<modify-function signature="setData(const char*,uint)">
<modify-argument index="1">
<replace-type modified-type="PyBuffer"/>
<conversion-rule class="target">
- PyObject *%out = PyBuffer_FromMemory(const_cast&lt;char*&gt;(%in), size);
+ PyObject* %out = Shiboken::Buffer::newObject(%in, size);
</conversion-rule>
<conversion-rule class="native">
- const char *%out;
- Py_ssize_t buffer_len;
- PyObject_AsCharBuffer(arg, &amp;%out, &amp;buffer_len);
+ Py_ssize_t bufferLen;
+ char* %out = (char*) Shiboken::Buffer::getPointer(arg, &amp;bufferLen);
</conversion-rule>
</modify-argument>
<modify-argument index="2">
<remove-argument/>
<conversion-rule class="native">
- uint %out = buffer_len;
+ uint %out = bufferLen;
</conversion-rule>
</modify-argument>
</modify-function>
@@ -975,20 +972,12 @@
</extra-includes>
<template name="qimage_buffer_constructor">
- PyTypeObject* pyType = reinterpret_cast&lt;PyTypeObject*>(%PYARG_1->ob_type);
- if (pyType->tp_as_buffer
- &amp;&amp; pyType->tp_as_buffer->bf_getreadbuffer
- &amp;&amp; pyType->tp_as_buffer->bf_getsegcount(%PYARG_1, 0) == 1) {
- void* ptr;
- pyType->tp_as_buffer->bf_getreadbuffer(%PYARG_1, 0, &amp;ptr);
- %0 = new %TYPE((uchar*)ptr, %ARGS);
- } else {
- PyErr_SetString(PyExc_TypeError, "The object must support buffer protocol with just one segment.");
- }
+ uchar* ptr = (uchar*) Shiboken::Buffer::getPointer(%PYARG_1);
+ %0 = new %TYPE(ptr, %ARGS);
</template>
<modify-function signature="QImage(uchar *,int,int,int,QImage::Format)">
<modify-argument index="1">
- <replace-type modified-type="PyObject"/>
+ <replace-type modified-type="PyBuffer"/>
</modify-argument>
<inject-code>
<insert-template name="qimage_buffer_constructor">
@@ -998,7 +987,7 @@
</modify-function>
<modify-function signature="QImage(uchar*,int,int,QImage::Format)">
<modify-argument index="1">
- <replace-type modified-type="PyObject"/>
+ <replace-type modified-type="PyBuffer"/>
</modify-argument>
<inject-code>
<insert-template name="qimage_buffer_constructor">
@@ -1054,23 +1043,23 @@
<modify-function signature="constBits()const" since="4.7">
<inject-code>
- %PYARG_0 = PyBuffer_FromMemory(const_cast&lt;uchar*>(%CPPSELF.%FUNCTION_NAME()), %CPPSELF.byteCount());
+ %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.byteCount());
</inject-code>
</modify-function>
<modify-function signature="bits()">
<inject-code>
// byteCount() is only available on Qt4.7, so we use bytesPerLine * height
- %PYARG_0 = PyBuffer_FromReadWriteMemory(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.bytesPerLine() * %CPPSELF.height());
+ %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.bytesPerLine() * %CPPSELF.height(), Shiboken::Buffer::ReadWrite);
</inject-code>
</modify-function>
<modify-function signature="constScanLine(int)const" since="4.7">
<inject-code>
- %PYARG_0 = PyBuffer_FromMemory(const_cast&lt;uchar*>(%CPPSELF.%FUNCTION_NAME(%1)), %CPPSELF.bytesPerLine());
+ %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1), %CPPSELF.bytesPerLine());
</inject-code>
</modify-function>
<modify-function signature="scanLine(int)">
<inject-code>
- %PYARG_0 = PyBuffer_FromReadWriteMemory(%CPPSELF.%FUNCTION_NAME(%1), %CPPSELF.bytesPerLine());
+ %PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1), %CPPSELF.bytesPerLine(), Shiboken::Buffer::ReadWrite);
</inject-code>
</modify-function>
<!--