diff --git a/Userland/Libraries/LibGfx/Bitmap.cpp b/Userland/Libraries/LibGfx/Bitmap.cpp index 9d3499ea15..de51a43243 100644 --- a/Userland/Libraries/LibGfx/Bitmap.cpp +++ b/Userland/Libraries/LibGfx/Bitmap.cpp @@ -362,7 +362,6 @@ ErrorOr> Bitmap::scaled(int sx, int sy) const return new_bitmap; } -// http://fourier.eng.hmc.edu/e161/lectures/resize/node3.html ErrorOr> Bitmap::scaled(float sx, float sy) const { VERIFY(sx >= 0.0f && sy >= 0.0f); @@ -371,8 +370,13 @@ ErrorOr> Bitmap::scaled(float sx, float sy) const int scaled_width = (int)ceilf(sx * (float)width()); int scaled_height = (int)ceilf(sy * (float)height()); + return scaled_to_size({ scaled_width, scaled_height }); +} - auto new_bitmap = TRY(Gfx::Bitmap::create(format(), { scaled_width, scaled_height }, scale())); +// http://fourier.eng.hmc.edu/e161/lectures/resize/node3.html +ErrorOr> Bitmap::scaled_to_size(Gfx::IntSize size) const +{ + auto new_bitmap = TRY(Gfx::Bitmap::create(format(), size, scale())); auto old_width = physical_width(); auto old_height = physical_height(); diff --git a/Userland/Libraries/LibGfx/Bitmap.h b/Userland/Libraries/LibGfx/Bitmap.h index a2ef9a508f..ae415862ca 100644 --- a/Userland/Libraries/LibGfx/Bitmap.h +++ b/Userland/Libraries/LibGfx/Bitmap.h @@ -114,6 +114,7 @@ public: ErrorOr> flipped(Gfx::Orientation) const; ErrorOr> scaled(int sx, int sy) const; ErrorOr> scaled(float sx, float sy) const; + ErrorOr> scaled_to_size(Gfx::IntSize) const; ErrorOr> cropped(Gfx::IntRect, Optional new_bitmap_format = {}) const; ErrorOr> to_bitmap_backed_by_anonymous_buffer() const; [[nodiscard]] ErrorOr serialize_to_byte_buffer() const;