diff options
-rw-r--r-- | examples/qmlbars/qml/qmlbars/main.qml | 2 | ||||
-rw-r--r-- | src/datavisualization/theme/q3dtheme.cpp | 17 | ||||
-rw-r--r-- | src/datavisualization/theme/q3dtheme.h | 2 | ||||
-rw-r--r-- | src/datavisualization/theme/q3dtheme_p.h | 43 | ||||
-rw-r--r-- | src/datavisualization/theme/thememanager.cpp | 399 | ||||
-rw-r--r-- | src/datavisualization/theme/thememanager_p.h | 17 |
6 files changed, 331 insertions, 149 deletions
diff --git a/examples/qmlbars/qml/qmlbars/main.qml b/examples/qmlbars/qml/qmlbars/main.qml index de1275ee..753859e5 100644 --- a/examples/qmlbars/qml/qmlbars/main.qml +++ b/examples/qmlbars/qml/qmlbars/main.qml @@ -79,7 +79,7 @@ Item { shadowQuality: AbstractGraph3D.ShadowQualityMedium selectionMode: AbstractGraph3D.SelectionItem font.pointSize: 35 - theme: Theme3D { type: AbstractGraph3D.ThemeRetro } + theme: Theme3D { type: AbstractGraph3D.ThemeRetro; labelBorderEnabled: true } labelStyle: AbstractGraph3D.LabelStyleFromTheme barThickness: 0.7 barSpacing: Qt.size(0.5, 0.5) diff --git a/src/datavisualization/theme/q3dtheme.cpp b/src/datavisualization/theme/q3dtheme.cpp index 8aba6b48..e43eb52d 100644 --- a/src/datavisualization/theme/q3dtheme.cpp +++ b/src/datavisualization/theme/q3dtheme.cpp @@ -49,6 +49,7 @@ Q3DTheme::~Q3DTheme() void Q3DTheme::setBaseColor(const QColor &color) { if (d_ptr->m_baseColor != color) { + d_ptr->m_dirtyBits.baseColorDirty = true; d_ptr->m_baseColor = color; emit baseColorChanged(color); } @@ -62,6 +63,7 @@ QColor Q3DTheme::baseColor() const void Q3DTheme::setBackgroundColor(const QColor &color) { if (d_ptr->m_backgroundColor != color) { + d_ptr->m_dirtyBits.backgroundColorDirty = true; d_ptr->m_backgroundColor = color; emit backgroundColorChanged(color); } @@ -75,6 +77,7 @@ QColor Q3DTheme::backgroundColor() const void Q3DTheme::setWindowColor(const QColor &color) { if (d_ptr->m_windowColor != color) { + d_ptr->m_dirtyBits.windowColorDirty = true; d_ptr->m_windowColor = color; emit windowColorChanged(color); } @@ -88,6 +91,7 @@ QColor Q3DTheme::windowColor() const void Q3DTheme::setTextColor(const QColor &color) { if (d_ptr->m_textColor != color) { + d_ptr->m_dirtyBits.textColorDirty = true; d_ptr->m_textColor = color; emit textColorChanged(color); } @@ -101,6 +105,7 @@ QColor Q3DTheme::textColor() const void Q3DTheme::setTextBackgroundColor(const QColor &color) { if (d_ptr->m_textBackgroundColor != color) { + d_ptr->m_dirtyBits.textBackgroundColorDirty = true; d_ptr->m_textBackgroundColor = color; emit textBackgroundColorChanged(color); } @@ -114,6 +119,7 @@ QColor Q3DTheme::textBackgroundColor() const void Q3DTheme::setGridLineColor(const QColor &color) { if (d_ptr->m_gridLineColor != color) { + d_ptr->m_dirtyBits.gridLineColorDirty = true; d_ptr->m_gridLineColor = color; emit gridLineColorChanged(color); } @@ -127,6 +133,7 @@ QColor Q3DTheme::gridLineColor() const void Q3DTheme::setSingleHighlightColor(const QColor &color) { if (d_ptr->m_singleHighlightColor != color) { + d_ptr->m_dirtyBits.singleHighlightColorDirty = true; d_ptr->m_singleHighlightColor = color; emit singleHighlightColorChanged(color); } @@ -140,6 +147,7 @@ QColor Q3DTheme::singleHighlightColor() const void Q3DTheme::setMultiHighlightColor(const QColor &color) { if (d_ptr->m_multiHighlightColor != color) { + d_ptr->m_dirtyBits.multiHighlightColorDirty = true; d_ptr->m_multiHighlightColor = color; emit multiHighlightColorChanged(color); } @@ -153,6 +161,7 @@ QColor Q3DTheme::multiHighlightColor() const void Q3DTheme::setLightColor(const QColor &color) { if (d_ptr->m_lightColor != color) { + d_ptr->m_dirtyBits.lightColorDirty = true; d_ptr->m_lightColor = color; emit lightColorChanged(color); } @@ -167,6 +176,7 @@ QColor Q3DTheme::lightColor() const void Q3DTheme::setBaseGradient(const QLinearGradient &gradient) { if (d_ptr->m_baseGradient != gradient) { + d_ptr->m_dirtyBits.baseGradientDirty = true; d_ptr->m_baseGradient = gradient; emit baseGradientChanged(gradient); } @@ -180,6 +190,7 @@ QLinearGradient Q3DTheme::baseGradient() const void Q3DTheme::setSingleHighlightGradient(const QLinearGradient &gradient) { if (d_ptr->m_singleHighlightGradient != gradient) { + d_ptr->m_dirtyBits.singleHighlightGradientDirty = true; d_ptr->m_singleHighlightGradient = gradient; emit singleHighlightGradientChanged(gradient); } @@ -193,6 +204,7 @@ QLinearGradient Q3DTheme::singleHighlightGradient() const void Q3DTheme::setMultiHighlightGradient(const QLinearGradient &gradient) { if (d_ptr->m_multiHighlightGradient != gradient) { + d_ptr->m_dirtyBits.multiHighlightGradientDirty = true; d_ptr->m_multiHighlightGradient = gradient; emit multiHighlightGradientChanged(gradient); } @@ -206,6 +218,7 @@ QLinearGradient Q3DTheme::multiHighlightGradient() const void Q3DTheme::setLightStrength(float strength) { if (d_ptr->m_lightStrength != strength) { + d_ptr->m_dirtyBits.lightStrengthDirty = true; d_ptr->m_lightStrength = strength; emit lightStrengthChanged(strength); } @@ -219,6 +232,7 @@ float Q3DTheme::lightStrength() const void Q3DTheme::setAmbientLightStrength(float strength) { if (d_ptr->m_ambientLightStrength != strength) { + d_ptr->m_dirtyBits.ambientLightStrengthDirty = true; d_ptr->m_ambientLightStrength = strength; emit ambientLightStrengthChanged(strength); } @@ -232,6 +246,7 @@ float Q3DTheme::ambientLightStrength() const void Q3DTheme::setHighlightLightStrength(float strength) { if (d_ptr->m_highlightLightStrength != strength) { + d_ptr->m_dirtyBits.highlightLightStrengthDirty = true; d_ptr->m_highlightLightStrength = strength; emit highlightLightStrengthChanged(strength); } @@ -245,6 +260,7 @@ float Q3DTheme::highlightLightStrength() const void Q3DTheme::setLabelBorderEnabled(bool enabled) { if (d_ptr->m_labelBorders != enabled) { + d_ptr->m_dirtyBits.labelBorderEnabledDirty = true; d_ptr->m_labelBorders = enabled; emit labelBorderEnabledChanged(enabled); } @@ -258,6 +274,7 @@ bool Q3DTheme::isLabelBorderEnabled() const void Q3DTheme::setColorStyle(QDataVis::ColorStyle style) { if (d_ptr->m_colorStyle != style) { + d_ptr->m_dirtyBits.colorStyleDirty = true; d_ptr->m_colorStyle = style; emit colorStyleChanged(style); } diff --git a/src/datavisualization/theme/q3dtheme.h b/src/datavisualization/theme/q3dtheme.h index 8d42e6cf..4cea4341 100644 --- a/src/datavisualization/theme/q3dtheme.h +++ b/src/datavisualization/theme/q3dtheme.h @@ -136,6 +136,8 @@ protected: QObject *parent = 0); QScopedPointer<Q3DThemePrivate> d_ptr; + friend class ThemeManager; + private: Q_DISABLE_COPY(Q3DTheme) }; diff --git a/src/datavisualization/theme/q3dtheme_p.h b/src/datavisualization/theme/q3dtheme_p.h index ae4bdbe4..ca3108c8 100644 --- a/src/datavisualization/theme/q3dtheme_p.h +++ b/src/datavisualization/theme/q3dtheme_p.h @@ -37,6 +37,47 @@ class QLinearGradient; QT_DATAVISUALIZATION_BEGIN_NAMESPACE +struct Q3DThemeDirtyBitField { + bool baseColorDirty : 1; + bool backgroundColorDirty : 1; + bool windowColorDirty : 1; + bool textColorDirty : 1; + bool textBackgroundColorDirty : 1; + bool gridLineColorDirty : 1; + bool singleHighlightColorDirty : 1; + bool multiHighlightColorDirty : 1; + bool lightColorDirty : 1; + bool baseGradientDirty : 1; + bool singleHighlightGradientDirty : 1; + bool multiHighlightGradientDirty : 1; + bool lightStrengthDirty : 1; + bool ambientLightStrengthDirty : 1; + bool highlightLightStrengthDirty : 1; + bool labelBorderEnabledDirty : 1; + bool colorStyleDirty : 1; + + Q3DThemeDirtyBitField() + : baseColorDirty(false), + backgroundColorDirty(false), + windowColorDirty(false), + textColorDirty(false), + textBackgroundColorDirty(false), + gridLineColorDirty(false), + singleHighlightColorDirty(false), + multiHighlightColorDirty(false), + lightColorDirty(false), + baseGradientDirty(false), + singleHighlightGradientDirty(false), + multiHighlightGradientDirty(false), + lightStrengthDirty(false), + ambientLightStrengthDirty(false), + highlightLightStrengthDirty(false), + labelBorderEnabledDirty(false), + colorStyleDirty(false) + { + } +}; + class Q3DThemePrivate : public QObject { Q_OBJECT @@ -48,6 +89,8 @@ public: public: QDataVis::Theme m_themeId; + Q3DThemeDirtyBitField m_dirtyBits; + QColor m_baseColor; QColor m_heightColor; QColor m_depthColor; diff --git a/src/datavisualization/theme/thememanager.cpp b/src/datavisualization/theme/thememanager.cpp index 5102fddf..168409b3 100644 --- a/src/datavisualization/theme/thememanager.cpp +++ b/src/datavisualization/theme/thememanager.cpp @@ -17,6 +17,7 @@ ****************************************************************************/ #include "thememanager_p.h" +#include "q3dtheme_p.h" QT_DATAVISUALIZATION_BEGIN_NAMESPACE @@ -64,36 +65,36 @@ void ThemeManager::connectThemeSignals() // TODO: Implement receiving end for the commented ones (QTRD-2538) connect(m_theme.data(), &Q3DTheme::baseColorChanged, m_controller, &Abstract3DController::setObjectColor); -// connect(m_theme.data(), &Q3DTheme::backgroundColorChanged, -// m_controller, &Abstract3DController::setBackgroundColorColor); -// connect(m_theme.data(), &Q3DTheme::windowColorChanged, -// m_controller, &Abstract3DController::setWindowColor); -// connect(m_theme.data(), &Q3DTheme::textColorChanged, -// m_controller, &Abstract3DController::setTextColor); -// connect(m_theme.data(), &Q3DTheme::textBackgroundColorChanged, -// m_controller, &Abstract3DController::setTextBackgroundColor); -// connect(m_theme.data(), &Q3DTheme::gridLineColorChanged, -// m_controller, &Abstract3DController::setGridLineColor); + // connect(m_theme.data(), &Q3DTheme::backgroundColorChanged, + // m_controller, &Abstract3DController::setBackgroundColorColor); + // connect(m_theme.data(), &Q3DTheme::windowColorChanged, + // m_controller, &Abstract3DController::setWindowColor); + // connect(m_theme.data(), &Q3DTheme::textColorChanged, + // m_controller, &Abstract3DController::setTextColor); + // connect(m_theme.data(), &Q3DTheme::textBackgroundColorChanged, + // m_controller, &Abstract3DController::setTextBackgroundColor); + // connect(m_theme.data(), &Q3DTheme::gridLineColorChanged, + // m_controller, &Abstract3DController::setGridLineColor); connect(m_theme.data(), &Q3DTheme::singleHighlightColorChanged, m_controller, &Abstract3DController::setSingleHighlightColor); connect(m_theme.data(), &Q3DTheme::multiHighlightColorChanged, m_controller, &Abstract3DController::setMultiHighlightColor); -// connect(m_theme.data(), &Q3DTheme::lightColorChanged, -// m_controller, &Abstract3DController::setLightColor); + // connect(m_theme.data(), &Q3DTheme::lightColorChanged, + // m_controller, &Abstract3DController::setLightColor); connect(m_theme.data(), &Q3DTheme::baseGradientChanged, m_controller, &Abstract3DController::setObjectGradient); connect(m_theme.data(), &Q3DTheme::singleHighlightGradientChanged, m_controller, &Abstract3DController::setSingleHighlightGradient); connect(m_theme.data(), &Q3DTheme::multiHighlightGradientChanged, m_controller, &Abstract3DController::setMultiHighlightGradient); -// connect(m_theme.data(), &Q3DTheme::lightStrengthChanged, -// m_controller, &Abstract3DController::setLightStrength); -// connect(m_theme.data(), &Q3DTheme::ambientLightStrengthChanged, -// m_controller, &Abstract3DController::setAmbientLightStrength); -// connect(m_theme.data(), &Q3DTheme::highlightLightStrengthChanged, -// m_controller, &Abstract3DController::setHighlightLightStrength); -// connect(m_theme.data(), &Q3DTheme::labelBorderEnabledChanged, -// m_controller, &Abstract3DController::setLabelBorderEnabled); + // connect(m_theme.data(), &Q3DTheme::lightStrengthChanged, + // m_controller, &Abstract3DController::setLightStrength); + // connect(m_theme.data(), &Q3DTheme::ambientLightStrengthChanged, + // m_controller, &Abstract3DController::setAmbientLightStrength); + // connect(m_theme.data(), &Q3DTheme::highlightLightStrengthChanged, + // m_controller, &Abstract3DController::setHighlightLightStrength); + // connect(m_theme.data(), &Q3DTheme::labelBorderEnabledChanged, + // m_controller, &Abstract3DController::setLabelBorderEnabled); connect(m_theme.data(), &Q3DTheme::colorStyleChanged, m_controller, &Abstract3DController::setColorStyle); @@ -107,19 +108,19 @@ void ThemeManager::useTheme(QDataVis::Theme type) switch (type) { case QDataVis::ThemeQt: { - m_theme->setBaseColor(QColor(QRgb(0x80c342))); - m_theme->setBackgroundColor(QColor(QRgb(0xffffff))); - m_theme->setWindowColor(QColor(QRgb(0xffffff))); - m_theme->setTextColor(QColor(QRgb(0x35322f))); - m_theme->setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x99)); - m_theme->setGridLineColor(QColor(QRgb(0xd7d6d5))); - m_theme->setSingleHighlightColor(QColor(QRgb(0x14aaff))); - m_theme->setMultiHighlightColor(QColor(QRgb(0x6400aa))); - m_theme->setLightStrength(5.0f); - m_theme->setAmbientLightStrength(0.5f); - m_theme->setHighlightLightStrength(5.0f); - m_theme->setLabelBorderEnabled(true); - m_theme->setColorStyle(QDataVis::ColorStyleUniform); + setBaseColor(QColor(QRgb(0x80c342))); + setBackgroundColor(QColor(QRgb(0xffffff))); + setWindowColor(QColor(QRgb(0xffffff))); + setTextColor(QColor(QRgb(0x35322f))); + setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x99)); + setGridLineColor(QColor(QRgb(0xd7d6d5))); + setSingleHighlightColor(QColor(QRgb(0x14aaff))); + setMultiHighlightColor(QColor(QRgb(0x6400aa))); + setLightStrength(5.0f); + setAmbientLightStrength(0.5f); + setHighlightLightStrength(5.0f); + setLabelBorderEnabled(true); + setColorStyle(QDataVis::ColorStyleUniform); gradient = QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0); @@ -128,36 +129,36 @@ void ThemeManager::useTheme(QDataVis::Theme type) color.setBlue(0x42 * 0.7); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0x80c342))); - m_theme->setBaseGradient(gradient); + 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); + 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); + setMultiHighlightGradient(gradient); break; } case QDataVis::ThemePrimaryColors: { - m_theme->setBaseColor(QColor(QRgb(0xffe400))); - m_theme->setBackgroundColor(QColor(QRgb(0xffffff))); - m_theme->setWindowColor(QColor(QRgb(0xffffff))); - m_theme->setTextColor(QColor(QRgb(0x000000))); - m_theme->setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x99)); - m_theme->setGridLineColor(QColor(QRgb(0xd7d6d5))); - m_theme->setSingleHighlightColor(QColor(QRgb(0x27beee))); - m_theme->setMultiHighlightColor(QColor(QRgb(0xee1414))); - m_theme->setLightStrength(5.0f); - m_theme->setAmbientLightStrength(0.5f); - m_theme->setHighlightLightStrength(5.0f); - m_theme->setLabelBorderEnabled(false); - m_theme->setColorStyle(QDataVis::ColorStyleUniform); + setBaseColor(QColor(QRgb(0xffe400))); + setBackgroundColor(QColor(QRgb(0xffffff))); + setWindowColor(QColor(QRgb(0xffffff))); + setTextColor(QColor(QRgb(0x000000))); + setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x99)); + setGridLineColor(QColor(QRgb(0xd7d6d5))); + setSingleHighlightColor(QColor(QRgb(0x27beee))); + setMultiHighlightColor(QColor(QRgb(0xee1414))); + setLightStrength(5.0f); + setAmbientLightStrength(0.5f); + setHighlightLightStrength(5.0f); + setLabelBorderEnabled(false); + setColorStyle(QDataVis::ColorStyleUniform); gradient = QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0); @@ -166,36 +167,36 @@ void ThemeManager::useTheme(QDataVis::Theme type) color.setBlue(0x00); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0xffe400))); - m_theme->setBaseGradient(gradient); + 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); + 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); + 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))); - m_theme->setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x80)); - m_theme->setGridLineColor(QColor(QRgb(0xd7d6d5))); - m_theme->setSingleHighlightColor(QColor(QRgb(0xfa0000))); - m_theme->setMultiHighlightColor(QColor(QRgb(0x555555))); - m_theme->setLightStrength(5.0f); - m_theme->setAmbientLightStrength(0.5f); - m_theme->setHighlightLightStrength(5.0f); - m_theme->setLabelBorderEnabled(false); - m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); + setBaseColor(QColor(QRgb(0xcccccc))); + setBackgroundColor(QColor(QRgb(0xffffff))); + setWindowColor(QColor(QRgb(0xffffff))); + setTextColor(QColor(QRgb(0x000000))); + setTextBackgroundColor(QColor(0xff, 0xff, 0xff, 0x80)); + setGridLineColor(QColor(QRgb(0xd7d6d5))); + setSingleHighlightColor(QColor(QRgb(0xfa0000))); + setMultiHighlightColor(QColor(QRgb(0x555555))); + setLightStrength(5.0f); + setAmbientLightStrength(0.5f); + setHighlightLightStrength(5.0f); + setLabelBorderEnabled(false); + setColorStyle(QDataVis::ColorStyleObjectGradient); gradient = QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0); @@ -204,36 +205,36 @@ void ThemeManager::useTheme(QDataVis::Theme type) color.setBlue(0xcc * 0.7); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0xcccccc))); - m_theme->setBaseGradient(gradient); + setBaseGradient(gradient); color.setRed(0xfa * 0.7); color.setGreen(0x00); color.setBlue(0x00); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0xfa0000))); - m_theme->setSingleHighlightGradient(gradient); + 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))); - m_theme->setMultiHighlightGradient(gradient); + setMultiHighlightGradient(gradient); break; } case QDataVis::ThemeStoneMoss: { - m_theme->setBaseColor(QColor(QRgb(0xbeb32b))); - m_theme->setBackgroundColor(QColor(QRgb(0x4d4d4f))); - m_theme->setWindowColor(QColor(QRgb(0x4d4d4f))); - m_theme->setTextColor(QColor(QRgb(0xffffff))); - m_theme->setTextBackgroundColor(QColor(0x4d, 0x4d, 0x4f, 0xcd)); - m_theme->setGridLineColor(QColor(QRgb(0x3e3e40))); - m_theme->setSingleHighlightColor(QColor(QRgb(0xfbf6d6))); - m_theme->setMultiHighlightColor(QColor(QRgb(0x442f20))); - m_theme->setLightStrength(5.0f); - m_theme->setAmbientLightStrength(0.5f); - m_theme->setHighlightLightStrength(5.0f); - m_theme->setLabelBorderEnabled(true); - m_theme->setColorStyle(QDataVis::ColorStyleUniform); + setBaseColor(QColor(QRgb(0xbeb32b))); + setBackgroundColor(QColor(QRgb(0x4d4d4f))); + setWindowColor(QColor(QRgb(0x4d4d4f))); + setTextColor(QColor(QRgb(0xffffff))); + setTextBackgroundColor(QColor(0x4d, 0x4d, 0x4f, 0xcd)); + setGridLineColor(QColor(QRgb(0x3e3e40))); + setSingleHighlightColor(QColor(QRgb(0xfbf6d6))); + setMultiHighlightColor(QColor(QRgb(0x442f20))); + setLightStrength(5.0f); + setAmbientLightStrength(0.5f); + setHighlightLightStrength(5.0f); + setLabelBorderEnabled(true); + setColorStyle(QDataVis::ColorStyleUniform); gradient = QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0); @@ -242,36 +243,36 @@ void ThemeManager::useTheme(QDataVis::Theme type) color.setBlue(0x2b * 0.7); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0xbeb32b))); - m_theme->setBaseGradient(gradient); + 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); + 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); + 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))); - m_theme->setTextBackgroundColor(QColor(0xd5, 0xd6, 0xd7, 0xcd)); - m_theme->setGridLineColor(QColor(QRgb(0xaeadac))); - m_theme->setSingleHighlightColor(QColor(QRgb(0x2aa2f9))); - m_theme->setMultiHighlightColor(QColor(QRgb(0x103753))); - m_theme->setLightStrength(5.0f); - m_theme->setAmbientLightStrength(0.5f); - m_theme->setHighlightLightStrength(5.0f); - m_theme->setLabelBorderEnabled(false); - m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); + setBaseColor(QColor(QRgb(0x495f76))); + setBackgroundColor(QColor(QRgb(0xd5d6d7))); + setWindowColor(QColor(QRgb(0xd5d6d7))); + setTextColor(QColor(QRgb(0x000000))); + setTextBackgroundColor(QColor(0xd5, 0xd6, 0xd7, 0xcd)); + setGridLineColor(QColor(QRgb(0xaeadac))); + setSingleHighlightColor(QColor(QRgb(0x2aa2f9))); + setMultiHighlightColor(QColor(QRgb(0x103753))); + setLightStrength(5.0f); + setAmbientLightStrength(0.5f); + setHighlightLightStrength(5.0f); + setLabelBorderEnabled(false); + setColorStyle(QDataVis::ColorStyleObjectGradient); gradient = QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0); @@ -280,36 +281,36 @@ void ThemeManager::useTheme(QDataVis::Theme type) color.setBlue(0x76 * 0.7); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0x495f76))); - m_theme->setBaseGradient(gradient); + setBaseGradient(gradient); 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))); - m_theme->setSingleHighlightGradient(gradient); + 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))); - m_theme->setMultiHighlightGradient(gradient); + setMultiHighlightGradient(gradient); break; } 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))); - m_theme->setTextBackgroundColor(QColor(0xe9, 0xe2, 0xce, 0xc0)); - m_theme->setGridLineColor(QColor(QRgb(0xd0c0b0))); - m_theme->setSingleHighlightColor(QColor(QRgb(0x8ea317))); - m_theme->setMultiHighlightColor(QColor(QRgb(0xc25708))); - m_theme->setLightStrength(5.0f); - m_theme->setAmbientLightStrength(0.5f); - m_theme->setHighlightLightStrength(5.0f); - m_theme->setLabelBorderEnabled(false); - m_theme->setColorStyle(QDataVis::ColorStyleObjectGradient); + setBaseColor(QColor(QRgb(0x533b23))); + setBackgroundColor(QColor(QRgb(0xe9e2ce))); + setWindowColor(QColor(QRgb(0xe9e2ce))); + setTextColor(QColor(QRgb(0x000000))); + setTextBackgroundColor(QColor(0xe9, 0xe2, 0xce, 0xc0)); + setGridLineColor(QColor(QRgb(0xd0c0b0))); + setSingleHighlightColor(QColor(QRgb(0x8ea317))); + setMultiHighlightColor(QColor(QRgb(0xc25708))); + setLightStrength(5.0f); + setAmbientLightStrength(0.5f); + setHighlightLightStrength(5.0f); + setLabelBorderEnabled(false); + setColorStyle(QDataVis::ColorStyleObjectGradient); gradient = QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0); @@ -318,36 +319,36 @@ void ThemeManager::useTheme(QDataVis::Theme type) color.setBlue(0x23 * 0.7); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0x533b23))); - m_theme->setBaseGradient(gradient); + setBaseGradient(gradient); 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))); - m_theme->setSingleHighlightGradient(gradient); + 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))); - m_theme->setMultiHighlightGradient(gradient); + setMultiHighlightGradient(gradient); break; } case QDataVis::ThemeEbony: { - m_theme->setBaseColor(QColor(QRgb(0xffffff))); - m_theme->setBackgroundColor(QColor(QRgb(0x000000))); - m_theme->setWindowColor(QColor(QRgb(0x000000))); - m_theme->setTextColor(QColor(QRgb(0xaeadac))); - m_theme->setTextBackgroundColor(QColor(0x00, 0x00, 0x00, 0xcd)); - m_theme->setGridLineColor(QColor(QRgb(0x35322f))); - m_theme->setSingleHighlightColor(QColor(QRgb(0xf5dc0d))); - m_theme->setMultiHighlightColor(QColor(QRgb(0xd72222))); - m_theme->setLightStrength(5.0f); - m_theme->setAmbientLightStrength(0.5f); - m_theme->setHighlightLightStrength(5.0f); - m_theme->setLabelBorderEnabled(false); - m_theme->setColorStyle(QDataVis::ColorStyleUniform); + setBaseColor(QColor(QRgb(0xffffff))); + setBackgroundColor(QColor(QRgb(0x000000))); + setWindowColor(QColor(QRgb(0x000000))); + setTextColor(QColor(QRgb(0xaeadac))); + setTextBackgroundColor(QColor(0x00, 0x00, 0x00, 0xcd)); + setGridLineColor(QColor(QRgb(0x35322f))); + setSingleHighlightColor(QColor(QRgb(0xf5dc0d))); + setMultiHighlightColor(QColor(QRgb(0xd72222))); + setLightStrength(5.0f); + setAmbientLightStrength(0.5f); + setHighlightLightStrength(5.0f); + setLabelBorderEnabled(false); + setColorStyle(QDataVis::ColorStyleUniform); gradient = QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0); @@ -356,36 +357,36 @@ void ThemeManager::useTheme(QDataVis::Theme type) color.setBlue(0xff * 0.7); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0xffffff))); - m_theme->setBaseGradient(gradient); + 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); + 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); + setMultiHighlightGradient(gradient); break; } case QDataVis::ThemeIsabelle: { - m_theme->setBaseColor(QColor(QRgb(0xf9d900))); - m_theme->setBackgroundColor(QColor(QRgb(0x000000))); - m_theme->setWindowColor(QColor(QRgb(0x000000))); - m_theme->setTextColor(QColor(QRgb(0xaeadac))); - m_theme->setTextBackgroundColor(QColor(0x00, 0x00, 0x00, 0xc0)); - m_theme->setGridLineColor(QColor(QRgb(0x35322f))); - m_theme->setSingleHighlightColor(QColor(QRgb(0xfff7cc))); - m_theme->setMultiHighlightColor(QColor(QRgb(0xde0a0a))); - m_theme->setLightStrength(5.0f); - m_theme->setAmbientLightStrength(0.5f); - m_theme->setHighlightLightStrength(5.0f); - m_theme->setLabelBorderEnabled(false); - m_theme->setColorStyle(QDataVis::ColorStyleUniform); + setBaseColor(QColor(QRgb(0xf9d900))); + setBackgroundColor(QColor(QRgb(0x000000))); + setWindowColor(QColor(QRgb(0x000000))); + setTextColor(QColor(QRgb(0xaeadac))); + setTextBackgroundColor(QColor(0x00, 0x00, 0x00, 0xc0)); + setGridLineColor(QColor(QRgb(0x35322f))); + setSingleHighlightColor(QColor(QRgb(0xfff7cc))); + setMultiHighlightColor(QColor(QRgb(0xde0a0a))); + setLightStrength(5.0f); + setAmbientLightStrength(0.5f); + setHighlightLightStrength(5.0f); + setLabelBorderEnabled(false); + setColorStyle(QDataVis::ColorStyleUniform); gradient = QLinearGradient(qreal(gradientTextureWidth), qreal(gradientTextureHeight), 0.0, 0.0); @@ -394,19 +395,19 @@ void ThemeManager::useTheme(QDataVis::Theme type) color.setBlue(0x00); gradient.setColorAt(0.0, color); gradient.setColorAt(1.0, QColor(QRgb(0xf9d900))); - m_theme->setBaseGradient(gradient); + 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); + 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); + setMultiHighlightGradient(gradient); break; } default: @@ -414,4 +415,106 @@ void ThemeManager::useTheme(QDataVis::Theme type) } } +void ThemeManager::setBaseColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.baseColorDirty) + m_theme->setBaseColor(color); +} + +void ThemeManager::setBackgroundColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.backgroundColorDirty) + m_theme->setBackgroundColor(color); +} + +void ThemeManager::setWindowColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.windowColorDirty) + m_theme->setWindowColor(color); +} + +void ThemeManager::setTextColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.textColorDirty) + m_theme->setTextColor(color); +} + +void ThemeManager::setTextBackgroundColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.textBackgroundColorDirty) + m_theme->setTextBackgroundColor(color); +} + +void ThemeManager::setGridLineColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.gridLineColorDirty) + m_theme->setGridLineColor(color); +} + +void ThemeManager::setSingleHighlightColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.singleHighlightColorDirty) + m_theme->setSingleHighlightColor(color); +} + +void ThemeManager::setMultiHighlightColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.multiHighlightColorDirty) + m_theme->setMultiHighlightColor(color); +} + +void ThemeManager::setLightColor(const QColor &color) +{ + if (!m_theme->d_ptr->m_dirtyBits.lightColorDirty) + m_theme->setLightColor(color); +} + +void ThemeManager::setBaseGradient(const QLinearGradient &gradient) +{ + if (!m_theme->d_ptr->m_dirtyBits.baseGradientDirty) + m_theme->setBaseGradient(gradient); +} + +void ThemeManager::setSingleHighlightGradient(const QLinearGradient &gradient) +{ + if (!m_theme->d_ptr->m_dirtyBits.singleHighlightGradientDirty) + m_theme->setSingleHighlightGradient(gradient); +} + +void ThemeManager::setMultiHighlightGradient(const QLinearGradient &gradient) +{ + if (!m_theme->d_ptr->m_dirtyBits.multiHighlightGradientDirty) + m_theme->setMultiHighlightGradient(gradient); +} + +void ThemeManager::setLightStrength(float strength) +{ + if (!m_theme->d_ptr->m_dirtyBits.lightStrengthDirty) + m_theme->setLightStrength(strength); +} + +void ThemeManager::setAmbientLightStrength(float strength) +{ + if (!m_theme->d_ptr->m_dirtyBits.ambientLightStrengthDirty) + m_theme->setAmbientLightStrength(strength); +} + +void ThemeManager::setHighlightLightStrength(float strength) +{ + if (!m_theme->d_ptr->m_dirtyBits.highlightLightStrengthDirty) + m_theme->setHighlightLightStrength(strength); +} + +void ThemeManager::setLabelBorderEnabled(bool enabled) +{ + if (!m_theme->d_ptr->m_dirtyBits.labelBorderEnabledDirty) + m_theme->setLabelBorderEnabled(enabled); +} + +void ThemeManager::setColorStyle(QDataVis::ColorStyle style) +{ + if (!m_theme->d_ptr->m_dirtyBits.colorStyleDirty) + m_theme->setColorStyle(style); +} + QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualization/theme/thememanager_p.h b/src/datavisualization/theme/thememanager_p.h index 0b05dc9b..26ae6282 100644 --- a/src/datavisualization/theme/thememanager_p.h +++ b/src/datavisualization/theme/thememanager_p.h @@ -48,6 +48,23 @@ public: protected: void connectThemeSignals(); void useTheme(QDataVis::Theme type); + void setBaseColor(const QColor &color); + void setBackgroundColor(const QColor &color); + void setWindowColor(const QColor &color); + void setTextColor(const QColor &color); + void setTextBackgroundColor(const QColor &color); + void setGridLineColor(const QColor &color); + void setSingleHighlightColor(const QColor &color); + void setMultiHighlightColor(const QColor &color); + void setLightColor(const QColor &color); + void setBaseGradient(const QLinearGradient &gradient); + void setSingleHighlightGradient(const QLinearGradient &gradient); + void setMultiHighlightGradient(const QLinearGradient &gradient); + void setLightStrength(float strength); + void setAmbientLightStrength(float strength); + void setHighlightLightStrength(float strength); + void setLabelBorderEnabled(bool enabled); + void setColorStyle(QDataVis::ColorStyle style); private: QScopedPointer<Q3DTheme> m_theme; |