1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QCUSTOM3DVOLUME_H
5#define QCUSTOM3DVOLUME_H
6
7#include <QtGraphs/qcustom3ditem.h>
8#include <QtGraphs/qgraphsglobal.h>
9#include <QtGui/qcolor.h>
10#include <QtGui/qimage.h>
11
12QT_BEGIN_NAMESPACE
13
14class QCustom3DVolumePrivate;
15
16class Q_GRAPHS_EXPORT QCustom3DVolume : public QCustom3DItem
17{
18 Q_OBJECT
19 Q_DECLARE_PRIVATE(QCustom3DVolume)
20 Q_PROPERTY(
21 int textureWidth READ textureWidth WRITE setTextureWidth NOTIFY textureWidthChanged FINAL)
22 Q_PROPERTY(int textureHeight READ textureHeight WRITE setTextureHeight NOTIFY
23 textureHeightChanged FINAL)
24 Q_PROPERTY(
25 int textureDepth READ textureDepth WRITE setTextureDepth NOTIFY textureDepthChanged FINAL)
26 Q_PROPERTY(int sliceIndexX READ sliceIndexX WRITE setSliceIndexX NOTIFY sliceIndexXChanged FINAL)
27 Q_PROPERTY(int sliceIndexY READ sliceIndexY WRITE setSliceIndexY NOTIFY sliceIndexYChanged FINAL)
28 Q_PROPERTY(int sliceIndexZ READ sliceIndexZ WRITE setSliceIndexZ NOTIFY sliceIndexZChanged FINAL)
29 Q_PROPERTY(
30 QList<QRgb> colorTable READ colorTable WRITE setColorTable NOTIFY colorTableChanged FINAL)
31 Q_PROPERTY(QList<uchar> *textureData READ textureData WRITE setTextureData NOTIFY
32 textureDataChanged FINAL)
33 Q_PROPERTY(float alphaMultiplier READ alphaMultiplier WRITE setAlphaMultiplier NOTIFY
34 alphaMultiplierChanged FINAL)
35 Q_PROPERTY(bool preserveOpacity READ preserveOpacity WRITE setPreserveOpacity NOTIFY
36 preserveOpacityChanged FINAL)
37 Q_PROPERTY(bool useHighDefShader READ useHighDefShader WRITE setUseHighDefShader NOTIFY
38 useHighDefShaderChanged FINAL)
39 Q_PROPERTY(bool drawSlices READ drawSlices WRITE setDrawSlices NOTIFY drawSlicesChanged FINAL)
40 Q_PROPERTY(bool drawSliceFrames READ drawSliceFrames WRITE setDrawSliceFrames NOTIFY
41 drawSliceFramesChanged FINAL)
42 Q_PROPERTY(QColor sliceFrameColor READ sliceFrameColor WRITE setSliceFrameColor NOTIFY
43 sliceFrameColorChanged FINAL)
44 Q_PROPERTY(QVector3D sliceFrameWidths READ sliceFrameWidths WRITE setSliceFrameWidths NOTIFY
45 sliceFrameWidthsChanged FINAL)
46 Q_PROPERTY(QVector3D sliceFrameGaps READ sliceFrameGaps WRITE setSliceFrameGaps NOTIFY
47 sliceFrameGapsChanged FINAL)
48 Q_PROPERTY(QVector3D sliceFrameThicknesses READ sliceFrameThicknesses WRITE
49 setSliceFrameThicknesses NOTIFY sliceFrameThicknessesChanged FINAL)
50
51public:
52 explicit QCustom3DVolume(QObject *parent = nullptr);
53 explicit QCustom3DVolume(QVector3D position,
54 QVector3D scaling,
55 const QQuaternion &rotation,
56 int textureWidth,
57 int textureHeight,
58 int textureDepth,
59 QList<uchar> *textureData,
60 QImage::Format textureFormat,
61 const QList<QRgb> &colorTable,
62 QObject *parent = nullptr);
63 ~QCustom3DVolume() override;
64
65 void setTextureWidth(int value);
66 int textureWidth() const;
67 void setTextureHeight(int value);
68 int textureHeight() const;
69 void setTextureDepth(int value);
70 int textureDepth() const;
71 void setTextureDimensions(int width, int height, int depth);
72 int textureDataWidth() const;
73
74 void setSliceIndexX(int value);
75 int sliceIndexX() const;
76 void setSliceIndexY(int value);
77 int sliceIndexY() const;
78 void setSliceIndexZ(int value);
79 int sliceIndexZ() const;
80 void setSliceIndices(int x, int y, int z);
81
82 void setColorTable(const QList<QRgb> &colors);
83 QList<QRgb> colorTable() const;
84
85 void setTextureData(QList<uchar> *data);
86 QList<uchar> *createTextureData(const QList<QImage *> &images);
87 QList<uchar> *textureData() const;
88 void setSubTextureData(Qt::Axis axis, int index, const uchar *data);
89 void setSubTextureData(Qt::Axis axis, int index, const QImage &image);
90
91 void setTextureFormat(QImage::Format format);
92 QImage::Format textureFormat() const;
93
94 void setAlphaMultiplier(float mult);
95 float alphaMultiplier() const;
96 void setPreserveOpacity(bool enable);
97 bool preserveOpacity() const;
98
99 void setUseHighDefShader(bool enable);
100 bool useHighDefShader() const;
101
102 void setDrawSlices(bool enable);
103 bool drawSlices() const;
104 void setDrawSliceFrames(bool enable);
105 bool drawSliceFrames() const;
106
107 void setSliceFrameColor(QColor color);
108 QColor sliceFrameColor() const;
109 void setSliceFrameWidths(QVector3D values);
110 QVector3D sliceFrameWidths() const;
111 void setSliceFrameGaps(QVector3D values);
112 QVector3D sliceFrameGaps() const;
113 void setSliceFrameThicknesses(QVector3D values);
114 QVector3D sliceFrameThicknesses() const;
115
116 QImage renderSlice(Qt::Axis axis, int index);
117
118Q_SIGNALS:
119 void textureWidthChanged(int value);
120 void textureHeightChanged(int value);
121 void textureDepthChanged(int value);
122 void sliceIndexXChanged(int value);
123 void sliceIndexYChanged(int value);
124 void sliceIndexZChanged(int value);
125 void colorTableChanged();
126 void textureDataChanged(QList<uchar> *data);
127 void textureFormatChanged(QImage::Format format);
128 void alphaMultiplierChanged(float mult);
129 void preserveOpacityChanged(bool enabled);
130 void useHighDefShaderChanged(bool enabled);
131 void drawSlicesChanged(bool enabled);
132 void drawSliceFramesChanged(bool enabled);
133 void sliceFrameColorChanged(QColor color);
134 void sliceFrameWidthsChanged(QVector3D values);
135 void sliceFrameGapsChanged(QVector3D values);
136 void sliceFrameThicknessesChanged(QVector3D values);
137
138private:
139 Q_DISABLE_COPY(QCustom3DVolume)
140};
141
142QT_END_NAMESPACE
143
144#endif
145

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

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