ICM 2.0 дает возможность профилям цвета ICC быть связанными или внедренными в аппаратно-независимые точечные рисунки (DIB). Это дает возможность цветам DIB характеризоваться более точно, чем это было возможным при использовании ICM в Windows 95. BITMAPV5HEADER, новая структура заголовка точечного рисунка, определяется в Wingdi.h в выпуске Windows 98. В целях развития, она также включается в файл 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; // Метод преобразования цвета точечного рисунка DWORD bV5ProfileData; // Смещение данных профиля DWORD bV5ProfileSize; // Размер внедренных данных профиля DWORD bV5Reserved; // Должен быть нуль } BITMAPV5HEADER, FAR *LPBITMAPV5HEADER, *PBITMAPV5HEADER; |
Член структуры bV5CSType может иметь значения PROFILE_EMBEDDED или PROFILE_LINKED, чтобы определить, профиль внедрен или связан с DIB. Член структуры bV5ProfileData - это смещение в байтах от начала структуры BITMAPV5HEADER до начала данных профиля. Если профиль внедрен, данные профиля - это фактический профиль, а если он связан, данные профиля - это имя файла с нулевым символом в конце профиля. Этот член не может быть строкой Unicode. Он должен составляться исключительно из символов набора символов Windows (кодовая страница 1252).
Когда DIB загружен в память, данные профиля (если присутствуют) должны следовать за таблицей цветов, а член структуры bV5ProfileData должен дать смещение данных профиля с начала структуры BITMAPV5HEADER. Значение этого члена должно теперь отличаться, поскольку биты точечного рисунка не следуют за таблицей цветов в памяти. Приложения должны модифицировать член структуры bV5ProfileData после загрузки DIB в память.
Для упакованных аппаратно-независимых точечных рисунков, данные профиля должны следовать за битами точечного рисунка, подобно формату файла. Член структуры bV5ProfileData должен все же давать смещение данных профиля от начала структуры BITMAPV5HEADER.
Приложения должны обращаться к данным профила только тогда, когда bV5Size == sizeof (BITMAPV5HEADER), а bV5CSType - PROFILE_EMBEDDED или PROFILE_LINKED.
Если профиль связан, путь профиля может быть любым полным составным именем (включая в себя сетевой путь), который может быть открыт, используя функцию Win32 CreateFile.