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 調色盤的位址來設定pPaletteEntry參數, (CMYMask中指定的位元遮罩所描述的 PALETTEENTRY 結構陣列) 。 當 Use8BPPMaskPal為FALSE時,函式會將pPaletteEntry設定為標準 RGB 每圖元 8 位半色調調色盤的位址。
[in] CMYMask
指定 pPaletteEntry 所指向之 PALETTEENTRY結構陣列的相關資訊。 這個參數的值可以是下列其中一個:
值 | 意義 |
---|---|
0 | 具有 256 個層級的灰階 |
1 | 每個青色、紅色和黃色 (各有五個層級,範圍從 0 到 4) ,總共 125 種色彩 |
2 | 每個青色、洋紅色和黃色 (各有六個層級,範圍從 0 到 5) ,總共 216 種色彩 |
3 到 255 | 位元遮罩,指定分別指定青色、magenta 和黃色的層級數目上限。 |
在 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) 指定 magenta 的層級數目。 最多可以有七個層級的 magenta (層級 1 到 7) 。
- 兩個最低位 (位 1,0) 指定黃色層級的數目。 最多可以有三層黃色 (層級 1 到 3) 。
[in] RedGamma
如果 Use8BPPMaskPal 為 TRUE,則不會使用此參數的值。 在此情況下,gamma 值將會在GDIINFO結構的ciDevice成員中指定。
如果 Use8BPPMaskPal 為 FALSE,則此參數的值會指定紅色 gamma 值,而 GDI 用來更正調色盤的紅色、綠色和藍色 Gamma 值。 USHORT 值會解譯為實數,其四個最小有效位數位于小數點右邊。 例如,gamma 值為 10000 代表實數 1.0000,而 12345 則代表 1.2345。 允許的最小 gamma 值為 0.0000,而允許的最大值為 6.5535。
[in] GreenGamma
如果 Use8BPPMaskPal 為 TRUE,則不會使用此參數的值。 在此情況下,gamma 值將會在GDIINFO結構的ciDevice成員中指定。
如果 Use8BPPMaskPal 為 FALSE,此參數的值會指定綠色 gamma 值,而 GDI 用來更正調色盤的紅色、綠色和藍色 Gamma 值。 USHORT 值會解譯為實數,其四個最小有效位數位于小數點右邊。 例如,gamma 值為 10000 代表實數 1.0000,而 12345 則代表 1.2345。 允許的最小 gamma 值為 0.0000,而允許的最大值為 6.5535。
[in] BlueGamma
如果 Use8BPPMaskPal 為 TRUE,則不會使用此參數的值。 在此情況下,gamma 值將會在GDIINFO結構的ciDevice成員中指定。
如果 Use8BPPMaskPal 為 FALSE,則此參數的值會指定藍色 gamma 值,以從 GDI 用來更正調色盤的紅色、綠色和藍色 Gamma 值中指定。 USHORT 值會解譯為實數,其四個最小有效位數位于小數點右邊。 例如,gamma 值為 10000 代表實數 1.0000,而 12345 則代表 1.2345。 允許的最小 gamma 值為 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 作業系統。 |
目標平台 | Universal |
標頭 | winddi.h (包含 Winddi.h) |
程式庫 | Win32k.lib |
Dll | Win32k.sys |