Phase 6: Plattformprüfungen und absolute RGB-Farben, Change 05 archivieren
This commit is contained in:
@@ -11,74 +11,9 @@ use ratatui::{
|
||||
};
|
||||
use unicode_width::{UnicodeWidthChar, UnicodeWidthStr};
|
||||
|
||||
/// DOS-Farben der IDE. Die ersten 16 ANSI-Einträge gehören dem Terminalprofil.
|
||||
/// BASIC-Ausgabe verwendet weiterhin ihre eigene Farbabbildung in tb-ui.
|
||||
/// Feste DOS-RGB-Farben, identisch für IDE und BASIC-Ausgabe.
|
||||
pub fn dos(n: u8) -> Color {
|
||||
static COLORS: std::sync::OnceLock<u16> = std::sync::OnceLock::new();
|
||||
dos_color(
|
||||
n,
|
||||
*COLORS.get_or_init(|| {
|
||||
let detected = crossterm::style::available_color_count();
|
||||
// Ein generisches COLORTERM (z.B. "yes") verdeckt bei crossterm TERM.
|
||||
if detected < 256 && std::env::var("TERM").is_ok_and(|s| s.contains("256")) {
|
||||
256
|
||||
} else {
|
||||
detected
|
||||
}
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn dos_color(n: u8, colors: u16) -> Color {
|
||||
let n = n.min(15) as usize;
|
||||
const RGB: [(u8, u8, u8); 16] = [
|
||||
(0, 0, 0),
|
||||
(0, 0, 170),
|
||||
(0, 170, 0),
|
||||
(0, 170, 170),
|
||||
(170, 0, 0),
|
||||
(170, 0, 170),
|
||||
(170, 85, 0),
|
||||
(170, 170, 170),
|
||||
(85, 85, 85),
|
||||
(85, 85, 255),
|
||||
(85, 255, 85),
|
||||
(85, 255, 255),
|
||||
(255, 85, 85),
|
||||
(255, 85, 255),
|
||||
(255, 255, 85),
|
||||
(255, 255, 255),
|
||||
];
|
||||
if colors > 256 {
|
||||
let (r, g, b) = RGB[n];
|
||||
Color::Rgb(r, g, b)
|
||||
} else if colors >= 256 {
|
||||
// Fester 6x6x6-Farbwürfel / Graurampe statt profilabhängiger Systemfarben.
|
||||
Color::Indexed(
|
||||
[
|
||||
16, 19, 34, 37, 124, 127, 130, 248, 240, 63, 83, 87, 203, 207, 227, 231,
|
||||
][n],
|
||||
)
|
||||
} else {
|
||||
[
|
||||
Color::Black,
|
||||
Color::Blue,
|
||||
Color::Green,
|
||||
Color::Cyan,
|
||||
Color::Red,
|
||||
Color::Magenta,
|
||||
Color::Yellow,
|
||||
Color::Gray,
|
||||
Color::DarkGray,
|
||||
Color::LightBlue,
|
||||
Color::LightGreen,
|
||||
Color::LightCyan,
|
||||
Color::LightRed,
|
||||
Color::LightMagenta,
|
||||
Color::LightYellow,
|
||||
Color::White,
|
||||
][n]
|
||||
}
|
||||
tb_ui::screen::basic_color(n.min(15))
|
||||
}
|
||||
|
||||
pub(crate) fn pair(fg: u8, bg: u8) -> Style {
|
||||
@@ -160,6 +95,8 @@ impl App {
|
||||
5
|
||||
},
|
||||
);
|
||||
// Block/Paragraph ändern Stile, löschen aber keine vorhandenen Zeichen.
|
||||
f.render_widget(Clear, rect);
|
||||
f.render_widget(
|
||||
Block::default()
|
||||
.borders(Borders::ALL)
|
||||
|
||||
Reference in New Issue
Block a user