first commit

This commit is contained in:
2019-08-23 10:54:57 +08:00
parent 9790a5757c
commit f768bbec4b
65 changed files with 5551 additions and 0 deletions

View File

@@ -0,0 +1,207 @@
#ifndef HGL_INPUT_DEVICE_INCLUDE
#define HGL_INPUT_DEVICE_INCLUDE
namespace hgl
{
/**
* 鼠标状态枚举定义
*/
enum MouseButton
{
mbMove =0x00000001, ///<鼠标移动了
mbLeft =0x00000002, ///<鼠标左键处于按下状态
mbMid =0x00000004, ///<鼠标中键处于按下状态
mbRight =0x00000008, ///<鼠标右键处于按下状态
mbX1 =0x00000010,
mbX2 =0x00000020,
mbShift =0x10000000, ///<Shift键处于按下状态
mbCtrl =0x20000000, ///<Ctrl键处于按下状态
};
/**
* 按键枚举定义
*/
enum KeyboardButton
{
kbBeginRange=0,
//主键盘区
kbEsc, ///<ESC
//F功能键
kbF1, ///<F1
kbF2, ///<F2
kbF3, ///<F3
kbF4, ///<F4
kbF5, ///<F5
kbF6, ///<F6
kbF7, ///<F7
kbF8, ///<F8
kbF9, ///<F9
kbF10, ///<F10
kbF11, ///<F11
kbF12, ///<F12
kbGrave, //<`号(主键盘数字键1左边的按钮)
//10个数字
kb0, ///<数字键0
kb1, ///<数字键1
kb2, ///<数字键2
kb3, ///<数字键3
kb4, ///<数字键4
kb5, ///<数字键5
kb6, ///<数字键6
kb7, ///<数字键7
kb8, ///<数字键8
kb9, ///<数字键9
kbMinus, ///< - (减号)
kbEquals, ///< = (等号)
kbBackSlash, ///< \ (反斜杠)
kbBackSpace, ///< 退格键
kbTab, ///<Tab键
kbA, ///<A
kbB, ///<B
kbC, ///<C
kbD, ///<D
kbE, ///<E
kbF, ///<F
kbG, ///<G
kbH, ///<H
kbI, ///<I
kbJ, ///<J
kbK, ///<K
kbL, ///<L
kbM, ///<M
kbN, ///<N
kbO, ///<O
kbP, ///<P
kbQ, ///<Q
kbR, ///<R
kbS, ///<S
kbT, ///<T
kbU, ///<U
kbV, ///<V
kbW, ///<W
kbX, ///<X
kbY, ///<Y
kbZ, ///<Z
kbLeftBracket, ///<[
kbRightBracket, ///<]
kbCapsLock, ///<大写锁定键
kbSemicolon, ///<; (分号)
kbApostrophe, ///<' (单引号)
kbEnter, ///<回车键
kbLeftShift, ///<左边的Shift键
kbComma, ///<, (逗号)
kbPeriod, ///<. (句号)
kbSlash, ///</ (除号)
kbRightShift, ///<右边的Shift键
kbLeftCtrl, ///<左边的Ctrl键
kbLeftOS, ///<左边的OS键(Win/Apple键)
kbLeftAlt, ///<左边的Alt键
kbSpace, ///<空格键
kbRightAlt, ///<右边的Alt键
kbRightOS, ///<右边的OS键(Win/Apple键)
kbRightMenu, ///<右边的Menu键
kbRightCtrl, ///<右边的Ctrl键
//中键盘区
kbPrintScreen, ///<打印屏幕键
kbScrollLock, ///<滚动锁定键
kbPause, ///<暂停键
kbInsert, ///<插入键
kbDelete, ///<删除键
kbHome, ///<行首键
kbEnd, ///<行尾键
kbPageUp, ///<向前翻页键
kbPageDown, ///<向后翻页键
kbUp, ///<↑光标键
kbDown, ///<↓光标键
kbLeft, ///<←光标键
kbRight, ///<→光标键
//小键盘区
kbNumLock, ///<小键盘 数字锁定键
kbNumAdd, ///<小键盘 +
kbNumSubtract, ///<小键盘 -
kbNumMultiply, ///<小键盘 *
kbNumDivide, ///<小键盘 /
kbNum0, ///<小键盘 0
kbNum1, ///<小键盘 1
kbNum2, ///<小键盘 2
kbNum3, ///<小键盘 3
kbNum4, ///<小键盘 4
kbNum5, ///<小键盘 5
kbNum6, ///<小键盘 6
kbNum7, ///<小键盘 7
kbNum8, ///<小键盘 8
kbNum9, ///<小键盘 9
kbNumDecimal, ///<小键盘 . (小数点/删除键)
kbNumEnter, ///<小键盘 回车键
kbEndRange,
kbRangeSize=kbEndRange-kbBeginRange+1
};//enum KeyboardButton
/**
* 手柄按键枚举
*/
enum JoystickButton
{
jbBeginRange=0,
jbUp,
jbDown,
jbLeft,
jbRight,
jb0, jb1, jb2, jb3, jb4, jb5, jb6, jb7,
jb8, jb9, jb10, jb11, jb12, jb13, jb14, jb15,
jb16, jb17, jb18, jb19, jb20, jb21, jb22, jb23,
jb24, jb25, jb26, jb27, jb28, jb29, jb30, jb31,
jbEnd,
//DreamCast/XBOX
/* jbX=jb2,
jbY=jb3,
jbA=jb0,
jbB=jb1,
jbL=jb4,
jbR=jb5,*/
//PlayStation
jbTriangle =jb0, // 三角
jbCircle =jb1, // 圆
jbFork =jb2, // 叉
jbRectangle =jb3, // 方
jbL1 =jb6, jbL2 =jb4,
jbR1 =jb7, jbR2 =jb5,
jbSelect =jb8, jbStart =jb9,
//XBOX/XBOX360
jbXBOX, //西瓜键
jbEndRange,
jbRangeSize=jbEndRange-jbBeginRange+1
};
}//namespace hgl
#endif//HGL_INPUT_DEVICE_INCLUDE

