Adds get_pixel_format() to Window

This commit is contained in:
Pierre Krieger 2015-04-11 09:06:08 +02:00
parent 70d36a3d3d
commit 1e94d85d35
6 changed files with 34 additions and 3 deletions

View file

@ -15,6 +15,7 @@ use Api;
use BuilderAttribs; use BuilderAttribs;
use CursorState; use CursorState;
use GlRequest; use GlRequest;
use PixelFormat;
use native_monitor::NativeMonitorId; use native_monitor::NativeMonitorId;
pub struct Window { pub struct Window {
@ -353,6 +354,10 @@ impl Window {
::Api::OpenGlEs ::Api::OpenGlEs
} }
pub fn get_pixel_format(&self) -> PixelFormat {
unimplemented!();
}
pub fn set_window_resize_callback(&mut self, _: Option<fn(u32, u32)>) { pub fn set_window_resize_callback(&mut self, _: Option<fn(u32, u32)>) {
} }

View file

@ -8,6 +8,7 @@ use libc;
use Api; use Api;
use BuilderAttribs; use BuilderAttribs;
use GlRequest; use GlRequest;
use PixelFormat;
use native_monitor::NativeMonitorId; use native_monitor::NativeMonitorId;
use objc::runtime::{Class, Object, Sel, BOOL, YES, NO}; use objc::runtime::{Class, Object, Sel, BOOL, YES, NO};
@ -616,6 +617,10 @@ impl Window {
::Api::OpenGl ::Api::OpenGl
} }
pub fn get_pixel_format(&self) -> PixelFormat {
unimplemented!();
}
pub fn set_window_resize_callback(&mut self, callback: Option<fn(u32, u32)>) { pub fn set_window_resize_callback(&mut self, callback: Option<fn(u32, u32)>) {
self.delegate.state.resize_handler = callback; self.delegate.state.resize_handler = callback;
} }

View file

@ -203,16 +203,17 @@ unsafe fn init(title: Vec<u16>, builder: BuilderAttribs<'static>,
}; };
// calling SetPixelFormat // calling SetPixelFormat
{ let pixel_format = {
let formats = if extra_functions.GetPixelFormatAttribivARB.is_loaded() { let formats = if extra_functions.GetPixelFormatAttribivARB.is_loaded() {
enumerate_arb_pixel_formats(&extra_functions, &real_window) enumerate_arb_pixel_formats(&extra_functions, &real_window)
} else { } else {
enumerate_native_pixel_formats(&real_window) enumerate_native_pixel_formats(&real_window)
}; };
let (id, _) = try!(builder.choose_pixel_format(formats.into_iter().map(|(a, b)| (b, a)))); let (id, f) = try!(builder.choose_pixel_format(formats.into_iter().map(|(a, b)| (b, a))));
try!(set_pixel_format(&real_window, id)); try!(set_pixel_format(&real_window, id));
} f
};
// creating the OpenGL context // creating the OpenGL context
let context = try!(create_context(Some((&extra_functions, &builder)), &real_window, let context = try!(create_context(Some((&extra_functions, &builder)), &real_window,
@ -263,6 +264,7 @@ unsafe fn init(title: Vec<u16>, builder: BuilderAttribs<'static>,
events_receiver: events_receiver, events_receiver: events_receiver,
is_closed: AtomicBool::new(false), is_closed: AtomicBool::new(false),
cursor_state: cursor_state, cursor_state: cursor_state,
pixel_format: pixel_format,
}) })
} }

View file

@ -13,6 +13,7 @@ use libc;
use {CreationError, Event, MouseCursor}; use {CreationError, Event, MouseCursor};
use CursorState; use CursorState;
use PixelFormat;
use BuilderAttribs; use BuilderAttribs;
pub use self::headless::HeadlessContext; pub use self::headless::HeadlessContext;
@ -53,6 +54,9 @@ pub struct Window {
/// The current cursor state. /// The current cursor state.
cursor_state: Arc<Mutex<CursorState>>, cursor_state: Arc<Mutex<CursorState>>,
/// The pixel format that has been used to create this window.
pixel_format: PixelFormat,
} }
unsafe impl Send for Window {} unsafe impl Send for Window {}
@ -258,6 +262,10 @@ impl Window {
::Api::OpenGl ::Api::OpenGl
} }
pub fn get_pixel_format(&self) -> PixelFormat {
self.pixel_format.clone()
}
pub fn set_window_resize_callback(&mut self, _: Option<fn(u32, u32)>) { pub fn set_window_resize_callback(&mut self, _: Option<fn(u32, u32)>) {
} }

View file

@ -8,6 +8,7 @@ use CursorState;
use Event; use Event;
use GlRequest; use GlRequest;
use MouseCursor; use MouseCursor;
use PixelFormat;
use native_monitor::NativeMonitorId; use native_monitor::NativeMonitorId;
use gl_common; use gl_common;
@ -388,6 +389,11 @@ impl Window {
self.window.get_api() self.window.get_api()
} }
/// Returns the pixel format of this window.
pub fn get_pixel_format(&self) -> PixelFormat {
self.window.get_pixel_format()
}
/// Create a window proxy for this window, that can be freely /// Create a window proxy for this window, that can be freely
/// passed to different threads. /// passed to different threads.
#[inline] #[inline]

View file

@ -12,6 +12,7 @@ use std::sync::{Arc, Mutex, Once, ONCE_INIT};
use Api; use Api;
use CursorState; use CursorState;
use GlRequest; use GlRequest;
use PixelFormat;
pub use self::monitor::{MonitorID, get_available_monitors, get_primary_monitor}; pub use self::monitor::{MonitorID, get_available_monitors, get_primary_monitor};
@ -732,6 +733,10 @@ impl Window {
::Api::OpenGl ::Api::OpenGl
} }
pub fn get_pixel_format(&self) -> PixelFormat {
unimplemented!();
}
pub fn set_window_resize_callback(&mut self, _: Option<fn(u32, u32)>) { pub fn set_window_resize_callback(&mut self, _: Option<fn(u32, u32)>) {
} }