ISXMr/libs/isxdk/include/ISUI/LGUIManager.h

176 lines
5.0 KiB
C++

#pragma once
#include "LGUI.h"
struct _UISettings
{
unsigned int AutoTooltipTime;
unsigned int DoubleClickTime;
unsigned int TypematicRate;
unsigned int TypematicDelay;
};
class LGUISkin
{
public:
LGUISkin(const char *p_Name);
~LGUISkin();
LGUI_API bool FromXML(class XMLNode *pXML, class XMLNode *pTemplate=0);
LGUI_API void AddTemplate(const char *BaseTemplate, const char *SkinTemplate);
LGUI_API void RemoveTemplate(const char *BaseTemplate);
char *Name;
map<utf8stringnocase,char *> Templates;
};
class MetadataStore
{
public:
const char *Get(const char *key);
bool Set(const char *key, const char *value);
bool Unset(const char *key);
map<utf8stringnocase,std::string> m_Metadata;
};
class CUIManager
{
public:
CUIManager(void);
~CUIManager(void);
virtual void Initialize();
virtual void Shutdown();
virtual unsigned int GetVersion();
virtual void DisableMouse();
LGUI_API void Reset();
LGUI_API bool LoadInterfaceXML(const char *Filename, bool Reload = false, LGUISkin *pSkin = 0);
LGUI_API bool LoadInterfaceXML(const char *Filename, const char *Element, const char *NewName, bool Reload = false, LGUISkin *pSkin = 0);
LGUI_API bool LoadInterfaceXML(LGUIElement *pParent, const char *Filename, bool Reload = false, LGUISkin *pSkin = 0);
LGUI_API bool LoadInterfaceXML(LGUIElement *pParent, const char *Filename, const char *Element, const char *NewName, bool Reload = false, LGUISkin *pSkin = 0);
LGUI_API bool UnloadInterfaceXML(const char *Filename);
LGUI_API bool OnLMouseUp();
LGUI_API bool OnLMouseDown();
LGUI_API bool OnRMouseUp();
LGUI_API bool OnRMouseDown();
LGUI_API bool OnMouseMove(POINT2I &pt);
LGUI_API bool OnMouseWheel(int Offset);
LGUI_API bool OnKeyUp(unsigned int VKey);
LGUI_API bool OnKeyDown(unsigned int VKey);
LGUI_API void SetFocusElement(class LGUIElement *pElement);
inline class LGUIElement *GetElementByID(unsigned int ID)
{
map<unsigned int,class LGUIElement *>::iterator i=AllElements.find(ID);
if (i==AllElements.end())
return 0;
return i->second;
}
LGUI_API class LGUIElement *GetFocusElement();
LGUI_API class LGUIElement *SetFocusElement();
LGUI_API class LGUIElement *GetMouseOverElement();
LGUI_API class LGUIElement *SetMouseOverElement();
LGUI_API bool ShowElement(const char *Name, bool Show);
LGUI_API bool ToggleElement(const char *Name);
LGUI_API void Render();
LGUI_API class LGUIElementFactory *FindFactory(const char *Type);
LGUI_API class LGUIElement *FindElement(const char *Name);
unsigned int LoadTexture(const char *Filename, unsigned int ColorKey);
LGUI_API bool GetTextureSize(unsigned int ID, POINT2I &pt);
void ReleaseTexture(unsigned int ID);
unsigned int LoadFont(const char *Face, unsigned char Height, bool Fixed, bool Bold=0);
void ReleaseFont(unsigned int ID);
// LGUI_API unsigned int DrawText(const char *Text,int p_X, int p_Y,unsigned int Color,unsigned int FontHeight);
unsigned int FocusID;
unsigned int MouseOverID;
unsigned int LockMouseOverIDLeft;
unsigned int LockMouseOverIDRight;
unsigned int MousePriorityID;
unsigned int CurrentFontID;
bool bShift;
bool bAlt;
bool bCtrl;
char LeftMouse;
char RightMouse;
POINT2I MousePos;
unsigned char KeyboardState[256];
map<utf8stringnocase,class LGUIElement *> AllElementsByName;
map<unsigned int,class LGUIElement *> AllElements;
class LGUIElement *pScreen;
map<utf8stringnocase,class LGUIElementFactory *> ElementFactories;
unsigned int NextID;
CSemaphore S;
LGUI_API class XMLNode *AddTemplate(const char *Name, const char *XML);
LGUI_API class XMLNode *AddTemplate(const char *Name, class XMLNode *pXML);
LGUI_API void RemoveTemplate(const char *Name);
LGUI_API class XMLNode *FindTemplate(const char *Name);
LGUI_API void ClearTemplates();
map<utf8stringnocase,class XMLNode *> Templates;
map<utf8stringnocase,LGUISkin *> Skins;
LGUI_API LGUISkin *NewSkin(const char *Name);
LGUI_API LGUISkin *FindSkin(const char *Name);
LGUI_API void RemoveSkin(const char *Name);
LGUISkin *pCurrentSkin;
char OuterTag[64];
char CurrentXMLFile[512];
bool bShutdown;
unsigned int MouseOverTime;
unsigned int LastActionTime;
POINT2I LastClickPos;
unsigned int LastLeftClickTime;
unsigned int LastLeftClickID;
unsigned int LastRightClickTime;
unsigned int LastRightClickID;
unsigned int RenderTime;
unsigned int AutoTooltipShownID;
_UISettings Settings;
bool bZOrderChanged;
map<unsigned int,unsigned char> KeyboardStateEx;
unsigned int PersistentClass;
void OnDeleteElement(class LGUIElement *pElement);
const char *GetMetadata(unsigned int elementid, const char *key);
bool SetMetadata(unsigned int elementid, const char *key, const char *value);
bool UnsetMetadata(unsigned int elementid, const char *key);
map<unsigned int,MetadataStore *> m_MetadataStores;
//protected:
LGUI_API LGUIElement *LoadElement(class LGUIElement *pParent, const char *Type, const char *Name, class XMLNode *pXML, const char *Template = 0);
LGUI_API LGUIElement *LoadElement(class LGUIElement *pParent, const char *Type, const char *Name);
};
extern LGUI_API CUIManager g_UIManager;