diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-02-19 11:35:33 +0000 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-02-19 11:35:33 +0000 |
| commit | 758dd9ba16a2dc5b01ea131e83c06bf33c33f116 (patch) | |
| tree | e20faf659c43101a0667e47800a60cb3ecdb998b /core/sys | |
| parent | 0c37aa9ea0271ddd8c93ea65f76d2f9ef4d777c5 (diff) | |
Fix overloading bug due to `#import .`; Add sys/wgl.odin
Diffstat (limited to 'core/sys')
| -rw-r--r-- | core/sys/wgl.odin | 72 | ||||
| -rw-r--r-- | core/sys/windows.odin | 20 |
2 files changed, 76 insertions, 16 deletions
diff --git a/core/sys/wgl.odin b/core/sys/wgl.odin new file mode 100644 index 000000000..bf993ca58 --- /dev/null +++ b/core/sys/wgl.odin @@ -0,0 +1,72 @@ +#foreign_system_library "opengl32.lib" when ODIN_OS == "windows"; +#import . "windows.odin"; + +CONTEXT_MAJOR_VERSION_ARB :: 0x2091; +CONTEXT_MINOR_VERSION_ARB :: 0x2092; +CONTEXT_FLAGS_ARB :: 0x2094; +CONTEXT_PROFILE_MASK_ARB :: 0x9126; +CONTEXT_FORWARD_COMPATIBLE_BIT_ARB :: 0x0002; +CONTEXT_CORE_PROFILE_BIT_ARB :: 0x00000001; + +HGLRC :: HANDLE; +COLORREF :: u32; + +LAYERPLANEDESCRIPTOR :: struct #ordered { + size: u16, + version: u16, + flags: u32, + pixel_type: byte, + color_bits: byte, + red_bits: byte, + red_shift: byte, + green_bits: byte, + green_shift: byte, + blue_bits: byte, + blue_shift: byte, + alpha_bits: byte, + alpha_shift: byte, + accum_bits: byte, + accum_red_bits: byte, + accum_green_bits: byte, + accum_blue_bits: byte, + accum_alpha_bits: byte, + depth_bits: byte, + stencil_bits: byte, + aux_buffers: byte, + layer_type: byte, + reserved: byte, + transparent: COLORREF, +} + +POINTFLOAT :: struct #ordered { + x, y: f32, +} + +GLYPHMETRICSFLOAT :: struct #ordered { + black_box_x: f32, + black_box_y: f32, + glyph_origin: POINTFLOAT, + cell_inc_x: f32, + cell_inc_y: f32, +} + +CreateContextAttribsARBType :: #type proc(hdc: HDC, hshareContext: rawptr, attribList: ^i32) -> HGLRC; +ChoosePixelFormatARBType :: #type proc(hdc: HDC, attrib_i_list: ^i32, attrib_f_list: ^f32, max_formats: u32, formats: ^i32, num_formats : ^u32) -> BOOL #cc_c; + + +CreateContext :: proc(hdc: HDC) -> HGLRC #foreign opengl32 "wglCreateContext"; +MakeCurrent :: proc(hdc: HDC, hglrc: HGLRC) -> BOOL #foreign opengl32 "wglMakeCurrent"; +GetProcAddress :: proc(c_str: ^u8) -> PROC #foreign opengl32 "wglGetProcAddress"; +DeleteContext :: proc(hglrc: HGLRC) -> BOOL #foreign opengl32 "wglDeleteContext"; +CopyContext :: proc(src, dst: HGLRC, mask: u32) -> BOOL #foreign opengl32 "wglCopyContext"; +CreateLayerContext :: proc(hdc: HDC, layer_plane: i32) -> HGLRC #foreign opengl32 "wglCreateLayerContext"; +DescribeLayerPlane :: proc(hdc: HDC, pixel_format, layer_plane: i32, bytes: u32, pd: ^LAYERPLANEDESCRIPTOR) -> BOOL #foreign opengl32 "wglDescribeLayerPlane"; +GetCurrentContext :: proc() -> HGLRC #foreign opengl32 "wglGetCurrentContext"; +GetCurrentDC :: proc() -> HDC #foreign opengl32 "wglGetCurrentDC"; +GetLayerPaletteEntries :: proc(hdc: HDC, layer_plane, start, entries: i32, cr: ^COLORREF) -> i32 #foreign opengl32 "wglGetLayerPaletteEntries"; +RealizeLayerPalette :: proc(hdc: HDC, layer_plane: i32, realize: BOOL) -> BOOL #foreign opengl32 "wglRealizeLayerPalette"; +SetLayerPaletteEntries :: proc(hdc: HDC, layer_plane, start, entries: i32, cr: ^COLORREF) -> i32 #foreign opengl32 "wglSetLayerPaletteEntries"; +ShareLists :: proc(hglrc1, hglrc2: HGLRC) -> BOOL #foreign opengl32 "wglShareLists"; +SwapLayerBuffers :: proc(hdc: HDC, planes: u32) -> BOOL #foreign opengl32 "wglSwapLayerBuffers"; +UseFontBitmaps :: proc(hdc: HDC, first, count, list_base: u32) -> BOOL #foreign opengl32 "wglUseFontBitmaps"; +UseFontOutlines :: proc(hdc: HDC, first, count, list_base: u32, deviation, extrusion: f32, format: i32, gmf: ^GLYPHMETRICSFLOAT) -> BOOL #foreign opengl32 "wglUseFontOutlines"; diff --git a/core/sys/windows.odin b/core/sys/windows.odin index d027c6072..6d6059214 100644 --- a/core/sys/windows.odin +++ b/core/sys/windows.odin @@ -2,7 +2,6 @@ #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 "opengl32.lib" when ODIN_OS == "windows"; HANDLE :: rawptr; HWND :: HANDLE; @@ -168,6 +167,9 @@ DefWindowProcA :: proc(hwnd: HWND, msg: u32, wparam: WPARAM, lparam: LPARAM) -> AdjustWindowRect :: proc(rect: ^RECT, style: u32, menu: BOOL) -> BOOL #foreign user32; GetActiveWindow :: proc() -> HWND #foreign user32; +DestroyWindow :: proc(wnd: HWND) -> BOOL #foreign user32; +DescribePixelFormat :: proc(dc: HDC, pixel_format: i32, bytes : u32, pfd: ^PIXELFORMATDESCRIPTOR) -> i32 #foreign user32; + GetQueryPerformanceFrequency :: proc() -> i64 { r: i64; @@ -360,10 +362,6 @@ PFD_DEPTH_DONTCARE :: 0x20000000; PFD_DOUBLEBUFFER_DONTCARE :: 0x40000000; PFD_STEREO_DONTCARE :: 0x80000000; -HGLRC :: HANDLE; -PROC :: #type proc() #cc_c; -wglCreateContextAttribsARBType :: #type proc(hdc: HDC, hshareContext: rawptr, attribList: ^i32) -> HGLRC; - PIXELFORMATDESCRIPTOR :: struct #ordered { size, @@ -402,18 +400,8 @@ ChoosePixelFormat :: proc(hdc: HDC, pfd: ^PIXELFORMATDESCRIPTOR) -> i32 #foreign SwapBuffers :: proc(hdc: HDC) -> BOOL #foreign gdi32; ReleaseDC :: proc(wnd: HWND, hdc: HDC) -> i32 #foreign user32; -WGL_CONTEXT_MAJOR_VERSION_ARB :: 0x2091; -WGL_CONTEXT_MINOR_VERSION_ARB :: 0x2092; -WGL_CONTEXT_PROFILE_MASK_ARB :: 0x9126; -WGL_CONTEXT_CORE_PROFILE_BIT_ARB :: 0x0001; -WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB :: 0x0002; - -wglCreateContext :: proc(hdc: HDC) -> HGLRC #foreign opengl32; -wglMakeCurrent :: proc(hdc: HDC, hglrc: HGLRC) -> BOOL #foreign opengl32; -wglGetProcAddress :: proc(c_str: ^u8) -> PROC #foreign opengl32; -wglDeleteContext :: proc(hglrc: HGLRC) -> BOOL #foreign opengl32; -wglChoosePixelFormatARB :: proc(hdc: HDC, attribi_list: ^i32, attribf_list: ^f32, max_formats: u32, formats: ^i32, num_formats: u32) -> BOOL #foreign opengl32; +PROC :: #type proc() #cc_c; GetKeyState :: proc(v_key: i32) -> i16 #foreign user32; |