pub struct ColChar {
pub text_char: char,
pub modifier: Modifier,
}
Expand description
A coloured character. Made up of text_char
, a single ascii character used as the “pixel” when drawn to a Canvas
, and modifier
, which gives that pixel a colour or makes it bold/italic
Fields§
§text_char: char
A single ascii character used as the “pixel” when drawn to a Canvas
modifier: Modifier
Defines the appearance of the character - colour, bold/italic, etc.
Implementations§
Source§impl ColChar
impl ColChar
Sourcepub const BACKGROUND: Self
pub const BACKGROUND: Self
A less solid ░ character with no Modifier
Sourcepub const fn new(text_char: char, modifier: Modifier) -> Self
pub const fn new(text_char: char, modifier: Modifier) -> Self
Create a new ColChar
with a text character and a Modifier
Sourcepub const fn with_char(self, text_char: char) -> Self
pub const fn with_char(self, text_char: char) -> Self
Return a ColChar
with the same modifier and new text_char
Sourcepub const fn with_mod(self, modifier: Modifier) -> Self
pub const fn with_mod(self, modifier: Modifier) -> Self
Return a ColChar
with the same text_char
and new modifier
Sourcepub const fn with_colour(self, colour: Colour) -> Self
pub const fn with_colour(self, colour: Colour) -> Self
Return a ColChar
with the same text_char
and new Modifier::Colour
modifier
Sourcepub const fn with_rgb(self, r: u8, g: u8, b: u8) -> Self
pub const fn with_rgb(self, r: u8, g: u8, b: u8) -> Self
Return a ColChar
with the same text_char
and new Modifier::Colour
modifier from an RGB value
Examples found in repository?
examples/complex-scene.rs (line 26)
15fn main() {
16 let mut view = View::new(60, 10, BACKGROUND_CHAR);
17
18 let mut pixel = Pixel::new(Vec2D::new(5, 9), FILL_CHAR);
19
20 let mut line = Line::new(Vec2D::new(2, 8), Vec2D::new(28, 7), FILL_CHAR);
21 let mut line1_direction = -1;
22
23 let rect = Rect::new(
24 Vec2D { x: 11, y: 1 },
25 Vec2D { x: 9, y: 3 },
26 ColChar::SOLID.with_rgb(200, 30, 0),
27 );
28
29 let test_image = r"
30 ______
31 /|_||_\`.__
32( _ _ _\
33=`-(_)--(_)-' ";
34 let mut sprite = Sprite::new(
35 Vec2D::new(30, 1),
36 test_image,
37 Modifier::from_rgb(20, 200, 0),
38 );
39
40 let mut draw_elapsed = Duration::default();
41 let mut render_elapsed = Duration::default();
42 fps_gameloop!(
43 {
44 pixel.pos.x += 2;
45 // loop the position back to the other side. This can be done with `WrappingMode::Wrap` but it won't change the element's actual position, so the pixel position being printed would continue to increase without looping
46 pixel.pos %= view.size();
47
48 line.pos1.y += line1_direction;
49 line.pos0.y = 10 - line.pos1.y;
50 if line.pos1.y > 7 {
51 line1_direction = -1;
52 } else if line.pos1.y < 3 {
53 line1_direction = 1;
54 }
55
56 sprite.pos.x += 1;
57 },
58 {
59 view.clear();
60
61 let now = Instant::now();
62 view.wrapping_mode = WrappingMode::Panic;
63 view.draw(&pixel);
64 view.draw(&line);
65 view.draw(&rect);
66 view.wrapping_mode = WrappingMode::Wrap;
67 view.draw(&sprite);
68 draw_elapsed = now.elapsed();
69
70 let now = Instant::now();
71 let _ = view.display_render();
72 render_elapsed = now.elapsed();
73 },
74 FPS,
75 |total_elapsed: Duration, _frame_skip| {
76 println!(
77 "Drawing: {:.2?} microseconds | Rendering: {:.2?} microseconds| Total: {:.2?}",
78 draw_elapsed.as_micros(),
79 render_elapsed.as_micros(),
80 total_elapsed.as_micros()
81 );
82 println!("Pixel position: {}", pixel.pos);
83 }
84 );
85}
Trait Implementations§
impl Copy for ColChar
impl Eq for ColChar
impl StructuralPartialEq for ColChar
Auto Trait Implementations§
impl Freeze for ColChar
impl RefUnwindSafe for ColChar
impl Send for ColChar
impl Sync for ColChar
impl Unpin for ColChar
impl UnwindSafe for ColChar
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more