1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3#include <QtGraphs/qgraphs3dnamespace.h>
4QT_BEGIN_NAMESPACE
5/*!
6 \namespace QtGraphs3D
7 \inmodule QtGraphs
8 \ingroup graphs_3D
9 \brief The QtGraphs3D module provides enums used by QtGraphs' 3D API.
10
11*/
12
13/*!
14 \enum QtGraphs3D::SelectionFlag
15
16 Item selection modes. Values of this enumeration can be combined with OR
17 operator.
18
19 \value None
20 Selection mode disabled.
21 \value Item
22 Selection highlights a single item.
23 \value Row
24 Selection highlights a single row.
25 \value ItemAndRow
26 Combination flag for highlighting both item and row with different colors.
27 \value Column
28 Selection highlights a single column.
29 \value ItemAndColumn
30 Combination flag for highlighting both item and column with different colors.
31 \value RowAndColumn
32 Combination flag for highlighting both row and column.
33 \value ItemRowAndColumn
34 Combination flag for highlighting item, row, and column.
35 \value Slice
36 Setting this mode flag indicates that the graph should take care of the slice view handling
37 automatically. If you wish to control the slice view yourself via Q3DScene, do not set this
38 flag. When setting this mode flag, either \c Row or \c Column must also
39 be set, but not both. Slicing is supported by Q3DBarsWidgetItem and Q3DSurfaceWidgetItem only.
40 When this flag is set, slice mode is entered in the following situations:
41 \list
42 \li When selection is changed explicitly via series API to a visible item
43 \li When selection is changed by clicking on the graph
44 \li When the selection mode changes and the selected item is visible
45 \endlist
46 \value MultiSeries
47 Setting this mode means that items for all series at same position are highlighted, instead
48 of just the selected item. The actual selection in the other series doesn't change.
49 When setting this mode flag, one or more of the basic selection flags (\c {Item},
50 \c {Row}, or \c Column) must also be set.
51 Multi-series selection is not supported for Q3DScatterWidgetItem.
52*/
53
54/*!
55 \enum QtGraphs3D::SliceCaptureType
56 \since 6.10
57
58 Type of slice to grab to an image.
59
60 \value NoImage
61 Slice type to capture is not defined.
62 \value RowImage
63 Capture slice for rows.
64 \value ColumnImage
65 Capture slice for columns.
66*/
67
68/*!
69 \enum QtGraphs3D::ShadowQuality
70
71 Quality of shadows.
72
73 \value None
74 Shadows are disabled.
75 \value Low
76 Shadows are rendered in low quality.
77 \value Medium
78 Shadows are rendered in medium quality.
79 \value High
80 Shadows are rendered in high quality.
81 \value SoftLow
82 Shadows are rendered in low quality with softened edges.
83 \value SoftMedium
84 Shadows are rendered in medium quality with softened edges.
85 \value SoftHigh
86 Shadows are rendered in high quality with softened edges.
87*/
88
89/*!
90 \enum QtGraphs3D::ElementType
91
92 Type of an element in the graph.
93
94 \value None
95 No defined element.
96 \value Series
97 An item in a series.
98 \value AxisXLabel
99 The x-axis label.
100 \value AxisYLabel
101 The y-axis label.
102 \value AxisZLabel
103 The z-axis label.
104 \value CustomItem
105 A custom item.
106*/
107
108/*!
109 \enum QtGraphs3D::OptimizationHint
110
111 The optimization hint for rendering.
112
113 \value Default
114 Provides the full feature set with instancing at a good performance.
115 \value Legacy
116 Provides the full feature set at a reasonable performance. To be used if
117 OptimizationHint.Default performs poorly or does not work.
118*/
119
120/*!
121 \enum QtGraphs3D::CameraPreset
122
123 Predefined positions for camera.
124
125 \value NoPreset
126 Used to indicate a preset has not been set, or the scene has been rotated freely.
127 \value FrontLow
128 Both x and y rotations of the camera are 0.
129 \value Front
130 X rotation is 0 and y rotation is 22.5 degrees.
131 \value FrontHigh
132 X rotation is 0 and y rotation is 45 degrees.
133 \value LeftLow
134 X rotation is 90 and y rotation is 0 degrees.
135 \value Left
136 X rotation is 90 and y rotation is 22.5 degrees.
137 \value LeftHigh
138 X rotation is 90 and y rotation is 45 degrees.
139 \value RightLow
140 X rotation is -90 and y rotation is 0 degrees.
141 \value Right
142 X rotation is -90 and y rotation is 22.5 degrees.
143 \value RightHigh
144 X rotation is -90 and y rotation is 45 degrees.
145 \value BehindLow
146 X rotation is 180 and y rotation is 0 degrees.
147 \value Behind
148 X rotation is 180 and y rotation is 22.5 degrees.
149 \value BehindHigh
150 X rotation is 180 and y rotation is 45 degrees.
151 \value IsometricLeft
152 X rotation is 45 and y rotation is 22.5 degrees.
153 \value IsometricLeftHigh
154 X rotation is 45 and y rotation is 45 degrees.
155 \value IsometricRight
156 X rotation is -45 and y rotation is 22.5 degrees.
157 \value IsometricRightHigh
158 X rotation is -45 and y rotation is 45 degrees.
159 \value DirectlyAbove
160 X rotation is 0 and y rotation is 90 degrees.
161 \value DirectlyAboveCW45
162 X rotation is -45 and y rotation is 90 degrees.
163 \value DirectlyAboveCCW45
164 X rotation is 45 and y rotation is 90 degrees.
165 \value FrontBelow
166 X rotation is 0 and y rotation is -45 degrees.
167 In Q3DBarsWidgetItem from FrontBelow onward these only work for graphs including negative
168 values. They act as CameraPreset...Low for positive-only values.
169 \value LeftBelow
170 X rotation is 90 and y rotation is -45 degrees.
171 \value RightBelow
172 X rotation is -90 and y rotation is -45 degrees.
173 \value BehindBelow
174 X rotation is 180 and y rotation is -45 degrees.
175 \value DirectlyBelow
176 X rotation is 0 and y rotation is -90 degrees.
177 Acts as FrontLow for positive-only bars.
178
179 */
180
181/*!
182 \enum QtGraphs3D::GridLineType
183
184 \value Shader
185 Grid lines are rendered with GPU in a shader.
186 \value Geometry
187 Grid lines are rendered with 3D models.
188*/
189
190/*!
191 \enum QtGraphs3D::RenderingMode
192
193 \value DirectToBackground
194 Indicates that the graph will be rendered directly on the window
195 background and QML items are rendered on top of it. Using non-transparent QML
196 item as a background will hide the graph. Clears the whole window before
197 rendering the graph, including the areas outside the graph. If the surface
198 format of the window supports antialiasing, it will be used (see
199 \l {QQuick3D::idealSurfaceFormat()}).
200 This rendering mode offers the best performance at the expense of
201 non-standard QML behavior. For example, the graphs do not obey the z ordering
202 of QML items and the opacity value has no effect on them.
203
204 \value Indirect
205 Indicates the graph will be first rendered to an offscreen surface
206 that is then drawn during normal QML item rendering. The rendered image is
207 antialiased using the multisampling method if it is supported in the current
208 environment and the msaaSamples property value is greater than zero.
209 This rendering mode offers good quality and normal QML item behavior at the
210 expense of performance.
211 */
212
213/*!
214 \enum QtGraphs3D::TransparencyTechnique
215 \since 6.9
216
217 \brief Specifies which transparency technique to use. The Default value is \c{Default}.
218 When rendering transparent surface graphs, use \c{Approximate} or \c{Accurate}.
219
220 \value Default
221 Indicates that order-independent transparency techniques are not used.
222 Offers the best performance. Use when graphs don't contain
223 transparency or when a bar or scatter graph is also using instancing,
224 that is \l optimizationHint is {QtGraphs3D::OptimizationHint::Default}.
225
226 \value Approximate
227 Indicates that a graph attempts an approximation of order-independent
228 transparency. This method is faster than \c Accurate and works on older
229 hardware but may yield inaccurate results. Use when the order-independent
230 transparency is needed, but the performance cost has to be lower than
231 when using accurate order-independent transparency.
232
233 \value Accurate
234 Indicates that accurate order-independent transparency is used.
235 Use when perfect transparency rendering is needed.
236 \note Accurate transparency is not yet implemented
237 and will be enabled when the required functionality
238 is added to QtQuick3D.
239 */
240
241QT_END_NAMESPACE
242

source code of qtgraphs/src/graphs3d/utils/qgraphs3dnamespace.cpp