da Shagrath » mer mag 10, 2006 11:07 am
Ok, ce l'ho fatta, ho trovato una soluzione. Posto i risultati, magari possono servire a qualcun'altro.
Ho abbandonato la ncurses poichè non ho trovato un sistema per dare allo schermo (che viene considerato come una finestra dalle ncurses) una dimesione progressiva in altezza.
Ho invece trovato una soluzione più comoda e facile da usare che può essere integrata nella printf().
Basta inserire uno di questi caratteri speciali nella stringa da stampare sullo STD_OUT:
rgb_restore='\[\033[00m\]' // rimette il colore di default
rgb_black='\[\033[00;30m\]'
rgb_firebrick='\[\033[00;31m\]'
rgb_red='\[\033[01;31m\]'
rgb_yellow='\[\033[01;33m\]'
rgb_forest='\[\033[00;32m\]'
rgb_green='\[\033[01;32m\]'
rgb_brown='\[\033[00;33m\]'
rgb_navy='\[\033[00;34m\]'
rgb_blue='\[\033[01;34m\]'
rgb_purple='\[\033[00;35m\]'
rgb_magenta='\[\033[01;35m\]'
rgb_cadet='\[\033[00;36m\]'
rgb_cyan='\[\033[01;36m\]'
rgb_gray='\[\033[00;37m\]'
rgb_white='\[\033[01;37m\]'
ecco come vanno inseriti nella printf:
- Codice: Seleziona tutto
printf( "\033[01;33mCiao\n" );
Insomma, dovete omettere i due gruppi di carratteri '\[ e \]'
Attenzione però, una volta che uno di questi carratteri viene stampato a schermo, viene cambiato il colore che la shell usa per stampare a video! Quindi, anche se il vostro programma avrà terminato di eseguire, la shell continuerà, come nel nostro caso, a stampare giallo...
Per evitare che ciò avvenga, ricordatevi di stampare il carattere rgb_restore prima della fine del vs programma:
- Codice: Seleziona tutto
printf( "\033[01;33mCiao\033[00m\n" );
Così sarà stampato solo un "Ciao" giallo e subito dopo sarà reimpostato il colore di default della shell.
C'è sempre una soluzione...