функция HT_Get8BPPMaskPalette (winddi.h)
Функция HT_Get8BPPMaskPalette возвращает палитру маски для типа устройства с 8 битами на пиксель.
Синтаксис
LONG HT_Get8BPPMaskPalette(
[in, out] LPPALETTEENTRY pPaletteEntry,
[in] BOOL Use8BPPMaskPal,
[in] BYTE CMYMask,
[in] USHORT RedGamma,
[in] USHORT GreenGamma,
[in] USHORT BlueGamma
);
Параметры
[in, out] pPaletteEntry
Указатель на массив структур PALETTEENTRY (описанных в документации windows SDK) для заполнения. GDI предполагает, что указывает на допустимое пространство памяти, в котором GDI может разместить всю полутоновую палитру 8 бит на пиксель.
Для драйвера, работающего в Windows XP и более поздних версиях операционной системы, GDI проверяет pPaletteEntry[0], чтобы определить, как вернуть составную палитру CMY. Если для параметра pPaletteEntry[0] задано значение RGB0, палитра будет находиться в одном из режимов CMY_INVERTED, а индексы будут инвертированы. То есть индекс 0 в палитре черный, а индекс 255 — белый. Если для pPaletteEntry[0] не задано значение RGB0, палитра будет обычной палитрой CMY, индекс 0 — белый, а индекс 255 — черный. Новые требования и сведения об использовании этого параметра см. в статье Использование 8-разрядных режимов маски CMY в GDI .
Windows 2000 игнорирует любое значение, которое драйвер помещает в pPaletteEntry[0]. По этой причине, если драйвер предназначен для работы в Windows 2000 и Windows XP или более поздних версий, а драйвер устанавливает для pPaletteEntry[0] значение RGB0, то растровые изображения, полученные драйвером из Windows XP и более поздних версий, могут иметь инвертированные цвета по сравнению с цветами, полученными из Windows 2000. Таким образом, такой драйвер должен изучить палитру перед скачиванием растрового изображения.
[in] Use8BPPMaskPal
Указывает, какой тип палитры должен быть возвращен. Если use8BPPMaskPal имеет значение TRUE, HT_Get8BPPMaskPalette задает параметр pPaletteEntry с адресом палитры CMY (массив структур PALETTEENTRY), который описывается битовой маской, указанной в CMYMask. Если use8BPPMaskPal имеет значение FALSE, функция задает pPaletteEntry с адресом стандартной палитры полутонов RGB 8 бит на пиксель.
[in] CMYMask
Указывает сведения о массиве структур PALETTEENTRY, на которые указывает pPaletteEntry. Этот параметр может принимать одно из следующих значений:
Значение | Значение |
---|---|
0 | Серая шкала с 256 уровнями |
1 | Пять уровней голубого, пурпурного и желтого (каждый в диапазоне от 0 до 4), в общей сложности 125 цветов |
2 | Шесть уровней голубого, пурпурного и желтого (каждый от 0 до 5), в общей сложности 216 цветов |
от 3 до 255 | Битовая маска, указывающая максимальное количество уровней голубого, пурпурного и желтого соответственно. |
Драйверы, работающие в Windows 2000, должны быть ограничены монохромной скоростью 8 бит на пиксель. То есть используемое значение CMYMask должно быть равно 0.
Для Windows XP и более поздних версий операционной системы, а также для всех значений CMYMask значение в pPaletteEntry[0] определяет, является ли палитра, следующая за pPaletteEntry[0], обычной палитрой CMY или одной из палитр режима CMY_INVERTED. Дополнительные сведения см. в описании параметра pPaletteEntry .
Для значений CMYMask от 3 до 255 включительно значение представляет собой битовую маску, в которой группы битов имеют следующие значения:
- Три самых высоких бита (биты 7,6,5) определяют количество уровней голубого циана. Возможно не более семи уровней голубого (от 1 до 7).
- Средние три бита (биты 4,3,2) определяют количество уровней пурпурного. Возможно не более семи уровней пурпурной (уровни от 1 до 7).
- Два наименьших бита (биты 1,0) определяют количество уровней желтого цвета. Возможно не более трех уровней желтого цвета (уровни от 1 до 3).
[in] RedGamma
Если use8BPPMaskPal имеет значение TRUE, значение этого параметра не используется. В этом случае гамма-значения будут указаны в элементе ciDevice структуры GDIINFO .
Если аргумент Use8BPPMaskPal имеет значение FALSE, значение этого параметра указывает красное гамма-значение из красных, зеленых и синих гамма-значений, которые GDI будет использовать для гамма-коррекции палитры. Значение USHORT интерпретируется как реальное число, четыре наименее значимые цифры которого находятся справа от десятичной запятой. Например, гамма-значение 10000 представляет собой реальное число 1,0000, а 12345 — 1,2345. Минимально допустимое гамма-значение — 0,0000, а максимально допустимое значение — 6,5535.
[in] GreenGamma
Если use8BPPMaskPal имеет значение TRUE, значение этого параметра не используется. В этом случае гамма-значения будут указаны в элементе ciDevice структуры GDIINFO .
Если аргумент Use8BPPMaskPal имеет значение FALSE, значение этого параметра указывает зеленое значение гамма из красных, зеленых и синих гамма-значений, которые GDI будет использовать для гамма-коррекции палитры. Значение USHORT интерпретируется как реальное число, четыре наименее значимые цифры которого находятся справа от десятичной запятой. Например, гамма-значение 10000 представляет собой реальное число 1,0000, а 12345 — 1,2345. Минимально допустимое гамма-значение — 0,0000, а максимально допустимое значение — 6,5535.
[in] BlueGamma
Если use8BPPMaskPal имеет значение TRUE, значение этого параметра не используется. В этом случае гамма-значения будут указаны в элементе ciDevice структуры GDIINFO .
Если аргумент Use8BPPMaskPal имеет значение FALSE, значение этого параметра задает синее гамма-значение из красных, зеленых и синих гамма-значений, которые GDI будет использовать для гамма-коррекции палитры. Значение USHORT интерпретируется как реальное число, четыре наименее значимые цифры которого находятся справа от десятичной запятой. Например, гамма-значение 10000 представляет собой реальное число 1,0000, а 12345 — 1,2345. Минимально допустимое гамма-значение — 0,0000, а максимально допустимое значение — 6,5535.
Возвращаемое значение
Если pPaletteEntry не равно NULL, HT_Get8BPPMaskPalette возвращает количество структур PALETTEENTRY, заполненных GDI в массиве, на который указывает pPaletteEntry . Если pPaletteEntry имеет значение NULL, возвращаемое значение — общее количество структур PALETTEENTRY, необходимых для хранения полутоновой палитры.
Если в вызове этой функции используется недопустимое значение параметра CMYMask , HT_Get8BPPMaskPalette возвращает нулевое значение.
Комментарии
Структура PALETTEENTRY описана в документации windows SDK.
Вызов HT_Get8BPPMaskPalette с параметром FALSE use8BPPMaskPal эквивалентен вызову HT_Get8BPPFormatPalette.
Дополнительные сведения об этой функции и использовании ее параметров см. в статье Использование 8-разрядных режимов маски CMY в GDI .
Требования
Минимальная версия клиента | Доступно в Windows 2000 и более поздних версиях операционных систем Windows. |
Целевая платформа | Универсальное |
Верхняя часть | winddi.h (включая Winddi.h) |
Библиотека | Win32k.lib |
DLL | Win32k.sys |