9 #include <QApplication> 22 } platform_styles[] = {
23 {
"macosx",
false,
false,
true},
24 {
"windows",
true,
false,
false},
26 {
"other",
true,
true,
false}
28 static const unsigned platform_styles_count =
sizeof(platform_styles)/
sizeof(*platform_styles);
33 void MakeSingleColorImage(QImage& img,
const QColor& colorbase)
35 img = img.convertToFormat(QImage::Format_ARGB32);
36 for (
int x = img.width(); x--; )
38 for (
int y = img.height(); y--; )
40 const QRgb rgb = img.pixel(x, y);
41 img.setPixel(x, y, qRgba(colorbase.red(), colorbase.green(), colorbase.blue(), qAlpha(rgb)));
46 QIcon ColorizeIcon(
const QIcon& ico,
const QColor& colorbase)
49 for (
const QSize& sz : ico.availableSizes())
51 QImage img(ico.pixmap(sz).toImage());
52 MakeSingleColorImage(img, colorbase);
53 new_ico.addPixmap(QPixmap::fromImage(img));
58 QImage ColorizeImage(
const QString& filename,
const QColor& colorbase)
61 MakeSingleColorImage(img, colorbase);
65 QIcon ColorizeIcon(
const QString& filename,
const QColor& colorbase)
67 return QIcon(QPixmap::fromImage(ColorizeImage(filename, colorbase)));
83 const QColor colorHighlightBg(QApplication::palette().color(QPalette::Highlight));
84 const QColor colorHighlightFg(QApplication::palette().color(QPalette::HighlightedText));
85 const QColor colorText(QApplication::palette().color(QPalette::WindowText));
86 const int colorTextLightness = colorText.lightness();
88 if (abs(colorHighlightBg.lightness() - colorTextLightness) < abs(colorHighlightFg.lightness() - colorTextLightness))
89 colorbase = colorHighlightBg;
91 colorbase = colorHighlightFg;
95 textColor = QColor(QApplication::palette().color(QPalette::WindowText));
101 return QImage(filename);
108 return QIcon(filename);
121 return ColorizeIcon(filename,
TextColor());
131 for (
unsigned x=0; x<platform_styles_count; ++x)