diff --git a/Userland/Libraries/LibGfx/Bitmap.cpp b/Userland/Libraries/LibGfx/Bitmap.cpp index 724d211618..5a98512c8a 100644 --- a/Userland/Libraries/LibGfx/Bitmap.cpp +++ b/Userland/Libraries/LibGfx/Bitmap.cpp @@ -582,4 +582,22 @@ Vector Bitmap::palette_to_vector() const vector.unchecked_append(palette_color(i).value()); return vector; } + +bool Bitmap::visually_equals(Bitmap const& other) const +{ + auto own_width = width(); + auto own_height = height(); + if (other.width() != own_width || other.height() != own_height) + return false; + + for (auto y = 0; y < own_height; ++y) { + for (auto x = 0; x < own_width; ++x) { + if (get_pixel(x, y) != other.get_pixel(x, y)) + return false; + } + } + + return true; +} + } diff --git a/Userland/Libraries/LibGfx/Bitmap.h b/Userland/Libraries/LibGfx/Bitmap.h index 83cbcd979d..89b3130acc 100644 --- a/Userland/Libraries/LibGfx/Bitmap.h +++ b/Userland/Libraries/LibGfx/Bitmap.h @@ -236,6 +236,8 @@ public: [[nodiscard]] Core::AnonymousBuffer& anonymous_buffer() { return m_buffer; } [[nodiscard]] Core::AnonymousBuffer const& anonymous_buffer() const { return m_buffer; } + [[nodiscard]] bool visually_equals(Bitmap const&) const; + private: Bitmap(BitmapFormat, IntSize const&, int, BackingStore const&); Bitmap(BitmapFormat, IntSize const&, int, size_t pitch, void*);