Udostępnij przez


Korzystanie ze struktur w usłudze WCS 1.0

Większość struktur używanych przez usługę WCS 1.0 jest bardzo prosta i wymaga niewielkiego wyjaśnienia. Są one udokumentowane w sekcji referencyjnej WCS 1.0 zatytułowanej Structures.

Wyjątki to struktura COLORMATCHSETUPW używana przez funkcję SetupColorMatchingW oraz następujące struktury systemu Windows zdefiniowane w pliku Wingdi.h:

Następujące tematy zostały omówione na większej długości:

Struktury nagłówków mapy bitowej systemu Windows

WCS 1.0 umożliwia powiązywanie lub osadzanie profilów kolorów ICC w niezależnych od urządzenia mapach bitowych (DIB). Dzięki temu kolory DIB można scharakteryzować dokładniej niż było to możliwe przy użyciu usługi WCS w systemie Windows 95. BITMAPV5HEADER , nowa struktura nagłówka mapy bitowej, została zdefiniowana w pliku Wingdi.h w wydaniu systemu Windows 98. W celach programistycznych jest on również uwzględniony w pliku Icm.h wraz z tym odwołaniem programisty. Struktura BITMAPV5HEADER jest następująca:

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;

Element członkowski bV5CSType może mieć wartości PROFILE_EMBEDDED lub PROFILE_LINKED, aby określić, czy profil jest osadzony, czy połączony z DIB. Człon bV5ProfileData jest przesunięciem wyrażonym w bajtach od początku struktury BITMAPV5HEADER do początku danych profilu. Jeśli profil jest osadzony, dane profilu są faktycznym profilem, a jeśli są połączone, dane profilu są nazwą pliku zakończoną znakiem null. Nie może to być ciąg Unicode. Musi składać się wyłącznie z znaków z zestawu znaków systemu Windows (strona kodowa 1252).

Gdy DIB jest ładowany do pamięci, dane profilu (jeśli istnieją) powinny następować po tabeli kolorów, a bV5ProfileData powinno określać przesunięcie danych profilu od początku struktury BITMAPV5HEADER. Wartość tego składnika będzie teraz inna, ponieważ bity mapy bitowej nie podążają za tabelą kolorów w pamięci. Aplikacje powinny modyfikować element bV5ProfileData po załadowaniu DIB do pamięci.

W przypadku spakowanych plików DIB dane profilu powinny następować po bitach mapy bitowej podobnie jak w formacie pliku. Element bV5ProfileData powinien nadal zawierać przesunięcie danych profilu od początku struktury BITMAPV5HEADER.

Aplikacje powinny uzyskiwać dostęp do danych profilu tylko wtedy, gdy bV5Size == sizeof ( BITMAPV5HEADER ) ANDbV5CSType jest PROFILE_EMBEDDED lub PROFILE_LINKED.

Jeśli profil jest połączony, ścieżka profilu może być dowolną w pełni kwalifikowaną nazwą (w tym ścieżką sieciową), którą można otworzyć przy użyciu funkcji Win32 CreateFile.

Różnice między nagłówkami V4 i V5

Podczas pracy z nową strukturą mapy bitowej warto rozpoznać różnice w sposobie konfigurowania struktur BITMAPV4HEADER i BITMAPV5HEADER:

Nagłówek V4 Znaczenie
bV4CSType LCS_CALIBRATED_RGB. Ta wartość oznacza, że punkty końcowe i gamma są podane w odpowiednich polach. Fałszywe wartości powodują problemy.
bV4CSType LCS_sRGB. Ta wartość oznacza, że mapa bitowa znajduje się w przestrzeni kolorów SRGB (gammas i punkty końcowe ignorowane).
bV4CSType LCS_PRZESTRZEŃ KOLORÓW WINDOWS. Ta wartość oznacza, że mapa bitowa znajduje się w domyślnej przestrzeni kolorów systemu Windows.

 

Nagłówek V5 Znaczenie
bV5CSType LCS_CALIBRATED_RGB. Ta wartość oznacza, że punkty końcowe i gamma są podane w odpowiednich polach. Fałszywe wartości powodują problemy.
bV5CSType LCS_sRGB. Ta wartość oznacza, że mapa bitowa znajduje się w przestrzeni kolorów SRGB (gammas i punkty końcowe ignorowane).
bV5CSType PROFILE_EMBEDDED. Ta wartość oznacza, że bV5ProfileData wskazuje bufor pamięci, który zawiera profil do użycia (gammas i punkty końcowe są ignorowane).
bV5CSType PROFIL_POŁĄCZONY Ta wartość oznacza, że bV5ProfileData wskazuje nazwę pliku profilu, którego należy użyć (parametry gamma i punkt końcowy są ignorowane).
bV5CSType LCS_WINDOWS_COLOR_SPACE. Ta wartość oznacza, że mapa bitowa znajduje się w domyślnej przestrzeni kolorów systemu Windows.

 

Aby przekonwertować starsze mapy bitowe do i z nowej struktury BITMAPV5HEADER, w dokumentacji programisty WCS 1.0 znajduje się plik narzędziowy do konwersji linii poleceń o nazwie Bitmap.exe.

BitMap.exe: narzędzie Command-Line do konwertowania nagłówków mapy bitowej

Bitmap.exe to narzędzie wiersza polecenia znajdujące się w folderze \Bin w folderze instalacyjnym, który określiłeś. Modyfikuje nagłówki map bitowych systemu Windows, umożliwiając konwertowanie istniejących map bitowych z BITMAPINFOHEADER i BITMAPV4HEADER struktur nagłówków do nowszej struktury BITMAPV5HEADER i z powrotem. Składnia wiersza polecenia jest następująca:

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

Przełączniki wiersza polecenia mają następujące efekty.

Przełącznik Znaczenie
/d Wartości domyślne są automatycznie wprowadzane w przekonwertowanych nagłówkach.
/1 Konwertuj określone mapy bitowe na BITMAPINFOHEADER
/4 Konwertowanie określonych map bitowych na BITMAPV4HEADER
/5 Konwertowanie określonych map bitowych na BITMAPV5HEADER
/f Wymusza konwersję, nawet jeśli mapa bitowa ma już właściwy nagłówek
/s Konwertuje mapy bitowe w określonym folderze i wszystkich podkatalogach w nim