WCS 1.0에서 사용하는 대부분의 구조체는 매우 간단하며 설명이 거의 필요하지 않습니다. 구조체WCS 1.0 참조 섹션에 설명되어 있습니다.
예외는 SetupColorMatchingW 함수에서 사용되는 COLORMATCHSETUPW 구조와 Wingdi.h에 정의된 다음 Windows 구조입니다.
다음 항목은 더 긴 길이로 설명됩니다.
- Windows 비트맵 헤더 구조
- V4와 V5 헤더 간의 차이점
- Bitmap.exe: 비트맵 헤더 변환하기 위한 Command-Line 유틸리티
Windows 비트맵 헤더 구조체
WCS 1.0을 사용하면 ICC 색 프로필을 디바이스 독립적 비트맵(DIB)에 연결하거나 포함할 수 있습니다. 이렇게 하면 Windows 95에서 WCS를 사용할 때보다 DIB 색을 더욱 정확하게 특성화할 수 있습니다. 새 비트맵 헤더 구조인 BITMAPV5HEADER Windows 98 릴리스의 Wingdi.h에 정의되어 있습니다. 개발 목적으로 이 프로그래머 참조가 포함된 Icm.h 파일에도 포함됩니다. BITMAPV5HEADER 구조는 다음과 같습니다.
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;
멤버 bV5CSType PROFILE_EMBEDDED 또는 PROFILE_LINKED 값을 사용하여 프로필이 DIB에 포함되는지 또는 연결되었는지 여부를 지정할 수 있습니다. bV5ProfileData 멤버는 BITMAPV5HEADER 구조체의 시작부터 프로필 데이터의 시작까지의 바이트 단위 오프셋입니다. 프로필이 포함된 경우 프로필 데이터는 실제 프로필이며, 프로필 데이터가 연결된 경우 프로필 데이터는 프로필의 null로 종료된 파일 이름입니다. 유니코드 문자열일 수 없습니다. Windows 문자 집합(코드 페이지 1252)의 문자만 구성해야 합니다.
DIB가 메모리에 로드되면 프로필 데이터(있는 경우)가 색 테이블을 따라야 하며 bV5ProfileDataBITMAPV5HEADER 구조의 시작 부분에서 프로필 데이터의 오프셋을 제공해야 합니다. 비트맵 비트가 메모리의 색 테이블을 따르지 않으므로 이 멤버의 값은 이제 다릅니다. 애플리케이션은 DIB를 메모리에 로드한 후 bV5ProfileData 멤버를 수정해야 합니다.
압축된 DIB의 경우 프로필 데이터는 파일 형식과 유사한 비트맵 비트를 따라야 합니다. bV5ProfileData 멤버는 여전히 BITMAPV5HEADER 구조의 시작 부분에서 프로필 데이터의 오프셋을 제공해야 합니다.
애플리케이션은 오직 bV5Size == sizeof(BITMAPV5HEADER) AND bV5CSType가 PROFILE_EMBEDDED 또는 PROFILE_LINKED인 경우에만 프로필 데이터에 액세스해야 합니다.
프로필이 연결된 경우 프로필 경로는 Win32 CreateFile 함수를 사용하여 열 수 있는 정규화된 이름(네트워크 경로 포함)일 수 있습니다.
V4와 V5 헤더의 차이점
새 비트맵 구조를 사용하는 경우 BITMAPV4HEADER 및 BITMAPV5HEADER 구조체를 설정하는 방법의 차이를 인식하는 것이 유용합니다.
| V4 헤더 | 의미 |
|---|---|
| bV4CSType | LCS_CALIBRATED_RGB. 이 값은 엔드포인트와 감마가 적절한 필드에 제공된다는 것을 의미합니다. 가짜 값은 문제를 일으킵니다. |
| bV4CSType | LCS_sRGB. 이 값은 비트맵이 sRGB 색 공간(감마 및 엔드포인트 무시됨)에 있음을 의미합니다. |
| bV4CSType | LCS_WINDOWS_COLOR_SPACE. 이 값은 비트맵이 Windows 기본 색 공간에 있음을 의미합니다. |
| V5 헤더 | 의미 |
|---|---|
| bV5CSType | LCS_CALIBRATED_RGB (LCS 보정 RGB) 이 값은 엔드포인트와 감마가 적절한 필드에 제공된다는 것을 의미합니다. 가짜 값은 문제를 일으킵니다. |
| bV5CSType | LCS_sRGB. 이 값은 비트맵이 sRGB 색 공간(감마 및 엔드포인트 무시됨)에 있음을 의미합니다. |
| bV5CSType | 프로파일_임베디드. 이 값은 bV5ProfileData 사용할 프로필이 포함된 메모리 버퍼를 가리킨다는 것을 의미합니다(감마 및 엔드포인트는 무시됨). |
| bV5CSType | PROFILE_LINKED. 이 값은 bV5ProfileData 사용할 프로필의 파일 이름을 가리킨다는 것을 의미합니다(감마 및 엔드포인트는 무시됨). |
| bV5CSType | LCS_WINDOWS_COLOR_SPACE. 이 값은 비트맵이 Windows 기본 색 공간에 있음을 의미합니다. |
이전 비트맵을 새 BITMAPV5HEADER 구조로 변환하기 위해 Bitmap.exe 명령줄 변환 유틸리티 파일이 WCS 1.0 프로그래머 참조에 포함됩니다.
BitMap.exe: 비트맵 헤더를 변환하기 위한 Command-Line 유틸리티
Bitmap.exe 지정한 설치 폴더 아래 \Bin 폴더에 있는 명령줄 유틸리티입니다. Windows 비트맵의 헤더를 수정하여 기존 비트맵의 BITMAPINFOHEADER 및 BITMAPV4HEADER 헤더 구조를 최신 BITMAPV5HEADER 구조로 변환하거나, 다시 원래의 헤더 구조로 변환할 수 있습니다. 명령줄 구문은 다음과 같습니다.
BITMAP [/d] [/1|4|5] [/s] [/f]
filename
명령줄 스위치에는 다음과 같은 효과가 있습니다.
| 스위치 | 의미 |
|---|---|
| /d | 기본값은 변환된 헤더에 자동으로 입력됩니다. |
| /1 | 지정된 비트맵을 BITMAPINFOHEADER으로 변환 |
| /4 | 지정된 비트맵을 BITMAPV4HEADER으로 변환 |
| /5 | 지정된 비트맵을 BITMAPV5HEADER로 변환하십시오. |
| /f | 비트맵에 이미 오른쪽 헤더가 있는 경우에도 강제로 변환 |
| /s | 지정된 폴더의 비트맵과 그 아래의 모든 하위 디렉터리를 변환합니다. |