diff options
author | Renato Filho <renato.filho@openbossa.org> | 2011-07-26 15:21:40 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:54:40 -0300 |
commit | 75bf7f24b8962a58bddaac3a216abd5c78b898c2 (patch) | |
tree | 3bd56c7a8bff34a18441339f9c46ac05b7519a1a | |
parent | 3482e2c114c7a9c639ad9ffc6710f1104c2c704c (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.xml | 493 |
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 < _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 < _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" /> |