diff options
author | Tomaka17 <pierre.krieger1708@gmail.com> | 2014-11-05 15:23:20 +0100 |
---|---|---|
committer | Tomaka17 <pierre.krieger1708@gmail.com> | 2014-11-05 15:23:20 +0100 |
commit | 2e44edea60a19919be467a1228ae971e7b988fec (patch) | |
tree | 0b8d9233e9ee28e574f7a6bb462daa9e3fb56133 /src/osx | |
parent | 4c674ef8437ba921f6e95a882a644bdcb1b8e235 (diff) | |
parent | a69c2209a58e2fb1354aae1c6e45cc5f555669cc (diff) | |
download | glutin-2e44edea60a19919be467a1228ae971e7b988fec.tar.gz glutin-2e44edea60a19919be467a1228ae971e7b988fec.zip |
Merge branch 'master' of http://github.com/tomaka/gl-init-rs
Diffstat (limited to 'src/osx')
-rw-r--r-- | src/osx/mod.rs | 29 | ||||
-rw-r--r-- | src/osx/monitor.rs | 46 |
2 files changed, 55 insertions, 20 deletions
diff --git a/src/osx/mod.rs b/src/osx/mod.rs index 287dcb4..3dda56a 100644 --- a/src/osx/mod.rs +++ b/src/osx/mod.rs @@ -22,6 +22,9 @@ use {MouseInput, Pressed, Released, LeftMouseButton, RightMouseButton, MouseMove use events; +pub use self::monitor::{MonitorID, get_available_monitors, get_primary_monitor}; + +mod monitor; mod event; static mut shift_pressed: bool = false; @@ -43,26 +46,6 @@ impl Deref<Window> for HeadlessContext { } } -pub struct MonitorID; - -pub fn get_available_monitors() -> Vec<MonitorID> { - unimplemented!() -} - -pub fn get_primary_monitor() -> MonitorID { - unimplemented!() -} - -impl MonitorID { - pub fn get_name(&self) -> Option<String> { - unimplemented!() - } - - pub fn get_dimensions(&self) -> (uint, uint) { - unimplemented!() - } -} - #[cfg(feature = "window")] impl Window { pub fn new(builder: WindowBuilder) -> Result<Window, String> { @@ -198,6 +181,12 @@ impl Window { unimplemented!() } + pub fn show(&self) { + } + + pub fn hide(&self) { + } + pub fn get_position(&self) -> Option<(int, int)> { unimplemented!() } diff --git a/src/osx/monitor.rs b/src/osx/monitor.rs new file mode 100644 index 0000000..383fd32 --- /dev/null +++ b/src/osx/monitor.rs @@ -0,0 +1,46 @@ +use core_graphics::display; + +pub struct MonitorID(u32); + +pub fn get_available_monitors() -> Vec<MonitorID> { + let mut monitors = Vec::new(); + unsafe { + let max_displays = 10u32; + let mut active_displays = [0u32, ..10]; + let mut display_count = 0; + display::CGGetActiveDisplayList(max_displays, + &mut active_displays[0], + &mut display_count); + for i in range(0u, display_count as uint) { + monitors.push(MonitorID(active_displays[i])); + } + } + monitors +} + +pub fn get_primary_monitor() -> MonitorID { + let id = unsafe { + MonitorID(display::CGMainDisplayID()) + }; + id +} + +impl MonitorID { + pub fn get_name(&self) -> Option<String> { + let MonitorID(display_id) = *self; + let screen_num = unsafe { + display::CGDisplayModelNumber(display_id) + }; + Some(format!("Monitor #{}", screen_num)) + } + + pub fn get_dimensions(&self) -> (uint, uint) { + let MonitorID(display_id) = *self; + let dimension = unsafe { + let height = display::CGDisplayPixelsHigh(display_id); + let width = display::CGDisplayPixelsWide(display_id); + (width as uint, height as uint) + }; + dimension + } +} |