Browse Source

Merge branch 'master' into example/time-rtc

pull/23/head
Ian Chamberlain 3 years ago
parent
commit
b032fd768a
No known key found for this signature in database
GPG Key ID: AE5484D09405AA60
  1. 4
      ctru-rs/examples/buttons.rs
  2. 2
      ctru-rs/examples/gfx_wide_mode.rs
  3. 4
      ctru-rs/examples/hello-both-screens.rs
  4. 4
      ctru-rs/examples/hello-world.rs
  5. 4
      ctru-rs/examples/software-keyboard.rs
  6. 15
      ctru-rs/src/console.rs
  7. 12
      ctru-sys/src/lib.rs

4
ctru-rs/examples/buttons.rs

@ -1,5 +1,5 @@
use ctru::console::Console; use ctru::console::Console;
use ctru::gfx::Gfx; use ctru::gfx::{Gfx, Screen};
use ctru::services::apt::Apt; use ctru::services::apt::Apt;
use ctru::services::hid::{Hid, KeyPad}; use ctru::services::hid::{Hid, KeyPad};
@ -9,7 +9,7 @@ fn main() {
let apt = Apt::init().unwrap(); let apt = Apt::init().unwrap();
let hid = Hid::init().unwrap(); let hid = Hid::init().unwrap();
let gfx = Gfx::default(); let gfx = Gfx::default();
let console = Console::init(&gfx, ctru::gfx::Screen::Top); let console = Console::init(&gfx, Screen::Top);
println!("Hi there! Try pressing a button"); println!("Hi there! Try pressing a button");
println!("\x1b[29;16HPress Start to exit"); println!("\x1b[29;16HPress Start to exit");

2
ctru-rs/examples/gfx_wide_mode.rs

@ -11,7 +11,7 @@ fn main() {
let apt = Apt::init().unwrap(); let apt = Apt::init().unwrap();
let hid = Hid::init().unwrap(); let hid = Hid::init().unwrap();
let gfx = Gfx::default(); let gfx = Gfx::default();
let _console = Console::init(&gfx, ctru::gfx::Screen::Top); let _console = Console::init(&gfx, Screen::Top);
println!("Press A to enable/disable wide screen mode."); println!("Press A to enable/disable wide screen mode.");

4
ctru-rs/examples/hello-both-screens.rs

@ -11,11 +11,11 @@ fn main() {
let gfx = Gfx::default(); let gfx = Gfx::default();
// Start a console on the top screen // Start a console on the top screen
let top_screen = Console::init(&gfx, ctru::gfx::Screen::Top); let top_screen = Console::init(&gfx, Screen::Top);
// Start a console on the bottom screen. // Start a console on the bottom screen.
// The most recently initialized console will be active by default // The most recently initialized console will be active by default
let bottom_screen = Console::init(&gfx, ctru::gfx::Screen::Bottom); let bottom_screen = Console::init(&gfx, Screen::Bottom);
// Let's print on the top screen first // Let's print on the top screen first
top_screen.select(); top_screen.select();

4
ctru-rs/examples/hello-world.rs

@ -1,5 +1,5 @@
use ctru::console::Console; use ctru::console::Console;
use ctru::gfx::Gfx; use ctru::gfx::{Gfx, Screen};
use ctru::services::apt::Apt; use ctru::services::apt::Apt;
use ctru::services::hid::{Hid, KeyPad}; use ctru::services::hid::{Hid, KeyPad};
@ -21,7 +21,7 @@ fn main() {
// Initialize a ctrulib console and direct standard output to it. // Initialize a ctrulib console and direct standard output to it.
// Consoles can be initialized on both the top and bottom screens. // Consoles can be initialized on both the top and bottom screens.
let _console = Console::init(&gfx, ctru::gfx::Screen::Top); let _console = Console::init(&gfx, Screen::Top);
// Now we can print to stdout! // Now we can print to stdout!
println!("Hello, world!"); println!("Hello, world!");

4
ctru-rs/examples/software-keyboard.rs

@ -1,6 +1,6 @@
use ctru::applets::swkbd::{Button, Swkbd}; use ctru::applets::swkbd::{Button, Swkbd};
use ctru::console::Console; use ctru::console::Console;
use ctru::gfx::Gfx; use ctru::gfx::{Gfx, Screen};
use ctru::services::apt::Apt; use ctru::services::apt::Apt;
use ctru::services::hid::{Hid, KeyPad}; use ctru::services::hid::{Hid, KeyPad};
@ -9,7 +9,7 @@ fn main() {
let apt = Apt::init().unwrap(); let apt = Apt::init().unwrap();
let hid = Hid::init().unwrap(); let hid = Hid::init().unwrap();
let gfx = Gfx::default(); let gfx = Gfx::default();
let _console = Console::init(&gfx, ctru::gfx::Screen::Top); let _console = Console::init(&gfx, Screen::Top);
println!("Press A to enter some text or press Start to quit"); println!("Press A to enter some text or press Start to quit");

15
ctru-rs/src/console.rs

@ -1,23 +1,28 @@
use std::default::Default; use std::default::Default;
use std::marker::PhantomData;
use ctru_sys::{consoleClear, consoleInit, consoleSelect, consoleSetWindow, PrintConsole}; use ctru_sys::{consoleClear, consoleInit, consoleSelect, consoleSetWindow, PrintConsole};
use crate::gfx::{Gfx, Screen}; use crate::gfx::{Gfx, Screen};
pub struct Console { pub struct Console<'gfx> {
context: Box<PrintConsole>, context: Box<PrintConsole>,
_gfx: PhantomData<&'gfx ()>,
} }
impl Console { impl<'gfx> Console<'gfx> {
/// Initialize a console on the chosen screen, overwriting whatever was on the screen /// Initialize a console on the chosen screen, overwriting whatever was on the screen
/// previously (including other consoles). The new console is automatically selected for /// previously (including other consoles). The new console is automatically selected for
/// printing. /// printing.
pub fn init(_gfx: &Gfx, screen: Screen) -> Self { pub fn init(_gfx: &'gfx Gfx, screen: Screen) -> Self {
let mut context = Box::new(PrintConsole::default()); let mut context = Box::new(PrintConsole::default());
unsafe { consoleInit(screen.into(), context.as_mut()) }; unsafe { consoleInit(screen.into(), context.as_mut()) };
Console { context } Console {
context,
_gfx: PhantomData,
}
} }
/// Select this console as the current target for stdout /// Select this console as the current target for stdout
@ -45,7 +50,7 @@ impl Console {
} }
} }
impl Drop for Console { impl Drop for Console<'_> {
fn drop(&mut self) { fn drop(&mut self) {
static mut EMPTY_CONSOLE: PrintConsole = unsafe { const_zero::const_zero!(PrintConsole) }; static mut EMPTY_CONSOLE: PrintConsole = unsafe { const_zero::const_zero!(PrintConsole) };

12
ctru-sys/src/lib.rs

@ -1,7 +1,9 @@
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(clippy::all)]
#![no_std] #![no_std]
include!("bindings.rs"); #[allow(non_upper_case_globals)]
#[allow(non_camel_case_types)]
#[allow(non_snake_case)]
#[allow(clippy::all)]
mod bindings;
pub use bindings::*;

Loading…
Cancel
Save