diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-06-12 16:26:51 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-06-12 16:26:51 +0100 |
| commit | a8e458339b65669d088edf36bb96ffb518f68d2d (patch) | |
| tree | 19385cdda61504a6323b379994c1f22e10851989 /core/sys | |
| parent | 6b5e9aec8e0120669cad45056fbf268163b02233 (diff) | |
foreign_library allow for Pascal-style grouping
Diffstat (limited to 'core/sys')
| -rw-r--r-- | core/sys/wgl.odin | 2 | ||||
| -rw-r--r-- | core/sys/windows.odin | 377 |
2 files changed, 197 insertions, 182 deletions
diff --git a/core/sys/wgl.odin b/core/sys/wgl.odin index c2594d475..96dacf403 100644 --- a/core/sys/wgl.odin +++ b/core/sys/wgl.odin @@ -1,4 +1,4 @@ -#foreign_system_library "opengl32.lib" when ODIN_OS == "windows"; +foreign_system_library "opengl32.lib" when ODIN_OS == "windows"; import . "windows.odin"; const CONTEXT_MAJOR_VERSION_ARB = 0x2091; diff --git a/core/sys/windows.odin b/core/sys/windows.odin index e4e4a4a32..9d9b812aa 100644 --- a/core/sys/windows.odin +++ b/core/sys/windows.odin @@ -1,89 +1,96 @@ -#foreign_system_library "kernel32.lib" when ODIN_OS == "windows"; -#foreign_system_library "user32.lib" when ODIN_OS == "windows"; -#foreign_system_library "gdi32.lib" when ODIN_OS == "windows"; -#foreign_system_library "winmm.lib" when ODIN_OS == "windows"; -#foreign_system_library "shell32.lib" when ODIN_OS == "windows"; - -type Handle rawptr; -type Hwnd Handle; -type Hdc Handle; -type Hinstance Handle; -type Hicon Handle; -type Hcursor Handle; -type Hmenu Handle; -type Hbrush Handle; -type Hgdiobj Handle; -type Hmodule Handle; -type Wparam uint; -type Lparam int; -type Lresult int; -type Bool i32; -type WndProc proc(Hwnd, u32, Wparam, Lparam) -> Lresult #cc_c; - +foreign_system_library ( + "kernel32.lib" when ODIN_OS == "windows"; + "user32.lib" when ODIN_OS == "windows"; + "gdi32.lib" when ODIN_OS == "windows"; + "winmm.lib" when ODIN_OS == "windows"; + "shell32.lib" when ODIN_OS == "windows"; +) + +type ( + Handle rawptr; + Hwnd Handle; + Hdc Handle; + Hinstance Handle; + Hicon Handle; + Hcursor Handle; + Hmenu Handle; + Hbrush Handle; + Hgdiobj Handle; + Hmodule Handle; + Wparam uint; + Lparam int; + Lresult int; + Bool i32; + WndProc proc(Hwnd, u32, Wparam, Lparam) -> Lresult #cc_c; +) const INVALID_HANDLE = Handle(~int(0)); - -const FALSE: Bool = 0; -const TRUE: Bool = 1; - -const CS_VREDRAW = 0x0001; -const CS_HREDRAW = 0x0002; -const CS_OWNDC = 0x0020; -const CW_USEDEFAULT = -0x80000000; - -const WS_OVERLAPPED = 0; -const WS_MAXIMIZEBOX = 0x00010000; -const WS_MINIMIZEBOX = 0x00020000; -const WS_THICKFRAME = 0x00040000; -const WS_SYSMENU = 0x00080000; -const WS_BORDER = 0x00800000; -const WS_CAPTION = 0x00C00000; -const WS_VISIBLE = 0x10000000; -const WS_POPUP = 0x80000000; -const WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX; -const WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU; - -const WM_DESTROY = 0x0002; -const WM_SIZE = 0x0005; -const WM_CLOSE = 0x0010; -const WM_ACTIVATEAPP = 0x001C; -const WM_QUIT = 0x0012; -const WM_KEYDOWN = 0x0100; -const WM_KEYUP = 0x0101; -const WM_SIZING = 0x0214; -const WM_SYSKEYDOWN = 0x0104; -const WM_SYSKEYUP = 0x0105; -const WM_WINDOWPOSCHANGED = 0x0047; -const WM_SETCURSOR = 0x0020; -const WM_CHAR = 0x0102; -const WM_ACTIVATE = 0x0006; -const WM_SETFOCUS = 0x0007; -const WM_KILLFOCUS = 0x0008; -const WM_USER = 0x0400; - -const WM_MOUSEWHEEL = 0x020A; -const WM_MOUSEMOVE = 0x0200; -const WM_LBUTTONDOWN = 0x0201; -const WM_LBUTTONUP = 0x0202; -const WM_LBUTTONDBLCLK = 0x0203; -const WM_RBUTTONDOWN = 0x0204; -const WM_RBUTTONUP = 0x0205; -const WM_RBUTTONDBLCLK = 0x0206; -const WM_MBUTTONDOWN = 0x0207; -const WM_MBUTTONUP = 0x0208; -const WM_MBUTTONDBLCLK = 0x0209; - -const PM_NOREMOVE = 0x0000; -const PM_REMOVE = 0x0001; -const PM_NOYIELD = 0x0002; +const ( + FALSE: Bool = 0; + TRUE = 1; +) + +const ( + CS_VREDRAW = 0x0001; + CS_HREDRAW = 0x0002; + CS_OWNDC = 0x0020; + CW_USEDEFAULT = -0x80000000; + + WS_OVERLAPPED = 0; + WS_MAXIMIZEBOX = 0x00010000; + WS_MINIMIZEBOX = 0x00020000; + WS_THICKFRAME = 0x00040000; + WS_SYSMENU = 0x00080000; + WS_BORDER = 0x00800000; + WS_CAPTION = 0x00C00000; + WS_VISIBLE = 0x10000000; + WS_POPUP = 0x80000000; + WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX; + WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU; + + WM_DESTROY = 0x0002; + WM_SIZE = 0x0005; + WM_CLOSE = 0x0010; + WM_ACTIVATEAPP = 0x001C; + WM_QUIT = 0x0012; + WM_KEYDOWN = 0x0100; + WM_KEYUP = 0x0101; + WM_SIZING = 0x0214; + WM_SYSKEYDOWN = 0x0104; + WM_SYSKEYUP = 0x0105; + WM_WINDOWPOSCHANGED = 0x0047; + WM_SETCURSOR = 0x0020; + WM_CHAR = 0x0102; + WM_ACTIVATE = 0x0006; + WM_SETFOCUS = 0x0007; + WM_KILLFOCUS = 0x0008; + WM_USER = 0x0400; + + WM_MOUSEWHEEL = 0x020A; + WM_MOUSEMOVE = 0x0200; + WM_LBUTTONDOWN = 0x0201; + WM_LBUTTONUP = 0x0202; + WM_LBUTTONDBLCLK = 0x0203; + WM_RBUTTONDOWN = 0x0204; + WM_RBUTTONUP = 0x0205; + WM_RBUTTONDBLCLK = 0x0206; + WM_MBUTTONDOWN = 0x0207; + WM_MBUTTONUP = 0x0208; + WM_MBUTTONDBLCLK = 0x0209; + + PM_NOREMOVE = 0x0000; + PM_REMOVE = 0x0001; + PM_NOYIELD = 0x0002; + + BLACK_BRUSH = 4; + + SM_CXSCREEN = 0; + SM_CYSCREEN = 1; + + SW_SHOW = 5; +) const COLOR_BACKGROUND = Hbrush(int(1)); -const BLACK_BRUSH = 4; - -const SM_CXSCREEN = 0; -const SM_CYSCREEN = 1; - -const SW_SHOW = 5; type Point struct #ordered { @@ -151,23 +158,24 @@ type FileAttributeData struct #ordered { } type FindData struct #ordered { - file_attributes : u32, - creation_time : Filetime, - last_access_time : Filetime, - last_write_time : Filetime, - file_size_high : u32, - file_size_low : u32, - reserved0 : u32, - reserved1 : u32, - file_name : [MAX_PATH]u8, - alternate_file_name : [14]u8, + file_attributes: u32, + creation_time: Filetime, + last_access_time: Filetime, + last_write_time: Filetime, + file_size_high: u32, + file_size_low: u32, + reserved0: u32, + reserved1: u32, + file_name: [MAX_PATH]u8, + alternate_file_name: [14]u8, } type GET_FILEEX_INFO_LEVELS i32; - -const GetFileExInfoStandard: GET_FILEEX_INFO_LEVELS = 0; -const GetFileExMaxInfoLevel: GET_FILEEX_INFO_LEVELS = 1; +const ( + GetFileExInfoStandard: GET_FILEEX_INFO_LEVELS = 0; + GetFileExMaxInfoLevel = 1; +) proc get_last_error () -> i32 #foreign kernel32 "GetLastError"; proc exit_process (exit_code: u32) #foreign kernel32 "ExitProcess"; @@ -257,56 +265,58 @@ proc find_first_file_a(file_name : ^u8, data : ^FindData) -> Handle #foreign ker proc find_next_file_a (file : Handle, data : ^FindData) -> Bool #foreign kernel32 "FindNextFileA"; proc find_close (file : Handle) -> Bool #foreign kernel32 "FindClose"; -const MAX_PATH = 0x00000104; - -const HANDLE_FLAG_INHERIT = 1; -const HANDLE_FLAG_PROTECT_FROM_CLOSE = 2; - - -const FILE_BEGIN = 0; -const FILE_CURRENT = 1; -const FILE_END = 2; - -const FILE_SHARE_READ = 0x00000001; -const FILE_SHARE_WRITE = 0x00000002; -const FILE_SHARE_DELETE = 0x00000004; -const FILE_GENERIC_ALL = 0x10000000; -const FILE_GENERIC_EXECUTE = 0x20000000; -const FILE_GENERIC_WRITE = 0x40000000; -const FILE_GENERIC_READ = 0x80000000; - -const FILE_APPEND_DATA = 0x0004; - -const STD_INPUT_HANDLE = -10; -const STD_OUTPUT_HANDLE = -11; -const STD_ERROR_HANDLE = -12; - -const CREATE_NEW = 1; -const CREATE_ALWAYS = 2; -const OPEN_EXISTING = 3; -const OPEN_ALWAYS = 4; -const TRUNCATE_EXISTING = 5; - -const INVALID_FILE_ATTRIBUTES = -1; - -const FILE_ATTRIBUTE_READONLY = 0x00000001; -const FILE_ATTRIBUTE_HIDDEN = 0x00000002; -const FILE_ATTRIBUTE_SYSTEM = 0x00000004; -const FILE_ATTRIBUTE_DIRECTORY = 0x00000010; -const FILE_ATTRIBUTE_ARCHIVE = 0x00000020; -const FILE_ATTRIBUTE_DEVICE = 0x00000040; -const FILE_ATTRIBUTE_NORMAL = 0x00000080; -const FILE_ATTRIBUTE_TEMPORARY = 0x00000100; -const FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200; -const FILE_ATTRIBUTE_REPARSE_Point = 0x00000400; -const FILE_ATTRIBUTE_COMPRESSED = 0x00000800; -const FILE_ATTRIBUTE_OFFLINE = 0x00001000; -const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000; -const FILE_ATTRIBUTE_ENCRYPTED = 0x00004000; - -const FILE_TYPE_DISK = 0x0001; -const FILE_TYPE_CHAR = 0x0002; -const FILE_TYPE_PIPE = 0x0003; + +const ( + MAX_PATH = 0x00000104; + + HANDLE_FLAG_INHERIT = 1; + HANDLE_FLAG_PROTECT_FROM_CLOSE = 2; + + FILE_BEGIN = 0; + FILE_CURRENT = 1; + FILE_END = 2; + + FILE_SHARE_READ = 0x00000001; + FILE_SHARE_WRITE = 0x00000002; + FILE_SHARE_DELETE = 0x00000004; + FILE_GENERIC_ALL = 0x10000000; + FILE_GENERIC_EXECUTE = 0x20000000; + FILE_GENERIC_WRITE = 0x40000000; + FILE_GENERIC_READ = 0x80000000; + + FILE_APPEND_DATA = 0x0004; + + STD_INPUT_HANDLE = -10; + STD_OUTPUT_HANDLE = -11; + STD_ERROR_HANDLE = -12; + + CREATE_NEW = 1; + CREATE_ALWAYS = 2; + OPEN_EXISTING = 3; + OPEN_ALWAYS = 4; + TRUNCATE_EXISTING = 5; + + INVALID_FILE_ATTRIBUTES = -1; + + FILE_ATTRIBUTE_READONLY = 0x00000001; + FILE_ATTRIBUTE_HIDDEN = 0x00000002; + FILE_ATTRIBUTE_SYSTEM = 0x00000004; + FILE_ATTRIBUTE_DIRECTORY = 0x00000010; + FILE_ATTRIBUTE_ARCHIVE = 0x00000020; + FILE_ATTRIBUTE_DEVICE = 0x00000040; + FILE_ATTRIBUTE_NORMAL = 0x00000080; + FILE_ATTRIBUTE_TEMPORARY = 0x00000100; + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200; + FILE_ATTRIBUTE_REPARSE_Point = 0x00000400; + FILE_ATTRIBUTE_COMPRESSED = 0x00000800; + FILE_ATTRIBUTE_OFFLINE = 0x00001000; + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000; + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000; + + FILE_TYPE_DISK = 0x0001; + FILE_TYPE_CHAR = 0x0002; + FILE_TYPE_PIPE = 0x0003; +) const INVALID_SET_FILE_POINTER = ~u32(0); @@ -363,16 +373,18 @@ const GWL_STYLE = -16; const Hwnd_TOP = Hwnd(uint(0)); -const MONITOR_DEFAULTTONULL = 0x00000000; -const MONITOR_DEFAULTTOPRIMARY = 0x00000001; -const MONITOR_DEFAULTTONEAREST = 0x00000002; - -const SWP_FRAMECHANGED = 0x0020; -const SWP_NOOWNERZORDER = 0x0200; -const SWP_NOZORDER = 0x0004; -const SWP_NOSIZE = 0x0001; -const SWP_NOMOVE = 0x0002; - +const ( + MONITOR_DEFAULTTONULL = 0x00000000; + MONITOR_DEFAULTTOPRIMARY = 0x00000001; + MONITOR_DEFAULTTONEAREST = 0x00000002; +) +const ( + SWP_FRAMECHANGED = 0x0020; + SWP_NOOWNERZORDER = 0x0200; + SWP_NOZORDER = 0x0004; + SWP_NOSIZE = 0x0001; + SWP_NOMOVE = 0x0002; +) type MonitorInfo struct #ordered { size: u32, @@ -458,28 +470,29 @@ proc get_proc_address( h: Hmodule, c_str: ^u8) -> Proc #foreign kernel32 "GetPro proc get_client_rect (hwnd: Hwnd, rect: ^Rect) -> Bool #foreign user32 "GetClientRect"; // Windows OpenGL -const PFD_TYPE_RGBA = 0; -const PFD_TYPE_COLORINDEX = 1; -const PFD_MAIN_PLANE = 0; -const PFD_OVERLAY_PLANE = 1; -const PFD_UNDERLAY_PLANE = -1; -const PFD_DOUBLEBUFFER = 1; -const PFD_STEREO = 2; -const PFD_DRAW_TO_WINDOW = 4; -const PFD_DRAW_TO_BITMAP = 8; -const PFD_SUPPORT_GDI = 16; -const PFD_SUPPORT_OPENGL = 32; -const PFD_GENERIC_FORMAT = 64; -const PFD_NEED_PALETTE = 128; -const PFD_NEED_SYSTEM_PALETTE = 0x00000100; -const PFD_SWAP_EXCHANGE = 0x00000200; -const PFD_SWAP_COPY = 0x00000400; -const PFD_SWAP_LAYER_BUFFERS = 0x00000800; -const PFD_GENERIC_ACCELERATED = 0x00001000; -const PFD_DEPTH_DONTCARE = 0x20000000; -const PFD_DOUBLEBUFFER_DONTCARE = 0x40000000; -const PFD_STEREO_DONTCARE = 0x80000000; - +const ( + PFD_TYPE_RGBA = 0; + PFD_TYPE_COLORINDEX = 1; + PFD_MAIN_PLANE = 0; + PFD_OVERLAY_PLANE = 1; + PFD_UNDERLAY_PLANE = -1; + PFD_DOUBLEBUFFER = 1; + PFD_STEREO = 2; + PFD_DRAW_TO_WINDOW = 4; + PFD_DRAW_TO_BITMAP = 8; + PFD_SUPPORT_GDI = 16; + PFD_SUPPORT_OPENGL = 32; + PFD_GENERIC_FORMAT = 64; + PFD_NEED_PALETTE = 128; + PFD_NEED_SYSTEM_PALETTE = 0x00000100; + PFD_SWAP_EXCHANGE = 0x00000200; + PFD_SWAP_COPY = 0x00000400; + PFD_SWAP_LAYER_BUFFERS = 0x00000800; + PFD_GENERIC_ACCELERATED = 0x00001000; + PFD_DEPTH_DONTCARE = 0x20000000; + PFD_DOUBLEBUFFER_DONTCARE = 0x40000000; + PFD_STEREO_DONTCARE = 0x80000000; +) type PixelFormatDescriptor struct #ordered { size, @@ -521,10 +534,12 @@ proc release_dc (wnd: Hwnd, hdc: Hdc) -> i32 type Proc proc() #cc_c; -const MAPVK_VK_TO_CHAR = 2; -const MAPVK_VK_TO_VSC = 0; -const MAPVK_VSC_TO_VK = 1; -const MAPVK_VSC_TO_VK_EX = 3; +const ( + MAPVK_VK_TO_CHAR = 2; + MAPVK_VK_TO_VSC = 0; + MAPVK_VSC_TO_VK = 1; + MAPVK_VSC_TO_VK_EX = 3; +) proc map_virtual_key(scancode : u32, map_type : u32) -> u32 #foreign user32 "MapVirtualKeyA"; |