DI RECENTE ACCOMAZZI...
CERCA
» Ricerca avanzata
MAILING LIST

Se vuoi iscriverti alla mailing list di Luca Accomazzi inserisci qui la tua mail:

Vuoi ricevere i messaggi immediatamente (50 invii / giorno) o in differita e in gruppo
(due invii / giorno)?

» Vuoi saperne di più?

Che sia il colore!

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.


Il piano di disegno di QuickDraw occupa 65536x65536 punti, dei quali solo una piccolissima parte è visualizzabile sullo schermo

I quattro fratelli QuickDraw

L'originale QuickDraw è stato creato per il Macintosh 128 nel 1983. Da allora è stato riscritto più volte, ma ancor'oggi mantiene tutte le caratteristiche della prima versione. Ad esempio, tratta con un piano di disegno di 65536x65536 punti (figura 1), dei quali sono visualizzabili sullo schermo solo una piccola parte ogni volta. Creato per il bianco e nero, il primo QuickDraw è scritto nel linguaggio macchina del processore 68000 (che stava al cuore del primo Mac).
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.


Nella memorizzazione a piani di bit, le componenti fondamentali rossa, verde e blu si trovano in tre zone distinte della memoria

Una mela a colori

E veniamo finalmente al colore. Sino a qualche anno fa, il trattamento del colore sui calcolatori veniva effettuato in un modo abbastanza semplice: si avevano a disposizione un certo numero di colori, tipicamente quattro, otto, oppure sedici, e a ciascuno di questi colori era associato un codice numerico. Per esempio, sugli Apple II tradizionali, si avevano sedici colori sullo schermo da 560x192 pixel (punti); sul primo Pc IBm trovavamo la scheda CGA da quattro colori con 320x200 pixel. All'immagine grafica, allora come oggi, era associata una zona di memoria, in un qualche punto ben determinato della memoria del computer. A seconda dei valori numerici contenuti in quella memoria, il pennello elettronico traccia sullo schermo i punti in questo o quel colore. Ad esempio, se nella memoria si trovano venti byte con valore zero, sarebbero tracciati quaranta punti neri, se supponiamo che un pixel occupi mezzo byte e che il nero sia il colore zero.
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.


Nella memorizzazione a pixel raggruppati, tutti i dati sulle componenti del colore per un pixel sono adiacenti.

Poca memoria? C’è la medicina

Ma a questo punto torniamo al problema che avevamo messo da parte per un momento, il problema del consumo di memoria. Un problema formidabile nel 1989, quando il colore cominciava a sfondare. Vediamo un po'. Se vogliamo avere 512 distinti colori per la nostra immagine, possiamo lasciare tre bit per ciascuna componente: tre per il rosso, tre per il verde, tre per il blu. In questo modo abbiamo una quantità numerica che va da zero a sette per rappresentare la percentuale di ciascun colore fondamentale presente in ciascuna tinta. Con qualche rapido calcolo vediamo che le distinte possibilità sono proprio 23 * 23 * 23 = 512. L'Atari ST funziona proprio in questo modo.
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.


L'uso di una tavolozza, o palette, permette la scelta dei colori in uso tra tutti quelli disponibili

Una tavolozza per QuickDraw

L'uso contemporaneo di tutti questi colori, come abbiamo accennato, è divoratore di memoria in grandissime quantità. Se il Mac II avesse permesso l'uso contemporaneo dei suoi sedici milioni di colori sarebbe necessario per ciascun punto una quantità di memoria di tre byte (uno per il rosso, uno per il verde, uno per il blu). Anche limitandoci allo schermo di 640x480 pixel fornito come configurazione minima con il Mac II avremmo una richiesta di quasi un Mbyte di memoria solo per visualizzare lo schermo -- ma il Mac II possedeva un MB di memoria IN TUTTO...
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


Questo articolo fa parte di uno dei miei percorsi. Se vuoi saperne di più su questo argomento, visita il resto del percorso cliccando qui.