Optimization of recolor mode

remotes/origin/work/carl/mobile-drawer-improvement
Matthias Möller 5 years ago committed by Albert Astals Cid
parent 3c1fa441d9
commit d605e913c4
  1. 37
      ui/pagepainter.cpp

@ -705,13 +705,22 @@ void PagePainter::recolor(QImage *image, const QColor &foreground, const QColor
const float scaleGreen = background.greenF() - foreground.greenF();
const float scaleBlue = background.blueF() - foreground.blueF();
for (int y = 0; y < image->height(); y++) {
QRgb *pixels = reinterpret_cast<QRgb *>(image->scanLine(y));
const int foreground_red = foreground.red();
const int foreground_green = foreground.green();
const int foreground_blue = foreground.blue();
for (int x = 0; x < image->width(); x++) {
const int lightness = qGray(pixels[x]);
pixels[x] = qRgba(scaleRed * lightness + foreground.red(), scaleGreen * lightness + foreground.green(), scaleBlue * lightness + foreground.blue(), qAlpha(pixels[x]));
}
QRgb *data = reinterpret_cast<QRgb *>(image->bits());
const int pixels = image->width() * image->height();
for (int i = 0; i < pixels; ++i) {
const int lightness = qGray(data[i]);
const float r = scaleRed * lightness + foreground_red;
const float g = scaleGreen * lightness + foreground_green;
const float b = scaleBlue * lightness + foreground_blue;
const unsigned a = qAlpha(data[i]);
data[i] = qRgba(r, g, b, a);
}
}
@ -735,7 +744,9 @@ void PagePainter::blackWhite(QImage *image, int contrast, int threshold)
val = thr + (val - thr) * con / 2;
val = qBound(0, val, 255);
}
data[i] = qRgba(val, val, val, 255);
const unsigned a = qAlpha(data[i]);
data[i] = qRgba(val, val, val, a);
}
}
@ -780,7 +791,8 @@ void PagePainter::invertLightness(QImage *image)
B += m_;
// Save new color
data[i] = qRgba(R, G, B, 255);
const unsigned A = qAlpha(data[i]);
data[i] = qRgba(R, G, B, A);
}
}
@ -803,7 +815,8 @@ void PagePainter::invertLuma(QImage *image, float Y_R, float Y_G, float Y_B)
invertLumaPixel(R, G, B, Y_R, Y_G, Y_B);
// Save new color
data[i] = qRgba(R, G, B, 255);
const unsigned A = qAlpha(data[i]);
data[i] = qRgba(R, G, B, A);
}
}
@ -908,7 +921,8 @@ void PagePainter::hueShiftPositive(QImage *image)
uchar B = qBlue(data[i]);
// Save new color
data[i] = qRgba(B, R, G, 255);
const unsigned A = qAlpha(data[i]);
data[i] = qRgba(B, R, G, A);
}
}
@ -929,7 +943,8 @@ void PagePainter::hueShiftNegative(QImage *image)
uchar B = qBlue(data[i]);
// Save new color
data[i] = qRgba(G, B, R, 255);
const unsigned A = qAlpha(data[i]);
data[i] = qRgba(G, B, R, A);
}
}

Loading…
Cancel
Save