aboutsummaryrefslogtreecommitdiff
path: root/core/sys
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2017-02-19 11:35:33 +0000
committerGinger Bill <bill@gingerbill.org>2017-02-19 11:35:33 +0000
commit758dd9ba16a2dc5b01ea131e83c06bf33c33f116 (patch)
treee20faf659c43101a0667e47800a60cb3ecdb998b /core/sys
parent0c37aa9ea0271ddd8c93ea65f76d2f9ef4d777c5 (diff)
Fix overloading bug due to `#import .`; Add sys/wgl.odin
Diffstat (limited to 'core/sys')
-rw-r--r--core/sys/wgl.odin72
-rw-r--r--core/sys/windows.odin20
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;