Uso di strutture in WCS 1.0

La maggior parte delle strutture usate da WCS 1.0 è molto semplice e richiede poche spiegazioni. Sono documentati nella sezione Di riferimento WCS 1.0 denominata Strutture.

Le eccezioni sono la struttura COLORMATCHSETUPW usata dalla funzione SetupColorMatchingW e le strutture di Windows seguenti definite in Wingdi.h:

Gli argomenti seguenti vengono illustrati in modo più lungo:

Strutture di intestazione bitmap di Windows

WCS 1.0 consente di collegare o incorporare profili di colore ICC nelle bitmap indipendenti dal dispositivo. In questo modo, i colori DIB devono essere caratterizzati in modo più accurato rispetto al possibile uso di WCS in Windows 95. BITMAPV5HEADER , la nuova struttura di intestazione bitmap, è definita in Wingdi.h nella versione di Windows 98. A scopo di sviluppo, è incluso anche nel file Icm.h con il riferimento di questo programmatore. La struttura BITMAPV5HEADER è la seguente:

typedef struct {
    DWORD        bV5Size;
    LONG         bV5Width;
    LONG         bV5Height;
    WORD         bV5Planes;
    WORD         bV5BitCount;
    DWORD        bV5Compression;
    DWORD        bV5SizeImage;
    LONG         bV5XPelsPerMeter;
    LONG         bV5YPelsPerMeter;
    DWORD        bV5ClrUsed;
    DWORD        bV5ClrImportant;
    DWORD        bV5RedMask;
    DWORD        bV5GreenMask;
    DWORD        bV5BlueMask;
    DWORD        bV5AlphaMask;
    DWORD        bV5CSType;
    CIEXYZTRIPLE bV5Endpoints;
    DWORD        bV5GammaRed;
    DWORD        bV5GammaGreen;
    DWORD        bV5GammaBlue;
    DWORD        bV5Intent;         // Rendering intent for bitmap 
    DWORD        bV5ProfileData;    // Offset to profile data 
    DWORD        bV5ProfileSize;    // Size of embedded profile data 
    DWORD        bV5Reserved;       // Should be zero 
} BITMAPV5HEADER, FAR *LPBITMAPV5HEADER, *PBITMAPV5HEADER;

Il membro bV5CSType può avere i valori PROFILE_EMBEDDED o PROFILE_LINKED per specificare se un profilo è incorporato o collegato con DIB. Il membro bV5ProfileData è l'offset in byte dall'inizio della struttura BITMAPV5HEADER all'inizio dei dati del profilo. Se il profilo è incorporato, i dati del profilo sono il profilo effettivo e, se è collegato, i dati del profilo sono il nome del file con terminazione null del profilo. Non può essere una stringa Unicode. Deve essere composto esclusivamente da caratteri dal set di caratteri di Windows (tabella codici 1252).

Quando un DIB viene caricato in memoria, i dati del profilo (se presenti) devono seguire la tabella colori e bV5ProfileData deve assegnare l'offset dei dati del profilo dall'inizio della struttura BITMAPV5HEADER . Il valore di questo membro sarà diverso ora, poiché i bit bitmap non seguono la tabella dei colori in memoria. Le applicazioni devono modificare il membro bV5ProfileData dopo il caricamento del diB in memoria.

Per i database DIB compressi, i dati del profilo devono seguire i bit bitmap simili al formato di file. Il membro bV5ProfileData deve comunque assegnare l'offset dei dati del profilo dall'inizio della struttura BITMAPV5HEADER .

Le applicazioni devono accedere ai dati del profilo solo quando bV5Size == sizeof ( BITMAPV5HEADER ) ANDbV5CSType è PROFILE_EMBEDDED o PROFILE_LINKED.

Se un profilo è collegato, il percorso del profilo può essere qualsiasi nome completo (incluso un percorso di rete) che può essere aperto usando la funzione CreateFile Win32.

Differenze tra intestazioni V4 e V5

In uso con la nuova struttura bitmap, è utile riconoscere le differenze nel modo in cui vengono configurate le strutture BITMAPV4HEADER e BITMAPV5HEADER:

Intestazione V4 Significato
bV4CSType LCS_CALIBRATED_RGB. Questo valore implica che i punti finali e le gamma vengono forniti nei campi appropriati. I valori fasulli causano problemi.
bV4CSType LCS_sRGB. Questo valore implica che la bitmap si trova nello spazio dei colori sRGB (gamma e endpoint ignorati).
bV4CSType LCS_WINDOWS_COLOR_SPACE. Questo valore implica che la bitmap si trova nello spazio colore predefinito di Windows.

 

Intestazione V5 Significato
bV5CSType LCS_CALIBRATED_RGB. Questo valore implica che i punti finali e le gamma vengono forniti nei campi appropriati. I valori fasulli causano problemi.
bV5CSType LCS_sRGB. Questo valore implica che la bitmap si trova nello spazio dei colori sRGB (gamma e endpoint ignorati).
bV5CSType PROFILE_EMBEDDED. Questo valore implica che bV5ProfileData punta a un buffer di memoria che contiene il profilo da usare (le gamma e gli endpoint vengono ignorati).
bV5CSType PROFILE_LINKED. Questo valore implica che bV5ProfileData punta al nome del file del profilo da usare (le gamma e gli endpoint vengono ignorati).
bV5CSType LCS_WINDOWS_COLOR_SPACE. Questo valore implica che la bitmap si trova nello spazio colore predefinito di Windows.

 

Per convertire le bitmap meno recenti in e dalla nuova struttura BITMAPV5HEADER , un file di utilità di conversione da riga di comando denominato Bitmap.exe è incluso nel riferimento del programmatore WCS 1.0.

BitMap.exe: un'utilità Command-Line per la conversione di intestazioni bitmap

Bitmap.exe è un'utilità della riga di comando situata nella cartella \Bin nella cartella di installazione specificata. Modifica le intestazioni delle bitmap di Windows, consentendo di convertire le bitmap esistenti da bitmapINFOHEADER e bitmapV4HEADER alla struttura bitmapV5HEADER più recente e di nuovo. La sintassi della riga di comando è la seguente:

BITMAP [/d] [/1|4|5] [/s] [/f] 
filename

Le opzioni della riga di comando hanno gli effetti seguenti.

Commutatore Significato
/d I valori predefiniti vengono immessi automaticamente nelle intestazioni convertite.
/1 Convertire le bitmap specificate in BITMAPINFOHEADER
/4 Convertire le bitmap specificate in BITMAPV4HEADER
/5 Convertire le bitmap specificate in BITMAPV5HEADER
/f Forza la conversione, anche se la bitmap ha già l'intestazione destra
/s Converte le bitmap nella cartella specificata e tutte le sottodirectory sotto di esso