Differenze tra le versioni di "Colorare testo e sfondo in Console o Terminale"
Riga 1: | Riga 1: | ||
Come è noto, il testo stampato all'interno della console dell'IDE di Gambas è di colore nero, mentre quello stampato in Terminale è bianco. | Come è noto, il testo stampato all'interno della console dell'IDE di Gambas è di colore nero, mentre quello stampato in Terminale è bianco. | ||
− | Per poter cambiare il colore del testo oppure dello sfondo al testo, | + | Per poter cambiare il colore del testo oppure dello sfondo al testo, possiamo adottare almeno un paio di modalità. |
+ | |||
+ | |||
+ | ==Uso di speciali sequenze ''escape''== | ||
+ | Questa modalità prevede l'uso di speciali sequenze di codice ''[https://en.wikipedia.org/wiki/ANSI_escape_code escape]''. Tale sequenze ''escape'' vanno poste prima del carattere o dei caratteri da colorare. <SUP>[[[#Note|Nota 1]]]</sup> | ||
Riga 55: | Riga 59: | ||
Print "<FONT Color=#B22222>\e[38;5;'''208'''m</font> aaaa <FONT Color=#B22222>\e[0m</font>bbbb <FONT Color=#B22222>\e[38;5;'''160'''m\e[48;5;'''49'''m</font>cccc<FONT Color=#B22222>\e[0m</font>" | Print "<FONT Color=#B22222>\e[38;5;'''208'''m</font> aaaa <FONT Color=#B22222>\e[0m</font>bbbb <FONT Color=#B22222>\e[38;5;'''160'''m\e[48;5;'''49'''m</font>cccc<FONT Color=#B22222>\e[0m</font>" | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | ==Uso della funzione esterna ''system( )'' e del comando ''tput''== | ||
+ | Questa modalità prevede l'uso della funzione esterna ''system( )'' in combinazione con il comando ''[http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html tput]''. | ||
+ | |||
+ | Mostriamo un esempio pratico: | ||
+ | <FONT Color=gray>' ''int system(const char *__command)'' | ||
+ | ' ''Execute the given line as a shell command.''</font> | ||
+ | Private Extern system_C(__command As String) As Integer In "libc:6" Exec "system" | ||
+ | |||
+ | |||
+ | '''Public''' Sub Main() | ||
+ | |||
+ | <FONT Color=gray>' ''Si imposta il colore del testo (da 0 a 7):''</font> | ||
+ | system_C("tput setaf 3") | ||
+ | <FONT Color=gray>' ''Si imposta il colore dello sfondo del testo (da 0 a 7):''</font> | ||
+ | system_C("tput setab 1") | ||
+ | <FONT Color=gray>' ''Si imposta la modalità "grassetto" del testo):''</font> | ||
+ | system_C("tput bold") | ||
+ | <FONT Color=gray>' ''Si imposta la modalità "sottolineato" del testo):''</font> | ||
+ | system_C("tput smul") | ||
+ | |||
+ | Print "Testo qualsiasi"; | ||
'''End''' | '''End''' |
Versione delle 13:41, 12 lug 2017
Come è noto, il testo stampato all'interno della console dell'IDE di Gambas è di colore nero, mentre quello stampato in Terminale è bianco.
Per poter cambiare il colore del testo oppure dello sfondo al testo, possiamo adottare almeno un paio di modalità.
Indice
Uso di speciali sequenze escape
Questa modalità prevede l'uso di speciali sequenze di codice escape. Tale sequenze escape vanno poste prima del carattere o dei caratteri da colorare. [Nota 1]
Uso di sequenze escape con 8 numeri di colori
La prima parte della sequenza escape è formata da "\E". Va immediatamente precisato che in Gambas la lettera "E" dovrà essere sostituita con la corrispondente sua minuscola. Pertanto questa parte della sequenza sarà:
\e
A seguire vi sarà il carattere "[" seguito da un numero di codice che specifica quale proprietà sarà interessata dalla modifica. In particolare il numero "3" è afferente al colore di un carattere testuale, mentre il numero "4" è afferente allo sfondo di un carattere testuale.
Bisognerà, poi, specificare il colore. I colori assegnabili sono 8:
0 -> Nero
1 -> Rosso
2 -> Verde
3 -> Giallo
4 -> Blu
5 -> Magenta
6 -> Ciano
7 -> Bianco
L'intera sequenza, infine, dovrà essere chiusa con il carattere corrispondente alla lettera "m".
Così, se per esempio vogliamo colorare il testo di rosso, imposteremo il seguente codice:
Print "\e[31mTesto qualsiasi"
Per annullare le modifiche, si imposterà la sequenza:
\e[0m
Nel seguente esempio pratico si scriveranno tre gruppi di caratteri: il primo sarà colorato di rosso; poi si annullerà la modifica portando così il secondo gruppo alla colorazione predefinita; il terzo gruppo sarà colorato di giallo con sfondo di color magenta.
Public Sub Main() Print "\e[31maaaa \e[0mbbbb \e[33m\e[45mcccc\e[0m" End
Uso di sequenze escape con 256 numeri di colori
Oltre agli otto colori sopra riportati, è possibile utilizzare sequenze escape con 256 numeri di colori.
La prima parte della sequenza è simile alla precedente:
\e
immediatamente segue il carattere " [ ".
Poi va impostato il numero "38" per il colore del testo, mentre va usato il numero "48" per lo sfondo del testo. Si porrà appresso il simbolo del "punto e virgola" (;).
Quindi si porrà il numero "5" seguito dal "punto e virgola" (;).
Segue il numero del colore da impostare da 0 a 255. [Nota 2]
Chiude la sequenza la solita lettera "m".
Se, dunque, ad esempio vogliamo colorare il testo di arancione, utilizzando il colore numero 208, possiamo scrivere così:
Print "\e[38;5;208m Testo qualsiasi"
Per annullare la sequenza escape impostata, si utilizzerà ancora una volta la sequenza:
\e[0m
Nel seguente esempio pratico si scriveranno tre gruppi di caratteri: il primo sarà colorato con il colore numero 208; poi si annullerà la modifica portando così il secondo gruppo alla colorazione predefinita; il terzo gruppo sarà colorato con il colore numero 160 con sfondo del colore numero 49.
Public Sub Main() Print "\e[38;5;208m aaaa \e[0mbbbb \e[38;5;160m\e[48;5;49mcccc\e[0m" End
Uso della funzione esterna system( ) e del comando tput
Questa modalità prevede l'uso della funzione esterna system( ) in combinazione con il comando tput.
Mostriamo un esempio pratico:
' int system(const char *__command) ' Execute the given line as a shell command. Private Extern system_C(__command As String) As Integer In "libc:6" Exec "system" Public Sub Main() ' Si imposta il colore del testo (da 0 a 7): system_C("tput setaf 3") ' Si imposta il colore dello sfondo del testo (da 0 a 7): system_C("tput setab 1") ' Si imposta la modalità "grassetto" del testo): system_C("tput bold") ' Si imposta la modalità "sottolineato" del testo): system_C("tput smul") Print "Testo qualsiasi"; End
Note
[1] Vedi anche:
- https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Colors
- https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
- http://www.faqs.org/docs/Linux-HOWTO/Bash-Prompt-HOWTO.html#AEN341
[2] Per i numeri corrispondenti ai 256 colori, vedi la seguente tabella:
Modalità 256-colori — primo piano (foreground): ESC[38;5;#m sfondo (background): ESC[48;5;#m | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Colori standard | Colori ad alta-intensità | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
216 colori | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | ||||||||||||||||||||||||
52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | ||||||||||||||||||||||||
88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | ||||||||||||||||||||||||
124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | ||||||||||||||||||||||||
160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | ||||||||||||||||||||||||
196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | ||||||||||||||||||||||||
Colori in scala di grigi | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|