Originariamente pubblicato in data 12/07/1999
A
C
C
O
M
A
Z
Z
I
Che sia il colore, parte II
Che sia il colore, parte II
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.
Torniamo a Color QuickDraw, e ai suoi fedeli compagni di avventure: il Color Manager, il Palette Manager e il Color Picker Package.
Abbiamo spiegato nellarticolo precedente come funziona il meccanismo per il quale i Macintosh hanno a disposizione in ogni momento un certo numero di colori scelti in una gamma molto vasta. I Mac II potevano disporre, a seconda della scheda video montata nella macchina e della sistemazione che l'utente ha scelto nel Pannello di controllo, di due, quattro, sedici oppure 256 differenti colori scelti tra i milioni globalmente disponibili. Le macchine successive aggiunsero la possibilità di mostrare a video 32.768 ("migliaia") di colori oppure una gamma completa di 16.777.216 ("milioni"), ottenendo così una risoluzione superiore a quella che caratterizza la pellicola cinematografica.Con i Macintosh era per la prima volta l'utente, tramite il Pannello di controllo, a selezionare la profondità dei colori dell'immagine (il termine "profondità" è gergale, e fa riferimento alla rappresentazione del colore secondo il metodo dei piani di bit, metodo di cui abbiamo riferito nella puntata precedente: con questa frase intediamo dire, in altre parole, che l'utente stabilisce quanti colori desidera utilizzare in ogni dato momento, stanti naturalmente i limiti del suo hardware).
In tutti gli altri personal computer, con la sola eccezione del Macintosh, era l'applicazione, e non l'utente, ad effettuare questa scelta. La rivoluzione copernicana scelta da Apple in questo campo è, di primo acchito, inspiegabile: mentre ha un senso ben preciso lasciare che sia l'applicazione a pilotare lo hardware grafico, permettendo così ad una applicazione grafica di selezionare il massimo numero di colori disponibili e ad un word processor di ritornare al classicissimo bianco e nero, non sembrerebbe sensato lasciare questa scelta nelle mani dell'utente.
A ben riflettere, invece, la scelta non è affatto peregrina: dal punto di vista della filosofia d'uso, Apple resta conforme alla scelta di lasciar scegliere all'utente tutti quei parametri, come lo sfondo dello schermo o il volume dell'altoparlante, che a casa d'altri l'utente deve solo subire; in altri termini, l'utente resta il padrone del suo calcolatore, e non viceversa. Ma c'è un altro motivo: mentre, tanto per fare un esempio, nel mondo MsDos al crescere del numero di colori diminuisce la risoluzione della scheda in termini di punti (per cui, quando si ha a che fare con la sopravvalutata scheda Vga, per avere 256 colori a disposizione ci si deve accontentare di 320x200 pixel), con Macintosh questa limitazione non sussiste: se avete scelto la scheda a colori di Apple con il monitor da 13" otterrete a video 640x480 punti in ogni momento, sia quando avete scelto un sobrio bianco e nero dal Pannello di controllo, sia quando avete optato per 256 colori. L'unica differenza tra le modalità più ricche di colori e quelle più spartane sta nel tempo di elaborazione richiesto al Macintosh. Quando operiamo in bianco e nero, la memoria utilizzata per rappresentare lo schermo è di 640x400x1 bit, e cioé 32.000 byte, mentre con i 256 colori in azione questa quantità diviene 640x400x8 bit, e cioè 256.000 byte. La memoria a disposizione nel Macintosh per le applicazioni non diminuisce, perché la memoria di cui stiamo parlando, e cioè quella usata per la rappresentazione del video, si trova sulla scheda e non è utilizzata per nessun altro scopo; ma tuttavia è evidente che il Mac impiegherà più tempo ad aggiornare 256 Kbyte di quanto richieda per soli 32.
Un importante capacità di Color QuickDraw che non abbiamo menzionato nella scorsa puntata è quella di manipolare il disegno secondo molti sofisticati modelli. Nel modello AddPin il colore del disegno sul quale operiamo viene modificato aggiungendovi il colore con il quale disegnamo: su una superficie rossa brillante una striscia disegnata in grigio produce un rosso scuro. SubPin opera nel modo contrario: se lo sfondo è arancione e noi disegnamo in giallo questa componente viene sottratta, ottenendo così del rosso. Nel modo Max e nel modo Min le componenti sono aggiunte indipendentemente: se operiamo con un colore di forza (256, 75, 50000) su una base esistente di (500, 500, 500) in modo Max otterremo un colore (500, 500, 50000), mentre in modo AddPin avremmo avuto un (756, 575, 50500). Interessantissimi sono il modo Blend, dove i colori vengono miscelati e mediati, e il modo Transparency, dove il disegno che viene sovrapposto ad un disegno esistente lo copre solo nei punti dove è differente dallo sfondo (come con il lazo di MacPaint, ma a colori).

