ImmutableBitmap.h 926 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (c) 2023, Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Forward.h>
  8. #include <AK/RefCounted.h>
  9. #include <LibGfx/Bitmap.h>
  10. #include <LibGfx/Forward.h>
  11. #include <LibGfx/Rect.h>
  12. namespace Gfx {
  13. class ImmutableBitmap final : public RefCounted<ImmutableBitmap> {
  14. public:
  15. static NonnullRefPtr<ImmutableBitmap> create(NonnullRefPtr<Bitmap> bitmap);
  16. ~ImmutableBitmap() = default;
  17. Bitmap const& bitmap() const { return *m_bitmap; }
  18. size_t width() const { return m_bitmap->width(); }
  19. size_t height() const { return m_bitmap->height(); }
  20. IntRect rect() const { return m_bitmap->rect(); }
  21. IntSize size() const { return m_bitmap->size(); }
  22. size_t id() const { return m_id; }
  23. private:
  24. NonnullRefPtr<Bitmap> m_bitmap;
  25. size_t m_id;
  26. explicit ImmutableBitmap(NonnullRefPtr<Bitmap> bitmap);
  27. };
  28. }