1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QSGCURVESTROKENODE_P_P_H
5#define QSGCURVESTROKENODE_P_P_H
6
7#include <QtQuick/qtquickexports.h>
8#include <QtQuick/qsgmaterial.h>
9
10//
11// W A R N I N G
12// -------------
13//
14// This file is not part of the Qt API. It exists for the convenience
15// of a number of Qt sources files. This header file may change from
16// version to version without notice, or even be removed.
17//
18// We mean it.
19//
20
21QT_BEGIN_NAMESPACE
22
23class QSGCurveStrokeNode;
24class QSGCurveStrokeMaterial;
25
26class Q_QUICK_EXPORT QSGCurveStrokeMaterialShader : public QSGMaterialShader
27{
28public:
29 QSGCurveStrokeMaterialShader(bool useDerivatives, int viewCount)
30 {
31 QString baseName(u":/qt-project.org/scenegraph/shaders_ng/shapestroke");
32 if (useDerivatives)
33 baseName += u"_derivatives";
34 setShaderFileName(stage: VertexStage, filename: baseName + u".vert.qsb", viewCount);
35 setShaderFileName(stage: FragmentStage, filename: baseName + u".frag.qsb", viewCount);
36 }
37
38 bool updateUniformData(RenderState &state, QSGMaterial *newEffect, QSGMaterial *oldEffect) override;
39};
40
41
42class Q_QUICK_EXPORT QSGCurveStrokeMaterial : public QSGMaterial
43{
44public:
45 QSGCurveStrokeMaterial(QSGCurveStrokeNode *node)
46 : m_node(node)
47 {
48 setFlag(flags: Blending, on: true);
49 }
50
51 int compare(const QSGMaterial *other) const override;
52
53 QSGCurveStrokeNode *node() const
54 {
55 return m_node;
56 }
57
58protected:
59 QSGMaterialType *type() const override
60 {
61 static QSGMaterialType t;
62 return &t;
63 }
64 QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const override
65 {
66 return new QSGCurveStrokeMaterialShader(renderMode == QSGRendererInterface::RenderMode3D, viewCount());
67 }
68
69 QSGCurveStrokeNode *m_node;
70};
71
72QT_END_NAMESPACE
73
74#endif // QSGCURVESTROKENODE_P_P_H
75

source code of qtdeclarative/src/quick/scenegraph/qsgcurvestrokenode_p_p.h