item_view.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*******************************************************************************************
  2. *
  3. * raylib-extras [ImGui] example - asset browser
  4. *
  5. * This is a more complex ImGui Integration
  6. * It shows how to build windows on top of 2d and 3d views using a render texture
  7. *
  8. * Copyright (c) 2024 Jeffery Myers
  9. *
  10. ********************************************************************************************/
  11. #pragma once
  12. #include <string>
  13. #include "raylib.h"
  14. class ViewableItem
  15. {
  16. public:
  17. virtual ~ViewableItem() = default;
  18. std::string Name;
  19. std::string Icon;
  20. Color Tint = BLANK;
  21. };
  22. class ViewableItemContainer
  23. {
  24. public:
  25. virtual ~ViewableItemContainer() = default;
  26. virtual ViewableItem* Reset() = 0;
  27. virtual size_t Count() = 0;
  28. virtual ViewableItem* Next() = 0;
  29. };
  30. class ItemView
  31. {
  32. public:
  33. virtual ~ItemView() = default;
  34. virtual ViewableItem* Show(ViewableItemContainer& container) = 0;
  35. };
  36. class ListItemView : public ItemView
  37. {
  38. public:
  39. ViewableItem* Show(ViewableItemContainer& container) override;
  40. };