GIcon.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include <AK/HashMap.h>
  3. #include <LibDraw/GraphicsBitmap.h>
  4. class GIconImpl : public RefCounted<GIconImpl> {
  5. public:
  6. static NonnullRefPtr<GIconImpl> create() { return adopt(*new GIconImpl); }
  7. ~GIconImpl() {}
  8. const GraphicsBitmap* bitmap_for_size(int) const;
  9. void set_bitmap_for_size(int, RefPtr<GraphicsBitmap>&&);
  10. private:
  11. GIconImpl() {}
  12. HashMap<int, RefPtr<GraphicsBitmap>> m_bitmaps;
  13. };
  14. class GIcon {
  15. public:
  16. GIcon();
  17. explicit GIcon(RefPtr<GraphicsBitmap>&&);
  18. explicit GIcon(RefPtr<GraphicsBitmap>&&, RefPtr<GraphicsBitmap>&&);
  19. explicit GIcon(const GIconImpl&);
  20. GIcon(const GIcon&);
  21. ~GIcon() {}
  22. static GIcon default_icon(const StringView&);
  23. GIcon& operator=(const GIcon& other)
  24. {
  25. if (this != &other)
  26. m_impl = other.m_impl;
  27. return *this;
  28. }
  29. const GraphicsBitmap* bitmap_for_size(int size) const { return m_impl->bitmap_for_size(size); }
  30. void set_bitmap_for_size(int size, RefPtr<GraphicsBitmap>&& bitmap) { m_impl->set_bitmap_for_size(size, move(bitmap)); }
  31. const GIconImpl& impl() const { return *m_impl; }
  32. private:
  33. NonnullRefPtr<GIconImpl> m_impl;
  34. };