wingl 0.1.0

A minimal opengl windows for the win32 api.
Documentation
use windows::Win32::{Foundation::HWND, UI::WindowsAndMessaging::WINDOW_LONG_PTR_INDEX};

pub mod window;

#[inline(always)]
unsafe fn get_window_long(hwnd: HWND, nindex: WINDOW_LONG_PTR_INDEX) -> isize
{
    #[cfg(target_pointer_width = "64")]
    return windows::Win32::UI::WindowsAndMessaging::GetWindowLongPtrW(hwnd, nindex);
    #[cfg(target_pointer_width = "32")]
    return windows::Win32::UI::WindowsAndMessaging::GetWindowLongW(hwnd, nindex) as isize;
}

#[inline(always)]
unsafe fn set_window_long(hwnd: HWND, nindex: WINDOW_LONG_PTR_INDEX, dwnewlong: isize) -> isize
{
    #[cfg(target_pointer_width = "64")]
    return windows::Win32::UI::WindowsAndMessaging::SetWindowLongPtrW(hwnd, nindex, dwnewlong);
    #[cfg(target_pointer_width = "32")]
    return windows::Win32::UI::WindowsAndMessaging::SetWindowLongW(hwnd, nindex, dwnewlong as i32) as isize;
}

#[cfg(test)]
mod tests
{
	use std::time::Duration;

use crate::window::*;

	#[test]
	fn create_window()
	{
		let window = WindowBuilder::new()
			.with_title("Mein Titel\0")
			.with_size(Size::new(800, 600))
			.build().expect("Fehler im Window Builder");

		let mut window = window.make_current();
		//assert!(window.request_gl_version((3, 3)) == true);

		gl::load_with(|ptr| window.gl_context().get_proc_address(ptr) as *const _);

		let mut test_done = false;
		loop
		{
			window.poll();
			while let Some(ev) = window.next()
			{
				if ev == Event::Exit
				{
					println!("Exit Message: {:?}", ev);
					//assert!(test_done);
					return;
				}
				if !test_done
				{
					unsafe
					{
						let id = gl::CreateShader(gl::VERTEX_SHADER);
						println!("Shader: {}", id);
					}
					test_done = true;
				}
			}
			window.swap_buffers();
			std::thread::sleep(Duration::from_millis(15));
		}
	}
}