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