avva: (Default)
avva ([personal profile] avva) wrote2003-08-09 03:10 am

ansi colors



static Color_Def_Type Color_Defs [MAX_COLOR_NAMES] =
{
{"black", SLSMG_COLOR_BLACK},
[...]
{"brightmagenta", SLSMG_COLOR_BRIGHT_CYAN},
{"brightcyan", SLSMG_COLOR_BRIGHT_MAGENTA},
[...]
};


Добро пожаловать в мир ANSI-цветов на программах, бегущих в текстовом режиме. Мир, где ты никогда не знаешь, что такое "cyan", пока не запустишь. Мир, в котором названия цветов являются не более чем указателями на случайные числа, по прихоти аппликации, каковые случайные числа потом преобразуются в совсем другие случайные цвета, по прихоти программы-терминала, в зависимости от того, какая из пяток сегодня у этой программы чешется. Linux console, xterm, rxvt - у каждого своя палитра, а номера цветов одни и те же.

Процитированный выше код, кстати - из библиотеки slang. Это не баг. Это так и надо. Это мир ANSI-цветов.

[identity profile] b-a-t.livejournal.com 2003-08-08 05:53 pm (UTC)(link)
А это не очень старый Slang? Помнится, в очень 3-х версиях MC так и было - вместо cyan - magenta и наоборот... Я очень тогда ругался :)

[identity profile] avva.livejournal.com 2003-08-08 06:25 pm (UTC)(link)
Не, это один из самых последних. Видимо, тогда у них как раз было неправильно, вот они и поменяли ;)

(Anonymous) 2003-08-09 12:19 am (UTC)(link)
А может там числовые значения для SLSMG_COLOR_BRIGHT_CYAN и
SLSMG_COLOR_BRIGHT_MAGENTA тоже перепутаны? И этот код - просто workaround? ;-)

[identity profile] gogabr.livejournal.com 2003-08-09 06:17 am (UTC)(link)
Это вполне возможно. Но в таком случае безобразие, что не внятного комментария рядом.

[identity profile] avva.livejournal.com 2003-08-09 11:23 am (UTC)(link)
Может, но если так - это workaround внутри самой библиотеки, т.к. численные коды определены там же. Это глупо тогда получается ;)

Мне лень сейчас уже проверять, т.к. я обнаружил, что нужный мне код совсем не там находится (моя инсталляция mutt использует Slang, но все вещи с ANSI-цветами mutt делает сам у себя в исходниках, и сам всё передаёт curses в этой области, так что в Slang я зря полез смотреть).