Outline position fix

This commit is contained in:
2025-11-02 09:10:34 +01:00
parent e4b905d085
commit 98b2a4e667
2 changed files with 26 additions and 10 deletions
+3 -9
View File
@@ -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
View File
@@ -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();
}
}