diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-24 11:30:10 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-24 11:32:14 +0300 |
commit | 7bc0b11a81b7cd1eccd48c222e4fa96dda0182cc (patch) | |
tree | 0eeda58cd8ec8641e91328c1adea6c8221eca06c | |
parent | f842e21c7fa44d806c06a1463c723632b10e6172 (diff) |
Gradient setting API added to Surface
Task-number: QTRD-2288
Change-Id: Ibe8db55cb0435db71c1d2a9081e2dab746b46c07
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
-rw-r--r-- | examples/qmlsurface/qml/qmlsurface/main.qml | 11 | ||||
-rw-r--r-- | examples/surfacechart/chartmodifier.cpp | 10 | ||||
-rw-r--r-- | examples/surfacechart/chartmodifier.h | 2 | ||||
-rw-r--r-- | examples/surfacechart/main.cpp | 9 | ||||
-rw-r--r-- | src/datavisualization/engine/q3dsurface.cpp | 32 | ||||
-rw-r--r-- | src/datavisualization/engine/q3dsurface.h | 11 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3dcontroller.cpp | 14 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3dcontroller_p.h | 5 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 4 | ||||
-rw-r--r-- | src/datavisualization/engine/theme.cpp | 2 | ||||
-rw-r--r-- | src/datavisualizationqml2/datavisualizationqml2_plugin.cpp | 2 | ||||
-rw-r--r-- | src/datavisualizationqml2/datavisualizationqml2_plugin.h | 1 | ||||
-rw-r--r-- | src/datavisualizationqml2/declarativesurface.cpp | 10 | ||||
-rw-r--r-- | src/datavisualizationqml2/declarativesurface_p.h | 15 |
14 files changed, 97 insertions, 31 deletions
diff --git a/examples/qmlsurface/qml/qmlsurface/main.qml b/examples/qmlsurface/qml/qmlsurface/main.qml index 7d83c1a0..758b0346 100644 --- a/examples/qmlsurface/qml/qmlsurface/main.qml +++ b/examples/qmlsurface/qml/qmlsurface/main.qml @@ -37,6 +37,12 @@ Item { height: mainview.height anchors.right: mainview.right; + Gradient { + id: surfaceGradient + GradientStop { position: 0.0; color: "darkslategray" } + GradientStop { position: 1.0; color: "peru" } + } + Surface3D { id: surfaceplot width: surfaceView.width @@ -60,9 +66,10 @@ Item { axisY.segmentCount: 5 axisY.subSegmentCount: 2 axisY.labelFormat: "%i" + //gradient: surfaceGradient Component.onCompleted: { - setGradientColorAt(0, "black"); - setGradientColorAt(1, "white"); + setGradientColorAt(0, "darkslategray"); + setGradientColorAt(1, "peru"); } } } diff --git a/examples/surfacechart/chartmodifier.cpp b/examples/surfacechart/chartmodifier.cpp index 41be0ecc..b9ee56d0 100644 --- a/examples/surfacechart/chartmodifier.cpp +++ b/examples/surfacechart/chartmodifier.cpp @@ -21,6 +21,7 @@ #include <QtDataVisualization/QSurfaceDataProxy> #include <qmath.h> +#include <QLinearGradient> #include <QDebug> QT_DATAVISUALIZATION_USE_NAMESPACE @@ -214,9 +215,14 @@ void ChartModifier::adjustZMin(int min) qDebug() << "Z Minimum =" << min; } -void ChartModifier::colorPressed() +void ChartModifier::gradientPressed() { - m_chart->setGradientColorAt(0.0, Qt::blue); + QLinearGradient gradient; + gradient.setColorAt(0.0, Qt::black); + gradient.setColorAt(0.33, Qt::blue); + gradient.setColorAt(0.67, Qt::red); + gradient.setColorAt(1.0, Qt::yellow); + m_chart->setGradient(gradient); } void ChartModifier::changeFont(const QFont &font) diff --git a/examples/surfacechart/chartmodifier.h b/examples/surfacechart/chartmodifier.h index 8d121976..bcd71e30 100644 --- a/examples/surfacechart/chartmodifier.h +++ b/examples/surfacechart/chartmodifier.h @@ -57,7 +57,7 @@ public: void adjustXMin(int min); void adjustZMin(int min); void updateSamples(); - void colorPressed(); + void gradientPressed(); void changeFont(const QFont &font); void changeTransparency(); diff --git a/examples/surfacechart/main.cpp b/examples/surfacechart/main.cpp index 00f3a1c9..370993df 100644 --- a/examples/surfacechart/main.cpp +++ b/examples/surfacechart/main.cpp @@ -122,9 +122,10 @@ int main(int argc, char *argv[]) axisMinSliderZ->setEnabled(true); QLinearGradient gr(0, 0, 100, 1); - gr.setColorAt(0.0, Qt::blue); - gr.setColorAt(0.5, Qt::yellow); - gr.setColorAt(1.0, Qt::red); + gr.setColorAt(0.0, Qt::black); + gr.setColorAt(0.33, Qt::blue); + gr.setColorAt(0.67, Qt::red); + gr.setColorAt(1.0, Qt::yellow); QPixmap pm(100, 24); QPainter pmp(&pm); pmp.setBrush(QBrush(gr)); @@ -217,7 +218,7 @@ int main(int argc, char *argv[]) QObject::connect(axisMinSliderZ, &QSlider::valueChanged, modifier, &ChartModifier::adjustZMin); QObject::connect(colorPB, &QPushButton::pressed, - modifier, &ChartModifier::colorPressed); + modifier, &ChartModifier::gradientPressed); QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier, &ChartModifier::changeFont); QObject::connect(labelButton, &QPushButton::clicked, 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 @@ -198,6 +198,11 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE */ /*! + * \qmlproperty var Surface3D::gradient + * The current surface gradient. Setting this property replaces the previous gradient. + */ + +/*! * Constructs a new 3D surface window. */ Q3DSurface::Q3DSurface() @@ -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 * @@ -372,6 +384,22 @@ bool Q3DSurface::isSurfaceGridEnabled() const } /*! + * \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 * * Sets the \a font for labels. It is preset to \c Arial by default. 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 <QtDataVisualization/qdatavisualizationenums.h> #include <QtDataVisualization/q3dwindow.h> #include <QFont> +#include <QLinearGradient> 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<QLinearGradient>(uri, 1, 0, "LinearGradient", + QLatin1String("Trying to create uncreatable: LinearGradient.")); qmlRegisterUncreatableType<const QAbstractItemModel>(uri, 1, 0, "AbstractItemModel", QLatin1String("Trying to create uncreatable: AbstractItemModel.")); qmlRegisterUncreatableType<QDataVis>(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(); |