diff options
Diffstat (limited to 'src/datavis3d/engine/bars3dshared_p.h')
-rw-r--r-- | src/datavis3d/engine/bars3dshared_p.h | 326 |
1 files changed, 0 insertions, 326 deletions
diff --git a/src/datavis3d/engine/bars3dshared_p.h b/src/datavis3d/engine/bars3dshared_p.h deleted file mode 100644 index 2250b7c4..00000000 --- a/src/datavis3d/engine/bars3dshared_p.h +++ /dev/null @@ -1,326 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** 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 -** 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. -** -** 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$ -** -****************************************************************************/ - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. - -#ifndef Q3DBARSSHARED_p_H -#define Q3DBARSSHARED_p_H - -#include "QtDataVis3D/qdatavis3dglobal.h" -#include "QtDataVis3D/qdatavis3namespace.h" - -#include <QtCore/QSize> -#include <QtCore/QObject> -#include <QtGui/QOpenGLFunctions> -#include <QtGui/QFont> - -#include <QWindow> - -class QOpenGLPaintDevice; -class QPoint; -class QSizeF; -class QOpenGLShaderProgram; - -QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE - -class QDataItem; -class QDataRow; -class QDataSet; -class ShaderHelper; -class ObjectHelper; -class TextureHelper; -class Theme; -class Drawer; -class LabelItem; -class Bars3dSharedPrivate; - -class QTENTERPRISE_DATAVIS3D_EXPORT Bars3dShared : public QObject, public QOpenGLFunctions -{ - Q_OBJECT - -public: - enum SelectionType { - SelectionNone = 0, - SelectionBar, - SelectionRow, - SelectionColumn - }; - - enum MousePressType { - MouseNone = 0, - MouseOnScene, - MouseOnOverview, - MouseOnZoom, - MouseRotating, - MouseOnPinch - }; - - QRect m_boundingRect; - QOpenGLPaintDevice *m_paintDevice; - ShaderHelper *m_barShader; - ShaderHelper *m_depthShader; - ShaderHelper *m_selectionShader; - ShaderHelper *m_backgroundShader; - ShaderHelper *m_labelShader; - ObjectHelper *m_barObj; - ObjectHelper *m_backgroundObj; - ObjectHelper *m_gridLineObj; - ObjectHelper *m_labelObj; - QPair<int, int> m_sampleCount; - QString m_objFile; - MousePressType m_mousePressed; - QPoint m_mousePos; - GLint m_zoomLevel; - GLfloat m_zoomAdjustment; - GLfloat m_horizontalRotation; - GLfloat m_verticalRotation; - QSizeF m_barThickness; - QSizeF m_barSpacing; - GLfloat m_heightNormalizer; - GLfloat m_yAdjustment; - GLfloat m_rowWidth; - GLfloat m_columnDepth; - GLfloat m_maxDimension; - GLfloat m_scaleX; - GLfloat m_scaleZ; - GLfloat m_scaleFactor; - GLfloat m_maxSceneSize; - Theme *m_theme; - bool m_isInitialized; - SelectionMode m_selectionMode; - QDataItem *m_selectedBar; - QDataRow *m_zoomSelection; - QDataSet *m_dataSet; - QString m_axisLabelX; - QString m_axisLabelZ; - QString m_axisLabelY; - QRect m_sceneViewPort; - QRect m_zoomViewPort; - bool m_zoomActivated; - TextureHelper *m_textureHelper; - LabelTransparency m_labelTransparency; - QFont m_font; - Drawer *m_drawer; - bool m_xFlipped; - bool m_zFlipped; - bool m_yFlipped; - GLuint m_bgrTexture; - GLuint m_depthTexture; - GLuint m_selectionTexture; - GLuint m_depthFrameBuffer; - GLuint m_selectionFrameBuffer; - GLuint m_selectionDepthBuffer; - bool m_updateLabels; - bool m_gridEnabled; - bool m_bgrEnabled; - ShadowQuality m_shadowQuality; - GLfloat m_shadowQualityToShader; - GLint m_tickCount; - GLfloat m_tickStep; - bool m_negativeValues; - GLuint m_fbohandle; - QSize m_size; - -public: - explicit Bars3dShared(QRect rect, GLuint fbohandle=0); - ~Bars3dShared(); - - void initializeOpenGL(); - void render(); - - // 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) - void addDataRow(const QVector<GLfloat> &dataRow, - const QString &labelRow = QString(), - const QVector<QString> &labelsColumn = QVector<QString>()); - // ownership of dataItems is transferred - void addDataRow(const QVector<QDataItem*> &dataRow, - const QString &labelRow = QString(), - const QVector<QString> &labelsColumn = QVector<QString>()); - // ownership of dataRow is transferred - void addDataRow(QDataRow *dataRow); - - // Add complete data set at a time, as a vector of data rows - void addDataSet(const QVector< QVector<GLfloat> > &data, - const QVector<QString> &labelsRow = QVector<QString>(), - const QVector<QString> &labelsColumn = QVector<QString>()); - - // ownership of dataItems is transferred - void addDataSet(const QVector< QVector<QDataItem*> > &data, - const QVector<QString> &labelsRow = QVector<QString>(), - const QVector<QString> &labelsColumn = QVector<QString>()); - // ownership of dataSet is transferred - 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 - 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. - void setBarType(BarStyle style, bool smooth = false); - - // override bar type with own mesh - void setMeshFileName(const QString &objFileName); - - // how many samples per row and column, and names for axes - void setupSampleSpace(int samplesRow, int samplesColumn, - const QString &labelRow = QString(), - const QString &labelColumn = QString(), - const QString &labelHeight = QString()); - - // Select preset camera placement - void setCameraPreset(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)) - void setCameraPosition(GLfloat horizontal, GLfloat vertical, GLint distance = 100); - - // Set theme (bar colors, shaders, window color, background colors, light intensity and text - // colors are affected) - void setTheme(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 - 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. - void setTickCount(GLint tickCount, GLfloat step, GLfloat minimum = 0.0f); - - // TODO: light placement API - - // Size - const QSize size(); - const QRect boundingRect(); - void setBoundingRect(const QRect boundingRect); - void setWidth(const int width); - int width(); - void setHeight(const int height); - int height(); - void setX(const int x); - int x(); - void setY(const int y); - int y(); - - // Change selection mode; single bar, bar and row, bar and column, or all - void setSelectionMode(SelectionMode mode); - SelectionMode selectionMode(); - - // Font size adjustment - void setFontSize(float fontsize); - float fontSize(); - - // Set font - void setFont(const QFont &font); - QFont font(); - - // Label transparency adjustment - void setLabelTransparency(LabelTransparency transparency); - LabelTransparency labelTransparency(); - - // Enable or disable background grid - void setGridEnabled(bool enable); - bool gridEnabled(); - - // Enable or disable background mesh - void setBackgroundEnabled(bool enable); - bool backgroundEnabled(); - - // Adjust shadow quality - void setShadowQuality(ShadowQuality quality); - ShadowQuality shadowQuality(); - -#if defined(Q_OS_ANDROID) - void mouseDoubleClickEvent(QMouseEvent *event); - void touchEvent(QTouchEvent *event); -#endif - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void wheelEvent(QWheelEvent *event); - void resizeNotify(); - - void loadBarMesh(); - void loadBackgroundMesh(); - void loadGridLineMesh(); - void loadLabelMesh(); - void initShaders(const QString &vertexShader, const QString &fragmentShader); - void initSelectionShader(); - void initBackgroundShaders(const QString &vertexShader, const QString &fragmentShader); - void initLabelShaders(const QString &vertexShader, const QString &fragmentShader); - void initSelectionBuffer(); -#if !defined(QT_OPENGL_ES_2) - void initDepthShader(); - void initDepthBuffer(); -#endif - void updateTextures(); - void calculateSceneScalingFactors(); - void calculateHeightAdjustment(const QPair<GLfloat, GLfloat> &limits); - SelectionType isSelected(GLint row, GLint bar, const QVector3D &selection); - void handleLimitChange(); - void closeZoomMode(); - -private: - void drawZoomScene(); - void drawScene(); - Q_DISABLE_COPY(Bars3dShared) - - friend class DeclarativeBars; - friend class DeclarativeBarsRenderer; -}; - -QTENTERPRISE_DATAVIS3D_END_NAMESPACE - -#endif |