summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGfx/Bitmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibGfx/Bitmap.h')
-rw-r--r--Userland/Libraries/LibGfx/Bitmap.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGfx/Bitmap.h b/Userland/Libraries/LibGfx/Bitmap.h
index 4d0b236f57..c816bed9a9 100644
--- a/Userland/Libraries/LibGfx/Bitmap.h
+++ b/Userland/Libraries/LibGfx/Bitmap.h
@@ -88,11 +88,17 @@ enum RotationDirection {
class Bitmap : public RefCounted<Bitmap> {
public:
+ enum class ShouldCloseAnonymousFile {
+ No,
+ Yes,
+ };
+
static RefPtr<Bitmap> create(BitmapFormat, const IntSize&);
static RefPtr<Bitmap> create_shareable(BitmapFormat, const IntSize&);
static RefPtr<Bitmap> create_purgeable(BitmapFormat, const IntSize&);
static RefPtr<Bitmap> create_wrapper(BitmapFormat, const IntSize&, size_t pitch, void*);
static RefPtr<Bitmap> load_from_file(const StringView& path);
+ static RefPtr<Bitmap> create_with_anon_fd(BitmapFormat, int anon_fd, const IntSize&, ShouldCloseAnonymousFile);
static RefPtr<Bitmap> create_with_shared_buffer(BitmapFormat, NonnullRefPtr<SharedBuffer>&&, const IntSize&);
static RefPtr<Bitmap> create_with_shared_buffer(BitmapFormat, NonnullRefPtr<SharedBuffer>&&, const IntSize&, const Vector<RGBA32>& palette);
static RefPtr<Bitmap> create_from_serialized_byte_buffer(ByteBuffer&& buffer);
@@ -224,6 +230,8 @@ public:
void set_volatile();
[[nodiscard]] bool set_nonvolatile();
+ int anon_fd() const { return m_anon_fd; }
+
private:
enum class Purgeable {
No,
@@ -232,6 +240,7 @@ private:
Bitmap(BitmapFormat, const IntSize&, Purgeable, const BackingStore&);
Bitmap(BitmapFormat, const IntSize&, size_t pitch, void*);
Bitmap(BitmapFormat, NonnullRefPtr<SharedBuffer>&&, const IntSize&, const Vector<RGBA32>& palette);
+ Bitmap(BitmapFormat, int anon_fd, const IntSize&, void*);
static Optional<BackingStore> allocate_backing_store(BitmapFormat, const IntSize&, Purgeable);
@@ -246,6 +255,7 @@ private:
bool m_purgeable { false };
bool m_volatile { false };
RefPtr<SharedBuffer> m_shared_buffer;
+ int m_anon_fd { -1 };
};
inline u8* Bitmap::scanline_u8(int y)