12
inc/hgl/platform/Vulkan.h Normal file
View File

@@ -0,0 +1,12 @@
#ifndef HGL_PLATFORM_VULKAN_INCLUDE
#define HGL_PLATFORM_VULKAN_INCLUDE
#include<vulkan/vulkan.h>
namespace hgl
{
class Window;
VkSurfaceKHR CreateVulkanSurface(VkInstance,Window *);
}//namespace hgl
#endif//HGL_PLATFORM_VULKAN_INCLUDE

119
inc/hgl/platform/Window.h Normal file
View File

@@ -0,0 +1,119 @@
#ifndef HGL_GRAPH_WINDOW_INCLUDE
#define HGL_GRAPH_WINDOW_INCLUDE
#include<hgl/type/BaseString.h>
#include<hgl/platform/InputDevice.h>
namespace hgl
{
class Window
{
protected:
uint width,height;
bool full_screen;
OSString win_name;
bool active;
bool is_close;
bool is_min;
bool key_push[kbRangeSize];
protected:
virtual bool MessageProc()=0;
virtual bool WaitMessage()=0;
public:
virtual void ProcMouseMove (int x,int y) {SafeCallEvent(OnMouseMove, (x,y));}
virtual void ProcMouseWheel (int v,int h,uint mb) {SafeCallEvent(OnMouseWheel, (v,h,mb));}
virtual void ProcMouseDown (int x,int y,uint mb) {SafeCallEvent(OnMouseDown, (x,y,mb));}
virtual void ProcMouseUp (int x,int y,uint mb) {SafeCallEvent(OnMouseUp, (x,y,mb));}
virtual void ProcMouseDblClick (int x,int y,uint mb) {SafeCallEvent(OnMouseDblClick, (x,y,mb));}
//virtual void ProcJoystickDown (uint);
//virtual void ProcJoystickPress (uint);
//virtual void ProcJoystickUp (uint);
virtual void ProcKeyDown (KeyboardButton);
virtual void ProcKeyPress (KeyboardButton kb){SafeCallEvent(OnKeyPress,(kb));}
virtual void ProcKeyUp (KeyboardButton);
virtual void ProcChar (os_char ch){SafeCallEvent(OnChar,(ch));}
virtual void ProcResize (uint,uint);
virtual void ProcActive (bool);
virtual void ProcClose ();
public:
uint GetWidth()const{return width;}
uint GetHeight()const{return height;}
public:
DefEvent(void,OnMouseMove ,(int,int));
DefEvent(void,OnMouseWheel ,(int,int,uint));
DefEvent(void,OnMouseDown ,(int,int,uint));
DefEvent(void,OnMouseUp ,(int,int,uint));
DefEvent(void,OnMouseDblClick ,(int,int,uint));
//DefEvent(void,OnJoystickDown ,(uint));
//DefEvent(void,OnJoystickPress ,(uint));
//DefEvent(void,OnJoystickUp ,(uint));
DefEvent(void,OnKeyDown ,(KeyboardButton));
DefEvent(void,OnKeyPress,(KeyboardButton));
DefEvent(void,OnKeyUp ,(KeyboardButton));
DefEvent(void,OnChar ,(os_char));
DefEvent(void,OnResize ,(uint,uint));
DefEvent(void,OnActive ,(bool));
DefEvent(void,OnClose ,());
public:
Window(const OSString &wn)
{
width=height=0;
full_screen=false;
win_name=wn;
active=false;
is_close=true;
is_min=false;
hgl_zero(key_push);
}
virtual ~Window()=default;
virtual bool Create(uint,uint)=0;
virtual bool Create(uint,uint,uint)=0;
virtual void Close()=0;
bool IsMin()const{return is_min;}
bool IsClose()const{return is_close;}
bool IsVisible()const{return (!is_close)&&width&&height;}
virtual void SetCaption(const OSString &)=0;
virtual void Show()=0;
virtual void Hide()=0;
virtual void ToMinWindow()=0;
virtual void ToMaxWindow()=0;
virtual void SetSystemCursor(bool){}
virtual bool Update();
};//class Window
Window *CreateRenderWindow(const OSString &win_name);
void InitNativeWindowSystem();
}//namespace hgl
#endif//HGL_GRAPH_WINDOW_INCLUDE