| 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> |
| 4 | QT_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 | |
| 241 | QT_END_NAMESPACE |
| 242 | |