mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 12:35:14 +00:00
LibGfx: Correctly handle source rect offset in draw_scaled_bitmap
The do_draw_integer_scaled_bitmap() fastpath already handled this correctly, but the arbitrary scale path did not.
This commit is contained in:
parent
d5f403663b
commit
6a78e7e6a8
Notes:
sideshowbarker
2024-07-18 23:00:53 +09:00
Author: https://github.com/nico Commit: https://github.com/SerenityOS/serenity/commit/6a78e7e6a8a Pull-request: https://github.com/SerenityOS/serenity/pull/5041
2 changed files with 3 additions and 1 deletions
|
@ -100,6 +100,8 @@ void Canvas::draw(Gfx::Painter& painter)
|
|||
|
||||
auto buggie = Gfx::Bitmap::load_from_file("/res/graphics/buggie.png");
|
||||
painter.blit({ 25, 39 }, *buggie, { 2, 30, 62, 20 });
|
||||
painter.draw_scaled_bitmap({ 88, 39, 62 * 2, 20 * 2 }, *buggie, { 2, 30, 62, 20 });
|
||||
painter.draw_scaled_bitmap({ 202, 39, 80, 40 }, *buggie, { 2, 30, 62, 20 });
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
|
|
|
@ -843,7 +843,7 @@ ALWAYS_INLINE static void do_draw_scaled_bitmap(Gfx::Bitmap& target, const IntRe
|
|||
for (int x = clipped_rect.left(); x <= clipped_rect.right(); ++x) {
|
||||
auto scaled_x = ((x - dst_rect.x()) * hscale) >> 16;
|
||||
auto scaled_y = ((y - dst_rect.y()) * vscale) >> 16;
|
||||
auto src_pixel = get_pixel(source, scaled_x, scaled_y);
|
||||
auto src_pixel = get_pixel(source, scaled_x + src_rect.left(), scaled_y + src_rect.top());
|
||||
if (has_opacity)
|
||||
src_pixel.set_alpha(src_pixel.alpha() * opacity);
|
||||
if constexpr (has_alpha_channel) {
|
||||
|
|
Loading…
Add table
Reference in a new issue