10#if QT_CONFIG(quick_sprite)
17#include <QtQuick/qsgsimplerectnode.h>
18#include <QtQuick/qsgsimpletexturenode.h>
19#include <QtQuick/qsgrendernode.h>
27 vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE);
28 vgGetMatrix(
matrix.data());
33 m_opacityState.
push(1.0f);
43 m_transformStack.
push(m_transformStack.
top() * matrix2d);
49 m_transformStack.
pop();
54 VGMaskOperation maskOperation = VG_INTERSECT_MASK;
55 if (m_clipStack.
count() == 0) {
56 vgSeti(VG_MASKING, VG_TRUE);
57 vgMask(0,VG_FILL_MASK, 0, 0, VG_MAXINT, VG_MAXINT);
61 vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE);
63 VGPath clipPath = generateClipPath(node->
clipRect());
64 vgRenderToMask(clipPath, VG_FILL_PATH, maskOperation);
66 m_clipStack.
push(clipPath);
74 auto clipState = m_clipStack.
pop();
75 vgDestroyPath(clipState);
77 if (m_clipStack.
count() == 0) {
78 vgSeti(VG_MASKING, VG_FALSE);
81 vgMask(0,VG_FILL_MASK, 0, 0, VG_MAXINT, VG_MAXINT);
82 vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE);
84 for (
auto path : std::as_const(m_clipStack)) {
85 vgRenderToMask(
path, VG_FILL_PATH, VG_INTERSECT_MASK);
101 renderRenderableNode(nn);
103 renderRenderableNode(rn);
105 renderRenderableNode(
n);
126 m_opacityState.
pop();
178#if QT_CONFIG(quick_sprite)
199VGPath QSGOpenVGNodeVisitor::generateClipPath(
const QRectF &
rect)
const
201 VGPath clipPath = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1, 0, 0, 0,
202 VG_PATH_CAPABILITY_APPEND_TO);
205 static const VGubyte rectCommands[] = {
221 coordinates[0] = bottomLeft.
x();
222 coordinates[1] = bottomLeft.
y();
223 coordinates[2] = bottomRight.
x();
224 coordinates[3] = bottomRight.
y();
225 coordinates[4] = topRight.
x();
226 coordinates[5] = topRight.
y();
227 coordinates[6] = topLeft.
x();
228 coordinates[7] = topLeft.
y();
230 vgAppendPathData(clipPath, 5, rectCommands, coordinates.constData());
const_pointer constData() const noexcept
qsizetype count() const noexcept
const float * constData() const
Returns a constant pointer to the raw data of this matrix.
\inmodule QtCore\reentrant
constexpr qreal x() const noexcept
Returns the x coordinate of this point.
constexpr qreal y() const noexcept
Returns the y coordinate of this point.
\inmodule QtCore\reentrant
The QSGClipNode class implements the clipping functionality in the scene graph.
QRectF clipRect() const
Returns the clip rect of this node.
The QSGGeometryNode class is used for all rendered content in the scene graph.
The QSGOpacityNode class is used to change opacity of nodes.
qreal opacity() const
Returns this opacity node's opacity.
void endVisit(QSGTransformNode *) override
bool visit(QSGTransformNode *) override
virtual void setTransform(const QOpenVGMatrix &transform)
virtual void setOpacity(float opacity)
The QSGRenderNode class represents a set of custom rendering commands targeting the graphics API that...
The QSGRootNode is the toplevel root of any scene graph.
The QSGSimpleRectNode class is a convenience class for drawing solid filled rectangles using scenegra...
The QSGSimpleTextureNode class is provided for convenience to easily draw textured content using the ...
T & top()
Returns a reference to the stack's top item.
T pop()
Removes the top item from the stack and returns it.
void push(const T &t)
Adds element t to the top of the stack.
Combined button and popup list for selecting options.
GLuint GLenum GLenum transform
GLsizei const GLchar *const * path