diff options
Diffstat (limited to 'src/datavis3d/engine/q3dbars.h')
-rw-r--r-- | src/datavis3d/engine/q3dbars.h | 173 |
1 files changed, 69 insertions, 104 deletions
diff --git a/src/datavis3d/engine/q3dbars.h b/src/datavis3d/engine/q3dbars.h index 03635e4d..a0eb9cb5 100644 --- a/src/datavis3d/engine/q3dbars.h +++ b/src/datavis3d/engine/q3dbars.h @@ -1,147 +1,97 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal +** Copyright (C) 2013 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 QtDataVis3D module. ** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the +** 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. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. +** a written agreement between you and Digia. ** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com ** ****************************************************************************/ #ifndef Q3DBARS_H #define Q3DBARS_H -#include "QtDataVis3D/qdatavis3dglobal.h" -#include "QtDataVis3D/qdatavis3namespace.h" -#include "q3dwindow.h" - +#include <QtDataVis3D/qdatavis3denums.h> +#include <QtDataVis3D/q3dwindow.h> #include <QFont> -QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE +QT_DATAVIS3D_BEGIN_NAMESPACE class Q3DBarsPrivate; -class QDataItem; -class QDataRow; -class QDataSet; -class LabelItem; +class QCategoryAxis; +class QValueAxis; +class QBarDataProxy; -class QTENTERPRISE_DATAVIS3D_EXPORT Q3DBars : public Q3DWindow +class QT_DATAVIS3D_EXPORT Q3DBars : public Q3DWindow { Q_OBJECT + Q_PROPERTY(QtDataVis3D::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) + Q_PROPERTY(QtDataVis3D::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) + Q_PROPERTY(QtDataVis3D::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle) Q_PROPERTY(QFont font READ font WRITE setFont) Q_PROPERTY(float fontSize READ fontSize WRITE setFontSize) - Q_PROPERTY(bool grid READ gridEnabled WRITE setGridEnabled) - Q_PROPERTY(bool background READ backgroundEnabled WRITE setBackgroundEnabled) + Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) + Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible) + Q_ENUMS(QtDataVis3D::QDataVis::SelectionMode) + Q_ENUMS(QtDataVis3D::QDataVis::ShadowQuality) + Q_ENUMS(QtDataVis3D::QDataVis::LabelTransparency) public: - explicit Q3DBars(GLuint fbohandle = 0, const QSize &windowsize = QSize()); + explicit Q3DBars(); ~Q3DBars(); - // Add a row of data. Each new row is added to the front of the sample space, moving previous - // rows back (if sample space is more than one row deep) - Q_INVOKABLE void addDataRow(const QVector<float> &dataRow, - const QString &labelRow = QString(), - const QVector<QString> &labelsColumn = QVector<QString>()); - // ownership of dataItems is transferred - Q_INVOKABLE void addDataRow(const QVector<QDataItem*> &dataRow, - const QString &labelRow = QString(), - const QVector<QString> &labelsColumn = QVector<QString>()); - // ownership of dataRow is transferred - Q_INVOKABLE void addDataRow(QDataRow *dataRow); - - // Add complete data set at a time, as a vector of data rows - Q_INVOKABLE void addDataSet(const QVector< QVector<float> > &data, - const QVector<QString> &labelsRow = QVector<QString>(), - const QVector<QString> &labelsColumn = QVector<QString>()); - - // ownership of dataItems is transferred - Q_INVOKABLE void addDataSet(const QVector< QVector<QDataItem*> > &data, - const QVector<QString> &labelsRow = QVector<QString>(), - const QVector<QString> &labelsColumn = QVector<QString>()); - // ownership of dataSet is transferred - Q_INVOKABLE void addDataSet(QDataSet* dataSet); - // bar thickness, spacing between bars, and is spacing relative to thickness or absolute // y -component sets the thickness/spacing of z -direction // With relative 0.0f means side-to-side, 1.0f = one thickness in between - Q_INVOKABLE void setBarSpecs(QSizeF thickness = QSizeF(1.0f, 1.0f), - QSizeF spacing = QSizeF(1.0f, 1.0f), - bool relative = true); + void setBarSpecs(QSizeF thickness = QSizeF(1.0f, 1.0f), + QSizeF spacing = QSizeF(1.0f, 1.0f), + bool relative = true); // bar type; bars (=cubes), pyramids, cones, cylinders, etc. - Q_INVOKABLE void setBarType(BarStyle style, bool smooth = false); + void setBarType(QDataVis::MeshStyle style, bool smooth = false); // how many samples per row and column, and names for axes - Q_INVOKABLE void setupSampleSpace(int samplesRow, int samplesColumn, - const QString &labelRow = QString(), - const QString &labelColumn = QString(), - const QString &labelHeight = QString()); + // TODO: This defines the data window, needs additional parameters startRow, startColumn + void setupSampleSpace(int samplesRow, int samplesColumn); + QSize sampleSpace() const; // TODO: Return QRect once data window properly implemented? // Select preset camera placement - Q_INVOKABLE void setCameraPreset(CameraPreset preset); + void setCameraPreset(QDataVis::CameraPreset preset); // Set camera rotation if you don't want to use the presets (in horizontal (-180...180) and // vertical (0...90) (or (-90...90) if there are negative values) angles and distance in // percentage (10...500)) - Q_INVOKABLE void setCameraPosition(GLfloat horizontal, GLfloat vertical, GLint distance = 100); + void setCameraPosition(qreal horizontal, qreal vertical, int distance = 100); // Set theme (bar colors, shaders, window color, background colors, light intensity and text // colors are affected) - Q_INVOKABLE void setTheme(ColorTheme theme); + void setTheme(QDataVis::ColorTheme theme); // Set color if you don't want to use themes. Set uniform to false if you want the (height) // color to change from bottom to top - Q_INVOKABLE void setBarColor(QColor baseColor, QColor heightColor, QColor depthColor, - bool uniform = true); - - // Set tick count and step. Note; tickCount * step should be the maximum possible value of data - // set. Minimum is the absolute minimum possible value a bar can have. This is especially - // important to set if values can be negative. - Q_INVOKABLE void setTickCount(GLint tickCount, GLfloat step, GLfloat minimum = 0.0f); + void setBarColor(QColor baseColor, QColor heightColor, QColor depthColor, + bool uniform = true); // override bar type with own mesh - Q_INVOKABLE void setMeshFileName(const QString &objFileName); + void setMeshFileName(const QString &objFileName); // TODO: light placement API // Change selection mode; single bar, bar and row, bar and column, or all - void setSelectionMode(SelectionMode mode); - SelectionMode selectionMode(); + void setSelectionMode(QDataVis::SelectionMode mode); + QDataVis::SelectionMode selectionMode() const; // Set window title void setWindowTitle(const QString &title); - QString windowTitle(); + QString windowTitle() const; // Font size adjustment void setFontSize(float fontsize); @@ -149,31 +99,48 @@ public: // Set font void setFont(const QFont &font); - QFont font(); + QFont font() const; // Label transparency adjustment - void setLabelTransparency(LabelTransparency transparency); - LabelTransparency labelTransparency(); + void setLabelTransparency(QDataVis::LabelTransparency transparency); + QDataVis::LabelTransparency labelTransparency() const; // Enable or disable background grid - void setGridEnabled(bool enable); - bool gridEnabled(); + void setGridVisible(bool visible); + bool isGridVisible() const; - // TODO: Do these need to be public? Where are they called from? // Size void setWidth(const int width); void setHeight(const int height); // Enable or disable background mesh - void setBackgroundEnabled(bool enable); - bool backgroundEnabled(); + void setBackgroundVisible(bool visible); + bool isBackgroundVisible() const; // Adjust shadow quality - void setShadowQuality(ShadowQuality quality); - ShadowQuality shadowQuality(); + void setShadowQuality(QDataVis::ShadowQuality quality); + QDataVis::ShadowQuality shadowQuality() const; + + // Axes - row & column axes are fixed to category axes, value axis can be + // customized. + QCategoryAxis *rowAxis(); + QCategoryAxis *columnAxis(); + void setValueAxis(QValueAxis *axis); + QValueAxis *valueAxis(); + + // Sets the data proxy. Assumes ownership of the data proxy. Deletes old proxy. + void setDataProxy(QBarDataProxy *proxy); + QBarDataProxy *dataProxy(); + +public slots: + // Used to detect when shadow quality changes autonomously due to e.g. resizing. + void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); + +signals: + // Signals shadow quality changes. + void shadowQualityChanged(QDataVis::ShadowQuality quality); protected: - void initialize(); void render(); #if defined(Q_OS_ANDROID) @@ -187,12 +154,10 @@ protected: void resizeEvent(QResizeEvent *event); private: - void drawZoomScene(); - void drawScene(); QScopedPointer<Q3DBarsPrivate> d_ptr; Q_DISABLE_COPY(Q3DBars) }; -QTENTERPRISE_DATAVIS3D_END_NAMESPACE +QT_DATAVIS3D_END_NAMESPACE #endif |