Cleanup crate root

This commit is contained in:
Tomaka17 2014-07-27 12:59:45 +02:00
parent 1cc0447c5e
commit 13b79ffaaf
3 changed files with 178 additions and 97 deletions

33
src/events.rs Normal file
View file

@ -0,0 +1,33 @@
#[deriving(Clone,Show)]
pub enum Event {
/// The position of the window has changed.
PositionChanged(uint, uint),
/// The size of the window has changed.
SizeChanged(uint, uint),
/// The window has been closed.
Closed,
/// The cursor has moved on the window.
///
/// The parameter are the (x,y) coords in pixels relative to the top-left corner of the window.
CursorPositionChanged(uint, uint),
/// The window gained or lost focus.
///
/// The parameter is true if the window has gained focus, and false if it has lost focus.
Focused(bool),
/// The window has been turned into an icon or restored.
///
/// The parameter is true if the window has been iconified, and false if it has been restored.
Iconified(bool),
/// The system asked that the content of this window must be redrawn.
NeedRefresh,
/// The size of the framebuffer of the window has changed.
FramebufferSizeChanged(uint, uint),
}

73
src/hints.rs Normal file
View file

@ -0,0 +1,73 @@
use std::default::Default;
#[deriving(Clone,Show)]
pub struct Hints {
pub resizable: bool,
pub visible: bool,
pub decorated: bool,
pub red_bits: u8,
pub green_bits: u8,
pub blue_bits: u8,
pub alpha_bits: u8,
pub depth_bits: u8,
pub stencil_bits: u8,
pub accum_red_bits: u8,
pub accum_green_bits: u8,
pub accum_blue_bits: u8,
pub accum_alpha_bits: u8,
pub aux_buffers: u8,
pub samples: u8,
pub refresh_rate: u8,
pub stereo: bool,
pub srgb_capable: bool,
pub client_api: ClientAPI,
pub context_version: (u8, u8),
//pub robustness: ,
pub opengl_forward_compat: bool,
pub opengl_debug_context: bool,
pub opengl_profile: Profile,
}
#[deriving(Clone, Show)]
pub enum ClientAPI {
OpenGL,
OpenGLES,
}
#[deriving(Clone, Show)]
pub enum Profile {
AnyProfile,
CompatProfile,
CoreProfile,
}
impl Default for Hints {
fn default() -> Hints {
Hints {
resizable: true,
visible: true,
decorated: true,
red_bits: 8,
green_bits: 8,
blue_bits: 8,
alpha_bits: 8,
depth_bits: 24,
stencil_bits: 8,
accum_red_bits: 0,
accum_green_bits: 0,
accum_blue_bits: 0,
accum_alpha_bits: 0,
aux_buffers: 0,
samples: 0,
refresh_rate: 0,
stereo: false,
srgb_capable: false,
client_api: OpenGL,
context_version: (1, 0),
//robustness: ,
opengl_forward_compat: false,
opengl_debug_context: false,
opengl_profile: AnyProfile,
}
}
}

View file

@ -2,113 +2,88 @@
extern crate libc;
pub use events::{Event, PositionChanged, SizeChanged, Closed, CursorPositionChanged, Focused};
pub use events::{Iconified, NeedRefresh, FramebufferSizeChanged};
pub use hints::{Hints, ClientAPI, Profile};
#[cfg(windows)]
pub use win32::Window;
use winimpl = win32;
#[cfg(windows)]
mod win32;
#[deriving(Clone,Show)]
pub enum Event {
/// The position of the window has changed.
PositionChanged(uint, uint),
mod events;
mod hints;
/// The size of the window has changed.
SizeChanged(uint, uint),
/// The window has been closed.
Closed,
/// The cursor has moved on the window.
///
/// The parameter are the (x,y) coords in pixels relative to the top-left corner of the window.
CursorPositionChanged(uint, uint),
/// The window gained or lost focus.
///
/// The parameter is true if the window has gained focus, and false if it has lost focus.
Focused(bool),
/// The window has been turned into an icon or restored.
///
/// The parameter is true if the window has been iconified, and false if it has been restored.
Iconified(bool),
/// The system asked that the content of this window must be redrawn.
NeedRefresh,
/// The size of the framebuffer of the window has changed.
FramebufferSizeChanged(uint, uint),
pub struct Window {
window: winimpl::Window
}
#[deriving(Clone,Show)]
pub struct Hints {
pub resizable: bool,
pub visible: bool,
pub decorated: bool,
pub red_bits: u8,
pub green_bits: u8,
pub blue_bits: u8,
pub alpha_bits: u8,
pub depth_bits: u8,
pub stencil_bits: u8,
pub accum_red_bits: u8,
pub accum_green_bits: u8,
pub accum_blue_bits: u8,
pub accum_alpha_bits: u8,
pub aux_buffers: u8,
pub samples: u8,
pub refresh_rate: u8,
pub stereo: bool,
pub srgb_capable: bool,
pub client_api: ClientAPI,
pub context_version: (u8, u8),
//pub robustness: ,
pub opengl_forward_compat: bool,
pub opengl_debug_context: bool,
pub opengl_profile: Profile,
}
impl Window {
#[inline]
pub fn new(dimensions: Option<(uint, uint)>, title: &str, hints: &Hints)
-> Result<Window, String>
{
let win = try!(winimpl::Window::new(dimensions, title, hints));
Ok(Window{window: win})
}
#[deriving(Clone, Show)]
pub enum ClientAPI {
OpenGL,
OpenGLES,
}
/// Returns true if the window has been closed by the user.
#[inline]
pub fn should_close(&self) -> bool {
self.window.should_close()
}
#[deriving(Clone, Show)]
pub enum Profile {
AnyProfile,
CompatProfile,
CoreProfile,
}
/// Modifies the title of the window.
#[inline]
pub fn set_title(&self, title: &str) {
self.window.set_title(title)
}
impl std::default::Default for Hints {
fn default() -> Hints {
Hints {
resizable: true,
visible: true,
decorated: true,
red_bits: 8,
green_bits: 8,
blue_bits: 8,
alpha_bits: 8,
depth_bits: 24,
stencil_bits: 8,
accum_red_bits: 0,
accum_green_bits: 0,
accum_blue_bits: 0,
accum_alpha_bits: 0,
aux_buffers: 0,
samples: 0,
refresh_rate: 0,
stereo: false,
srgb_capable: false,
client_api: OpenGL,
context_version: (1, 0),
//robustness: ,
opengl_forward_compat: false,
opengl_debug_context: false,
opengl_profile: AnyProfile,
}
#[inline]
pub fn get_position(&self) -> (uint, uint) {
self.window.get_position()
}
#[inline]
pub fn set_position(&self, x: uint, y: uint) {
self.window.set_position(x, y)
}
#[inline]
pub fn get_size(&self) -> (uint, uint) {
self.window.get_size()
}
#[inline]
pub fn set_size(&self, x: uint, y: uint) {
self.window.set_size(x, y)
}
// TODO: return iterator
#[inline]
pub fn poll_events(&self) -> Vec<Event> {
self.window.poll_events()
}
// TODO: return iterator
#[inline]
pub fn wait_events(&self) -> Vec<Event> {
self.window.wait_events()
}
#[inline]
pub fn make_current(&self) {
self.window.make_current()
}
#[inline]
pub fn get_proc_address(&self, addr: &str) -> *const () {
self.window.get_proc_address(addr)
}
#[inline]
pub fn swap_buffers(&self) {
self.window.swap_buffers()
}
}