paulo1205
(usa Ubuntu)
Enviado em 14/11/2013 - 20:48h
O programa abaixo deve dar uma ideia de como fazer em baixo nível.
#include <curses.h>
#include <term.h>
#include <stdio.h>
#include <unistd.h>
int main(void){
int cor;
setupterm(NULL, STDOUT_FILENO, NULL);
putp(exit_attribute_mode);
for(cor=0; cor<max_colors; cor++){
putp(tparm(set_a_foreground, cor));
printf("Cor %d normal ", cor);
putp(enter_bold_mode);
printf("e \"bold\".\n");
putp(exit_attribute_mode);
}
printf("Cor reset normal ");
putp(enter_bold_mode);
printf("e \"bold\".\n");
putp(exit_attribute_mode);
return 0;
}
Note que esse programa funciona mesmo com terminais que não suportam cores, simplesmente ignorando os comandos que pedem para mudar a cor. Se o terminal for muito chinfrim, ignora também os comandos que colocam o modo
bold . (Supondo que você esteja com um emulador de terminais que suporte 256 cores simultâneas -- como versões novas do xterm, konsole e gnome-terminal -- experimente rodar o programa variando o valor da variável de ambiente
TERM para "dumb", "vt100", "ansi", "xterm-16color" e "xterm-256color".)
Dá para descer mais o nível, amarrando o programa a um tipo de terminal específico e enviando diretamente as sequências de controle particulares desse terminal. Só que eu recomendo que você nunca faça isso -- até porque, como você viu acima, é muito fácil não usar cores, se elas não estiverem presentes.
E dá para subir o nível, usando realmente as funções da libcurses para manipulação de tela, criando uma interface de texto com menus, janelas, campos, painéis etc.