7 #include <QApplication> 21 {
"windows",
true,
false,
false},
23 {
"other",
true,
true,
false}};
30 void MakeSingleColorImage(QImage &img,
const QColor &colorbase) {
31 img = img.convertToFormat(QImage::Format_ARGB32);
32 for (
int x = img.width(); x--;) {
33 for (
int y = img.height(); y--;) {
34 const QRgb rgb = img.pixel(x, y);
36 qRgba(colorbase.red(), colorbase.green(),
37 colorbase.blue(), qAlpha(rgb)));
42 QIcon ColorizeIcon(
const QIcon &ico,
const QColor &colorbase) {
44 for (
const QSize &sz : ico.availableSizes()) {
45 QImage img(ico.pixmap(sz).toImage());
46 MakeSingleColorImage(img, colorbase);
47 new_ico.addPixmap(QPixmap::fromImage(img));
52 QImage ColorizeImage(
const QString &filename,
const QColor &colorbase) {
54 MakeSingleColorImage(img, colorbase);
58 QIcon ColorizeIcon(
const QString &filename,
const QColor &colorbase) {
59 return QIcon(QPixmap::fromImage(ColorizeImage(filename, colorbase)));
64 bool _colorizeIcons,
bool _useExtraSpacing)
67 singleColor(0, 0, 0), textColor(0, 0, 0) {
70 const QColor colorHighlightBg(
71 QApplication::palette().color(QPalette::Highlight));
72 const QColor colorHighlightFg(
73 QApplication::palette().color(QPalette::HighlightedText));
74 const QColor colorText(
75 QApplication::palette().color(QPalette::WindowText));
76 const int colorTextLightness = colorText.lightness();
78 if (abs(colorHighlightBg.lightness() - colorTextLightness) <
79 abs(colorHighlightFg.lightness() - colorTextLightness)) {
80 colorbase = colorHighlightBg;
82 colorbase = colorHighlightFg;
87 textColor = QColor(QApplication::palette().color(QPalette::WindowText));
92 return QImage(filename);
99 return QIcon(filename);