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 Qt Data Visualization module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL$
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 General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 or (at your option) any later version
20** approved by the KDE Free Qt Foundation. The licenses are as published by
21** the Free Software Foundation and appearing in the file LICENSE.GPL3
22** included in the packaging of this file. Please review the following
23** information to ensure the GNU General Public License requirements will
24** be met: https://www.gnu.org/licenses/gpl-3.0.html.
25**
26** $QT_END_LICENSE$
27**
28****************************************************************************/
29
30//
31// W A R N I N G
32// -------------
33//
34// This file is not part of the QtDataVisualization API. It exists purely as an
35// implementation detail. This header file may change from version to
36// version without notice, or even be removed.
37//
38// We mean it.
39
40#ifndef Q3DSCENE_P_H
41#define Q3DSCENE_P_H
42
43#include "datavisualizationglobal_p.h"
44#include "q3dscene.h"
45
46QT_BEGIN_NAMESPACE_DATAVISUALIZATION
47
48class Q3DCamera;
49class Q3DLight;
50
51struct Q3DSceneChangeBitField {
52 bool viewportChanged : 1;
53 bool primarySubViewportChanged : 1;
54 bool secondarySubViewportChanged : 1;
55 bool subViewportOrderChanged : 1;
56 bool cameraChanged : 1;
57 bool lightChanged : 1;
58 bool slicingActivatedChanged : 1;
59 bool devicePixelRatioChanged : 1;
60 bool selectionQueryPositionChanged : 1;
61 bool graphPositionQueryPositionChanged : 1;
62 bool windowSizeChanged : 1;
63
64 Q3DSceneChangeBitField()
65 : viewportChanged(true),
66 primarySubViewportChanged(true),
67 secondarySubViewportChanged(true),
68 subViewportOrderChanged(true),
69 cameraChanged(true),
70 lightChanged(true),
71 slicingActivatedChanged(true),
72 devicePixelRatioChanged(true),
73 selectionQueryPositionChanged(false),
74 graphPositionQueryPositionChanged(false),
75 windowSizeChanged(true)
76 {
77 }
78};
79
80class QT_DATAVISUALIZATION_EXPORT Q3DScenePrivate : public QObject
81{
82 Q_OBJECT
83public:
84 Q3DScenePrivate(Q3DScene *q);
85 ~Q3DScenePrivate();
86
87 void sync(Q3DScenePrivate &other);
88
89 void setViewport(const QRect &viewport);
90 void setViewportSize(int width, int height);
91 void setWindowSize(const QSize &size);
92 QSize windowSize() const;
93 void calculateSubViewports();
94 void updateGLViewport();
95 void updateGLSubViewports();
96
97 QRect glViewport();
98 QRect glPrimarySubViewport();
99 QRect glSecondarySubViewport();
100
101 void setLightPositionRelativeToCamera(const QVector3D &relativePosition,
102 float fixedRotation = 0.0f,
103 float distanceModifier = 0.0f);
104
105 void markDirty();
106
107 bool isInArea(const QRect &area, int x, int y) const;
108
109Q_SIGNALS:
110 void needRender();
111
112public:
113 Q3DScene *q_ptr;
114 Q3DSceneChangeBitField m_changeTracker;
115
116 QRect m_viewport;
117 QRect m_primarySubViewport;
118 QRect m_secondarySubViewport;
119 bool m_isSecondarySubviewOnTop;
120 float m_devicePixelRatio;
121 Q3DCamera *m_camera;
122 Q3DLight *m_light;
123 bool m_isUnderSideCameraEnabled;
124 bool m_isSlicingActive;
125 QPoint m_selectionQueryPosition;
126 QPoint m_graphPositionQueryPosition;
127 QSize m_windowSize;
128 QRect m_glViewport;
129 QRect m_glPrimarySubViewport;
130 QRect m_glSecondarySubViewport;
131 bool m_sceneDirty;
132 QRect m_defaultSmallViewport;
133 QRect m_defaultLargeViewport;
134};
135
136QT_END_NAMESPACE_DATAVISUALIZATION
137
138#endif
139

source code of qtdatavis3d/src/datavisualization/engine/q3dscene_p.h