summaryrefslogtreecommitdiffstats
path: root/examples/surfacechart
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-09-17 11:48:54 +0300
committerMika Salmela <mika.salmela@digia.com>2013-09-17 12:04:49 +0300
commitab8343a2df664545575b5233b74ea0329647c7df (patch)
treebe72d823cbfb9fa22d1d2c9ff90229252e02d74e /examples/surfacechart
parentdbc876fa0f9c5c87d0ee250efa4d7a211bde3ddf (diff)
Misc bug fixes
- Enabled zooming on Surface C++ api - User modified gradient takes effect - Scene pointer is updated to selection pointer - Font changing is listened on selection pointer and label's are generated using selected font - Selection label format copied from scatter. Looks to be very handy. - Check for OpenGL 1.5 version and block coarse surface if below - Added some theme handling. Not sure if the bug is fully fixed. Probably requires shadow fixes to be fully similar to others. - HAHAA. Now even single rows and columns supported. Even one value will produce surface Task-number: QTRD-2279 Task-number: QTRD-2265 Task-number: QTRD-2261 Task-number: QTRD-2269 Task-number: QTRD-2268 Task-number: QTRD-2272 Change-Id: Id34d843b2898e4cf1e4dde10ce23e0eaab4738a7 Signed-off-by: Mika Salmela <mika.salmela@digia.com> Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'examples/surfacechart')
-rw-r--r--examples/surfacechart/chartmodifier.cpp37
-rw-r--r--examples/surfacechart/chartmodifier.h8
-rw-r--r--examples/surfacechart/main.cpp88
3 files changed, 95 insertions, 38 deletions
diff --git a/examples/surfacechart/chartmodifier.cpp b/examples/surfacechart/chartmodifier.cpp
index e904dae2..b1c6a71f 100644
--- a/examples/surfacechart/chartmodifier.cpp
+++ b/examples/surfacechart/chartmodifier.cpp
@@ -30,7 +30,8 @@ ChartModifier::ChartModifier(Q3DSurface *chart)
: m_chart(chart),
m_xCount(10),
m_zCount(10),
- m_activeSample(0)
+ m_activeSample(0),
+ m_fontSize(40.0f)
{
m_chart->setAxisX(new Q3DValueAxis);
m_chart->setAxisY(new Q3DValueAxis);
@@ -133,7 +134,6 @@ void ChartModifier::setHeightMapData(bool enable)
int p = image.width() * 4 * (image.height() - 1);
dataArray->reserve(image.height());
- qDebug() << image.height() << image.width();
for (int i = image.height(); i > 0; i--, p -= image.width() * 4) {
QSurfaceDataRow *newRow = new QSurfaceDataRow(image.width());
for (int j = 0; j < image.width(); j++)
@@ -186,6 +186,39 @@ void ChartModifier::adjustZCount(int count)
qDebug() << "Z count = " << count;
}
+void ChartModifier::colorPressed()
+{
+ m_chart->setGradientColorAt(0.0, Qt::blue);
+}
+
+void ChartModifier::changeFont(const QFont &font)
+{
+ QFont newFont = font;
+ newFont.setPointSizeF(m_fontSize);
+ m_chart->setFont(newFont);
+}
+
+void ChartModifier::changeTransparency()
+{
+ static int transparency = QDataVis::TransparencyNone;
+
+ m_chart->setLabelTransparency((QDataVis::LabelTransparency)transparency);
+
+ if (++transparency > QDataVis::TransparencyNoBackground)
+ transparency = QDataVis::TransparencyNone;
+}
+
+void ChartModifier::changeTheme(int theme)
+{
+ m_chart->setTheme((QDataVis::ColorTheme)theme);
+}
+
+void ChartModifier::changeShadowQuality(int quality)
+{
+ QDataVis::ShadowQuality sq = QDataVis::ShadowQuality(quality);
+ m_chart->setShadowQuality(sq);
+}
+
void ChartModifier::updateSamples()
{
switch (m_activeSample) {
diff --git a/examples/surfacechart/chartmodifier.h b/examples/surfacechart/chartmodifier.h
index 1de5840e..ad0ea162 100644
--- a/examples/surfacechart/chartmodifier.h
+++ b/examples/surfacechart/chartmodifier.h
@@ -48,6 +48,13 @@ public:
void adjustXCount(int count);
void adjustZCount(int count);
void updateSamples();
+ void colorPressed();
+ void changeFont(const QFont &font);
+ void changeTransparency();
+
+public slots:
+ void changeShadowQuality(int quality);
+ void changeTheme(int theme);
private:
Q3DSurface *m_chart;
@@ -57,6 +64,7 @@ private:
int m_xCount;
int m_zCount;
int m_activeSample;
+ int m_fontSize;
};
#endif // CHARTMODIFIER_H
diff --git a/examples/surfacechart/main.cpp b/examples/surfacechart/main.cpp
index 7a989adf..02d5e7a0 100644
--- a/examples/surfacechart/main.cpp
+++ b/examples/surfacechart/main.cpp
@@ -30,6 +30,7 @@
#include <QLabel>
#include <QScreen>
#include <QPainter>
+#include <QFontComboBox>
#include <QDebug>
using namespace QtDataVisualization;
@@ -84,19 +85,19 @@ int main(int argc, char *argv[])
QSlider *gridSliderX = new QSlider(Qt::Horizontal, widget);
gridSliderX->setTickInterval(1);
- gridSliderX->setMinimum(2);
+ gridSliderX->setMinimum(1);
gridSliderX->setValue(10);
gridSliderX->setMaximum(200);
gridSliderX->setEnabled(true);
QSlider *gridSliderZ = new QSlider(Qt::Horizontal, widget);
gridSliderZ->setTickInterval(1);
- gridSliderZ->setMinimum(2);
+ gridSliderZ->setMinimum(1);
gridSliderZ->setValue(10);
gridSliderZ->setMaximum(200);
gridSliderZ->setEnabled(true);
QLinearGradient gr(0, 0, 100, 1);
- gr.setColorAt(0.0, Qt::green);
+ gr.setColorAt(0.0, Qt::blue);
gr.setColorAt(0.5, Qt::yellow);
gr.setColorAt(1.0, Qt::red);
QPixmap pm(100, 24);
@@ -104,11 +105,36 @@ int main(int argc, char *argv[])
pmp.setBrush(QBrush(gr));
pmp.setPen(Qt::NoPen);
pmp.drawRect(0, 0, 100, 24);
- //pm.save("C:\\Users\\misalmel\\Work\\test.png", "png");
- QPushButton *color = new QPushButton();
- color->setIcon(QIcon(pm));
- color->setIconSize(QSize(100, 24));
- color->setFlat(true);
+ QPushButton *colorPB = new QPushButton();
+ colorPB->setIcon(QIcon(pm));
+ colorPB->setIconSize(QSize(100, 24));
+
+ QFontComboBox *fontList = new QFontComboBox(widget);
+ fontList->setCurrentFont(QFont("Arial"));
+
+ QPushButton *labelButton = new QPushButton(widget);
+ labelButton->setText(QStringLiteral("Change label style"));
+
+ QComboBox *themeList = new QComboBox(widget);
+ themeList->addItem(QStringLiteral("System"));
+ themeList->addItem(QStringLiteral("Blue Cerulean"));
+ themeList->addItem(QStringLiteral("Blue Icy"));
+ themeList->addItem(QStringLiteral("Blue Ncs"));
+ themeList->addItem(QStringLiteral("Brown Sand"));
+ themeList->addItem(QStringLiteral("Dark"));
+ themeList->addItem(QStringLiteral("High Contrast"));
+ themeList->addItem(QStringLiteral("Light"));
+ themeList->setCurrentIndex(4);
+
+ QComboBox *shadowQuality = new QComboBox(widget);
+ shadowQuality->addItem(QStringLiteral("None"));
+ shadowQuality->addItem(QStringLiteral("Low"));
+ shadowQuality->addItem(QStringLiteral("Medium"));
+ shadowQuality->addItem(QStringLiteral("High"));
+ shadowQuality->addItem(QStringLiteral("Low Soft"));
+ shadowQuality->addItem(QStringLiteral("Medium Soft"));
+ shadowQuality->addItem(QStringLiteral("High Soft"));
+ shadowQuality->setCurrentIndex(3);
// Add controls to the layout
vLayout->addWidget(smoothCB);
@@ -121,7 +147,14 @@ int main(int argc, char *argv[])
vLayout->addWidget(gridSlidersLockCB);
vLayout->addWidget(gridSliderX);
vLayout->addWidget(gridSliderZ);
- vLayout->addWidget(color);
+ vLayout->addWidget(colorPB);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
+ vLayout->addWidget(fontList);
+ vLayout->addWidget(labelButton);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change theme")));
+ vLayout->addWidget(themeList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")));
+ vLayout->addWidget(shadowQuality);
widget->show();
@@ -144,37 +177,20 @@ int main(int argc, char *argv[])
modifier, &ChartModifier::adjustXCount);
QObject::connect(gridSliderZ, &QSlider::valueChanged,
modifier, &ChartModifier::adjustZCount);
+ QObject::connect(colorPB, &QPushButton::pressed,
+ modifier, &ChartModifier::colorPressed);
+ QObject::connect(fontList, &QFontComboBox::currentFontChanged,
+ modifier, &ChartModifier::changeFont);
+ QObject::connect(labelButton, &QPushButton::clicked,
+ modifier, &ChartModifier::changeTransparency);
+ QObject::connect(themeList, SIGNAL(currentIndexChanged(int)),
+ modifier, SLOT(changeTheme(int)));
+ QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)),
+ modifier, SLOT(changeShadowQuality(int)));
modifier->setGridSliderZ(gridSliderZ);
modifier->setGridSliderX(gridSliderX);
modifier->toggleGridSliderLock(gridSlidersLockCB->checkState());
-// QList<qreal> lowList;
-// lowList << 15.0 << 35.0 << 55.0 << 75.0 << 80.0 << 75.0 << 55.0 << 35.0 << 15.0;
-// lowList << 65.0 << 105.0 << 135.0 << 155.0 << 190.0 << 155.0 << 135.0 << 105.0 << 65.0;
-// lowList << 105.0 << 170.0 << 215.0 << 240.0 << 245.0 << 240.0 << 215.0 << 170.0 << 105.0;
-// lowList << 65.0 << 105.0 << 135.0 << 155.0 << 190.0 << 155.0 << 135.0 << 105.0 << 65.0;
-// lowList << 15.0 << 35.0 << 55.0 << 75.0 << 80.0 << 75.0 << 55.0 << 35.0 << 16.1;
-
-// lowList << 15.0 << 65.0 << 105.0 << 65.0 << 15.0;
-// lowList << 35.0 << 105.0 << 170.0 << 105.0 << 35;
-// lowList << 55.0 << 135.0 << 215.0 << 135.0 << 55;
-// lowList << 75.0 << 155.0 << 240.0 << 155.0 << 75;
-// lowList << 80.0 << 190.0 << 245.0 << 190.0 << 80;
-// lowList << 75.0 << 155.0 << 240.0 << 155.0 << 75.0;
-// lowList << 55.0 << 135.0 << 215.0 << 135.0 << 55;
-// lowList << 35.0 << 105.0 << 170.0 << 105.0 << 35.0;
-// lowList << 15.0 << 65.0 << 105.0 << 65.0 << 16.1;
-
-// surfaceChart->appendSeries(lowList, 9, 5);
-
-// QList<qreal> topList;
-// topList << 2.1 << 2.2;
-// surfaceChart.appendSeries(topList);
-
-// surfaceChart.resize(screenSize.width() / 1.5, screenSize.height() / 1.5);
-// surfaceChart.setPosition(screenSize.width() / 6, screenSize.height() / 6);
-// surfaceChart.show();
-
return app.exec();
}