summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3dcontroller_p.h
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-12-18 11:50:03 +0200
committerMika Salmela <mika.salmela@digia.com>2013-12-18 11:51:20 +0200
commit07aba602fc82ac31684988f8e8e22521d2b3c982 (patch)
tree7ae1da139e8661bf157f996fe71844031d2995f4 /src/datavisualization/engine/abstract3dcontroller_p.h
parentcf0cf6ca67aec8ae480bb705443ea17f5ab9f9e2 (diff)
parentea0442bc81ae034d22c5742b6075dee993fdd54d (diff)
Merge branch 'develop' into mergebranch
Conflicts: examples/qmlbars/qml/qmlbars/main.qml examples/qmlscatter/qml/qmlscatter/main.qml examples/qmlsurface/qml/qmlsurface/main.qml src/datavisualization/data/qitemmodelbardatamapping.cpp src/datavisualization/data/qitemmodelscatterdatamapping.cpp src/datavisualization/data/qitemmodelsurfacedatamapping.cpp src/datavisualization/engine/drawer.cpp Change-Id: I731ebdb2cc5cee8f2cb32becee96d1fc1b3e5de1
Diffstat (limited to 'src/datavisualization/engine/abstract3dcontroller_p.h')
-rw-r--r--src/datavisualization/engine/abstract3dcontroller_p.h212
1 files changed, 76 insertions, 136 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h
index f17c6c4d..c56b8a72 100644
--- a/src/datavisualization/engine/abstract3dcontroller_p.h
+++ b/src/datavisualization/engine/abstract3dcontroller_p.h
@@ -26,19 +26,19 @@
//
// We mean it.
-#ifndef CONTROLLER3DBASE_H
-#define CONTROLLER3DBASE_H
+#ifndef ABSTRACT3DCONTROLLER_P_H
+#define ABSTRACT3DCONTROLLER_P_H
#include "datavisualizationglobal_p.h"
-#include "theme_p.h"
#include "q3dabstractaxis.h"
#include "drawer_p.h"
#include "qabstract3dinputhandler.h"
#include "qabstractdataproxy.h"
-#include "q3dscene.h"
+#include "q3dscene_p.h"
#include "q3dbox.h"
#include <QObject>
+#include <QLinearGradient>
class QFont;
@@ -46,55 +46,45 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
class CameraHelper;
class Abstract3DRenderer;
+class QAbstract3DSeries;
+class ThemeManager;
struct Abstract3DChangeBitField {
- bool positionChanged : 1;
- bool zoomLevelChanged : 1;
- bool themeChanged : 1;
- bool fontChanged : 1;
- bool labelStyleChanged : 1;
- bool boundingRectChanged : 1;
- bool sizeChanged : 1;
- bool shadowQualityChanged : 1;
- bool selectionModeChanged : 1;
- bool objFileChanged : 1;
- bool gridEnabledChanged : 1;
- bool backgroundEnabledChanged : 1;
- bool axisXTypeChanged : 1;
- bool axisYTypeChanged : 1;
- bool axisZTypeChanged : 1;
- bool axisXTitleChanged : 1;
- bool axisYTitleChanged : 1;
- bool axisZTitleChanged : 1;
- bool axisXLabelsChanged : 1;
- bool axisYLabelsChanged : 1;
- bool axisZLabelsChanged : 1;
- bool axisXRangeChanged : 1;
- bool axisYRangeChanged : 1;
- bool axisZRangeChanged : 1;
- bool axisXSegmentCountChanged : 1;
- bool axisYSegmentCountChanged : 1;
- bool axisZSegmentCountChanged : 1;
- bool axisXSubSegmentCountChanged : 1;
- bool axisYSubSegmentCountChanged : 1;
- bool axisZSubSegmentCountChanged : 1;
- bool axisXLabelFormatChanged : 1;
- bool axisYLabelFormatChanged : 1;
- bool axisZLabelFormatChanged : 1;
+ bool zoomLevelChanged : 1;
+ bool themeChanged : 1;
+ bool shadowQualityChanged : 1;
+ bool selectionModeChanged : 1;
+ bool objFileChanged : 1;
+ bool axisXTypeChanged : 1;
+ bool axisYTypeChanged : 1;
+ bool axisZTypeChanged : 1;
+ bool axisXTitleChanged : 1;
+ bool axisYTitleChanged : 1;
+ bool axisZTitleChanged : 1;
+ bool axisXLabelsChanged : 1;
+ bool axisYLabelsChanged : 1;
+ bool axisZLabelsChanged : 1;
+ bool axisXRangeChanged : 1;
+ bool axisYRangeChanged : 1;
+ bool axisZRangeChanged : 1;
+ bool axisXSegmentCountChanged : 1;
+ bool axisYSegmentCountChanged : 1;
+ bool axisZSegmentCountChanged : 1;
+ bool axisXSubSegmentCountChanged : 1;
+ bool axisYSubSegmentCountChanged : 1;
+ bool axisZSubSegmentCountChanged : 1;
+ bool axisXLabelFormatChanged : 1;
+ bool axisYLabelFormatChanged : 1;
+ bool axisZLabelFormatChanged : 1;
+ bool inputStateChanged : 1;
+ bool inputPositionChanged : 1;
Abstract3DChangeBitField() :
- positionChanged(true),
zoomLevelChanged(true),
themeChanged(true),
- fontChanged(true),
- labelStyleChanged(true),
- boundingRectChanged(true),
- sizeChanged(true),
shadowQualityChanged(true),
selectionModeChanged(true),
objFileChanged(true),
- gridEnabledChanged(true),
- backgroundEnabledChanged(true),
axisXTypeChanged(true),
axisYTypeChanged(true),
axisZTypeChanged(true),
@@ -143,18 +133,11 @@ public:
private:
Abstract3DChangeBitField m_changeTracker;
- QRect m_boundingRect;
GLfloat m_horizontalRotation;
GLfloat m_verticalRotation;
- Theme m_theme;
- QFont m_font;
- QDataVis::SelectionMode m_selectionMode;
+ ThemeManager *m_themeManager;
+ QDataVis::SelectionFlags m_selectionMode;
QDataVis::ShadowQuality m_shadowQuality;
- QDataVis::LabelStyle m_labelStyle;
- bool m_isBackgroundEnabled;
- bool m_isGridEnabled;
- QString m_objFile;
-
Q3DScene *m_scene;
protected:
@@ -169,51 +152,26 @@ protected:
QList<Q3DAbstractAxis *> m_axes; // List of all added axes
Abstract3DRenderer *m_renderer;
bool m_isDataDirty;
-
- QAbstractDataProxy *m_data;
- QList<QAbstractDataProxy *> m_dataProxies;
-
+ bool m_isSeriesVisibilityDirty;
+ bool m_isSeriesVisualsDirty;
bool m_renderPending;
- explicit Abstract3DController(QRect boundRect, QObject *parent = 0);
+ QList<QAbstract3DSeries *> m_seriesList;
+
+ explicit Abstract3DController(QRect initialViewport, QObject *parent = 0);
virtual ~Abstract3DController();
public:
inline bool isInitialized() { return (m_renderer != 0); }
-
- /**
- * @brief synchDataToRenderer Called on the render thread while main GUI thread is blocked before rendering.
- */
virtual void synchDataToRenderer();
-
virtual void render(const GLuint defaultFboHandle = 0);
-
- /**
- * @brief setRenderer Sets the renderer to be used. isInitialized returns true from this point onwards.
- * @param renderer Renderer to be used.
- */
+ virtual void initializeOpenGL() = 0;
void setRenderer(Abstract3DRenderer *renderer);
- // Size
- virtual void setSize(const int width, const int height);
- virtual const QSize size();
- virtual const QRect boundingRect();
- virtual void setBoundingRect(const QRect boundingRect);
- virtual void setWidth(const int width);
- virtual int width();
- virtual void setHeight(const int height);
- virtual int height();
- virtual void setX(const int x);
- virtual int x();
- virtual void setY(const int y);
- virtual int y();
-
- virtual QRect primarySubViewport() const;
- virtual void setPrimarySubViewport(const QRect &primarySubViewport);
-
- virtual QRect secondarySubViewport() const;
- virtual void setSecondarySubViewport(const QRect &secondarySubViewport);
+ virtual void addSeries(QAbstract3DSeries *series);
+ virtual void removeSeries(QAbstract3DSeries *series);
+ QList<QAbstract3DSeries *> seriesList();
virtual void setAxisX(Q3DAbstractAxis *axis);
virtual Q3DAbstractAxis *axisX();
@@ -230,63 +188,27 @@ public:
virtual void setActiveInputHandler(QAbstract3DInputHandler *inputHandler);
virtual QAbstract3DInputHandler *activeInputHandler();
- virtual QAbstractDataProxy *activeDataProxy() const;
- virtual void addDataProxy(QAbstractDataProxy *proxy);
- virtual void releaseDataProxy(QAbstractDataProxy *proxy);
- virtual QList<QAbstractDataProxy *> dataProxies() const;
- virtual void setActiveDataProxy(QAbstractDataProxy *proxy);
- virtual void updateDevicePixelRatio(qreal ratio);
-
virtual int zoomLevel();
virtual void setZoomLevel(int zoomLevel);
- // Set color if you don't want to use themes.
- virtual void setObjectColor(const QColor &baseColor, bool uniform = true);
- virtual QColor objectColor() const;
-
- // Set theme (bar colors, shaders, window color, background colors, light intensity and text
- // colors are affected)
- virtual void setTheme(QDataVis::Theme theme);
- virtual Theme theme();
+ virtual void setTheme(Q3DTheme *theme);
+ virtual Q3DTheme *theme() const;
- // Set font
- virtual void setFont(const QFont &font);
- virtual QFont font();
+ virtual void setSelectionMode(QDataVis::SelectionFlags mode);
+ virtual QDataVis::SelectionFlags selectionMode() const;
- // Selection mode
- virtual void setSelectionMode(QDataVis::SelectionMode mode);
- virtual QDataVis::SelectionMode selectionMode();
-
- // Adjust shadow quality
virtual void setShadowQuality(QDataVis::ShadowQuality quality);
- virtual QDataVis::ShadowQuality shadowQuality();
-
- // Label style adjustment
- virtual void setLabelStyle(QDataVis::LabelStyle style);
- virtual QDataVis::LabelStyle labelStyle();
+ virtual QDataVis::ShadowQuality shadowQuality() const;
- // Enable or disable background mesh
- virtual void setBackgroundEnabled(bool enable);
- virtual bool backgroundEnabled();
-
- // Enable or disable background grid
- virtual void setGridEnabled(bool enable);
- virtual bool gridEnabled();
-
- // Query input state and position
- QDataVis::InputState inputState();
- QPoint inputPosition();
-
- // Enable or disable slicing mode
- bool isSlicingActive();
+ bool isSlicingActive() const;
void setSlicingActive(bool isSlicing);
+ Q3DScene *scene();
- // override bar type with own mesh
- virtual void setMeshFileName(const QString &fileName);
- virtual QString meshFileName();
+ void markDataDirty();
+ void markSeriesVisualsDirty();
- Q3DScene *scene();
+ void emitNeedRender();
virtual void mouseDoubleClickEvent(QMouseEvent *event);
virtual void touchEvent(QTouchEvent *event);
@@ -303,32 +225,50 @@ public:
virtual void handleAxisAutoAdjustRangeChangedInOrientation(
Q3DAbstractAxis::AxisOrientation orientation, bool autoAdjust) = 0;
virtual void handleAxisLabelFormatChangedBySender(QObject *sender);
+ virtual void handleSeriesVisibilityChangedBySender(QObject *sender);
public slots:
void handleAxisTitleChanged(const QString &title);
void handleAxisLabelsChanged();
- void handleAxisRangeChanged(qreal min, qreal max);
+ void handleAxisRangeChanged(float min, float max);
void handleAxisSegmentCountChanged(int count);
void handleAxisSubSegmentCountChanged(int count);
void handleAxisAutoAdjustRangeChanged(bool autoAdjust);
void handleAxisLabelFormatChanged(const QString &format);
+ void handleInputStateChanged(QAbstract3DInputHandler::InputState state);
+ void handleInputPositionChanged(const QPoint &position);
+ void handleSeriesVisibilityChanged(bool visible);
+
+ void handleThemeColorStyleChanged(Q3DTheme::ColorStyle style);
+ void handleThemeBaseColorsChanged(const QList<QColor> &color);
+ void handleThemeBaseGradientsChanged(const QList<QLinearGradient> &gradient);
+ void handleThemeSingleHighlightColorChanged(const QColor &color);
+ void handleThemeSingleHighlightGradientChanged(const QLinearGradient &gradient);
+ void handleThemeMultiHighlightColorChanged(const QColor &color);
+ void handleThemeMultiHighlightGradientChanged(const QLinearGradient &gradient);
+
+ // Renderer callback handlers
+ void handleRequestShadowQuality(QDataVis::ShadowQuality quality);
signals:
void shadowQualityChanged(QDataVis::ShadowQuality quality);
void activeInputHandlerChanged(QAbstract3DInputHandler *inputHandler);
+ void themeChanged(Q3DTheme *theme);
+ void selectionModeChanged(QDataVis::SelectionFlags mode);
void needRender();
protected:
virtual Q3DAbstractAxis *createDefaultAxis(Q3DAbstractAxis::AxisOrientation orientation);
Q3DValueAxis *createDefaultValueAxis();
Q3DCategoryAxis *createDefaultCategoryAxis();
- void emitNeedRender();
private:
void setAxisHelper(Q3DAbstractAxis::AxisOrientation orientation, Q3DAbstractAxis *axis,
Q3DAbstractAxis **axisPtr);
+
+ friend class Bars3DController;
};
QT_DATAVISUALIZATION_END_NAMESPACE
-#endif // CONTROLLER3DBASE_H
+#endif