diff options
author | Mika Salmela <mika.salmela@digia.com> | 2013-12-18 11:50:03 +0200 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-12-18 11:51:20 +0200 |
commit | 07aba602fc82ac31684988f8e8e22521d2b3c982 (patch) | |
tree | 7ae1da139e8661bf157f996fe71844031d2995f4 /src/datavisualization/engine/abstract3dcontroller_p.h | |
parent | cf0cf6ca67aec8ae480bb705443ea17f5ab9f9e2 (diff) | |
parent | ea0442bc81ae034d22c5742b6075dee993fdd54d (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.h | 212 |
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 |