Browse Source

Redesigned console API

pull/10/head
Fenrir 9 years ago
parent
commit
7b2483622d
  1. 25
      ctru-sys/src/console.rs
  2. 39
      src/console.rs

25
ctru-sys/src/console.rs

@ -35,26 +35,31 @@ pub struct PrintConsole {
pub consoleInitialised: u8, pub consoleInitialised: u8,
} }
pub const CONSOLE_COLOR_BOLD: i32 = 1; pub const CONSOLE_COLOR_BOLD: i32 = 1;
pub const CONSOLE_COLOR_FAINT: i32 = 2; pub const CONSOLE_COLOR_FAINT: i32 = 2;
pub const CONSOLE_ITALIC: i32 = 4; pub const CONSOLE_ITALIC: i32 = 4;
pub const CONSOLE_UNDERLINE: i32 = 8; pub const CONSOLE_UNDERLINE: i32 = 8;
pub const CONSOLE_BLINK_SLOW: i32 = 16; pub const CONSOLE_BLINK_SLOW: i32 = 16;
pub const CONSOLE_BLINK_FAST: i32 = 32; pub const CONSOLE_BLINK_FAST: i32 = 32;
pub const CONSOLE_COLOR_REVERSE: i32 = 64; pub const CONSOLE_COLOR_REVERSE: i32 = 64;
pub const CONSOLE_CONCEAL: i32 = 128; pub const CONSOLE_CONCEAL: i32 = 128;
#[repr(C)] #[repr(C)]
pub enum debugDevice { pub enum debugDevice {
NULL = 0, NULL = 0,
_3DMOO = 1, _3DMOO = 1,
CONSOLE = 2, CONSOLE = 2,
} }
extern "C" { extern "C" {
pub fn consoleSetFont(console: *mut PrintConsole, font: *mut ConsoleFont) -> (); pub fn consoleSetFont(console: *mut PrintConsole, font: *mut ConsoleFont) -> ();
pub fn consoleSetWindow(console: *mut PrintConsole, x: i32, y: i32, width: i32, height: i32) -> (); pub fn consoleSetWindow(console: *mut PrintConsole,
x: i32,
y: i32,
width: i32,
height: i32)
-> ();
pub fn consoleGetDefault() -> *mut PrintConsole; pub fn consoleGetDefault() -> *mut PrintConsole;
pub fn consoleSelect(console: *mut PrintConsole) -> *mut PrintConsole; pub fn consoleSelect(console: *mut PrintConsole) -> *mut PrintConsole;
pub fn consoleInit(screen: gfxScreen_t, console: *mut PrintConsole) -> *mut PrintConsole; pub fn consoleInit(screen: gfxScreen_t, console: *mut PrintConsole) -> *mut PrintConsole;

39
src/console.rs

@ -1,31 +1,42 @@
use libctru::console::{PrintConsole, consoleInit, consoleClear}; use libctru::console::{consoleInit, consoleClear};
use libctru::gfx; use libctru::gfx;
use core::default::Default;
use core::marker::PhantomData;
use core::ptr; use core::ptr;
extern "C" { extern "C" {
fn putchar(ch: u8) -> i32; fn putchar(ch: u8) -> i32;
} }
pub fn console_default_init() -> *mut PrintConsole { pub struct Console {
unsafe { consoleInit(gfx::gfxScreen_t::GFX_TOP, ptr::null_mut()) } pd: PhantomData<i32>,
} }
pub fn console_write<'a>(s: &'a str) { impl Console {
unsafe { pub fn write<'a>(&mut self, s: &'a str) {
for c in s.as_bytes().iter() { unsafe {
putchar(*c); for ch in s.as_bytes().iter() {
putchar(*ch);
}
} }
} }
}
pub fn console_writeln<'a>(s: &'a str) { pub fn writeln<'a>(&mut self, s: &'a str) {
unsafe { unsafe {
console_write(s); self.write(s);
putchar('\n' as u8); putchar('\n' as u8);
}
}
pub fn clear(&mut self) {
unsafe { consoleClear() }
} }
} }
pub fn console_clear() { impl Default for Console {
unsafe { consoleClear() } fn default() -> Self {
unsafe { consoleInit(gfx::gfxScreen_t::GFX_TOP, ptr::null_mut()); }
Console { pd: PhantomData }
}
} }

Loading…
Cancel
Save