2019-04-10 01:13:31 +08:00
|
|
|
|
#ifndef HGL_GRAPH_WINDOW_INCLUDE
|
|
|
|
|
#define HGL_GRAPH_WINDOW_INCLUDE
|
|
|
|
|
|
|
|
|
|
#include<hgl/type/BaseString.h>
|
2019-04-30 19:01:44 +08:00
|
|
|
|
#include<hgl/platform/InputDevice.h>
|
2019-04-10 01:13:31 +08:00
|
|
|
|
namespace hgl
|
|
|
|
|
{
|
2019-04-30 19:01:44 +08:00
|
|
|
|
class Window
|
2019-04-10 01:13:31 +08:00
|
|
|
|
{
|
2019-04-30 19:01:44 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
uint width,height;
|
|
|
|
|
bool full_screen;
|
|
|
|
|
|
|
|
|
|
OSString win_name;
|
|
|
|
|
|
|
|
|
|
bool active;
|
|
|
|
|
bool is_close;
|
|
|
|
|
|
|
|
|
|
bool key_push[kbRangeSize];
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
uint GetWidth()const{return width;}
|
|
|
|
|
uint GetHeight()const{return height;}
|
|
|
|
|
|
|
|
|
|
public:
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
virtual void OnMouseMove (int,int){}
|
|
|
|
|
virtual void OnMouseWheel (int,int, int){}
|
|
|
|
|
virtual void OnMouseDown (int,int,uint){}
|
|
|
|
|
virtual void OnMouseUp (int,int,uint){}
|
|
|
|
|
virtual void OnMouseDoubleClick (int,int,uint){}
|
|
|
|
|
|
|
|
|
|
//virtual void OnJoystickDown (uint){}
|
|
|
|
|
//virtual void OnJoystickPress (uint){}
|
|
|
|
|
//virtual void OnJoystickUp (uint){}
|
|
|
|
|
|
|
|
|
|
virtual void OnKeyDown (KeyboardButton);
|
|
|
|
|
virtual void OnKeyPress (KeyboardButton){}
|
|
|
|
|
virtual void OnKeyUp (KeyboardButton);
|
|
|
|
|
|
|
|
|
|
virtual void OnChar (os_char){}
|
|
|
|
|
|
|
|
|
|
virtual void OnResize (int w,int h){width=w;height=h;}
|
|
|
|
|
|
|
|
|
|
virtual void OnActive (bool a){active=a;}
|
|
|
|
|
virtual void OnClose (){is_close=true;}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
Window(const OSString &wn)
|
|
|
|
|
{
|
|
|
|
|
width=height=0;
|
|
|
|
|
win_name=wn;
|
|
|
|
|
active=false;
|
|
|
|
|
is_close=true;
|
|
|
|
|
hgl_zero(key_push);
|
|
|
|
|
}
|
|
|
|
|
virtual ~Window()=default;
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
virtual bool Create(uint,uint)=0;
|
|
|
|
|
virtual bool Create(uint,uint,uint)=0;
|
|
|
|
|
virtual void Close()=0;
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
bool IsClose()const{return is_close;}
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
virtual void SetCaption(const OSString &)=0;
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
virtual void Show()=0;
|
|
|
|
|
virtual void Hide()=0;
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
virtual void ToMinWindow(){}
|
|
|
|
|
virtual void ToMaxWindow(){}
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
virtual void SetSystemCursor(bool){}
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
virtual bool MessageProc()=0;
|
|
|
|
|
};//class Window
|
2019-04-10 01:13:31 +08:00
|
|
|
|
|
2019-04-30 19:01:44 +08:00
|
|
|
|
Window *CreateRenderWindow(const OSString &win_name);
|
|
|
|
|
|
|
|
|
|
void InitNativeWindowSystem();
|
2019-04-10 01:13:31 +08:00
|
|
|
|
}//namespace hgl
|
|
|
|
|
#endif//HGL_GRAPH_WINDOW_INCLUDE
|