LibGfx: add Bitmap::clone() method

This commit is contained in:
Peter Nelson 2020-09-12 12:20:34 +01:00 committed by Andreas Kling
parent f470657d57
commit 16ebbde26f
Notes: sideshowbarker 2024-07-19 02:43:11 +09:00
2 changed files with 21 additions and 0 deletions

View file

@ -182,6 +182,25 @@ Bitmap::Bitmap(BitmapFormat format, NonnullRefPtr<SharedBuffer>&& shared_buffer,
allocate_palette_from_format(m_format, palette);
}
RefPtr<Gfx::Bitmap> Bitmap::clone() const
{
RefPtr<Gfx::Bitmap> new_bitmap {};
if (m_purgeable) {
new_bitmap = Bitmap::create_purgeable(format(), size());
} else {
new_bitmap = Bitmap::create(format(), size());
}
if (!new_bitmap) {
return nullptr;
}
ASSERT(size_in_bytes() == new_bitmap->size_in_bytes());
memcpy(new_bitmap->scanline(0), scanline(0), size_in_bytes());
return new_bitmap;
}
RefPtr<Gfx::Bitmap> Bitmap::rotated(Gfx::RotationDirection rotation_direction) const
{
auto w = this->width();

View file

@ -103,6 +103,8 @@ public:
return false;
}
RefPtr<Gfx::Bitmap> clone() const;
RefPtr<Gfx::Bitmap> rotated(Gfx::RotationDirection) const;
RefPtr<Gfx::Bitmap> flipped(Gfx::Orientation) const;
RefPtr<Bitmap> to_bitmap_backed_by_shared_buffer() const;