2014-12-13 2 views
2

Есть ли способ использовать коды выхода ANSI внутри mvwprintw?Как использовать escape-коды ANSI внутри mvwprintw в ncurses?

mvwprintw(window, 0, 0,"%c[%dmCOLORED_TEXT!\n", 0x1B, 32);//doesn't work 

даже если:

printf("%c[%dmCOLORED_TEXT\n", 0x1B, 32); //works 

Это было бы в тех случаях, когда использование wattron/wattroff не удобно; например, при перенаправлении вывода из stdout процесса, который выводит такие escape-коды.

+0

http://stackoverflow.com/questions/4373690/ansi-colors-in-c-and-ncurses –

ответ

2

Нет. Единственный способ сделать эту работу - это самостоятельно разобрать строку, возвращая коды возврата обратно в соответствующие команды curses, чтобы выдавать вместе с вашим выходом.

Одна вещь, которую вы должны понимать, состоит в том, что эти коды, хотя они широко применяются, не универсальны. Одна из основных целей проклятий - перевести свои стандартные команды в ряд управляющих кодов терминала. Таким образом, передача кодов, которые могут или не могут соответствовать текущему типу терминала, действительно не соответствует модели проклятий. Еще более принципиально, коды изменят состояние терминала таким образом, чтобы проклятия не могли отслеживать, так что содержимое его оконных структур больше не соответствовало тому, что было на экране.

+0

Можете ли вы привести пример того, как код возврата может быть возвращен в команды curses? –

+0

Это не тривиально. У меня есть парсер здесь, если он помогает: https://github.com/wmcbrine/MultiMail/blob/master/interfac/ansiview.cc –

Смежные вопросы