aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-07-26 15:21:40 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:54:40 -0300
commit75bf7f24b8962a58bddaac3a216abd5c78b898c2 (patch)
tree3bd56c7a8bff34a18441339f9c46ac05b7519a1a
parent3482e2c114c7a9c639ad9ffc6710f1104c2c704c (diff)
Implemented 'QGLShaderProgram' array functions support.
Fixes bug #940. Reviewer: Luciano Wolf <luciano.wolf@openbossa.org> Hugo Parente <hugo.lima@openbossa.org>
-rw-r--r--PySide/QtOpenGL/typesystem_opengl.xml493
1 files changed, 491 insertions, 2 deletions
diff --git a/PySide/QtOpenGL/typesystem_opengl.xml b/PySide/QtOpenGL/typesystem_opengl.xml
index abed71869..1bee27fc1 100644
--- a/PySide/QtOpenGL/typesystem_opengl.xml
+++ b/PySide/QtOpenGL/typesystem_opengl.xml
@@ -91,10 +91,499 @@
<object-type name="QGLShader" since="4.6">
<enum-type name="ShaderTypeBit" flags="ShaderType"/>
</object-type>
+
+ <template name="callArrayFunction">
+ int _size = PySequence_Size(%PYARG_2);
+ %ATTR_TYPE _list[_size];
+ if (_size) {
+ Shiboken::AutoDecRef fast(PySequence_Fast(%PYARG_2, "Failed to parse sequence with type %VECTOR_TYPE."));
+ for(int i=0; i &lt; _size; i++) {
+ PyObject* pv = PySequence_Fast_GET_ITEM(fast.object(), i);
+ _list[i] = %CONVERTTOCPP[ %ATTR_TYPE ](pv);
+ }
+ }
+ %CPPSELF.%FUNCTION_NAME(%1, _list, %3);
+ </template>
+
+ <template name="callArrayFunctionWithCount">
+ int _size = PySequence_Size(%PYARG_2);
+ %ATTR_TYPE _list[_size];
+ if (_size) {
+ Shiboken::AutoDecRef fast(PySequence_Fast(%PYARG_2, "Failed to parse sequence with type %VECTOR_TYPE."));
+ for(int i=0; i &lt; _size; i++) {
+ PyObject* pv = PySequence_Fast_GET_ITEM(fast.object(), i);
+ _list[i] = %CONVERTTOCPP[ %ATTR_TYPE ](pv);
+ }
+ }
+ %CPPSELF.%FUNCTION_NAME(%1, _list, _size);
+ </template>
+
+
<object-type name="QGLShaderProgram" since="4.6">
+ <!-- setAttributeArray -->
+ <modify-function signature="setAttributeArray(int, const QVector2D*, int)" rename="setAttributeArray2D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunction">
+ <replace from="%ATTR_TYPE" to="QVector2D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setAttributeArray(int, const QVector3D*, int)" rename="setAttributeArray3D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunction">
+ <replace from="%ATTR_TYPE" to="QVector3D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setAttributeArray(int, const QVector4D*, int)" rename="setAttributeArray4D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunction">
+ <replace from="%ATTR_TYPE" to="QVector4D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setAttributeArray(const char*, const QVector2D*, int)" rename="setAttributeArray2D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunction">
+ <replace from="%ATTR_TYPE" to="QVector2D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setAttributeArray(const char*, const QVector3D*, int)" rename="setAttributeArray3D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunction">
+ <replace from="%ATTR_TYPE" to="QVector3D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setAttributeArray(const char*, const QVector4D*, int)" rename="setAttributeArray4D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunction">
+ <replace from="%ATTR_TYPE" to="QVector4D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+
+ <!-- setUniformValueArray -->
+ <modify-function signature="setUniformValueArray(int, const int*, int)" rename="setUniformValueArrayInt">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="GLint"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const uint*, int)" rename="setUniformValueArrayUint">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="GLuint"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QVector2D*, int)" rename="setUniformValueArray2D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QVector2D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QVector3D*, int)" rename="setUniformValueArray3D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QVector3D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QVector4D*, int)" rename="setUniformValueArray4D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QVector4D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix2x2*, int)" rename="setUniformValueArray2x2">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix2x2"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix2x3*, int)" rename="setUniformValueArray2x3">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix2x3"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix2x4*, int)" rename="setUniformValueArray2x4">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix2x4"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix3x2*, int)" rename="setUniformValueArray3x2">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix3x2"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix3x3*, int)" rename="setUniformValueArray3x3">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix3x3"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix3x4*, int)" rename="setUniformValueArray3x4">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix3x4"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix4x2*, int)" rename="setUniformValueArray4x2">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix4x2"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix4x3*, int)" rename="setUniformValueArray4x3">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix4x3"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(int, const QMatrix4x4*, int)" rename="setUniformValueArray4x4">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix4x4"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const int*, int)" rename="setUniformValueArrayInt">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="GLint"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const uint*, int)" rename="setUniformValueArrayUint">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="GLuint"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QVector2D*, int)" rename="setUniformValueArray2D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QVector2D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QVector3D*, int)" rename="setUniformValueArray3D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QVector3D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QVector4D*, int)" rename="setUniformValueArray4D">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QVector4D"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix2x2*, int)" rename="setUniformValueArray2x2">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix2x2"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix2x3*, int)" rename="setUniformValueArray2x3">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix2x3"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix2x4*, int)" rename="setUniformValueArray2x4">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix2x4"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix3x2*, int)" rename="setUniformValueArray3x2">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix3x2"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix3x3*, int)" rename="setUniformValueArray3x3">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix3x3"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix3x4*, int)" rename="setUniformValueArray3x4">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix3x4"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix4x2*, int)" rename="setUniformValueArray4x2">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix4x2"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix4x3*, int)" rename="setUniformValueArray4x3">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix4x3"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setUniformValueArray(const char*, const QMatrix4x4*, int)" rename="setUniformValueArray4x4">
+ <modify-argument index="2" >
+ <replace-type modified-type="PySequence" />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <inject-code>
+ <insert-template name="callArrayFunctionWithCount">
+ <replace from="%ATTR_TYPE" to="QMatrix4x4"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
<!-- ### Use QMatrixZxY overloads -->
- <modify-function signature="setUniformValue(int, Array)" remove="all" />
- <modify-function signature="setUniformValue(const char*, Array)" remove="all" />
+ <modify-function signature="setUniformValue(int,Array)" remove="all" />
+ <modify-function signature="setUniformValue(const char*,Array)" remove="all" />
<modify-function signature="setAttributeValue(int,const float*,int,int)" remove="all" />
<modify-function signature="setAttributeValue(const char*,const float*,int,int)" remove="all" />
<modify-function signature="setAttributeArray(int, uint, const void*, int, int)" remove="all" since="4.7" />