|
|
typedef UINT GUIPARAM;
typedef INT GUIRESULT;
// Input interface~~
//#define USE_RENDER_TARGET
class IGuiTexture
{
public:
virtual ~IGuiTexture(){} = 0;
virtual int GetWidth() = 0;
virtual int GetHeight() = 0;
};
#ifdef USE_RENDER_TARGET
class IGuiTarget
{
public:
virtual ~IGuiTarget(){} = 0;
virtual int GetWidth() = 0;
virtual int GetHeight() = 0;
IGuiTexture * GetTexture() = 0;
};
#endif
class IGuiFont
{
public:
virtual ~IGuiFont(){} = 0;
virtual int GetTextLength( const char * pszText, int nLength = 0 ) = 0;
virtual int GetTextHeight( const char * pszText, int nLength = 0 ) = 0;
virtual void GetTextSize( const char * pszText, int nLength, LPSIZE * lpSize ) = 0;
};
class IGuiRenderer
{
public:
virtual ~IGuiRenderer(){} = 0;
virtual void RenderTexture( IGuiTexture * pTexture, int x, int y, DWORD dwColor = 0xffffffff ) = 0;
virtual void RenderText( int x, int y, const char * pszText, int nLength = 0, DWORD dwColor = 0xffffffff, IGuiFont * pFont = NULL ) = 0;
virtual IGuiFont * GetDefaultFont() = 0;
#ifdef USE_RENDER_TARGET
virtual IGuiTarget * CreateTarget( int nWidth, int nHeight, bool bzbuffer ) = 0;
virtual void ReleaseTarget( IGuiTarget * pTarget ) = 0;
virtual void SetRenderTarget( IGuiTarget * pTarget ) = 0;
#endif
};
class IGuiInputDevice
{
public:
virtual ~IGuiInputDevice(){} = 0;
virtual void GetMousePos( POINT * pPtMouse ) = 0;
virtual bool IsKeyDown( UINT nKey ) = 0;
};
class IGuiResourceManager
{
public:
virtual IGuiFont * GetFont( const char * pszName ) = 0;
virtual IGuiTexture * GetTexture( const char * pszName ) = 0;
};
// output interface~~~~
enum gui_event
{
GE_MOUSEMOVE,
GE_MOUSEWHEEL,
GE_KEYDOWN,
GE_KEYUP,
};
enum gui_keyvalue
{
};
class IGuiObject;
typedef VOID (*XGUI_EVENT)( IGuiObject * pObject, GUIPARAM nParam1, GUIPARAM nParam2 );
typedef GUIRESULT (*XGUI_CALLBACK)( IGuiObject * pObject, GUIPARAM nParam1, GUIPARAM nParam2 );
class IGuiPropertys
{
public:
virtual int GetInteger( const char * pszName, int Def = 0 ) = 0;
virtual float GetFloat( const char * pszName, float Def = 0.0f ) = 0;
virtual const char * GetString( const char * pszName, const char * Def = "" ) = 0;
virtual XGUI_EVENT GetEvent( const char * pszName ) = 0;
virtual XGUI_CALLBACK GetCallBack( const char * pszName ) = 0;
};
class IGuiObject
{
public:
virtual ~IGuiObject(){} = 0;
virtual BOOL Create( IGuiPropertys * pProperty ) = 0;
virtual VOID Release() = 0;
virtual void Render() = 0;
virtual void Update() = 0;
virtual void OnInputEvent( UINT nEvent, GUIPARAM nParam1, GUIPARAM nParam2 ) = 0;
virtual BOOL AddChild( IGuiObject * pChild ) = 0;
virtual VOID RemoveChild( IGuiObject * pChild ) = 0;
virtual const char * GetName() = 0;
};
class IGuiObjectFactory
{
public:
virtual IGuiObject * NewGuiObject() = 0;
virtual void DeleteGuiObject( IGuiObject * pObject ) = 0;
};
class IGuiRoot
{
public:
virtual ~IGuiRoot(){} = 0;
virtual void Render() = 0;
virtual void Update() = 0;
virtual void OnInputEvent( UINT nEvent, GUIPARAM nParam1, GUIPARAM nParam2 ) = 0;
virtual IGuiObject * GetGuiObject( const char * pszPath ) = 0;
virtual void AddGuiObject( const char * pszPath, IGuiObject * pObject ) = 0;
virtual void RemoveGuiObject( const char * pszPath ) = 0;
virtual IGuiRenderer * GetRenderer() = 0;
virtual IGuiInputDevice * GetInputDevice() = 0;
virtual IGuiResourceManager * GetResourceManager() = 0;
//virtual IGuiObject * NewGuiObject( const char * pszName ) = 0;
//virtual VOID DeleteGuiObject( IGuiObject * pObject ) = 0;
};
//typedef IGame * (*FN_QueryInterface)();
typedef IGuiRoot * (*FN_QueryRoot)( IGuiRenderer * pRenderer, IGuiInputDevice * pInputDevice, IGuiResourceManager * pResourceManager );
typedef void (*FN_ReleaseRoot)( IGuiRoot * pRoot );
typedef IGuiObjectFactory * (*FN_QueryFactory)( const char * pszName, IGuiRoot * pRoot );
typedef void (*FN_ReleaseFactory)( IGuiObjectFactory * pFactory );
#define XGUI_API extern "C" __declspec(dllexport)
|
|