1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 23:37:35 +00:00

LibGfx: Support color blending in Painter::draw_bitmap

This method is commonly used by bitmap text rendering. Adding support
for color blending enables support in the browser for text opacity using
their color property.
This commit is contained in:
Steven Schmoll 2022-02-12 20:40:43 +11:00 committed by Andreas Kling
parent 75a3be852d
commit d345a3689f

View file

@ -655,7 +655,7 @@ void Painter::draw_bitmap(IntPoint const& p, GlyphBitmap const& bitmap, Color co
for (int row = first_row; row <= last_row; ++row) {
for (int j = 0; j <= (last_column - first_column); ++j) {
if (bitmap.bit_at(j + first_column, row))
dst[j] = color.value();
dst[j] = Color::from_rgba(dst[j]).blend(color).value();
}
dst += dst_skip;
}
@ -664,8 +664,10 @@ void Painter::draw_bitmap(IntPoint const& p, GlyphBitmap const& bitmap, Color co
for (int j = 0; j <= (last_column - first_column); ++j) {
if (bitmap.bit_at((j + first_column), row)) {
for (int iy = 0; iy < scale; ++iy)
for (int ix = 0; ix < scale; ++ix)
dst[j * scale + ix + iy * dst_skip] = color.value();
for (int ix = 0; ix < scale; ++ix) {
auto pixel_index = j * scale + ix + iy * dst_skip;
dst[pixel_index] = Color::from_rgba(dst[pixel_index]).blend(color).value();
}
}
}
dst += dst_skip * scale;