9 #include <QApplication>
24 } platform_styles[] = {
25 {
"macosx",
false,
false,
true},
26 {
"windows",
true,
false,
false},
28 {
"other",
true,
true,
false}
30 static const unsigned platform_styles_count =
sizeof(platform_styles)/
sizeof(*platform_styles);
35 void MakeSingleColorImage(QImage& img,
const QColor& colorbase)
37 img = img.convertToFormat(QImage::Format_ARGB32);
38 for (
int x = img.width(); x--; )
40 for (
int y = img.height(); y--; )
42 const QRgb rgb = img.pixel(x, y);
43 img.setPixel(x, y, qRgba(colorbase.red(), colorbase.green(), colorbase.blue(), qAlpha(rgb)));
48 QIcon ColorizeIcon(
const QIcon& ico,
const QColor& colorbase)
52 Q_FOREACH(sz, ico.availableSizes())
54 QImage img(ico.pixmap(sz).toImage());
55 MakeSingleColorImage(img, colorbase);
56 new_ico.addPixmap(QPixmap::fromImage(img));
61 QImage ColorizeImage(
const QString& filename,
const QColor& colorbase)
64 MakeSingleColorImage(img, colorbase);
68 QIcon ColorizeIcon(
const QString& filename,
const QColor& colorbase)
70 return QIcon(QPixmap::fromImage(ColorizeImage(filename, colorbase)));
86 const QColor colorHighlightBg(QApplication::palette().color(QPalette::Highlight));
87 const QColor colorHighlightFg(QApplication::palette().color(QPalette::HighlightedText));
88 const QColor colorText(QApplication::palette().color(QPalette::WindowText));
89 const int colorTextLightness = colorText.lightness();
91 if (abs(colorHighlightBg.lightness() - colorTextLightness) < abs(colorHighlightFg.lightness() - colorTextLightness))
92 colorbase = colorHighlightBg;
94 colorbase = colorHighlightFg;
98 textColor = QColor(QApplication::palette().color(QPalette::WindowText));
104 return QImage(filename);
111 return QIcon(filename);
124 return ColorizeIcon(filename,
TextColor());
134 for (
unsigned x=0; x<platform_styles_count; ++x)