diff options
Diffstat (limited to 'examples/datavisualization/volumetric/volumetric.h')
-rw-r--r-- | examples/datavisualization/volumetric/volumetric.h | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/examples/datavisualization/volumetric/volumetric.h b/examples/datavisualization/volumetric/volumetric.h new file mode 100644 index 00000000..8d28b524 --- /dev/null +++ b/examples/datavisualization/volumetric/volumetric.h @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#ifndef VOLUMETRICMODIFIER_H +#define VOLUMETRICMODIFIER_H + +#include <QtDataVisualization/q3dscatter.h> +#include <QtDataVisualization/qcustom3dvolume.h> +#include <QtCore/QTimer> +#include <QtGui/QRgb> + +class QLabel; +class QRadioButton; +class QSlider; + +using namespace QtDataVisualization; + +class VolumetricModifier : public QObject +{ + Q_OBJECT +public: + explicit VolumetricModifier(Q3DScatter *scatter); + ~VolumetricModifier(); + + void setFpsLabel(QLabel *fpsLabel); + void setMediumDetailRB(QRadioButton *button); + void setHighDetailRB(QRadioButton *button); + void setSliceLabels(QLabel *xLabel, QLabel *yLabel, QLabel *zLabel); + void setAlphaMultiplierLabel(QLabel *label); + +public slots: + void sliceX(int enabled); + void sliceY(int enabled); + void sliceZ(int enabled); + void adjustSliceX(int value); + void adjustSliceY(int value); + void adjustSliceZ(int value); + void handleFpsChange(qreal fps); + void handleTimeout(); + void toggleLowDetail(bool enabled); + void toggleMediumDetail(bool enabled); + void toggleHighDetail(bool enabled); + void setFpsMeasurement(bool enabled); + void setSliceSliders(QSlider *sliderX, QSlider *sliderY, QSlider *sliderZ); + void changeColorTable(int enabled); + void setPreserveOpacity(bool enabled); + void setTransparentGround(bool enabled); + void setUseHighDefShader(bool enabled); + void adjustAlphaMultiplier(int value); + void toggleAreaAll(bool enabled); + void toggleAreaMine(bool enabled); + void toggleAreaMountain(bool enabled); + void setDrawSliceFrames(int enabled); + +private: + + void initHeightMap(QString fileName, QVector<uchar> &layerData); + void initMineShaftArray(); + int createVolume(int textureSize, int startIndex, int count, + QVector<uchar> *textureData); + int excavateMineShaft(int textureSize, int startIndex, int count, + QVector<uchar> *textureData); + void excavateMineBlock(int textureSize, int dataIndex, int size, QVector<uchar> *textureData); + void handleSlicingChanges(); + + Q3DScatter *m_graph; + QCustom3DVolume *m_volumeItem; + int m_sliceIndexX; + int m_sliceIndexY; + int m_sliceIndexZ; + bool m_slicingX; + bool m_slicingY; + bool m_slicingZ; + QLabel *m_fpsLabel; + QRadioButton *m_mediumDetailRB; + QRadioButton *m_highDetailRB; + QVector<uchar> *m_lowDetailData; + QVector<uchar> *m_mediumDetailData; + QVector<uchar> *m_highDetailData; + QTimer m_timer; + int m_mediumDetailIndex; + int m_highDetailIndex; + int m_mediumDetailShaftIndex; + int m_highDetailShaftIndex; + QSlider *m_sliceSliderX; + QSlider *m_sliceSliderY; + QSlider *m_sliceSliderZ; + QVector<QRgb> m_colorTable1; + QVector<QRgb> m_colorTable2; + bool m_usingPrimaryTable; + QLabel *m_sliceLabelX; + QLabel *m_sliceLabelY; + QLabel *m_sliceLabelZ; + QLabel *m_alphaMultiplierLabel; + QVector<uchar> m_magmaLayer; + QVector<uchar> m_waterLayer; + QVector<uchar> m_groundLayer; + QVector<QPair<QVector3D, QVector3D> > m_mineShaftArray; +}; + +#endif |