diff options
author | Tomaka17 <pierre.krieger1708@gmail.com> | 2014-08-02 11:23:32 +0200 |
---|---|---|
committer | Tomaka17 <pierre.krieger1708@gmail.com> | 2014-08-02 11:23:32 +0200 |
commit | b0d9d0b87f8884639001d69f3a79d4bb41f019f4 (patch) | |
tree | 98cb97f274a55ea3c18b04fef76d28f34a91d771 /src | |
parent | abceca11210ec8cdd869d4b134dc1a58dbce0075 (diff) | |
download | glutin-b0d9d0b87f8884639001d69f3a79d4bb41f019f4.tar.gz glutin-b0d9d0b87f8884639001d69f3a79d4bb41f019f4.zip |
Dimensions will now match the monitor's in case of fullscreen
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 21 | ||||
-rw-r--r-- | src/win32/init.rs | 4 | ||||
-rw-r--r-- | src/x11/mod.rs | 2 |
3 files changed, 20 insertions, 7 deletions
@@ -26,7 +26,7 @@ pub struct MonitorID(winimpl::MonitorID); /// Object that allows you to build windows. pub struct WindowBuilder { - dimensions: (uint, uint), + dimensions: Option<(uint, uint)>, title: String, monitor: Option<winimpl::MonitorID>, gl_version: Option<(uint, uint)>, @@ -36,7 +36,7 @@ impl WindowBuilder { /// Initializes a new `WindowBuilder` with default values. pub fn new() -> WindowBuilder { WindowBuilder { - dimensions: (1024, 768), + dimensions: None, title: String::new(), monitor: None, gl_version: None, @@ -47,7 +47,7 @@ impl WindowBuilder { /// /// Width and height are in pixels. pub fn with_dimensions(mut self, width: uint, height: uint) -> WindowBuilder { - self.dimensions = (width, height); + self.dimensions = Some((width, height)); self } @@ -58,6 +58,8 @@ impl WindowBuilder { } /// Requests fullscreen mode. + /// + /// If you don't specify dimensions for the window, it will match the monitor's. pub fn with_fullscreen(mut self, monitor: MonitorID) -> WindowBuilder { let MonitorID(monitor) = monitor; self.monitor = Some(monitor); @@ -77,7 +79,18 @@ impl WindowBuilder { /// /// Error should be very rare and only occur in case of permission denied, incompatible system, /// out of memory, etc. - pub fn build(self) -> Result<Window, String> { + pub fn build(mut self) -> Result<Window, String> { + // resizing the window to the dimensions of the monitor when fullscreen + if self.dimensions.is_none() && self.monitor.is_some() { + self.dimensions = Some(self.monitor.as_ref().unwrap().get_dimensions()) + } + + // default dimensions + if self.dimensions.is_none() { + self.dimensions = Some((1024, 768)); + } + + // building winimpl::Window::new(self).map(|w| Window { window: w }) } } diff --git a/src/win32/init.rs b/src/win32/init.rs index 09df5b0..efa27fd 100644 --- a/src/win32/init.rs +++ b/src/win32/init.rs @@ -59,8 +59,8 @@ pub fn new_window(builder: WindowBuilder) -> Result<Window, String> { // building a RECT object with coordinates let mut rect = ffi::RECT { - left: 0, right: builder.dimensions.val0() as ffi::LONG, - top: 0, bottom: builder.dimensions.val1() as ffi::LONG, + left: 0, right: builder.dimensions.unwrap_or((1024, 768)).val0() as ffi::LONG, + top: 0, bottom: builder.dimensions.unwrap_or((1024, 768)).val1() as ffi::LONG, }; // switching to fullscreen if necessary diff --git a/src/x11/mod.rs b/src/x11/mod.rs index f157237..580a897 100644 --- a/src/x11/mod.rs +++ b/src/x11/mod.rs @@ -39,7 +39,7 @@ impl MonitorID { impl Window { pub fn new(builder: WindowBuilder) -> Result<Window, String> { // TODO: temporary - let dimensions = Some(builder.dimensions); + let dimensions = builder.dimensions; let title = builder.title.as_slice(); // calling XOpenDisplay |