aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Wilm <joe@jwilm.com>2016-11-28 14:30:08 -0800
committerJoe Wilm <joe@jwilm.com>2016-12-11 20:23:41 -0800
commit7bf3d059c39c0b8e4529db6f7d84a1e1997738e8 (patch)
tree5db6d111a8af454b29beecc25bfa49ebc24b0d9c
parent74dcba59d8bec0a228cf1350bccab2aabd0304dd (diff)
downloadalacritty-7bf3d059c39c0b8e4529db6f7d84a1e1997738e8.tar.gz
alacritty-7bf3d059c39c0b8e4529db6f7d84a1e1997738e8.zip
Move term::cell module to its own file
The cell module was previously implemented within term.rs. Now each module has its own file.
-rw-r--r--src/term/cell.rs76
-rw-r--r--src/term/mod.rs (renamed from src/term.rs)104
2 files changed, 80 insertions, 100 deletions
diff --git a/src/term/cell.rs b/src/term/cell.rs
new file mode 100644
index 00000000..506fde0e
--- /dev/null
+++ b/src/term/cell.rs
@@ -0,0 +1,76 @@
+// Copyright 2016 Joe Wilm, The Alacritty Project Contributors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+use std::mem;
+
+use ansi;
+use Rgb;
+
+bitflags! {
+ #[derive(Serialize, Deserialize)]
+ pub flags Flags: u32 {
+ const INVERSE = 0b00000001,
+ const BOLD = 0b00000010,
+ const ITALIC = 0b00000100,
+ const UNDERLINE = 0b00001000,
+ }
+}
+
+#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub enum Color {
+ Rgb(Rgb),
+ Ansi(ansi::Color),
+}
+
+#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
+pub struct Cell {
+ pub c: char,
+ pub fg: Color,
+ pub bg: Color,
+ pub flags: Flags,
+}
+
+impl Cell {
+ pub fn bold(&self) -> bool {
+ self.flags.contains(BOLD)
+ }
+
+ pub fn new(c: char, fg: Color, bg: Color) -> Cell {
+ Cell {
+ c: c.into(),
+ bg: bg,
+ fg: fg,
+ flags: Flags::empty(),
+ }
+ }
+
+ #[inline]
+ pub fn is_empty(&self) -> bool {
+ self.c == ' ' &&
+ self.bg == Color::Ansi(ansi::Color::Background) &&
+ !self.flags.contains(INVERSE)
+ }
+
+ #[inline]
+ pub fn reset(&mut self, template: &Cell) {
+ // memcpy template to self
+ *self = template.clone();
+ }
+
+ #[inline]
+ pub fn swap_fg_and_bg(&mut self) {
+ mem::swap(&mut self.fg, &mut self.bg);
+ }
+}
diff --git a/src/term.rs b/src/term/mod.rs
index 618e3697..b5ccb244 100644
--- a/src/term.rs
+++ b/src/term/mod.rs
@@ -22,6 +22,9 @@ use grid::{Grid, ClearRegion};
use index::{Cursor, Column, Line};
use ansi::Color;
+pub mod cell;
+pub use self::cell::Cell;
+
/// Iterator that yields cells needing render
///
/// Yields cells that require work to be displayed (that is, not a an empty
@@ -154,105 +157,6 @@ fn limit<T: PartialOrd + Ord>(val: T, min: T, max: T) -> T {
cmp::min(cmp::max(min, val), max)
}
-pub mod cell {
- use std::mem;
-
- use ansi;
- use ::Rgb;
-
- bitflags! {
- #[derive(Serialize, Deserialize)]
- pub flags Flags: u32 {
- const INVERSE = 0b00000001,
- const BOLD = 0b00000010,
- const ITALIC = 0b00000100,
- const UNDERLINE = 0b00001000,
- }
- }
-
- #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
- pub enum Color {
- Rgb(Rgb),
- Ansi(ansi::Color),
- }
-
- #[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
- pub struct Cell {
- pub c: char,
- pub fg: Color,
- pub bg: Color,
- pub flags: Flags,
- }
-
- impl Cell {
- pub fn bold(&self) -> bool {
- self.flags.contains(BOLD)
- }
-
- pub fn new(c: char, fg: Color, bg: Color) -> Cell {
- Cell {
- c: c.into(),
- bg: bg,
- fg: fg,
- flags: Flags::empty(),
- }
- }
-
- #[inline]
- pub fn is_empty(&self) -> bool {
- self.c == ' ' &&
- self.bg == Color::Ansi(ansi::Color::Background) &&
- !self.flags.contains(INVERSE)
- }
-
- #[inline]
- pub fn reset(&mut self, template: &Cell) {
- // memcpy template to self
- *self = template.clone();
- }
-
- #[inline]
- pub fn swap_fg_and_bg(&mut self) {
- mem::swap(&mut self.fg, &mut self.bg);
- }
- }
-
- #[cfg(test)]
- mod tests {
- use super::Color;
- use std::mem;
-
- // Ensure memory layout is well defined so components like renderer
- // can exploit it.
- //
- // Thankfully, everything is just a u8 for now so no endianness
- // considerations are needed.
- #[test]
- fn color_memory_layout() {
- let rgb_color = Color::Rgb(::Rgb { r: 1, g: 2, b: 3 });
- let ansi_color = Color::Ansi(::ansi::Color::Foreground);
-
- unsafe {
- // Color::Rgb
- // [discriminant(0), red, green ,blue]
- let bytes: [u8; 4] = mem::transmute_copy(&rgb_color);
- assert_eq!(bytes[0], 0);
- assert_eq!(bytes[1], 1);
- assert_eq!(bytes[2], 2);
- assert_eq!(bytes[3], 3);
-
- // Color::Ansi
- // [discriminant(1), ansi::Color, 0, 0]
- let bytes: [u8; 4] = mem::transmute_copy(&ansi_color);
- assert_eq!(bytes[0], 1);
- assert_eq!(bytes[1], ::ansi::Color::Foreground as u8);
- }
- }
- }
-}
-
-pub use self::cell::Cell;
-
pub mod mode {
bitflags! {
pub flags TermMode: u8 {
@@ -981,7 +885,7 @@ mod tests {
use super::limit;
- use ansi::Color;
+ use ansi::{Color};
use grid::Grid;
use index::{Line, Column};
use term::{cell, Cell};