made style struct packed
This commit is contained in:
parent
cb8365abbd
commit
75b6fec5ab
|
@ -1,3 +1,5 @@
|
|||
use core::ops::Not;
|
||||
|
||||
use shadeable::pixel_format::Rgba64;
|
||||
|
||||
pub const VTERM_HEIGHT: u32 = 40;
|
||||
|
@ -6,34 +8,104 @@ pub const VTERM_WIDTH: u32 = 100;
|
|||
pub type ColorCharacter = (Rgba64, Rgba64);
|
||||
|
||||
pub struct VtermCharacter {
|
||||
pub character: char,
|
||||
//
|
||||
pub fg: Rgba64,
|
||||
pub bg: Rgba64,
|
||||
//
|
||||
pub style: Style,
|
||||
pub character: char,
|
||||
//
|
||||
pub fg: Rgba64,
|
||||
pub bg: Rgba64,
|
||||
//
|
||||
pub style: Style,
|
||||
}
|
||||
|
||||
pub struct Vterm {
|
||||
pub characters: [[VtermCharacter; VTERM_WIDTH as usize]; VTERM_HEIGHT as usize],
|
||||
pub cursor_x: u32,
|
||||
pub cursor_y: u32,
|
||||
pub cursor_visible: bool,
|
||||
pub characters: [[VtermCharacter; VTERM_WIDTH as usize]; VTERM_HEIGHT as usize],
|
||||
pub cursor_x: u32,
|
||||
pub cursor_y: u32,
|
||||
pub cursor_visible: bool,
|
||||
}
|
||||
|
||||
pub struct Style {
|
||||
pub bold: bool,
|
||||
pub underline: bool,
|
||||
pub italic: bool,
|
||||
pub blink: bool,
|
||||
pub reverse: bool,
|
||||
pub strike: bool,
|
||||
pub bold: bool,
|
||||
pub underline: bool,
|
||||
pub italic: bool,
|
||||
pub blink: bool,
|
||||
pub reverse: bool,
|
||||
pub strike: bool,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct StylePacked(u8);
|
||||
|
||||
impl StylePacked {
|
||||
pub fn new() -> Self {
|
||||
StylePacked(0)
|
||||
}
|
||||
pub fn bold(&self) -> bool {
|
||||
(self.0 & 0x01) > 0
|
||||
}
|
||||
pub fn underlined(&self) -> bool {
|
||||
(self.0 & 0x02) > 0
|
||||
}
|
||||
pub fn italic(&self) -> bool {
|
||||
(self.0 & 0x04) > 0
|
||||
}
|
||||
pub fn blinking(&self) -> bool {
|
||||
(self.0 & 0x08) > 0
|
||||
}
|
||||
pub fn reversed(&self) -> bool {
|
||||
(self.0 & 0x10) > 0
|
||||
}
|
||||
pub fn struck(&self) -> bool {
|
||||
(self.0 & 0x20) > 0
|
||||
}
|
||||
#[must_use]
|
||||
pub fn set_bold(mut self, v: bool) -> Self {
|
||||
if v {
|
||||
self.0 |= 0x01;
|
||||
} else {
|
||||
self.0 &= 0x01u8.not();
|
||||
}
|
||||
self
|
||||
}
|
||||
#[must_use]
|
||||
pub fn set_underlined(mut self, v: bool) -> Self {
|
||||
if v {
|
||||
self.0 |= 0x02;
|
||||
} else {
|
||||
self.0 &= 0x02u8.not();
|
||||
}
|
||||
self
|
||||
}
|
||||
#[must_use]
|
||||
pub fn set_italic(mut self, v: bool) -> Self {
|
||||
if v {
|
||||
self.0 |= 0x04;
|
||||
} else {
|
||||
self.0 &= 0x04u8.not();
|
||||
}
|
||||
self
|
||||
}
|
||||
#[must_use]
|
||||
pub fn set_blinking(mut self, v: bool) -> Self {
|
||||
if v {
|
||||
self.0 |= 0x08;
|
||||
} else {
|
||||
self.0 &= 0x08u8.not();
|
||||
}
|
||||
self
|
||||
}
|
||||
#[must_use]
|
||||
pub fn set_reversed(mut self, v: bool) -> Self {
|
||||
if v {
|
||||
self.0 |= 0x10;
|
||||
} else {
|
||||
self.0 &= 0x10u8.not();
|
||||
}
|
||||
self
|
||||
}
|
||||
#[must_use]
|
||||
pub fn set_struck(mut self, v: bool) -> Self {
|
||||
if v {
|
||||
self.0 |= 0x20;
|
||||
} else {
|
||||
self.0 &= 0x20u8.not();
|
||||
}
|
||||
self
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue