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 systému Windows
- rozdíly mezi záhlavími V4 a V5
- Bitmap.exe: nástroj Command-Line pro převod bitmapových hlaviček
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. |