diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-11-22 09:27:38 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-11-22 09:36:32 +0200 |
commit | 4588556895bc14803e3ad884e89eb988b751e6be (patch) | |
tree | e0032ad35ba353990272c411732d58d1fc1097aa | |
parent | 3ce4ae10e54e9c5d73826f4d6f8c5e442ac2d525 (diff) |
Gradients and colors defined for all built-in themes
Task-number: QTRD-2608
Change-Id: Ib6c3b4ec697efc238db9776b3f71c11a0d099c57
Change-Id: Ib6c3b4ec697efc238db9776b3f71c11a0d099c57
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
-rw-r--r-- | src/datavisualization/engine/abstract3dcontroller.cpp | 22 | ||||
-rw-r--r-- | src/datavisualization/theme/thememanager.cpp | 134 | ||||
-rw-r--r-- | tests/barstest/chart.cpp | 30 | ||||
-rw-r--r-- | tests/barstest/chart.h | 1 | ||||
-rw-r--r-- | tests/barstest/main.cpp | 8 |
5 files changed, 158 insertions, 37 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index afe0b124..e185d322 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -684,6 +684,18 @@ void Abstract3DController::setZoomLevel(int zoomLevel) void Abstract3DController::setColorStyle(QDataVis::ColorStyle style) { + if (style != m_colorStyle || m_changeTracker.themeChanged) { + Q3DTheme *theme = m_themeManager->theme(); + if (style == QDataVis::ColorStyleUniform) { + setObjectColor(theme->baseColor()); + setSingleHighlightColor(theme->singleHighlightColor()); + setMultiHighlightColor(theme->multiHighlightColor()); + } else { + setObjectGradient(theme->baseGradient()); + setSingleHighlightGradient(theme->singleHighlightGradient()); + setMultiHighlightGradient(theme->multiHighlightGradient()); + } + } if (style != m_colorStyle) { m_colorStyle = style; m_changeTracker.colorStyleChanged = true; @@ -795,16 +807,6 @@ void Abstract3DController::setTheme(Q3DTheme *theme) m_changeTracker.themeChanged = true; // TODO: set all colors/styles here (QTRD-2538) setColorStyle(colorStyle); - if (colorStyle == QDataVis::ColorStyleUniform) { - setObjectColor(theme->baseColor()); - setSingleHighlightColor(theme->singleHighlightColor()); - setMultiHighlightColor(theme->multiHighlightColor()); - } else { - setObjectGradient(theme->baseGradient()); - setSingleHighlightGradient(theme->singleHighlightGradient()); - setMultiHighlightGradient(theme->multiHighlightGradient()); - } - emit themeChanged(theme); } } diff --git a/src/datavisualization/theme/thememanager.cpp b/src/datavisualization/theme/thememanager.cpp index 57682958..5102fddf 100644 --- a/src/datavisualization/theme/thememanager.cpp +++ b/src/datavisualization/theme/thememanager.cpp @@ -102,6 +102,9 @@ void ThemeManager::connectThemeSignals() void ThemeManager::useTheme(QDataVis::Theme type) { + QColor color; + QLinearGradient gradient; + switch (type) { case QDataVis::ThemeQt: { m_theme->setBaseColor(QColor(QRgb(0x80c342))); @@ -117,6 +120,27 @@ void ThemeManager::useTheme(QDataVis::Theme type) m_theme->setHighlightLightStrength(5.0f); m_theme->setLabelBorderEnabled(true); m_theme->setColorStyle(QDataVis::ColorStyleUniform); + gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); + color.setRed(0x80 * 0.7); + color.setGreen(0xc3 * 0.7); + color.setBlue(0x42 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x80c342))); + m_theme->setBaseGradient(gradient); + color.setRed(0x14 * 0.7); + color.setGreen(0xaa * 0.7); + color.setBlue(0xff * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x14aaff))); + m_theme->setSingleHighlightGradient(gradient); + color.setRed(0x64 * 0.7); + color.setGreen(0x00); + color.setBlue(0xaa * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x6400aa))); + m_theme->setMultiHighlightGradient(gradient); break; } @@ -134,10 +158,32 @@ void ThemeManager::useTheme(QDataVis::Theme type) m_theme->setHighlightLightStrength(5.0f); m_theme->setLabelBorderEnabled(false); m_theme->setColorStyle(QDataVis::ColorStyleUniform); + gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); + color.setRed(0xff * 0.7); + color.setGreen(0xe4 * 0.7); + color.setBlue(0x00); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xffe400))); + m_theme->setBaseGradient(gradient); + color.setRed(0x27 * 0.7); + color.setGreen(0xbe * 0.7); + color.setBlue(0xee * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x27beee))); + m_theme->setSingleHighlightGradient(gradient); + color.setRed(0xee * 0.7); + color.setGreen(0x14 * 0.7); + color.setBlue(0x14 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xee1414))); + m_theme->setMultiHighlightGradient(gradient); break; } case QDataVis::ThemeDigia: { + m_theme->setBaseColor(QColor(QRgb(0xcccccc))); m_theme->setBackgroundColor(QColor(QRgb(0xffffff))); m_theme->setWindowColor(QColor(QRgb(0xffffff))); m_theme->setTextColor(QColor(QRgb(0x000000))); @@ -150,10 +196,9 @@ void ThemeManager::useTheme(QDataVis::Theme type) m_theme->setHighlightLightStrength(5.0f); m_theme->setLabelBorderEnabled(false); m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); - QLinearGradient gradient = QLinearGradient(qreal(gradientTextureWidth), - qreal(gradientTextureHeight), - 0.0, 0.0); - QColor color; + gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); color.setRed(0xcc * 0.7); color.setGreen(0xcc * 0.7); color.setBlue(0xcc * 0.7); @@ -189,10 +234,32 @@ void ThemeManager::useTheme(QDataVis::Theme type) m_theme->setHighlightLightStrength(5.0f); m_theme->setLabelBorderEnabled(true); m_theme->setColorStyle(QDataVis::ColorStyleUniform); + gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); + color.setRed(0xbe * 0.7); + color.setGreen(0xb3 * 0.7); + color.setBlue(0x2b * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xbeb32b))); + m_theme->setBaseGradient(gradient); + color.setRed(0xfb* 0.7); + color.setGreen(0xf6 * 0.7); + color.setBlue(0xd6 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xfbf6d6))); + m_theme->setSingleHighlightGradient(gradient); + color.setRed(0x44 * 0.7); + color.setGreen(0x2f * 0.7); + color.setBlue(0x20 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0x442f20))); + m_theme->setMultiHighlightGradient(gradient); break; } case QDataVis::ThemeArmyBlue: { + m_theme->setBaseColor(QColor(QRgb(0x495f76))); m_theme->setBackgroundColor(QColor(QRgb(0xd5d6d7))); m_theme->setWindowColor(QColor(QRgb(0xd5d6d7))); m_theme->setTextColor(QColor(QRgb(0x000000))); @@ -205,10 +272,9 @@ void ThemeManager::useTheme(QDataVis::Theme type) m_theme->setHighlightLightStrength(5.0f); m_theme->setLabelBorderEnabled(false); m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); - QLinearGradient gradient = QLinearGradient(qreal(gradientTextureWidth), - qreal(gradientTextureHeight), - 0.0, 0.0); - QColor color; + gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); color.setRed(0x49 * 0.7); color.setGreen(0x5f * 0.7); color.setBlue(0x76 * 0.7); @@ -231,6 +297,7 @@ void ThemeManager::useTheme(QDataVis::Theme type) } case QDataVis::ThemeRetro: { + m_theme->setBaseColor(QColor(QRgb(0x533b23))); m_theme->setBackgroundColor(QColor(QRgb(0xe9e2ce))); m_theme->setWindowColor(QColor(QRgb(0xe9e2ce))); m_theme->setTextColor(QColor(QRgb(0x000000))); @@ -243,10 +310,9 @@ void ThemeManager::useTheme(QDataVis::Theme type) m_theme->setHighlightLightStrength(5.0f); m_theme->setLabelBorderEnabled(false); m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); - QLinearGradient gradient = QLinearGradient(qreal(gradientTextureWidth), - qreal(gradientTextureHeight), - 0.0, 0.0); - QColor color; + gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); color.setRed(0x53 * 0.7); color.setGreen(0x3b * 0.7); color.setBlue(0x23 * 0.7); @@ -282,6 +348,27 @@ void ThemeManager::useTheme(QDataVis::Theme type) m_theme->setHighlightLightStrength(5.0f); m_theme->setLabelBorderEnabled(false); m_theme->setColorStyle(QDataVis::ColorStyleUniform); + gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); + color.setRed(0xff * 0.7); + color.setGreen(0xff * 0.7); + color.setBlue(0xff * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xffffff))); + m_theme->setBaseGradient(gradient); + color.setRed(0xf5 * 0.7); + color.setGreen(0xdc * 0.7); + color.setBlue(0x0d * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xf5dc0d))); + m_theme->setSingleHighlightGradient(gradient); + color.setRed(0x72 * 0.7); + color.setGreen(0x22 * 0.7); + color.setBlue(0x22 * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xd72222))); + m_theme->setMultiHighlightGradient(gradient); break; } @@ -299,8 +386,31 @@ void ThemeManager::useTheme(QDataVis::Theme type) m_theme->setHighlightLightStrength(5.0f); m_theme->setLabelBorderEnabled(false); m_theme->setColorStyle(QDataVis::ColorStyleUniform); + gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0); + color.setRed(0xf9 * 0.7); + color.setGreen(0xd9 * 0.7); + color.setBlue(0x00); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xf9d900))); + m_theme->setBaseGradient(gradient); + color.setRed(0xff * 0.7); + color.setGreen(0xf7 * 0.7); + color.setBlue(0xcc * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xfff7cc))); + m_theme->setSingleHighlightGradient(gradient); + color.setRed(0xde * 0.7); + color.setGreen(0x0a * 0.7); + color.setBlue(0x0a * 0.7); + gradient.setColorAt(0.0, color); + gradient.setColorAt(1.0, QColor(QRgb(0xde0a0a))); + m_theme->setMultiHighlightGradient(gradient); break; } + default: + break; } } diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp index 14990640..bd99168f 100644 --- a/tests/barstest/chart.cpp +++ b/tests/barstest/chart.cpp @@ -672,6 +672,16 @@ void GraphModifier::setMaxY(int max) m_maxval = max; } +void GraphModifier::changeColorStyle() +{ + int style = m_graph->theme()->colorStyle(); + + if (++style > QDataVis::ColorStyleRangeGradient) + style = QDataVis::ColorStyleUniform; + + m_graph->theme()->setColorStyle(QDataVis::ColorStyle(style)); +} + void GraphModifier::useOwnTheme() { Q3DTheme *theme = new Q3DTheme(); @@ -727,19 +737,9 @@ void GraphModifier::setGradient() multiHighlightGradient.setColorAt(0.25, Qt::darkYellow); multiHighlightGradient.setColorAt(0.0, Qt::darkGray); - m_graph->setBarColor(Qt::green); - m_graph->setSingleHighlightColor(Qt::white); - m_graph->setMultiHighlightColor(Qt::cyan); - - m_graph->setBarGradient(barGradient); - m_graph->setSingleHighlightGradient(singleHighlightGradient); - m_graph->setMultiHighlightGradient(multiHighlightGradient); - - QDataVis::ColorStyle oldStyle = m_graph->colorStyle(); - if (oldStyle == QDataVis::ColorStyleUniform) - m_graph->setColorStyle(QDataVis::ColorStyleObjectGradient); - else if (oldStyle == QDataVis::ColorStyleObjectGradient) - m_graph->setColorStyle(QDataVis::ColorStyleRangeGradient); - if (oldStyle == QDataVis::ColorStyleRangeGradient) - m_graph->setColorStyle(QDataVis::ColorStyleUniform); + m_graph->theme()->setBaseGradient(barGradient); + m_graph->theme()->setSingleHighlightGradient(singleHighlightGradient); + m_graph->theme()->setMultiHighlightGradient(multiHighlightGradient); + + m_graph->theme()->setColorStyle(QDataVis::ColorStyleObjectGradient); } diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h index 7db8f1bd..2b323a2f 100644 --- a/tests/barstest/chart.h +++ b/tests/barstest/chart.h @@ -77,6 +77,7 @@ public: void createMassiveArray(); void useOwnTheme(); void changeBaseColor(const QColor &color); + void changeColorStyle(); public slots: void flipViews(); diff --git a/tests/barstest/main.cpp b/tests/barstest/main.cpp index 2644cae9..5bfa26a3 100644 --- a/tests/barstest/main.cpp +++ b/tests/barstest/main.cpp @@ -131,6 +131,11 @@ int main(int argc, char **argv) flipViewsButton->setText(QStringLiteral("Flip views")); flipViewsButton->setEnabled(true); + + QPushButton *changeColorStyleButton = new QPushButton(widget); + changeColorStyleButton->setText(QStringLiteral("Change color style")); + changeColorStyleButton->setEnabled(true); + QPushButton *ownThemeButton = new QPushButton(widget); ownThemeButton->setText(QStringLiteral("Use own theme")); ownThemeButton->setEnabled(true); @@ -276,6 +281,7 @@ int main(int argc, char **argv) vLayout->addWidget(releaseAxesButton, 0, Qt::AlignTop); vLayout->addWidget(releaseProxiesButton, 1, Qt::AlignTop); vLayout->addWidget(flipViewsButton, 0, Qt::AlignTop); + vLayout->addWidget(changeColorStyleButton, 0, Qt::AlignTop); vLayout->addWidget(ownThemeButton, 0, Qt::AlignTop); vLayout->addWidget(colorDialog, 0, Qt::AlignTop); vLayout->addWidget(gradientBtoYPB, 1, Qt::AlignTop); @@ -370,6 +376,8 @@ int main(int argc, char **argv) QObject::connect(flipViewsButton, &QPushButton::clicked, modifier, &GraphModifier::flipViews); + QObject::connect(changeColorStyleButton, &QPushButton::clicked, modifier, + &GraphModifier::changeColorStyle); QObject::connect(ownThemeButton, &QPushButton::clicked, modifier, &GraphModifier::useOwnTheme); QObject::connect(colorDialog, &QColorDialog::currentColorChanged, modifier, |