aboutsummaryrefslogtreecommitdiffstats
path: root/src/attrs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/attrs.rs')
-rw-r--r--src/attrs.rs37
1 files changed, 17 insertions, 20 deletions
diff --git a/src/attrs.rs b/src/attrs.rs
index eab752c..e5a2b8e 100644
--- a/src/attrs.rs
+++ b/src/attrs.rs
@@ -19,67 +19,64 @@ impl Default for Color {
}
}
-#[derive(enumset::EnumSetType, Debug)]
-pub enum TextMode {
- Bold,
- Italic,
- Underline,
- Inverse,
-}
+const TEXT_MODE_BOLD: u8 = 0b0000_0001;
+const TEXT_MODE_ITALIC: u8 = 0b0000_0010;
+const TEXT_MODE_UNDERLINE: u8 = 0b0000_0100;
+const TEXT_MODE_INVERSE: u8 = 0b0000_1000;
#[derive(Default, Clone, Copy, PartialEq, Eq, Debug)]
pub struct Attrs {
pub fgcolor: Color,
pub bgcolor: Color,
- pub mode: enumset::EnumSet<TextMode>,
+ pub mode: u8,
}
impl Attrs {
pub fn bold(&self) -> bool {
- self.mode.contains(TextMode::Bold)
+ self.mode & TEXT_MODE_BOLD != 0
}
pub fn set_bold(&mut self, bold: bool) {
if bold {
- self.mode.insert(TextMode::Bold);
+ self.mode |= TEXT_MODE_BOLD;
} else {
- self.mode.remove(TextMode::Bold);
+ self.mode &= !TEXT_MODE_BOLD;
}
}
pub fn italic(&self) -> bool {
- self.mode.contains(TextMode::Italic)
+ self.mode & TEXT_MODE_ITALIC != 0
}
pub fn set_italic(&mut self, italic: bool) {
if italic {
- self.mode.insert(TextMode::Italic);
+ self.mode |= TEXT_MODE_ITALIC;
} else {
- self.mode.remove(TextMode::Italic);
+ self.mode &= !TEXT_MODE_ITALIC;
}
}
pub fn underline(&self) -> bool {
- self.mode.contains(TextMode::Underline)
+ self.mode & TEXT_MODE_UNDERLINE != 0
}
pub fn set_underline(&mut self, underline: bool) {
if underline {
- self.mode.insert(TextMode::Underline);
+ self.mode |= TEXT_MODE_UNDERLINE;
} else {
- self.mode.remove(TextMode::Underline);
+ self.mode &= !TEXT_MODE_UNDERLINE;
}
}
pub fn inverse(&self) -> bool {
- self.mode.contains(TextMode::Inverse)
+ self.mode & TEXT_MODE_INVERSE != 0
}
pub fn set_inverse(&mut self, inverse: bool) {
if inverse {
- self.mode.insert(TextMode::Inverse);
+ self.mode |= TEXT_MODE_INVERSE;
} else {
- self.mode.remove(TextMode::Inverse);
+ self.mode &= !TEXT_MODE_INVERSE;
}
}