Структуры заголовка точечного рисунка Windows


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.

Назад в оглавление
На главную страницу

Hosted by uCoz