Files
Aerofoil/PortabilityLayer/MenuManager.h

50 lines
1.6 KiB
C
Raw Normal View History

2019-12-21 18:40:17 -05:00
#pragma once
2020-01-05 02:33:03 -05:00
#include <stdint.h>
template<class T>
class THandle;
2020-01-05 02:33:03 -05:00
class PLPasStr;
struct IGpDisplayDriver;
2019-12-24 02:35:24 -05:00
struct Menu;
2019-12-21 18:40:17 -05:00
namespace PortabilityLayer
{
struct Vec2i;
2019-12-21 18:40:17 -05:00
class MenuManager
{
public:
2019-12-24 02:35:24 -05:00
virtual void Init() = 0;
virtual void Shutdown() = 0;
virtual THandle<Menu> DeserializeMenu(const void *resData) const = 0;
virtual THandle<Menu> GetMenuByID(int id) const = 0;
virtual void InsertMenuBefore(const THandle<Menu> &insertingMenu, const THandle<Menu> &existingMenu) = 0;
virtual void InsertMenuAfter(const THandle<Menu> &insertingMenu, const THandle<Menu> &existingMenu) = 0;
virtual void InsertMenuAtEnd(const THandle<Menu> &insertingMenu) = 0;
virtual void InsertMenuAtBeginning(const THandle<Menu> &insertingMenu) = 0;
virtual void RemoveMenu(const THandle<Menu> &menu) = 0;
virtual void SetMenuEnabled(const THandle<Menu> &menuHandle, bool enabled) = 0;
virtual void SetItemEnabled(const THandle<Menu> &menu, unsigned int index, bool enabled) = 0;
virtual void SetItemChecked(const THandle<Menu> &menu, unsigned int index, bool checked) = 0;
2020-01-05 02:33:03 -05:00
virtual bool SetItemText(const THandle<Menu> &menu, unsigned int index, const PLPasStr &str) = 0;
2019-12-21 18:40:17 -05:00
virtual bool IsPointInMenuBar(const Vec2i &point) const = 0;
virtual bool FindMenuShortcut(uint16_t &menuID, uint16_t &itemID, uint8_t shortcutChar) = 0;
virtual void MenuSelect(const Vec2i &initialPoint, int16_t *outMenu, uint16_t *outItem) = 0;
2019-12-24 02:35:24 -05:00
virtual void DrawMenuBar() = 0;
2019-12-27 00:30:31 -05:00
virtual void SetMenuVisible(bool isVisible) = 0;
2019-12-24 02:35:24 -05:00
virtual void RenderFrame(IGpDisplayDriver *displayDriver) = 0;
2019-12-21 18:40:17 -05:00
static MenuManager *GetInstance();
};
}