OpenCoverage

qquickopenglshadereffect_p.h

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/items/qquickopenglshadereffect_p.h
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2016 The Qt Company Ltd.-
4** Contact: https://www.qt.io/licensing/-
5**-
6** This file is part of the QtQuick module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL$-
9** Commercial License Usage-
10** Licensees holding valid commercial Qt licenses may use this file in-
11** accordance with the commercial license agreement provided with the-
12** Software or, alternatively, in accordance with the terms contained in-
13** a written agreement between you and The Qt Company. For licensing terms-
14** and conditions see https://www.qt.io/terms-conditions. For further-
15** information use the contact form at https://www.qt.io/contact-us.-
16**-
17** GNU Lesser General Public License Usage-
18** Alternatively, this file may be used under the terms of the GNU Lesser-
19** General Public License version 3 as published by the Free Software-
20** Foundation and appearing in the file LICENSE.LGPL3 included in the-
21** packaging of this file. Please review the following information to-
22** ensure the GNU Lesser General Public License version 3 requirements-
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
24**-
25** GNU General Public License Usage-
26** Alternatively, this file may be used under the terms of the GNU-
27** General Public License version 2.0 or (at your option) the GNU General-
28** Public license version 3 or any later version approved by the KDE Free-
29** Qt Foundation. The licenses are as published by the Free Software-
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
31** included in the packaging of this file. Please review the following-
32** information to ensure the GNU General Public License requirements will-
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
34** https://www.gnu.org/licenses/gpl-3.0.html.-
35**-
36** $QT_END_LICENSE$-
37**-
38****************************************************************************/-
39-
40#ifndef QQUICKOPENGLSHADEREFFECT_P_H-
41#define QQUICKOPENGLSHADEREFFECT_P_H-
42-
43//-
44// W A R N I N G-
45// --------------
46//-
47// This file is not part of the Qt API. It exists purely as an-
48// implementation detail. This header file may change from version to-
49// version without notice, or even be removed.-
50//-
51// We mean it.-
52//-
53-
54#include <private/qtquickglobal_p.h>-
55-
56QT_REQUIRE_CONFIG(quick_shadereffect);-
57-
58#include <QtQuick/qquickitem.h>-
59-
60#include <QtQuick/qsgmaterial.h>-
61#include <private/qtquickglobal_p.h>-
62#include <private/qsgadaptationlayer_p.h>-
63#include <private/qquickopenglshadereffectnode_p.h>-
64#include "qquickshadereffect_p.h"-
65#include "qquickshadereffectmesh_p.h"-
66-
67#include <QtCore/qpointer.h>-
68#include <functional>-
69-
70QT_BEGIN_NAMESPACE-
71-
72class QSGContext;-
73class QFileSelector;-
74class QQuickOpenGLCustomMaterialShader;-
75-
76namespace QtPrivate {-
77class MappedSlotObject;-
78}-
79-
80// Common class for QQuickOpenGLShaderEffect and QQuickCustomParticle.-
81struct Q_QUICK_PRIVATE_EXPORT QQuickOpenGLShaderEffectCommon-
82{-
83 typedef QQuickOpenGLShaderEffectMaterialKey Key;-
84 typedef QQuickOpenGLShaderEffectMaterial::UniformData UniformData;-
85-
86 QQuickOpenGLShaderEffectCommon(QObject *host, std::function<void(int)> mappedPropertyChanged)-
87 : host(host), mappedPropertyChanged(mappedPropertyChanged), fileSelector(nullptr)-
88 { }
executed 118 times by 6 tests: end of block
Executed by:
  • tst_examples
  • tst_qquickborderimage
  • tst_qquickcustomparticle
  • tst_qquickitemlayer
  • tst_qquickshadereffect
  • tst_scenegraph
118
89-
90 ~QQuickOpenGLShaderEffectCommon();-
91-
92 void disconnectPropertySignals(QQuickItem *item, Key::ShaderType shaderType);-
93 void connectPropertySignals(QQuickItem *item, const QMetaObject *itemMetaObject, Key::ShaderType shaderType);-
94 void updateParseLog(bool ignoreAttributes);-
95 void lookThroughShaderCode(QQuickItem *item, const QMetaObject *itemMetaObject, Key::ShaderType shaderType, const QByteArray &code);-
96 void updateShader(QQuickItem *item, const QMetaObject *itemMetaObject, Key::ShaderType shaderType);-
97 void updateMaterial(QQuickOpenGLShaderEffectNode *node, QQuickOpenGLShaderEffectMaterial *material,-
98 bool updateUniforms, bool updateUniformValues, bool updateTextureProviders);-
99 void updateWindow(QQuickWindow *window);-
100-
101 // Called by slots in QQuickOpenGLShaderEffect:-
102 void sourceDestroyed(QObject *object);-
103 void propertyChanged(QQuickItem *item, const QMetaObject *itemMetaObject, int mappedId, bool *textureProviderChanged);-
104-
105 void clearSignalMappers(int shader);-
106-
107 QObject *host;-
108 std::function<void(int)> mappedPropertyChanged;-
109 Key source;-
110 QVector<QByteArray> attributes;-
111 QVector<UniformData> uniformData[Key::ShaderTypeCount];-
112 QVector<QtPrivate::MappedSlotObject *> signalMappers[Key::ShaderTypeCount];-
113 QString parseLog;-
114 QFileSelector *fileSelector;-
115};-
116-
117-
118class Q_QUICK_PRIVATE_EXPORT QQuickOpenGLShaderEffect : public QObject-
119{-
120 Q_OBJECT-
121-
122public:-
123 QQuickOpenGLShaderEffect(QQuickShaderEffect *item, QObject *parent = nullptr);-
124 ~QQuickOpenGLShaderEffect() override;-
125-
126 QByteArray fragmentShader() const { return m_common.source.sourceCode[Key::FragmentShader]; }
never executed: return m_common.source.sourceCode[Key::FragmentShader];
0
127 void setFragmentShader(const QByteArray &code);-
128-
129 QByteArray vertexShader() const { return m_common.source.sourceCode[Key::VertexShader]; }
never executed: return m_common.source.sourceCode[Key::VertexShader];
0
130 void setVertexShader(const QByteArray &code);-
131-
132 bool blending() const { return m_blending; }
never executed: return m_blending;
0
133 void setBlending(bool enable);-
134-
135 QVariant mesh() const;-
136 void setMesh(const QVariant &mesh);-
137-
138 QQuickShaderEffect::CullMode cullMode() const { return m_cullMode; }
never executed: return m_cullMode;
0
139 void setCullMode(QQuickShaderEffect::CullMode face);-
140-
141 QString log() const { return m_log; }
never executed: return m_log;
0
142 QQuickShaderEffect::Status status() const { return m_status; }
never executed: return m_status;
0
143-
144 bool supportsAtlasTextures() const { return m_supportsAtlasTextures; }
never executed: return m_supportsAtlasTextures;
0
145 void setSupportsAtlasTextures(bool supports);-
146-
147 QString parseLog();-
148-
149 void handleEvent(QEvent *);-
150 void handleGeometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);-
151 QSGNode *handleUpdatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *);-
152 void handleItemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value);-
153 void maybeUpdateShaders(bool force = false);-
154-
155private Q_SLOTS:-
156 void updateGeometry();-
157 void updateGeometryIfAtlased();-
158 void updateLogAndStatus(const QString &log, int status);-
159 void sourceDestroyed(QObject *object);-
160-
161private:-
162 void propertyChanged(int mappedId);-
163-
164 friend class QQuickCustomMaterialShader;-
165 friend class QQuickOpenGLShaderEffectNode;-
166-
167 typedef QQuickOpenGLShaderEffectMaterialKey Key;-
168 typedef QQuickOpenGLShaderEffectMaterial::UniformData UniformData;-
169-
170 QQuickShaderEffect *m_item;-
171 const QMetaObject *m_itemMetaObject;-
172 QSize m_meshResolution;-
173 QQuickShaderEffectMesh *m_mesh;-
174 QQuickGridMesh m_defaultMesh;-
175 QQuickShaderEffect::CullMode m_cullMode;-
176 QString m_log;-
177 QQuickShaderEffect::Status m_status;-
178-
179 QQuickOpenGLShaderEffectCommon m_common;-
180-
181 uint m_blending : 1;-
182 uint m_dirtyUniforms : 1;-
183 uint m_dirtyUniformValues : 1;-
184 uint m_dirtyTextureProviders : 1;-
185 uint m_dirtyProgram : 1;-
186 uint m_dirtyParseLog : 1;-
187 uint m_dirtyMesh : 1;-
188 uint m_dirtyGeometry : 1;-
189 uint m_customVertexShader : 1;-
190 uint m_supportsAtlasTextures : 1;-
191 uint m_vertNeedsUpdate : 1;-
192 uint m_fragNeedsUpdate : 1;-
193};-
194-
195QT_END_NAMESPACE-
196-
197#endif // QQUICKOPENGLSHADEREFFECT_P_H-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.0