Struct agb::display::object::ChangeColour
source · pub struct ChangeColour(/* private fields */);
Expand description
Changes the palette to use to draw characters.
use agb::display::object::{ObjectTextRender, PaletteVram, ChangeColour, Size};
use agb::display::palette16::Palette16;
use agb::display::Font;
use core::fmt::Write;
const EXAMPLE_FONT: Font = agb::include_font!("examples/font/yoster.ttf", 12);
let mut palette = [0x0; 16];
palette[1] = 0xFF_FF;
palette[2] = 0x00_FF;
let palette = Palette16::new(palette);
let palette = PaletteVram::new(&palette).unwrap();
let mut writer = ObjectTextRender::new(&EXAMPLE_FONT, Size::S16x16, palette);
let _ = writeln!(writer, "Hello, {}World{}!", ChangeColour::new(2), ChangeColour::new(1));
Implementations§
source§impl ChangeColour
impl ChangeColour
sourcepub fn new(colour: usize) -> Self
pub fn new(colour: usize) -> Self
Creates the colour changer. Colour is a palette index and must be in the range 0..16.
Examples found in repository?
examples/object_text_render.rs (line 46)
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
fn main(mut gba: agb::Gba) -> ! {
let (mut unmanaged, _sprites) = gba.display.object.get_unmanaged();
let mut palette = [0x0; 16];
palette[1] = 0xFF_FF;
palette[2] = 0x00_FF;
let palette = Palette16::new(palette);
let palette = PaletteVram::new(&palette).unwrap();
let timer = gba.timers.timers();
let mut timer: agb::timer::Timer = timer.timer2;
timer.set_enabled(true);
timer.set_divider(agb::timer::Divider::Divider256);
let mut wr = ObjectTextRender::new(&FONT, Size::S16x16, palette);
let start = timer.value();
let player_name = "You";
let _ = writeln!(
wr,
"Woah!{change2} {player_name}! {change1}Hey there! I have a bunch of text I want to show you. However, you will find that the amount of text I can display is limited. Who'd have thought! Good thing that my text system supports scrolling! It only took around 20 jank versions to get here!",
change2 = ChangeColour::new(2),
change1 = ChangeColour::new(1),
);
let end = timer.value();
agb::println!(
"Write took {} cycles",
256 * (end.wrapping_sub(start) as u32)
);
let vblank = agb::interrupt::VBlank::get();
let mut input = agb::input::ButtonController::new();
let start = timer.value();
wr.layout((WIDTH, 40).into(), TextAlignment::Justify, 2);
let end = timer.value();
agb::println!(
"Layout took {} cycles",
256 * (end.wrapping_sub(start) as u32)
);
let mut line_done = false;
let mut frame = 0;
loop {
vblank.wait_for_vblank();
input.update();
let oam = &mut unmanaged.iter();
wr.commit(oam);
let start = timer.value();
if frame % 4 == 0 {
line_done = !wr.next_letter_group();
}
if line_done && input.is_just_pressed(Button::A) {
line_done = false;
wr.pop_line();
}
wr.update((0, HEIGHT - 40).into());
let end = timer.value();
frame += 1;
agb::println!(
"Took {} cycles, line done {}",
256 * (end.wrapping_sub(start) as u32),
line_done
);
}
}
Trait Implementations§
source§impl Clone for ChangeColour
impl Clone for ChangeColour
source§fn clone(&self) -> ChangeColour
fn clone(&self) -> ChangeColour
Returns a copy of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for ChangeColour
impl Debug for ChangeColour
source§impl Display for ChangeColour
impl Display for ChangeColour
source§impl PartialEq for ChangeColour
impl PartialEq for ChangeColour
impl Copy for ChangeColour
impl Eq for ChangeColour
impl StructuralEq for ChangeColour
impl StructuralPartialEq for ChangeColour
Auto Trait Implementations§
impl RefUnwindSafe for ChangeColour
impl Send for ChangeColour
impl Sync for ChangeColour
impl Unpin for ChangeColour
impl UnwindSafe for ChangeColour
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more