Outline position fix
This commit is contained in:
+3
-9
@@ -148,9 +148,7 @@ impl RenderScope {
|
||||
let height = height + self.transform.py * 2;
|
||||
if width > 1 && height > 1 {
|
||||
let d = "─".repeat(width as usize - 2);
|
||||
utils::print_liner(
|
||||
self.transform.x,
|
||||
self.transform.y,
|
||||
utils::print_liner_nopad(
|
||||
&self.transform,
|
||||
&self.parent_transform,
|
||||
&utils::hex_ansi(c),
|
||||
@@ -167,9 +165,7 @@ impl RenderScope {
|
||||
let height = height + self.transform.py * 2;
|
||||
if width > 1 && height > 1 {
|
||||
let d = "─".repeat(width as usize - 2);
|
||||
utils::print_liner(
|
||||
self.transform.x,
|
||||
self.transform.y,
|
||||
utils::print_liner_nopad(
|
||||
&self.transform,
|
||||
&self.parent_transform,
|
||||
&utils::hex_ansi(c),
|
||||
@@ -181,9 +177,7 @@ impl RenderScope {
|
||||
);
|
||||
}
|
||||
}
|
||||
crate::style::Background::Solid(c) => utils::print_liner(
|
||||
self.transform.x,
|
||||
self.transform.y,
|
||||
crate::style::Background::Solid(c) => utils::print_liner_nopad(
|
||||
&self.transform,
|
||||
&self.parent_transform,
|
||||
&hex_ansi_bg(c),
|
||||
|
||||
+23
-1
@@ -142,13 +142,14 @@ pub(crate) fn print_liner(
|
||||
text: &str,
|
||||
) {
|
||||
let x = transform.x + transform.px + x;
|
||||
let y = transform.y + transform.py + y;
|
||||
|
||||
for (i, line) in text.lines().enumerate() {
|
||||
if parent_transform.offset_y > y + i as u16 {
|
||||
continue;
|
||||
}
|
||||
|
||||
let y = transform.y + transform.py + y + i as u16 - parent_transform.offset_y;
|
||||
let y = y + i as u16 - parent_transform.offset_y;
|
||||
|
||||
if y >= parent_transform.height + parent_transform.y + parent_transform.py {
|
||||
break;
|
||||
@@ -157,3 +158,24 @@ pub(crate) fn print_liner(
|
||||
flush().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn print_liner_nopad(
|
||||
transform: &RawTransform,
|
||||
parent_transform: &RawTransform,
|
||||
liner: &str,
|
||||
text: &str,
|
||||
) {
|
||||
for (i, line) in text.lines().enumerate() {
|
||||
if parent_transform.offset_y > transform.y + i as u16 {
|
||||
continue;
|
||||
}
|
||||
|
||||
let y = transform.y + i as u16 - parent_transform.offset_y;
|
||||
|
||||
if y >= parent_transform.height + parent_transform.y + parent_transform.py {
|
||||
break;
|
||||
}
|
||||
print!("\x1b[{};{}H{liner}{line}\x1b[0m", y + 1, transform.x + 1);
|
||||
flush().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user