charttheme.cpp
112 lines
| 3.9 KiB
| text/x-c
|
CppLexer
/ src / charttheme.cpp
Tero Ahola
|
r103 | #include "charttheme_p.h" | ||
#include "qchart.h" | ||||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
void ChartThemeData::setTheme(int theme) | ||||
{ | ||||
m_seriesThemes.clear(); | ||||
m_seriesIndex = 0; | ||||
m_currentTheme = theme; | ||||
switch (theme) { | ||||
case QChart::ChartThemeDefault: | ||||
// line: solid, dashed, dotted | ||||
// line width: 1 | ||||
// line color (and opacity) | ||||
// line shadow (on/off) | ||||
// marker shape: "x", "o", "." | ||||
// TODO: define the default theme based on the OS | ||||
Tero Ahola
|
r108 | m_seriesThemes.append(SeriesTheme(QRgb(0xff000000), 2)); | ||
m_seriesThemes.append(SeriesTheme(QRgb(0xff707070), 2)); | ||||
Tero Ahola
|
r103 | m_gradientStartColor = QColor(QRgb(0xffffffff)); | ||
m_gradientEndColor = QColor(QRgb(0xffafafaf)); | ||||
break; | ||||
case QChart::ChartThemeVanilla: | ||||
Tero Ahola
|
r108 | m_seriesThemes.append(SeriesTheme(QColor(217, 197, 116), 6)); | ||
m_seriesThemes.append(SeriesTheme(QColor(214, 168, 150), 4)); | ||||
m_seriesThemes.append(SeriesTheme(QColor(160, 160, 113), 6)); | ||||
m_seriesThemes.append(SeriesTheme(QColor(210, 210, 52), 4)); | ||||
m_seriesThemes.append(SeriesTheme(QColor(136, 114, 58), 6)); | ||||
Tero Ahola
|
r103 | |||
m_gradientStartColor = QColor(QRgb(0xff9d844d)); | ||||
m_gradientEndColor = QColor(QRgb(0xffafafaf)); | ||||
break; | ||||
case QChart::ChartThemeIcy: | ||||
Tero Ahola
|
r125 | m_seriesThemes.append(SeriesTheme(QRgb(0xFF0D2673), 2)); | ||
m_seriesThemes.append(SeriesTheme(QRgb(0xFF2685BF), 2)); | ||||
m_seriesThemes.append(SeriesTheme(QRgb(0xFF3DADD9), 3)); | ||||
m_seriesThemes.append(SeriesTheme(QRgb(0xFF62C3D9), 2)); | ||||
Tero Ahola
|
r103 | |||
Tero Ahola
|
r125 | m_gradientStartColor = QColor(QRgb(0xffBDE3F2)); | ||
m_gradientEndColor = QColor(QRgb(0xffafafaf)); | ||||
Tero Ahola
|
r103 | break; | ||
case QChart::ChartThemeGrayscale: | ||||
Tero Ahola
|
r125 | m_seriesThemes.append(SeriesTheme(QRgb(0xFF869299), 2)); | ||
m_seriesThemes.append(SeriesTheme(QRgb(0xFFA5BDCC), 2)); | ||||
m_seriesThemes.append(SeriesTheme(QRgb(0xFFE8FFFC), 3)); | ||||
m_seriesThemes.append(SeriesTheme(QRgb(0xFFCCC2C2), 2)); | ||||
Tero Ahola
|
r103 | |||
m_gradientStartColor = QColor(QRgb(0xffffffff)); | ||||
m_gradientEndColor = QColor(QRgb(0xffafafaf)); | ||||
break; | ||||
Tero Ahola
|
r125 | case QChart::ChartThemeScientific: | ||
m_seriesThemes.append(SeriesTheme(QRgb(0xFF000000), 3)); | ||||
m_seriesThemes.append(SeriesTheme(QRgb(0xFFFFAD00), 2)); | ||||
m_seriesThemes.append(SeriesTheme(QRgb(0xFF596A75), 2)); | ||||
m_seriesThemes.append(SeriesTheme(QRgb(0xFF474747), 2)); | ||||
m_gradientStartColor = QColor(QRgb(0xffafafaf)); | ||||
m_gradientEndColor = QColor(QRgb(0xffafafaf)); | ||||
break; | ||||
Tero Ahola
|
r103 | case QChart::ChartThemeUnnamed1: | ||
Tero Ahola
|
r108 | m_seriesThemes.append(SeriesTheme(QColor(QRgb(0xff3fa9f5)), 2)); | ||
m_seriesThemes.append(SeriesTheme(QColor(QRgb(0xff7AC943)), 2)); | ||||
m_seriesThemes.append(SeriesTheme(QColor(QRgb(0xffFF931E)), 2)); | ||||
m_seriesThemes.append(SeriesTheme(QColor(QRgb(0xffFF1D25)), 2)); | ||||
m_seriesThemes.append(SeriesTheme(QColor(QRgb(0xffFF7BAC)), 2)); | ||||
Tero Ahola
|
r103 | |||
m_gradientStartColor = QColor(QRgb(0xfff3dc9e)); | ||||
m_gradientEndColor = QColor(QRgb(0xffafafaf)); | ||||
break; | ||||
default: | ||||
Q_ASSERT(false); | ||||
break; | ||||
} | ||||
} | ||||
ChartTheme::ChartTheme(QObject *parent) : | ||||
QObject(parent), | ||||
d(new ChartThemeData()) | ||||
{ | ||||
d->m_currentTheme = QChart::ChartThemeInvalid; | ||||
d->m_seriesIndex = 0; | ||||
} | ||||
Tero Ahola
|
r108 | void ChartTheme::setTheme(int theme) | ||
{ | ||||
if (theme != d->m_currentTheme) { | ||||
d->setTheme(theme); | ||||
foreach (ChartThemeObserver *o, d->m_observers) | ||||
o->themeChanged(this); | ||||
} | ||||
} | ||||
Tero Ahola
|
r103 | SeriesTheme ChartTheme::themeForSeries() | ||
{ | ||||
if (d->m_seriesThemes.count() == 0) { | ||||
return SeriesTheme(); | ||||
} else { | ||||
// Get the next available theme for the series; if no more themes available start over | ||||
// beginning from the first theme in the list | ||||
SeriesTheme nextTheme = | ||||
d->m_seriesThemes[d->m_seriesIndex % d->m_seriesThemes.count()]; | ||||
d->m_seriesIndex++; | ||||
return nextTheme; | ||||
} | ||||
} | ||||
#include "moc_charttheme_p.cpp" | ||||
QTCOMMERCIALCHART_END_NAMESPACE | ||||