private static QImage makeShade(QImage image, boolean highlight, boolean darker) { double shade_alpha = 0.8; double shade_size = 0.2; double hl_pos = GOLDEN_MEAN; QColor shade_color = QColor.fromRgbF(0, 0, 0, shade_alpha); QColor transparent = darker ? QColor.fromRgbF(0, 0, 0, 0.25) : QColor.fromRgbF(0, 0, 0, 0); QColor hl_color = QColor.fromRgbF(1, 1, 1, 0.7); image = image.copy(); QPainter p = new QPainter(); p.begin(image); p.scale(image.width(), image.height()); QLinearGradient lg = new QLinearGradient(0, 0, 1, 0); lg.setColorAt(0, shade_color); lg.setColorAt(shade_size, transparent); if (highlight) lg.setColorAt(hl_pos, hl_color); lg.setColorAt(1 - shade_size, transparent); lg.setColorAt(1, shade_color); p.fillRect(0, 0, 1, 1, new QBrush(lg)); if (highlight) { QRadialGradient rg = new QRadialGradient(hl_pos, 1 - hl_pos, 0.4, hl_pos, 1 - hl_pos); rg.setColorAt(0, hl_color); rg.setColorAt(1, transparent); p.fillRect(0, 0, 1, 1, new QBrush(rg)); } p.end(); return image; }