summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-09-24 11:30:10 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-09-24 11:32:14 +0300
commit7bc0b11a81b7cd1eccd48c222e4fa96dda0182cc (patch)
tree0eeda58cd8ec8641e91328c1adea6c8221eca06c
parentf842e21c7fa44d806c06a1463c723632b10e6172 (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.qml11
-rw-r--r--examples/surfacechart/chartmodifier.cpp10
-rw-r--r--examples/surfacechart/chartmodifier.h2
-rw-r--r--examples/surfacechart/main.cpp9
-rw-r--r--src/datavisualization/engine/q3dsurface.cpp32
-rw-r--r--src/datavisualization/engine/q3dsurface.h11
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp14
-rw-r--r--src/datavisualization/engine/surface3dcontroller_p.h5
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp4
-rw-r--r--src/datavisualization/engine/theme.cpp2
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2_plugin.cpp2
-rw-r--r--src/datavisualizationqml2/datavisualizationqml2_plugin.h1
-rw-r--r--src/datavisualizationqml2/declarativesurface.cpp10
-rw-r--r--src/datavisualizationqml2/declarativesurface_p.h15
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();