Cominciamo da quest'ultimo: il suo unico scopo è di fornire un metodo standard tramite il quale l'utente possa scegliere un colore tra quelli disponibili. Vediamo una schermata del Color picker dialog in figura. L'applicazione che fa uso dei colori, dunque, non deve preoccuparsi di interagire direttamente con l'utente quando costui voglia scegliere un colore (ad esempio, il colore da usare per una fetta del grafico a torta che sta preparando), ma lascia invece che sia il Color picker a fare questo per lei; con ovvi vantaggi per l'utente, che affronterà sempre questo stesso dialogo ogni qual volta che si tratterà di scegliere un colore, in ogni differente applicazione.
Il Color manager ha il compito di schermare l'applicazione dalle esigenze più legate allo hardware, come il mantenimento della palette di colori attualmente in uso. L'applicazione chiede al Color manager che un colore, ad esempio il rosso puro, sia reso disponibile, e il Color manager fa del suo meglio per procurarlo: tipicamente andrà a scovare un posto per questo colore nella palette in uso, e ne permetterà così la visualizzazione a video; ma in qualche occasione (e specialmente quanto i colori sul video sono pochi, magari solamente sedici) Color manager potrebbe optare per una approssimazione del colore richiesto. Ad esempio, se è già disponibile un rosso quasi puro, solo leggermente tinto di blu, il Color manager potrebbe decidere che non vale la pena di sprecare un altro spazio nella palette per rendere disponibile un colore tanto simile, e dirà all'applicazione di utilizzare questo rosso impuro.
Più sofisticato di Color manager è il Palette manager, ottimizzato per funzionare anche in un ambiente multitasking. I progettisti di Mac II si sono infatti trovati di fronte a un complesso problema: cosa accade se più applicazioni concorrenti sotto MultiFinder cercano di accaparrarsi lo hardware video? Una spinosa situazione del genere accadrebbe, ad esempio, lanciando due applicazioni grafiche che facciano uso del colore, come Pixel paint, che tenteranno entrambe di sistemare la palette dei colori come più sembra opportuno.
Altri calcolatori utilizzano tecniche del tutto inadeguate. Amiga, ad esempio, obbliga ogni applicazione concorrente a vivere in uno spazio, uno schermo, completamente distinto dagli altri: l'utente dovrà sfogliare tutti gli schermi delle applicazioni attive sino a trovare quella con la quale desidera operare. Su Macintosh questo sarebbe inaccettabile, poichè noi desideriamo avere tutte le finestre di tutte le applicazioni concorrenti in vista simultaneamente (per non parlare degli accessori di scrivania): questo è indispensabile per sfruttare a fondo quel semplice ma impagabile meccanismo che è il taglia e incolla. Il Palette manager, utilizzando in modo intelligente i meccanismi messi a disposizione dal Color manager, permette alle applicazioni di convivere in pace. Inoltre, esso permette di simulare un numero aggiuntivo di colori, oltre a quelli resi disponibili dallo hardware: se supponiamo di avere selezionato nel pannello uno schermo a quattro colori, ed immaginando che questi siano il bianco, il nero, il rosso ed il verde, non sarebbe possibile per l'applicazione colorare un oggetto di grigio: ma il Palette manager riconosce la situazione, e crea un retino miscelando punti bianchi e punti neri, disponendoli vicini gli uni agli altri, e creando così l'illusione del colore grigio.