diff options
Diffstat (limited to 'src/win32/mod.rs')
-rw-r--r-- | src/win32/mod.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/win32/mod.rs b/src/win32/mod.rs index 9d8723d..7558245 100644 --- a/src/win32/mod.rs +++ b/src/win32/mod.rs @@ -9,16 +9,32 @@ mod ffi; mod init; mod monitor; +/// The Win32 implementation of the main `Window` object. pub struct Window { + /// Main handle for the window. window: ffi::HWND, + + /// This represents a "draw context" for the surface of the window. hdc: ffi::HDC, + + /// OpenGL context. context: ffi::HGLRC, + + /// Binded to `opengl32.dll`. + /// + /// `wglGetProcAddress` returns null for GL 1.1 functions because they are + /// already defined by the system. This module contains them. gl_library: ffi::HMODULE, + + /// Receiver for the events dispatched by the window callback. events_receiver: Receiver<Event>, + + /// True if a `Closed` event has been received. is_closed: AtomicBool, } impl Window { + /// See the docs if the crate root file. pub fn new(dimensions: Option<(uint, uint)>, title: &str, hints: &Hints, monitor: Option<MonitorID>) -> Result<Window, String> @@ -26,11 +42,14 @@ impl Window { init::new_window(dimensions, title, hints, monitor) } + /// See the docs if the crate root file. pub fn is_closed(&self) -> bool { use std::sync::atomics::Relaxed; self.is_closed.load(Relaxed) } + /// See the docs if the crate root file. + /// /// Calls SetWindowText on the HWND. pub fn set_title(&self, text: &str) { unsafe { @@ -39,6 +58,7 @@ impl Window { } } + /// See the docs if the crate root file. pub fn get_position(&self) -> Option<(int, int)> { use std::mem; @@ -53,6 +73,7 @@ impl Window { Some((rect.left as int, rect.top as int)) } + /// See the docs if the crate root file. pub fn set_position(&self, x: uint, y: uint) { use libc; @@ -63,6 +84,7 @@ impl Window { } } + /// See the docs if the crate root file. pub fn get_inner_size(&self) -> Option<(uint, uint)> { use std::mem; let mut rect: ffi::RECT = unsafe { mem::uninitialized() }; @@ -77,6 +99,7 @@ impl Window { )) } + /// See the docs if the crate root file. pub fn get_outer_size(&self) -> Option<(uint, uint)> { use std::mem; let mut rect: ffi::RECT = unsafe { mem::uninitialized() }; @@ -91,6 +114,7 @@ impl Window { )) } + /// See the docs if the crate root file. pub fn set_inner_size(&self, x: uint, y: uint) { use libc; @@ -101,6 +125,7 @@ impl Window { } } + /// See the docs if the crate root file. // TODO: return iterator pub fn poll_events(&self) -> Vec<Event> { let mut events = Vec::new(); @@ -119,6 +144,7 @@ impl Window { events } + /// See the docs if the crate root file. // TODO: return iterator pub fn wait_events(&self) -> Vec<Event> { match self.events_receiver.recv_opt() { @@ -135,10 +161,12 @@ impl Window { } } + /// See the docs if the crate root file. pub unsafe fn make_current(&self) { ffi::wglMakeCurrent(self.hdc, self.context) } + /// See the docs if the crate root file. pub fn get_proc_address(&self, addr: &str) -> *const () { use std::c_str::ToCStr; @@ -151,6 +179,7 @@ impl Window { } } + /// See the docs if the crate root file. pub fn swap_buffers(&self) { unsafe { ffi::SwapBuffers(self.hdc); |