Sdílet prostřednictvím


Použití struktur v WCS 1.0

Většina struktur používaných WCS 1.0 je velmi jednoduchá a vyžaduje malé vysvětlení. Jsou zdokumentované v referenční části WCS 1.0 s názvem Struktury.

Výjimky jsou struktura COLORMATCHSETUPW používaná funkcí SetupColorMatchingW a následující struktury Windows definované v Wingdi.h:

Následující témata jsou popsána s větší délkou:

Struktury záhlaví bitmap Windows

WCS 1.0 umožňuje propojení nebo vložení barevných profilů ICC do rastrových obrázků nezávislých na zařízeních (DIBS). To umožňuje, aby barvy DIB byly charakterizovány přesněji, než bylo možné použít WCS v systému Windows 95. BITMAPV5HEADER, nová struktura bitmapového záhlaví, je definována ve Wingdi.h ve verzi Windows 98. Pro účely vývoje je také součástí souboru Icm.h s referenčními informacemi tohoto programátora. Struktura BITMAPV5HEADER je následující:

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;

Člen bV5CSType může mít hodnoty PROFILE_EMBEDDED nebo PROFILE_LINKED určit, zda je profil vložený nebo propojený s DIB. Položka bV5ProfileData je posun v bajtech od začátku struktury BITMAPV5HEADER k začátku dat profilu. Pokud je profil vnořený, data profilu jsou skutečným profilem, a pokud je propojen, data profilu jsou název souboru ukončený znakem null. Nemůže to být řetězec Unicode. Musí se skládat výhradně ze znakové sady Systému Windows (znaková stránka 1252).

Při načtení DIB do paměti by data profilu (pokud jsou k dispozici) měla následovat za barevnou tabulkou a bV5ProfileData by měly dát posun dat profilu od začátku struktury BITMAPV5HEADER. Hodnota tohoto členu se teď bude lišit, protože bity rastrových obrázků nedodržují barevnou tabulku v paměti. Aplikace by měly po načtení DIB do paměti upravit bV5ProfileData člen.

V případě zabalených DIB by data profilu měla následovat bity rastrového obrázku podobně jako ve formátu souboru. Člen bV5ProfileData by měl stále poskytovat offset profilu od začátku struktury BITMAPV5HEADER.

Aplikace by měly přistupovat k datům profilu pouze v případě, že bV5Size == sizeof ( BITMAPV5HEADER ) ANDbV5CSType PROFILE_EMBEDDED nebo PROFILE_LINKED.

Pokud je profil propojen, cesta profilu může být jakýkoliv plně kvalifikovaný název (včetně síťové cesty), který lze otevřít pomocí funkce Win32 CreateFile.

Rozdíly mezi záhlavími V4 a V5

Při práci s novou rastrovou strukturou je užitečné rozpoznat rozdíly v nastavení BITMAPV4HEADER a BITMAPV5HEADER struktur:

Záhlaví V4 Význam
bV4CSType LCS_CALIBRATED_RGB. Tato hodnota znamená, že koncové body a gama jsou uvedeny v příslušných polích. Falešné hodnoty způsobují potíže.
bV4CSType LCS_sRGB. Tato hodnota znamená, že rastrový obrázek je v barevném prostoru sRGB (gama a koncové body ignorovány).
bV4CSType LCS_WINDOWS_COLOR_SPACE. Tato hodnota znamená, že rastrový obrázek je ve výchozím barevném prostoru Windows.

 

Záhlaví V5 Význam
bV5CSType LCS_CALIBRATED_RGB. Tato hodnota znamená, že koncové body a gama jsou uvedeny v příslušných polích. Falešné hodnoty způsobují potíže.
bV5CSType LCS_sRGB. Tato hodnota znamená, že rastrový obrázek je v barevném prostoru sRGB (gama a koncové body ignorovány).
bV5CSType PROFILE_EMBEDDED. Tato hodnota znamená, že bV5ProfileData odkazuje na vyrovnávací paměť obsahující profil, který se má použít (gama a koncové body jsou ignorovány).
bV5CSType PROFILE_LINKED. Tato hodnota znamená, že bV5ProfileData odkazuje na název souboru profilu, který se má použít (gama a koncové body jsou ignorovány).
bV5CSType LCS_WINDOWS_COLOR_SPACE. Tato hodnota znamená, že rastrový obrázek je ve výchozím barevném prostoru Windows.

 

Aby bylo možné převést starší rastrové obrázky do a z nové struktury BITMAPV5HEADER, je v referenční příručce programátora WCS 1.0 zahrnut soubor nástroje příkazového řádku s názvem Bitmap.exe.

BitMap.exe: nástroj Command-Line pro převod bitmapových hlaviček

Bitmap.exe je nástroj příkazového řádku umístěný ve složce \Bin pod zadanou instalační složkou. Upravuje záhlaví rastrových obrázků systému Windows, což umožňuje převést existující rastrové obrázky z BITMAPINFOHEADER a BITMAPV4HEADER struktury záhlaví na novější strukturu BITMAPV5HEADER a zpět. Syntaxe příkazového řádku je následující:

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

Přepínače příkazového řádku mají následující efekty.

Vypínač Význam
/d Výchozí hodnoty se automaticky zadávají do převedených hlaviček.
/1 Převeďte zadané rastrové obrázky na BITMAPINFOHEADER
/4 Převeďte zadané rastrové obrázky na BITMAPV4HEADER
/5 Převedení zadaných rastrových obrázků na BITMAPV5HEADER
/f Vynucuje převod, i když rastrový obrázek už má správné záhlaví.
/s Převede rastrové obrázky v zadané složce a všechny podadresáře pod ním.