diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-12-11 13:12:18 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-12-11 13:15:15 +0200 |
commit | 6cfc1dcc2969e0e522aa5777eef97e0eadc967e7 (patch) | |
tree | c4f5c9799cc7903946b2756432b9ac987360ba66 /src/datavisualization/theme/thememanager.cpp | |
parent | 2a11c7f805ce1f980167af4971cde1eebe660c7a (diff) |
Multiseries support for theme colors and gradients, part 2
Task-number: QTRD-2611
Change-Id: I280f3b7c22a212ed46813bd28c639d255107f9f3
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/theme/thememanager.cpp')
-rw-r--r-- | src/datavisualization/theme/thememanager.cpp | 310 |
1 files changed, 129 insertions, 181 deletions
diff --git a/src/datavisualization/theme/thememanager.cpp b/src/datavisualization/theme/thememanager.cpp index cefbb897..1f8f0ae0 100644 --- a/src/datavisualization/theme/thememanager.cpp +++ b/src/datavisualization/theme/thememanager.cpp @@ -21,6 +21,9 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE +const float defaultBuiltInColorLevel = 0.7f; // for built-in gradient themes +const float defaultColorLevel = 0.5f; // for built-in uniform themes + ThemeManager::ThemeManager(Abstract3DController *controller) : m_theme(0), m_controller(controller) @@ -89,15 +92,22 @@ void ThemeManager::connectThemeSignals() void ThemeManager::useTheme(Q3DTheme::Theme type) { - QColor color; - QLinearGradient gradient; - - // TODO: Add predefined colors & gradients to more than one series - switch (type) { case Q3DTheme::ThemeQt: { QList<QColor> baseColors; baseColors.append(QColor(QRgb(0x80c342))); + baseColors.append(QColor(QRgb(0x60c342))); + baseColors.append(QColor(QRgb(0x40c342))); + baseColors.append(QColor(QRgb(0x20c342))); + baseColors.append(QColor(QRgb(0x00c342))); + + QList<QLinearGradient> baseGradients; + baseGradients.append(createGradient(baseColors.at(0), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(1), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(2), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(3), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(4), defaultColorLevel)); + setBackgroundEnabled(true); setGridEnabled(true); setFont(QFont(QStringLiteral("Arial"))); @@ -116,35 +126,27 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) setHighlightLightStrength(5.0f); setLabelBorderEnabled(true); setColorStyle(Q3DTheme::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))); - QList<QLinearGradient> baseGradients; - baseGradients.append(gradient); setBaseGradients(baseGradients); - 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))); - 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))); - setMultiHighlightGradient(gradient); + setSingleHighlightGradient(createGradient(QColor(QRgb(0x14aaff)), defaultColorLevel)); + setMultiHighlightGradient(createGradient(QColor(QRgb(0x6400aa)), defaultColorLevel)); break; } case Q3DTheme::ThemePrimaryColors: { QList<QColor> baseColors; baseColors.append(QColor(QRgb(0xffe400))); + baseColors.append(QColor(QRgb(0xdfd400))); + baseColors.append(QColor(QRgb(0xbfc400))); + baseColors.append(QColor(QRgb(0x9fb400))); + baseColors.append(QColor(QRgb(0x7fa400))); + + QList<QLinearGradient> baseGradients; + baseGradients.append(createGradient(baseColors.at(0), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(1), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(2), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(3), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(4), defaultColorLevel)); + setBackgroundEnabled(true); setGridEnabled(true); setFont(QFont(QStringLiteral("Arial"))); @@ -163,35 +165,27 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) setHighlightLightStrength(5.0f); setLabelBorderEnabled(false); setColorStyle(Q3DTheme::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))); - QList<QLinearGradient> baseGradients; - baseGradients.append(gradient); setBaseGradients(baseGradients); - 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))); - 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))); - setMultiHighlightGradient(gradient); + setSingleHighlightGradient(createGradient(QColor(QRgb(0x27beee)), defaultColorLevel)); + setMultiHighlightGradient(createGradient(QColor(QRgb(0xee1414)), defaultColorLevel)); break; } case Q3DTheme::ThemeDigia: { QList<QColor> baseColors; baseColors.append(QColor(QRgb(0xcccccc))); + baseColors.append(QColor(QRgb(0xbbbbbb))); + baseColors.append(QColor(QRgb(0xaaaaaa))); + baseColors.append(QColor(QRgb(0x999999))); + baseColors.append(QColor(QRgb(0x888888))); + + QList<QLinearGradient> baseGradients; + baseGradients.append(createGradient(baseColors.at(0), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(1), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(2), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(3), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(4), defaultBuiltInColorLevel)); + setBackgroundEnabled(true); setGridEnabled(true); setFont(QFont(QStringLiteral("Arial"))); @@ -210,35 +204,27 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) setHighlightLightStrength(5.0f); setLabelBorderEnabled(false); setColorStyle(Q3DTheme::ColorStyleObjectGradient); - 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); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0xcccccc))); - QList<QLinearGradient> baseGradients; - baseGradients.append(gradient); setBaseGradients(baseGradients); - color.setRed(0xfa * 0.7); - color.setGreen(0x00); - color.setBlue(0x00); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0xfa0000))); - setSingleHighlightGradient(gradient); - color.setRed(0x55 * 0.7); - color.setGreen(0x55 * 0.7); - color.setBlue(0x55 * 0.7); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0x555555))); - setMultiHighlightGradient(gradient); + setSingleHighlightGradient(createGradient(QColor(QRgb(0xfa0000)), defaultBuiltInColorLevel)); + setMultiHighlightGradient(createGradient(QColor(QRgb(0x555555)), defaultBuiltInColorLevel)); break; } case Q3DTheme::ThemeStoneMoss: { QList<QColor> baseColors; baseColors.append(QColor(QRgb(0xbeb32b))); + baseColors.append(QColor(QRgb(0xcec33b))); + baseColors.append(QColor(QRgb(0xded34b))); + baseColors.append(QColor(QRgb(0xeee35b))); + baseColors.append(QColor(QRgb(0xfef36b))); + + QList<QLinearGradient> baseGradients; + baseGradients.append(createGradient(baseColors.at(0), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(1), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(2), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(3), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(4), defaultColorLevel)); + setBackgroundEnabled(true); setGridEnabled(true); setFont(QFont(QStringLiteral("Arial"))); @@ -257,35 +243,27 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) setHighlightLightStrength(5.0f); setLabelBorderEnabled(true); setColorStyle(Q3DTheme::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))); - QList<QLinearGradient> baseGradients; - baseGradients.append(gradient); setBaseGradients(baseGradients); - 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))); - 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))); - setMultiHighlightGradient(gradient); + setSingleHighlightGradient(createGradient(QColor(QRgb(0xfbf6d6)), defaultColorLevel)); + setMultiHighlightGradient(createGradient(QColor(QRgb(0x442f20)), defaultColorLevel)); break; } case Q3DTheme::ThemeArmyBlue: { QList<QColor> baseColors; baseColors.append(QColor(QRgb(0x495f76))); + baseColors.append(QColor(QRgb(0x495f86))); + baseColors.append(QColor(QRgb(0x495f96))); + baseColors.append(QColor(QRgb(0x495fa6))); + baseColors.append(QColor(QRgb(0x495fb6))); + + QList<QLinearGradient> baseGradients; + baseGradients.append(createGradient(baseColors.at(0), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(1), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(2), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(3), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(4), defaultBuiltInColorLevel)); + setBackgroundEnabled(true); setGridEnabled(true); setFont(QFont(QStringLiteral("Arial"))); @@ -304,35 +282,27 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) setHighlightLightStrength(5.0f); setLabelBorderEnabled(false); setColorStyle(Q3DTheme::ColorStyleObjectGradient); - 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); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0x495f76))); - QList<QLinearGradient> baseGradients; - baseGradients.append(gradient); setBaseGradients(baseGradients); - color.setRed(0x2a * 0.7); - color.setGreen(0xa2 * 0.7); - color.setBlue(0xf9 * 0.7); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0x2aa2f9))); - setSingleHighlightGradient(gradient); - color.setRed(0x10 * 0.7); - color.setGreen(0x37 * 0.7); - color.setBlue(0x53 * 0.7); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0x103753))); - setMultiHighlightGradient(gradient); + setSingleHighlightGradient(createGradient(QColor(QRgb(0x2aa2f9)), defaultBuiltInColorLevel)); + setMultiHighlightGradient(createGradient(QColor(QRgb(0x103753)), defaultBuiltInColorLevel)); break; } case Q3DTheme::ThemeRetro: { QList<QColor> baseColors; baseColors.append(QColor(QRgb(0x533b23))); + baseColors.append(QColor(QRgb(0x633b23))); + baseColors.append(QColor(QRgb(0x733b23))); + baseColors.append(QColor(QRgb(0x833b23))); + baseColors.append(QColor(QRgb(0x933b23))); + + QList<QLinearGradient> baseGradients; + baseGradients.append(createGradient(baseColors.at(0), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(1), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(2), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(3), defaultBuiltInColorLevel)); + baseGradients.append(createGradient(baseColors.at(4), defaultBuiltInColorLevel)); + setBackgroundEnabled(true); setGridEnabled(true); setFont(QFont(QStringLiteral("Arial"))); @@ -351,35 +321,27 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) setHighlightLightStrength(5.0f); setLabelBorderEnabled(false); setColorStyle(Q3DTheme::ColorStyleObjectGradient); - 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); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0x533b23))); - QList<QLinearGradient> baseGradients; - baseGradients.append(gradient); setBaseGradients(baseGradients); - color.setRed(0x8e * 0.7); - color.setGreen(0xa3 * 0.7); - color.setBlue(0x17 * 0.7); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0x8ea317))); - setSingleHighlightGradient(gradient); - color.setRed(0xc2 * 0.7); - color.setGreen(0x57 * 0.7); - color.setBlue(0x08 * 0.7); - gradient.setColorAt(0.0, color); - gradient.setColorAt(1.0, QColor(QRgb(0xc25708))); - setMultiHighlightGradient(gradient); + setSingleHighlightGradient(createGradient(QColor(QRgb(0x8ea317)), defaultBuiltInColorLevel)); + setMultiHighlightGradient(createGradient(QColor(QRgb(0xc25708)), defaultBuiltInColorLevel)); break; } case Q3DTheme::ThemeEbony: { QList<QColor> baseColors; baseColors.append(QColor(QRgb(0xffffff))); + baseColors.append(QColor(QRgb(0xeeeeee))); + baseColors.append(QColor(QRgb(0xdddddd))); + baseColors.append(QColor(QRgb(0xcccccc))); + baseColors.append(QColor(QRgb(0xbbbbbb))); + + QList<QLinearGradient> baseGradients; + baseGradients.append(createGradient(baseColors.at(0), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(1), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(2), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(3), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(4), defaultColorLevel)); + setBackgroundEnabled(true); setGridEnabled(true); setFont(QFont(QStringLiteral("Arial"))); @@ -398,35 +360,27 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) setHighlightLightStrength(5.0f); setLabelBorderEnabled(false); setColorStyle(Q3DTheme::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))); - QList<QLinearGradient> baseGradients; - baseGradients.append(gradient); setBaseGradients(baseGradients); - 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))); - 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))); - setMultiHighlightGradient(gradient); + setSingleHighlightGradient(createGradient(QColor(QRgb(0xf5dc0d)), defaultColorLevel)); + setMultiHighlightGradient(createGradient(QColor(QRgb(0xd72222)), defaultColorLevel)); break; } case Q3DTheme::ThemeIsabelle: { QList<QColor> baseColors; baseColors.append(QColor(QRgb(0xf9d900))); + baseColors.append(QColor(QRgb(0xf9d910))); + baseColors.append(QColor(QRgb(0xf9d920))); + baseColors.append(QColor(QRgb(0xf9d930))); + baseColors.append(QColor(QRgb(0xf9d940))); + + QList<QLinearGradient> baseGradients; + baseGradients.append(createGradient(baseColors.at(0), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(1), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(2), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(3), defaultColorLevel)); + baseGradients.append(createGradient(baseColors.at(4), defaultColorLevel)); + setBackgroundEnabled(true); setGridEnabled(true); setFont(QFont(QStringLiteral("Arial"))); @@ -445,29 +399,9 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) setHighlightLightStrength(5.0f); setLabelBorderEnabled(false); setColorStyle(Q3DTheme::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))); - QList<QLinearGradient> baseGradients; - baseGradients.append(gradient); setBaseGradients(baseGradients); - 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))); - 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))); - setMultiHighlightGradient(gradient); + setSingleHighlightGradient(createGradient(QColor(QRgb(0xfff7cc)), defaultColorLevel)); + setMultiHighlightGradient(createGradient(QColor(QRgb(0xde0a0a)), defaultColorLevel)); break; } default: @@ -475,6 +409,20 @@ void ThemeManager::useTheme(Q3DTheme::Theme type) } } +QLinearGradient ThemeManager::createGradient(const QColor &color, float colorLevel) +{ + QColor startColor; + QLinearGradient gradient = QLinearGradient(qreal(gradientTextureWidth), + qreal(gradientTextureHeight), + 0.0, 0.0);; + startColor.setRed(color.red() * colorLevel); + startColor.setGreen(color.green() * colorLevel); + startColor.setBlue(color.blue() * colorLevel); + gradient.setColorAt(0.0, startColor); + gradient.setColorAt(1.0, color); + return gradient; +} + void ThemeManager::setBaseColors(const QList<QColor> &colors) { if (!m_theme->d_ptr->m_dirtyBits.baseColorDirty) |