Originariamente pubblicato in data 01/07/2000
A
C
C
O
M
A
Z
Z
I
Che sia il colore!
Che sia il colore!
La gestione del colore sui moderni computer. Il caso di Macintosh e del Mac OS. I segreti del motore grafico QuickDraw 32 svelati da un esperto.
Una volta, tanto tanto tempo fa, l'interfaccia utente Apple era in bianco e nero, e tutti erano molto tristi. Ma poi, con l'introduzione dei Macintosh II, Apple introdusse milioni di colori sui propri schermi; in questa puntata di Mela contro Mela vedremo come il nostro calcolatore può gestire il colore.Come i lettori più fedeli di questa rubrica ben sanno, tutte le operazioni di disegno sui calcolatori Apple sono demandate a QuickDraw, il tool disegnatore. Il suo nome è un gioco di parole: il più veloce a disegnare, ma anche il più veloce ad estrarre la pistola; insomma, il disegnatore più veloce del West.
QuickDraw è molto di più che una raccolta di routine per disegnare sullo schermo: è un vero linguaggio di descrizione della pagina, che può trattare con spazi ben più grandi dello schermo, e che impone una struttura logica chiara e semplice sui tradizionali misteri della computer graphics.

Nel 1986, con l'uscita dell'Apple IIgs, un computer non compatibile con Mac, la Apple sviluppò una versione scritta in assembly 65816 (il microprocessore del'Apple IIgs) di QuickDraw. Dato che il Gs poteva visualizzare sino a 4096 colori differenti, Apple aggiunse tutta una serie di routine che permettevano a QuickDraw II di disegnare a colori.
Poco più tardi apparve il primo Macintosh II, che montava un processore 68020, fratello maggiore più veloce e potente del 68000. Una serie di espansioni a QuickDraw lo trasformavano in Color QuickDraw, pur restando compatibile con vecchio modello in bianco e nero. Il Mac II, così come i suoi discendenti, può mostrare, se dotato di apposite schede, sino a 16.777.216 differenti colori.
Dobbiamo notare che il Color QuickDraw ha comunque le fondamenta saldamente impiantate sulla logica, e persino sul codice, dell'originale QuickDraw. In particolare, non fa uso delle capacità superiori del 68020 rispetto al suo predecessore il 68000. Così, Apple presentò nel 1989 il QuickDraw 32, completamente riscritto per sfruttare il processore delle nuove macchine. QuickDraw 32, riscritto per il processore PowerPC, è ancor'oggi nel cuore del Mac OS.
QuickDraw verrà pensionato solo quando arriverà la versione 10 del Mac OS, in favore di un motore diverso, chiamato Quartz. Quartz è figlio in parti uguali di QuickDraw 32 e del PostScript.

Se desideriamo aumentare il numero di colori disponibili sullo schermo dovremmo aumentare a dismisura la zona di memoria riservata alla grafica. Per avere 640x400 punti con 256 colori dovremo dedicare 256 Kbyte di memoria allo schermo. Per un monitor da 1024 x 1024 punti con milioni di colori serviranno 4 MB.
Come qualche lettore ricorderà dagli insegnamenti delle scuole medie, il bianco altro non è se non la somma di tutti i colori; il nero è l'assenza di colore; il giallo si può ottenere sottraendo il blu dal verde. Questo metodo, che ricava i colori per sottrazione dai tre colori fondamentali, il rosso il verde e il blu, viene chiamato RGB, dalle iniziali dei tre colori in inglese. É la rappresentazione più vicina alla natura fisica della macchina, poiché il monitor a colori usa proprio quei tre colori come colori fondamentali.
Sono però possibili altri metodi per codificare un colore: per esempio le stampanti a getto d'inchiostro stampano una immagine a colori usando una rappresentazione CMY, e cioé ciano, magenta e giallo. Dato che la stampante può solo addizionare i colori, combinando più inchiostri, tra quelli disponibili, sulla medesima zona di carta, essa è costretta ad utilizzare questa rappresentazione complementare. É il software di gestione della stampante ad occuparsi normalmente della conversione tra la rappresentazione del computer e quella della stampante. Un terzo modo di codificare un colore è il modo HSB, forse il più intuitivo per un essere umano, che memorizza la tinta (hue), l'intensità (saturation) e la luminosità (brightness) del colore. Secondo questa rappresentazione il rosa e il rosso sono distinti solo per intensità, e il giallo limone è separato dal giallo paglierino dalla luminosità. Se giocate un poco con il telecomando di una Tv a colori capirete ben presto come lo Hsb possa funzionare.
In ultima analisi quello che ci interessa sapere è che le rappresentazioni sono analoghe: con alcuni semplici calcoli è possibile trasformarne una in un'altra qualunque. In effetti, Color QuickDraw contiene un piccolo numero di routine utilizzabili a questo scopo.
Esistono, poi, due metodi differenti con il quale oggi viene rappresentata una immagine grafica in memoria: il metodo a piani di bit (bit planes) e il metodo a pixel raggruppati (chunky pixels): sono illustrati rispettivamente nelle figure 2 e 3. Il metodo a piani di bit riserva una zona della memoria per la quantità di rosso di ciascun pixel, una seconda zona per il verde e una terza per il giallo. É un po' come se noi osservassimo uno schermo fatto di tre lucidi sovrapposti, (i piani di colore, appunto), e le dosi di ciascun fondamentale si miscelasselo per effetto della sovrapposizione dandoci la tinta voluta.
Nel metodo a pixel raggruppati, che è poi il metodo usato nei computer Apple, c'è una sola zona di memoria utilizzata per la rappresentazione dell'immagine a colori: di ciascun pixel sono salvate, fianco a fianco, le componenti rossa verde e blu.

Se non ci basta, passiamo a quattro bit per ciascun colore di base, ed avremo 24*3 = 212 colori, e cioé 4096 tinte distinte (perdonate il bisticcio di parole). Questa era la capacità dell'Apple IIgs, e anche dell'Amiga di Commodore. Possiamo attribuire sei bit per ogni colore, ottenendo così 218 possibilità, e ritrovando i 262.144 colori che la Ibm sventolava nelle sue pubblicità dei PS/2. Non c'è da stupirsi quando si scopre che il massimo era offerto dai Macintosh II, che con ben otto bit per ciascuna componente di colore offrivano già allora 16.777.216 differenti tinte.

Così, tutti i computer a colori (non solo i Mac II e l'Apple IIgs, ma anche i calcolatori della concorrenza) usavano un numero limitato di colori per volta, secondo il meccanismo rappresentato in figura 4. Si sceglie un certo numero di colori, che verranno effettivamente usati, tra tutti quelli disponibili: in gergo si dice che il calcolatore seleziona questi colori dalla tavolozza, o palette, di colori disponibili. I colori scelti vengono definiti nelle loro tre componenti di rosso, verde e blu, e a ciascuno di essi viene associato un numero progressivo. Ad esempio potremmo avere sul Mac II una scelta di 256 colori tra i sedici milioni disponibili. A questo punto è sufficiente riservare una quantità memoria tale da memorizzare non i colori, ma bensì i loro indici: e la richiesta di memoria precipita del 75%.
Per quanto abbiamo visto sin qui, sembrerebbe che nulla di particolare distingua il display a colori delle macchine Apple dagli analoghi adottati su Commodore, Atari o Ibm. In realtà, QuickDraw fa molto di più che non permettere la scelta di alcuni colori tra quelli disponibili, ma spaziotiranno non ci permette di entrare a questo punto nei dettagli veramente interessanti. L'appuntamento è solo rinviato, però, alla prossima puntata