mirror of
https://github.com/encounter/rust-sdl2.git
synced 2026-07-10 21:18:41 -07:00
All sane Video functions implemented
This commit is contained in:
+79
-1
@@ -20,7 +20,7 @@ pub mod ll {
|
||||
}
|
||||
|
||||
pub struct SDL_PixelFormat {
|
||||
format: uint32_t,
|
||||
format: SDL_PixelFormatFlag,
|
||||
palette: *SDL_Pallette,
|
||||
BitsPerPixel: uint8_t,
|
||||
BytesPerPixel: uint8_t,
|
||||
@@ -40,6 +40,44 @@ pub mod ll {
|
||||
refcount: c_int,
|
||||
next: *SDL_PixelFormat
|
||||
}
|
||||
|
||||
pub type SDL_PixelFormatFlag = uint32_t;
|
||||
pub static SDL_PIXELFORMAT_UNKNOWN: SDL_PixelFormatFlag = 0x0;
|
||||
pub static SDL_PIXELFORMAT_INDEX1LSB: SDL_PixelFormatFlag = 0x11100100;
|
||||
pub static SDL_PIXELFORMAT_INDEX1MSB: SDL_PixelFormatFlag = 0x11200100;
|
||||
pub static SDL_PIXELFORMAT_INDEX4LSB: SDL_PixelFormatFlag = 0x12100400;
|
||||
pub static SDL_PIXELFORMAT_INDEX4MSB: SDL_PixelFormatFlag = 0x12200400;
|
||||
pub static SDL_PIXELFORMAT_INDEX8: SDL_PixelFormatFlag = 0x13000801;
|
||||
pub static SDL_PIXELFORMAT_RGB332: SDL_PixelFormatFlag = 0x14110801;
|
||||
pub static SDL_PIXELFORMAT_RGB444: SDL_PixelFormatFlag = 0x15120c02;
|
||||
pub static SDL_PIXELFORMAT_RGB555: SDL_PixelFormatFlag = 0x15130f02;
|
||||
pub static SDL_PIXELFORMAT_BGR555: SDL_PixelFormatFlag = 0x15530f02;
|
||||
pub static SDL_PIXELFORMAT_ARGB4444: SDL_PixelFormatFlag = 0x15321002;
|
||||
pub static SDL_PIXELFORMAT_RGBA4444: SDL_PixelFormatFlag = 0x15421002;
|
||||
pub static SDL_PIXELFORMAT_ABGR4444: SDL_PixelFormatFlag = 0x15721002;
|
||||
pub static SDL_PIXELFORMAT_BGRA4444: SDL_PixelFormatFlag = 0x15821002;
|
||||
pub static SDL_PIXELFORMAT_ARGB1555: SDL_PixelFormatFlag = 0x15331002;
|
||||
pub static SDL_PIXELFORMAT_RGBA5551: SDL_PixelFormatFlag = 0x15441002;
|
||||
pub static SDL_PIXELFORMAT_ABGR1555: SDL_PixelFormatFlag = 0x15731002;
|
||||
pub static SDL_PIXELFORMAT_BGRA5551: SDL_PixelFormatFlag = 0x15841002;
|
||||
pub static SDL_PIXELFORMAT_RGB565: SDL_PixelFormatFlag = 0x15151002;
|
||||
pub static SDL_PIXELFORMAT_BGR565: SDL_PixelFormatFlag = 0x15551002;
|
||||
pub static SDL_PIXELFORMAT_RGB24: SDL_PixelFormatFlag = 0x17101803;
|
||||
pub static SDL_PIXELFORMAT_BGR24: SDL_PixelFormatFlag = 0x17401803;
|
||||
pub static SDL_PIXELFORMAT_RGB888: SDL_PixelFormatFlag = 0x16161804;
|
||||
pub static SDL_PIXELFORMAT_RGBX8888: SDL_PixelFormatFlag = 0x16261804;
|
||||
pub static SDL_PIXELFORMAT_BGR888: SDL_PixelFormatFlag = 0x16561804;
|
||||
pub static SDL_PIXELFORMAT_BGRX8888: SDL_PixelFormatFlag = 0x16661804;
|
||||
pub static SDL_PIXELFORMAT_ARGB8888: SDL_PixelFormatFlag = 0x16362004;
|
||||
pub static SDL_PIXELFORMAT_RGBA8888: SDL_PixelFormatFlag = 0x16462004;
|
||||
pub static SDL_PIXELFORMAT_ABGR8888: SDL_PixelFormatFlag = 0x16762004;
|
||||
pub static SDL_PIXELFORMAT_BGRA8888: SDL_PixelFormatFlag = 0x16862004;
|
||||
pub static SDL_PIXELFORMAT_ARGB2101010: SDL_PixelFormatFlag = 0x16372004;
|
||||
pub static SDL_PIXELFORMAT_YV12: SDL_PixelFormatFlag = 0x32315659;
|
||||
pub static SDL_PIXELFORMAT_IYUV: SDL_PixelFormatFlag = 0x56555949;
|
||||
pub static SDL_PIXELFORMAT_YUY2: SDL_PixelFormatFlag = 0x32595559;
|
||||
pub static SDL_PIXELFORMAT_UYVY: SDL_PixelFormatFlag = 0x59565955;
|
||||
pub static SDL_PIXELFORMAT_YVYU: SDL_PixelFormatFlag = 0x55595659;
|
||||
}
|
||||
|
||||
#[deriving(Eq)]
|
||||
@@ -54,3 +92,43 @@ impl rand::Rand for Color {
|
||||
else { RGB(rng.gen(), rng.gen(), rng.gen()) }
|
||||
}
|
||||
}
|
||||
|
||||
#[deriving(Eq)]
|
||||
pub enum PixelFormatFlag {
|
||||
Unknown = ll::SDL_PIXELFORMAT_UNKNOWN as int,
|
||||
Index1LSB = ll::SDL_PIXELFORMAT_INDEX1LSB as int,
|
||||
Index1MSB = ll::SDL_PIXELFORMAT_INDEX1MSB as int,
|
||||
Index4LSB = ll::SDL_PIXELFORMAT_INDEX4LSB as int,
|
||||
Index4MSB = ll::SDL_PIXELFORMAT_INDEX4MSB as int,
|
||||
Index8 = ll::SDL_PIXELFORMAT_INDEX8 as int,
|
||||
RGB332 = ll::SDL_PIXELFORMAT_RGB332 as int,
|
||||
RGB444 = ll::SDL_PIXELFORMAT_RGB444 as int,
|
||||
RGB555 = ll::SDL_PIXELFORMAT_RGB555 as int,
|
||||
BGR555 = ll::SDL_PIXELFORMAT_BGR555 as int,
|
||||
ARGB4444 = ll::SDL_PIXELFORMAT_ARGB4444 as int,
|
||||
RGBA4444 = ll::SDL_PIXELFORMAT_RGBA4444 as int,
|
||||
ABGR4444 = ll::SDL_PIXELFORMAT_ABGR4444 as int,
|
||||
BGRA4444 = ll::SDL_PIXELFORMAT_BGRA4444 as int,
|
||||
ARGB1555 = ll::SDL_PIXELFORMAT_ARGB1555 as int,
|
||||
RGBA5551 = ll::SDL_PIXELFORMAT_RGBA5551 as int,
|
||||
ABGR1555 = ll::SDL_PIXELFORMAT_ABGR1555 as int,
|
||||
BGRA5551 = ll::SDL_PIXELFORMAT_BGRA5551 as int,
|
||||
RGB565 = ll::SDL_PIXELFORMAT_RGB565 as int,
|
||||
BGR565 = ll::SDL_PIXELFORMAT_BGR565 as int,
|
||||
RGB24 = ll::SDL_PIXELFORMAT_RGB24 as int,
|
||||
BGR24 = ll::SDL_PIXELFORMAT_BGR24 as int,
|
||||
RGB888 = ll::SDL_PIXELFORMAT_RGB888 as int,
|
||||
RGBX8888 = ll::SDL_PIXELFORMAT_RGBX8888 as int,
|
||||
BGR888 = ll::SDL_PIXELFORMAT_BGR888 as int,
|
||||
BGRX8888 = ll::SDL_PIXELFORMAT_BGRX8888 as int,
|
||||
ARGB8888 = ll::SDL_PIXELFORMAT_ARGB8888 as int,
|
||||
RGBA8888 = ll::SDL_PIXELFORMAT_RGBA8888 as int,
|
||||
ABGR8888 = ll::SDL_PIXELFORMAT_ABGR8888 as int,
|
||||
BGRA8888 = ll::SDL_PIXELFORMAT_BGRA8888 as int,
|
||||
ARGB2101010 = ll::SDL_PIXELFORMAT_ARGB2101010 as int,
|
||||
YV12 = ll::SDL_PIXELFORMAT_YV12 as int,
|
||||
IYUV = ll::SDL_PIXELFORMAT_IYUV as int,
|
||||
YUY2 = ll::SDL_PIXELFORMAT_YUY2 as int,
|
||||
UYVY = ll::SDL_PIXELFORMAT_UYVY as int,
|
||||
YVYU = ll::SDL_PIXELFORMAT_YVYU as int
|
||||
}
|
||||
|
||||
+8
-5
@@ -6,6 +6,7 @@ use std::vec;
|
||||
|
||||
use rect::Rect;
|
||||
use surface::Surface;
|
||||
use pixels;
|
||||
|
||||
use get_error;
|
||||
|
||||
@@ -163,8 +164,8 @@ pub mod ll {
|
||||
externfn!(fn SDL_GL_GetProcAddress(proc: *c_char))
|
||||
externfn!(fn SDL_GL_UnloadLibrary())
|
||||
externfn!(fn SDL_GL_ExtensionSupported(extension: *c_char) -> SDL_bool)
|
||||
externfn!(fn SDL_GL_SetAttribute(attr: c_int, value: c_int) -> c_int) //attr should be SDL_GLAttr
|
||||
externfn!(fn SDL_GL_GetAttribute(attr: c_int, value: *c_int) -> c_int) //attr should be SDL_GLAttr
|
||||
externfn!(fn SDL_GL_SetAttribute(attr: SDL_GLattr, value: c_int) -> c_int)
|
||||
externfn!(fn SDL_GL_GetAttribute(attr: SDL_GLattr, value: *c_int) -> c_int)
|
||||
externfn!(fn SDL_GL_CreateContext(window: *SDL_Window) -> SDL_GLContext)
|
||||
externfn!(fn SDL_GL_MakeCurrent(window: *SDL_Window, context: SDL_GLContext) -> c_int)
|
||||
externfn!(fn SDL_GL_GetCurrentWindow() -> *SDL_Window)
|
||||
@@ -418,7 +419,9 @@ impl Window {
|
||||
}
|
||||
}
|
||||
|
||||
/*pub fn SDL_GetWindowPixelFormat(window: *SDL_Window) -> uint32_t; */ //TODO: Implement me!
|
||||
pub fn get_window_pixel_format(&self) -> pixels::PixelFormatFlag {
|
||||
unsafe{ cast::transmute(ll::SDL_GetWindowPixelFormat(self.raw) as u64) }
|
||||
}
|
||||
|
||||
pub fn get_id(&self) -> u32 {
|
||||
unsafe { ll::SDL_GetWindowID(self.raw) }
|
||||
@@ -750,13 +753,13 @@ pub fn gl_extension_supported(extension: &str) -> bool {
|
||||
}
|
||||
|
||||
pub fn gl_set_attribute(attr: GLAttr, value: int) -> bool {
|
||||
unsafe { ll::SDL_GL_SetAttribute(attr as c_int, value as c_int) == 0 }
|
||||
unsafe { ll::SDL_GL_SetAttribute(cast::transmute(attr as u64), value as c_int) == 0 }
|
||||
}
|
||||
|
||||
pub fn gl_get_attribute(attr: GLAttr) -> Result<int, ~str> {
|
||||
let out: c_int = 0;
|
||||
|
||||
let result = unsafe { ll::SDL_GL_GetAttribute(attr as c_int, &out) } == 0;
|
||||
let result = unsafe { ll::SDL_GL_GetAttribute(cast::transmute(attr as u64), &out) } == 0;
|
||||
if result {
|
||||
Ok(out as int)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user