mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 07:08:48 +00:00
Implicit Context and #thread_local
This commit is contained in:
+202
-40
@@ -42,24 +42,24 @@ type POINT: struct { x, y: i32 }
|
||||
type WNDPROC: proc(hwnd: HWND, msg: u32, wparam: WPARAM, lparam: LPARAM) -> LRESULT
|
||||
|
||||
type WNDCLASSEXA: struct {
|
||||
cbSize, style: u32,
|
||||
wndProc: WNDPROC,
|
||||
cbClsExtra, cbWndExtra: i32,
|
||||
hInstance: HINSTANCE,
|
||||
hIcon: HICON,
|
||||
hCursor: HCURSOR,
|
||||
hbrBackground: HBRUSH,
|
||||
menuName, className: ^u8,
|
||||
hIconSm: HICON,
|
||||
size, style: u32,
|
||||
wnd_proc: WNDPROC,
|
||||
cls_extra, wnd_extra: i32,
|
||||
instance: HINSTANCE,
|
||||
icon: HICON,
|
||||
cursor: HCURSOR,
|
||||
background: HBRUSH,
|
||||
menu_name, class_name: ^u8,
|
||||
sm: HICON,
|
||||
}
|
||||
|
||||
type MSG: struct {
|
||||
hwnd: HWND,
|
||||
hwnd: HWND,
|
||||
message: u32,
|
||||
wparam: WPARAM,
|
||||
lparam: LPARAM,
|
||||
time: u32,
|
||||
pt: POINT,
|
||||
wparam: WPARAM,
|
||||
lparam: LPARAM,
|
||||
time: u32,
|
||||
pt: POINT,
|
||||
}
|
||||
|
||||
|
||||
@@ -145,34 +145,34 @@ type wglCreateContextAttribsARBType: proc(hdc: HDC, hshareContext: rawptr, attri
|
||||
|
||||
|
||||
type PIXELFORMATDESCRIPTOR: struct {
|
||||
nSize,
|
||||
nVersion,
|
||||
dwFlags: u32,
|
||||
size,
|
||||
version,
|
||||
flags: u32,
|
||||
|
||||
iPixelType,
|
||||
cColorBits,
|
||||
cRedBits,
|
||||
cRedShift,
|
||||
cGreenBits,
|
||||
cGreenShift,
|
||||
cBlueBits,
|
||||
cBlueShift,
|
||||
cAlphaBits,
|
||||
cAlphaShift,
|
||||
cAccumBits,
|
||||
cAccumRedBits,
|
||||
cAccumGreenBits,
|
||||
cAccumBlueBits,
|
||||
cAccumAlphaBits,
|
||||
cDepthBits,
|
||||
cStencilBits,
|
||||
cAuxBuffers,
|
||||
iLayerType,
|
||||
bReserved: byte,
|
||||
pixel_type,
|
||||
color_bits,
|
||||
red_bits,
|
||||
red_shift,
|
||||
green_bits,
|
||||
green_shift,
|
||||
blue_bits,
|
||||
blue_shift,
|
||||
alpha_bits,
|
||||
alpha_shift,
|
||||
accum_bits,
|
||||
accum_red_bits,
|
||||
accum_green_bits,
|
||||
accum_blue_bits,
|
||||
accum_alpha_bits,
|
||||
depth_bits,
|
||||
stencil_bits,
|
||||
aux_buffers,
|
||||
layer_type,
|
||||
reserved: byte,
|
||||
|
||||
dwLayerMask,
|
||||
dwVisibleMask,
|
||||
dwDamageMask: u32,
|
||||
layer_mask,
|
||||
visible_mask,
|
||||
damage_mask: u32,
|
||||
}
|
||||
|
||||
GetDC :: proc(h: HANDLE) -> HDC #foreign
|
||||
@@ -190,3 +190,165 @@ wglCreateContext :: proc(hdc: HDC) -> HGLRC #foreign
|
||||
wglMakeCurrent :: proc(hdc: HDC, hglrc: HGLRC) -> BOOL #foreign
|
||||
wglGetProcAddress :: proc(c_str: ^u8) -> PROC #foreign
|
||||
wglDeleteContext :: proc(hglrc: HGLRC) -> BOOL #foreign
|
||||
|
||||
|
||||
|
||||
GetAsyncKeyState :: proc(v_key: i32) -> i16 #foreign
|
||||
|
||||
is_key_down :: proc(key: int) -> bool {
|
||||
return GetAsyncKeyState(key as i32) < 0;
|
||||
}
|
||||
|
||||
|
||||
VK_LBUTTON :: 0x01;
|
||||
VK_RBUTTON :: 0x02;
|
||||
VK_CANCEL :: 0x03;
|
||||
VK_MBUTTON :: 0x04;
|
||||
|
||||
VK_BACK :: 0x08;
|
||||
VK_TAB :: 0x09;
|
||||
|
||||
VK_CLEAR :: 0x0C;
|
||||
VK_RETURN :: 0x0D;
|
||||
|
||||
VK_SHIFT :: 0x10;
|
||||
VK_CONTROL :: 0x11;
|
||||
VK_MENU :: 0x12;
|
||||
VK_PAUSE :: 0x13;
|
||||
VK_CAPITAL :: 0x14;
|
||||
|
||||
VK_KANA :: 0x15;
|
||||
VK_HANGEUL :: 0x15;
|
||||
VK_HANGUL :: 0x15;
|
||||
VK_JUNJA :: 0x17;
|
||||
VK_FINAL :: 0x18;
|
||||
VK_HANJA :: 0x19;
|
||||
VK_KANJI :: 0x19;
|
||||
|
||||
VK_ESCAPE :: 0x1B;
|
||||
|
||||
VK_CONVERT :: 0x1C;
|
||||
VK_NONCONVERT :: 0x1D;
|
||||
VK_ACCEPT :: 0x1E;
|
||||
VK_MODECHANGE :: 0x1F;
|
||||
|
||||
VK_SPACE :: 0x20;
|
||||
VK_PRIOR :: 0x21;
|
||||
VK_NEXT :: 0x22;
|
||||
VK_END :: 0x23;
|
||||
VK_HOME :: 0x24;
|
||||
VK_LEFT :: 0x25;
|
||||
VK_UP :: 0x26;
|
||||
VK_RIGHT :: 0x27;
|
||||
VK_DOWN :: 0x28;
|
||||
VK_SELECT :: 0x29;
|
||||
VK_PRINT :: 0x2A;
|
||||
VK_EXECUTE :: 0x2B;
|
||||
VK_SNAPSHOT :: 0x2C;
|
||||
VK_INSERT :: 0x2D;
|
||||
VK_DELETE :: 0x2E;
|
||||
VK_HELP :: 0x2F;
|
||||
|
||||
VK_0 :: '0';
|
||||
VK_1 :: '1';
|
||||
VK_2 :: '2';
|
||||
VK_3 :: '3';
|
||||
VK_4 :: '4';
|
||||
VK_5 :: '5';
|
||||
VK_6 :: '6';
|
||||
VK_7 :: '7';
|
||||
VK_8 :: '8';
|
||||
VK_9 :: '9';
|
||||
|
||||
VK_A :: 'A';
|
||||
VK_B :: 'B';
|
||||
VK_C :: 'C';
|
||||
VK_D :: 'D';
|
||||
VK_E :: 'E';
|
||||
VK_F :: 'F';
|
||||
VK_G :: 'G';
|
||||
VK_H :: 'H';
|
||||
VK_I :: 'I';
|
||||
VK_J :: 'J';
|
||||
VK_K :: 'K';
|
||||
VK_L :: 'L';
|
||||
VK_M :: 'M';
|
||||
VK_N :: 'N';
|
||||
VK_O :: 'O';
|
||||
VK_P :: 'P';
|
||||
VK_Q :: 'Q';
|
||||
VK_R :: 'R';
|
||||
VK_S :: 'S';
|
||||
VK_T :: 'T';
|
||||
VK_U :: 'U';
|
||||
VK_V :: 'V';
|
||||
VK_W :: 'W';
|
||||
VK_X :: 'X';
|
||||
VK_Y :: 'Y';
|
||||
VK_Z :: 'Z';
|
||||
|
||||
VK_LWIN :: 0x5B;
|
||||
VK_RWIN :: 0x5C;
|
||||
VK_APPS :: 0x5D;
|
||||
|
||||
VK_NUMPAD0 :: 0x60;
|
||||
VK_NUMPAD1 :: 0x61;
|
||||
VK_NUMPAD2 :: 0x62;
|
||||
VK_NUMPAD3 :: 0x63;
|
||||
VK_NUMPAD4 :: 0x64;
|
||||
VK_NUMPAD5 :: 0x65;
|
||||
VK_NUMPAD6 :: 0x66;
|
||||
VK_NUMPAD7 :: 0x67;
|
||||
VK_NUMPAD8 :: 0x68;
|
||||
VK_NUMPAD9 :: 0x69;
|
||||
VK_MULTIPLY :: 0x6A;
|
||||
VK_ADD :: 0x6B;
|
||||
VK_SEPARATOR :: 0x6C;
|
||||
VK_SUBTRACT :: 0x6D;
|
||||
VK_DECIMAL :: 0x6E;
|
||||
VK_DIVIDE :: 0x6F;
|
||||
VK_F1 :: 0x70;
|
||||
VK_F2 :: 0x71;
|
||||
VK_F3 :: 0x72;
|
||||
VK_F4 :: 0x73;
|
||||
VK_F5 :: 0x74;
|
||||
VK_F6 :: 0x75;
|
||||
VK_F7 :: 0x76;
|
||||
VK_F8 :: 0x77;
|
||||
VK_F9 :: 0x78;
|
||||
VK_F10 :: 0x79;
|
||||
VK_F11 :: 0x7A;
|
||||
VK_F12 :: 0x7B;
|
||||
VK_F13 :: 0x7C;
|
||||
VK_F14 :: 0x7D;
|
||||
VK_F15 :: 0x7E;
|
||||
VK_F16 :: 0x7F;
|
||||
VK_F17 :: 0x80;
|
||||
VK_F18 :: 0x81;
|
||||
VK_F19 :: 0x82;
|
||||
VK_F20 :: 0x83;
|
||||
VK_F21 :: 0x84;
|
||||
VK_F22 :: 0x85;
|
||||
VK_F23 :: 0x86;
|
||||
VK_F24 :: 0x87;
|
||||
|
||||
VK_NUMLOCK :: 0x90;
|
||||
VK_SCROLL :: 0x91;
|
||||
|
||||
VK_LSHIFT :: 0xA0;
|
||||
VK_RSHIFT :: 0xA1;
|
||||
VK_LCONTROL :: 0xA2;
|
||||
VK_RCONTROL :: 0xA3;
|
||||
VK_LMENU :: 0xA4;
|
||||
VK_RMENU :: 0xA5;
|
||||
VK_PROCESSKEY :: 0xE5;
|
||||
VK_ATTN :: 0xF6;
|
||||
VK_CRSEL :: 0xF7;
|
||||
VK_EXSEL :: 0xF8;
|
||||
VK_EREOF :: 0xF9;
|
||||
VK_PLAY :: 0xFA;
|
||||
VK_ZOOM :: 0xFB;
|
||||
VK_NONAME :: 0xFC;
|
||||
VK_PA1 :: 0xFD;
|
||||
VK_OEM_CLEAR :: 0xFE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user