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
指向要填充的 Windows SDK 文档中描述的 PALETTEENTRY 结构数组的指针 () 。 GDI 假定它指向有效的内存空间,GDI 可在其中放置整个每像素 8 位半色调调色板。
对于在 Windows XP 及更高操作系统版本上运行的驱动程序,GDI 会检查 pPaletteEntry[0] 以确定如何返回组合的 CMY 调色板。 如果 pPaletteEntry[0] 设置为“RGB0”,调色板将处于CMY_INVERTED模式之一,并且其索引将反转。 也就是说,调色板中的索引 0 为黑色,索引 255 为白色。 如果 pPaletteEntry[0] 未设置为“RGB0”,则调色板为普通 CMY 调色板,索引 0 为白色,索引 255 为黑色。 有关如何使用此参数的新要求和详细信息,请参阅 使用 GDI 8 位每像素 CMY 掩码模式 。
Windows 2000 忽略驱动程序在 pPaletteEntry[0] 中放置的任何值。 因此,如果你的驱动程序打算在 Windows 2000 和 Windows XP 或更高版本上运行,并且你的驱动程序将 pPaletteEntry[0] 设置为“RGB0”,则驱动程序从 Windows XP 及更高版本接收的位图的颜色可能与从 Windows 2000 接收的颜色反转。 因此,此类驱动程序必须在下载位图之前检查调色板。
[in] Use8BPPMaskPal
指示应返回哪种类型的调色板。 当 Use8BPPMaskPal 为 TRUE 时,HT_Get8BPPMaskPalette使用 CMY 调色板 (由 CMYMask 中指定的位掩码描述的 PALETTEENTRY) 结构数组的地址设置 pPaletteEntry 参数。 当 Use8BPPMaskPal 为 FALSE 时,函数使用标准 RGB 每像素 8 位半色调调色板的地址设置 pPaletteEntry 。
[in] CMYMask
指定有关 pPaletteEntry 指向的 PALETTEENTRY 结构数组的信息。 此参数可以具有下列值之一:
值 | 含义 |
---|---|
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) 指定青色级别数。 最多可以有 7 个级别的青色 (级别 1 到 7) 。
- 中间三位 (位 4,3,2) 指定洋红色的级别数。 最多可以有七级洋红色 (级别 1 至 7) 。
- 两个最低位 (位 1,0) 指定黄色级别的数目。 最多可以有三个级别的黄色 (级别 1 到 3) 。
[in] RedGamma
如果 Use8BPPMaskPal 为 TRUE,则不使用此参数的值。 在这种情况下,将在 GDIINFO 结构的 ciDevice 成员中指定 gamma 值。
如果 Use8BPPMaskPal 为 FALSE,则此参数的值指定红色伽玛值(GDI 用于修正调色板的红色、绿色和蓝色伽玛值)。 USHORT 值被解释为实数,其四个最小有效数字位于小数点右侧。 例如,伽玛值 10000 表示实数 1.0000,12345 表示 1.2345。 允许的最小伽玛值为 0.0000,允许的最大值为 6.5535。
[in] GreenGamma
如果 Use8BPPMaskPal 为 TRUE,则不使用此参数的值。 在这种情况下,将在 GDIINFO 结构的 ciDevice 成员中指定 gamma 值。
如果 Use8BPPMaskPal 为 FALSE,则此参数的值指定 GDI 用于调色板的红色、绿色和蓝色伽玛值中的绿色伽玛值。 USHORT 值被解释为实数,其四个最小有效数字位于小数点右侧。 例如,伽玛值 10000 表示实数 1.0000,12345 表示 1.2345。 允许的最小伽玛值为 0.0000,允许的最大值为 6.5535。
[in] BlueGamma
如果 Use8BPPMaskPal 为 TRUE,则不使用此参数的值。 在这种情况下,将在 GDIINFO 结构的 ciDevice 成员中指定 gamma 值。
如果 Use8BPPMaskPal 为 FALSE,则此参数的值指定 GDI 用于调色板伽玛校正的红色、绿色和蓝色伽玛值中的蓝色伽玛值。 USHORT 值被解释为实数,其四个最小有效数字位于小数点右侧。 例如,伽玛值 10000 表示实数 1.0000,12345 表示 1.2345。 允许的最小伽玛值为 0.0000,允许的最大值为 6.5535。
返回值
如果 pPaletteEntry 不 为 NULL, HT_Get8BPPMaskPalette 返回 GDI 在 pPaletteEntry 指向的数组中填充的 PALETTEENTRY 结构的数量。 如果 pPaletteEntry 为 NULL,则返回的值是存储半色调调色板所需的 PALETTEENTRY 结构的总计数。
如果在调用此函数时使用了 CMYMask 参数的非法值, HT_Get8BPPMaskPalette 将返回零值。
注解
PALETTEENTRY 结构记录在 Windows SDK 文档中。
使用 Use8BPPMaskPal 设置 FALSE 调用HT_Get8BPPMaskPalette等效于调用 HT_Get8BPPFormatPalette。
有关此函数及其参数的使用方式的详细信息,请参阅 使用 GDI 8 位每像素 CMY 掩码模式 。
要求
最低受支持的客户端 | 在 Windows 2000 及更高版本的 Windows 操作系统中可用。 |
目标平台 | 通用 |
标头 | winddi.h (包括 Winddi.h) |
Library | Win32k.lib |
DLL | Win32k.sys |