1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4//
5// W A R N I N G
6// -------------
7//
8// This file is not part of the QtGraphs API. It exists purely as an
9// implementation detail. This header file may change from version to
10// version without notice, or even be removed.
11//
12// We mean it.
13
14#ifndef QCUSTOM3DVOLUME_P_H
15#define QCUSTOM3DVOLUME_P_H
16
17#include "qcustom3ditem_p.h"
18#include "qcustom3dvolume.h"
19
20QT_BEGIN_NAMESPACE
21
22struct QCustomVolumeDirtyBitField
23{
24 bool textureDimensionsDirty : 1;
25 bool slicesDirty : 1;
26 bool colorTableDirty : 1;
27 bool textureDataDirty : 1;
28 bool textureFormatDirty : 1;
29 bool alphaDirty : 1;
30 bool shaderDirty : 1;
31
32 QCustomVolumeDirtyBitField()
33 : textureDimensionsDirty(false)
34 , slicesDirty(false)
35 , colorTableDirty(false)
36 , textureDataDirty(false)
37 , textureFormatDirty(false)
38 , alphaDirty(false)
39 , shaderDirty(false)
40 {}
41};
42
43class QCustom3DVolumePrivate : public QCustom3DItemPrivate
44{
45 Q_DECLARE_PUBLIC(QCustom3DVolume)
46
47public:
48 QCustom3DVolumePrivate();
49 QCustom3DVolumePrivate(QVector3D position,
50 QVector3D scaling,
51 const QQuaternion &rotation,
52 int textureWidth,
53 int textureHeight,
54 int textureDepth,
55 QList<uchar> *textureData,
56 QImage::Format textureFormat,
57 const QList<QRgb> &colorTable);
58 ~QCustom3DVolumePrivate() override;
59
60 void resetDirtyBits();
61 QImage renderSlice(Qt::Axis axis, int index);
62
63public:
64 int m_textureWidth;
65 int m_textureHeight;
66 int m_textureDepth;
67 int m_sliceIndexX;
68 int m_sliceIndexY;
69 int m_sliceIndexZ;
70
71 QImage::Format m_textureFormat;
72 QList<QRgb> m_colorTable;
73 QList<uchar> *m_textureData;
74
75 float m_alphaMultiplier;
76 bool m_preserveOpacity;
77 bool m_useHighDefShader;
78
79 bool m_drawSlices;
80 bool m_drawSliceFrames;
81 QColor m_sliceFrameColor;
82 QVector3D m_sliceFrameWidths;
83 QVector3D m_sliceFrameGaps;
84 QVector3D m_sliceFrameThicknesses;
85
86 QCustomVolumeDirtyBitField m_dirtyBitsVolume;
87
88private:
89 int multipliedAlphaValue(int alpha);
90};
91
92QT_END_NAMESPACE
93
94#endif
95

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qtgraphs/src/graphs3d/data/qcustom3dvolume_p.h