Поделиться через


функция 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).
Для значений CMYMask в диапазоне от 3 до 255 недопустимо любое сочетание битовой маски, в котором биты голубого, пурпурного или желтого уровня равны нулю. В таких случаях HT_Get8BPPMaskPalette возвращает число палитры, равное нулю. Дополнительные сведения см. в разделе Использование 8-разрядных режимов маски CMY GDI .

[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

См. также раздел

HT_Get8BPPFormatPalette