From 7bc0b11a81b7cd1eccd48c222e4fa96dda0182cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Tue, 24 Sep 2013 11:30:10 +0300 Subject: Gradient setting API added to Surface Task-number: QTRD-2288 Change-Id: Ibe8db55cb0435db71c1d2a9081e2dab746b46c07 Reviewed-by: Miikka Heikkinen --- src/datavisualization/engine/q3dsurface.cpp | 32 ++++++++++++++++++++-- src/datavisualization/engine/q3dsurface.h | 11 +++++--- .../engine/surface3dcontroller.cpp | 14 ++++++++++ .../engine/surface3dcontroller_p.h | 5 ++-- src/datavisualization/engine/surface3drenderer.cpp | 4 +-- src/datavisualization/engine/theme.cpp | 2 +- .../datavisualizationqml2_plugin.cpp | 2 ++ .../datavisualizationqml2_plugin.h | 1 + src/datavisualizationqml2/declarativesurface.cpp | 10 +++++++ src/datavisualizationqml2/declarativesurface_p.h | 15 +++------- 10 files changed, 74 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/datavisualization/engine/q3dsurface.cpp b/src/datavisualization/engine/q3dsurface.cpp index e066f717..78ec70d4 100644 --- a/src/datavisualization/engine/q3dsurface.cpp +++ b/src/datavisualization/engine/q3dsurface.cpp @@ -197,6 +197,11 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE * Label format of single item labels, e.g. a selected bar. */ +/*! + * \qmlproperty var Surface3D::gradient + * The current surface gradient. Setting this property replaces the previous gradient. + */ + /*! * Constructs a new 3D surface window. */ @@ -307,17 +312,24 @@ bool Q3DSurface::isBackgroundVisible() const } /*! - * Sets a predefined \a theme from \c QDataVis::ColorTheme. It is preset to \c QDataVis::ThemeQt by + * \property Q3DSurface::theme + * + * A predefined \a theme from \c QDataVis::ColorTheme. It is preset to \c QDataVis::ThemeQt by * default. Theme affects label colors, text color, background color, window color and * grid color. Lighting is also adjusted by themes. * - * \warning This method is subject to change. + * \warning This property is subject to change. */ void Q3DSurface::setTheme(QDataVis::ColorTheme theme) { d_ptr->m_shared->setColorTheme(theme); } +QDataVis::ColorTheme Q3DSurface::theme() const +{ + return d_ptr->m_shared->theme().colorTheme(); +} + /*! * \property Q3DSurface::shadowQuality * @@ -371,6 +383,22 @@ bool Q3DSurface::isSurfaceGridEnabled() const return d_ptr->m_shared->surfaceGrid(); } +/*! + * \property Q3DSurface::gradient + * + * The current surface gradient. Setting this property replaces the previous gradient with + * the given \a gradient. + */ +void Q3DSurface::setGradient(const QLinearGradient &gradient) +{ + d_ptr->m_shared->setGradient(gradient); +} + +QLinearGradient Q3DSurface::gradient() const +{ + return d_ptr->m_shared->gradient(); +} + /*! * \property Q3DSurface::font * diff --git a/src/datavisualization/engine/q3dsurface.h b/src/datavisualization/engine/q3dsurface.h index 1622def3..167af32d 100644 --- a/src/datavisualization/engine/q3dsurface.h +++ b/src/datavisualization/engine/q3dsurface.h @@ -22,6 +22,7 @@ #include #include #include +#include QT_DATAVISUALIZATION_BEGIN_NAMESPACE @@ -33,11 +34,13 @@ class QT_DATAVISUALIZATION_EXPORT Q3DSurface : public Q3DWindow { Q_OBJECT Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) + Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme theme READ theme WRITE setTheme) Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible) Q_PROPERTY(bool smoothSurfaceEnabled READ isSmoothSurfaceEnabled WRITE setSmoothSurfaceEnabled) Q_PROPERTY(bool surfaceGridEnabled READ isSurfaceGridEnabled WRITE setSurfaceGridEnabled) + Q_PROPERTY(QLinearGradient gradient READ gradient WRITE setGradient) Q_PROPERTY(QFont font READ font WRITE setFont) Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) @@ -45,27 +48,27 @@ public: explicit Q3DSurface(); ~Q3DSurface(); - // Enable or disable background grid void setGridVisible(bool visible); bool isGridVisible() const; - // Enable or disable background mesh void setBackgroundVisible(bool visible); bool isBackgroundVisible() const; void setTheme(QDataVis::ColorTheme theme); + QDataVis::ColorTheme theme() const; void setShadowQuality(QDataVis::ShadowQuality quality); QDataVis::ShadowQuality shadowQuality() const; - // Enable or disable the smoothes of the surface void setSmoothSurfaceEnabled(bool enabled); bool isSmoothSurfaceEnabled() const; - // Enable or disable the grid on the surface void setSurfaceGridEnabled(bool enabled); bool isSurfaceGridEnabled() const; + void setGradient(const QLinearGradient &gradient); + QLinearGradient gradient() const; + void setGradientColorAt(qreal pos, const QColor &color); // Axes diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp index 675552ed..e4903a6f 100644 --- a/src/datavisualization/engine/surface3dcontroller.cpp +++ b/src/datavisualization/engine/surface3dcontroller.cpp @@ -129,6 +129,20 @@ bool Surface3DController::surfaceGrid() return m_isSurfaceGridEnabled; } +void Surface3DController::setGradient(const QLinearGradient &gradient) +{ + m_userDefinedGradient = gradient; + m_userDefinedGradient.setStart(1, 1000); + m_userDefinedGradient.setFinalStop(0, 0); + m_changeTracker.gradientColorChanged = true; + emitNeedRender(); +} + +QLinearGradient Surface3DController::gradient() const +{ + return m_userDefinedGradient; +} + void Surface3DController::setGradientColorAt(qreal pos, const QColor &color) { m_userDefinedGradient.setColorAt(pos, color); diff --git a/src/datavisualization/engine/surface3dcontroller_p.h b/src/datavisualization/engine/surface3dcontroller_p.h index 7a2087ff..bf7167a6 100644 --- a/src/datavisualization/engine/surface3dcontroller_p.h +++ b/src/datavisualization/engine/surface3dcontroller_p.h @@ -71,14 +71,15 @@ public: void initializeOpenGL(); virtual void synchDataToRenderer(); - // Enable or disable the smoothes of the surface void setSmoothSurface(bool enable); bool smoothSurface(); - // Enable or disable the grid on the surface void setSurfaceGrid(bool enable); bool surfaceGrid(); + void setGradient(const QLinearGradient &gradient); + QLinearGradient gradient() const; + void setGradientColorAt(qreal pos, const QColor &color); virtual void setActiveDataProxy(QAbstractDataProxy *proxy); diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 67f12b0a..ac8bef4b 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -1225,11 +1225,11 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle) void Surface3DRenderer::updateSurfaceGradient(const QLinearGradient &gradient) { - QImage image(QSize(4, 100), QImage::Format_RGB32); + QImage image(QSize(4, 1000), QImage::Format_RGB32); QPainter pmp(&image); pmp.setBrush(QBrush(gradient)); pmp.setPen(Qt::NoPen); - pmp.drawRect(0, 0, 4, 100); + pmp.drawRect(0, 0, 4, 1000); if (m_gradientTexture) { m_textureHelper->deleteTexture(&m_gradientTexture); diff --git a/src/datavisualization/engine/theme.cpp b/src/datavisualization/engine/theme.cpp index dfa189a4..38a54196 100644 --- a/src/datavisualization/engine/theme.cpp +++ b/src/datavisualization/engine/theme.cpp @@ -37,7 +37,7 @@ Theme::Theme() m_highlightBarColor(QColor(Qt::red)), m_highlightRowColor(QColor(Qt::darkRed)), m_highlightColumnColor(QColor(Qt::darkMagenta)), - m_surfaceGradient(QLinearGradient(1, 100, 0, 0)), + m_surfaceGradient(QLinearGradient(1, 1000, 0, 0)), m_lightStrength(4.0f), m_ambientStrength(0.3f), m_highlightLightStrength(8.0f), diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp index 3a700d1d..db3cb6f5 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp @@ -25,6 +25,8 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE void Datavis3Dqml2Plugin::registerTypes(const char *uri) { // @uri com.digia.QtDataVisualization + qmlRegisterUncreatableType(uri, 1, 0, "LinearGradient", + QLatin1String("Trying to create uncreatable: LinearGradient.")); qmlRegisterUncreatableType(uri, 1, 0, "AbstractItemModel", QLatin1String("Trying to create uncreatable: AbstractItemModel.")); qmlRegisterUncreatableType(uri, 1, 0, "DataVis", diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.h b/src/datavisualizationqml2/datavisualizationqml2_plugin.h index 530b8fd2..19106279 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.h +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.h @@ -46,6 +46,7 @@ Q_DECLARE_METATYPE(QItemModelScatterDataMapping *) Q_DECLARE_METATYPE(QItemModelSurfaceDataMapping *) Q_DECLARE_METATYPE(const QAbstractItemModel *) +Q_DECLARE_METATYPE(QLinearGradient) Q_DECLARE_METATYPE(QDataVis *) diff --git a/src/datavisualizationqml2/declarativesurface.cpp b/src/datavisualizationqml2/declarativesurface.cpp index 551f6dbc..48eec8ce 100644 --- a/src/datavisualizationqml2/declarativesurface.cpp +++ b/src/datavisualizationqml2/declarativesurface.cpp @@ -225,6 +225,16 @@ QDataVis::ShadowQuality DeclarativeSurface::shadowQuality() return m_shared->shadowQuality(); } +void DeclarativeSurface::setGradient(const QLinearGradient &gradient) +{ + m_shared->setGradient(gradient); +} + +QLinearGradient DeclarativeSurface::gradient() const +{ + return m_shared->gradient(); +} + void DeclarativeSurface::setItemLabelFormat(const QString &format) { m_shared->activeDataProxy()->setItemLabelFormat(format); diff --git a/src/datavisualizationqml2/declarativesurface_p.h b/src/datavisualizationqml2/declarativesurface_p.h index 7884483b..21555fcc 100644 --- a/src/datavisualizationqml2/declarativesurface_p.h +++ b/src/datavisualizationqml2/declarativesurface_p.h @@ -59,6 +59,7 @@ class DeclarativeSurface : public QQuickItem Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible) Q_PROPERTY(bool smoothSurfaceEnabled READ isSmoothSurfaceEnabled WRITE setSmoothSurfaceEnabled) Q_PROPERTY(bool surfaceGridEnabled READ isSurfaceGridEnabled WRITE setSurfaceGridEnabled) + Q_PROPERTY(QLinearGradient gradient READ gradient WRITE setGradient) Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) Q_ENUMS(QtDataVisualization::QDataVis::SelectionMode) Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) @@ -82,47 +83,39 @@ public: Q3DValueAxis *axisZ() const; void setAxisZ(Q3DValueAxis *axis); - // Select preset camera placement void setCameraPreset(QDataVis::CameraPreset preset); QDataVis::CameraPreset cameraPreset(); - // Set theme (object colors, shaders, window color, background colors, light intensity and text - // colors are affected) void setTheme(QDataVis::ColorTheme theme); QDataVis::ColorTheme theme(); - // Change selection mode void setSelectionMode(QDataVis::SelectionMode mode); QDataVis::SelectionMode selectionMode(); - // Set font void setFont(const QFont &font); QFont font(); - // Label transparency adjustment void setLabelTransparency(QDataVis::LabelTransparency transparency); QDataVis::LabelTransparency labelTransparency(); - // Enable or disable background grid void setGridVisible(bool visible); bool isGridVisible(); - // Enable or disable background mesh void setBackgroundVisible(bool visible); bool isBackgroundVisible(); - // Enable or disable the smoothes of the surface void setSmoothSurfaceEnabled(bool enabled); bool isSmoothSurfaceEnabled() const; - // Enable or disable the grid on the surface void setSurfaceGridEnabled(bool enabled); bool isSurfaceGridEnabled() const; - // Adjust shadow quality void setShadowQuality(QDataVis::ShadowQuality quality); QDataVis::ShadowQuality shadowQuality(); + void setGradient(const QLinearGradient &gradient); + QLinearGradient gradient() const; + void setItemLabelFormat(const QString &format); QString itemLabelFormat(); -- cgit v1.2.3