HT_Get8BPPMaskPalette

HT_Get8BPPMaskPalette 関数は、8 ビット/ピクセルデバイス用のマスクパレットを返す。

HT_Get8BPPMaskPalette pPaletteEntry, Use8BPPMaskPal, CMYMask, RedGamma, GreenGamma, BlueGamma

pPaletteEntry : [var] 埋められる PALETTEENTRY 構造体(Windows SDK ドキュメントを参照)配列へのポインタ。GDI はこれを、8 ビット/ピクセルハーフトーンパレット全体を配置できる有効なメモリ領域を指していると想定する。Windows XP 以降で動作するドライバの場合、GDI は pPaletteEntry[0] を調べて、構成された CMY パレットをどのように返すかを決定する。pPaletteEntry[0] が 'RGB0' に設定されていれば、パレットは CMY_INVERTED モードの 1 つとなり、インデックスが反転される。つまり、パレットのインデックス 0 は黒、インデックス 255 は白となる。pPaletteEntry[0] が 'RGB0' に設定されていない場合、パレットは通常の CMY パレットとなり、インデックス 0 が白、インデックス 255 が黒となる。新しい要件とこのパラメータの使用方法の詳細については、「Using GDI 8-Bit-Per-Pixel CMY Mask Modes」を参照すること。Windows 2000 はドライバが pPaletteEntry[0] に配置した値を無視する。このため、Windows 2000 および Windows XP 以降で動作させるドライバで pPaletteEntry[0] を 'RGB0' に設定する場合、Windows XP 以降から受け取るビットマップは Windows 2000 から受け取るものと比べて色が反転している可能性がある。したがって、そのようなドライバはビットマップをダウンロードする前にパレットを検査しなければならない。
Use8BPPMaskPal : [int] 返されるパレットの種類を指定する。Use8BPPMaskPal が TRUE の場合、HT_Get8BPPMaskPalette は pPaletteEntry パラメータに、CMYMask で指定されたビットマスクで記述される CMY パレット(PALETTEENTRY 構造体の配列)のアドレスを設定する。Use8BPPMaskPal が FALSE の場合、この関数は pPaletteEntry に標準の RGB 8 ビット/ピクセルハーフトーンパレットのアドレスを設定する。
CMYMask : [int] 
RedGamma : [int] Use8BPPMaskPal が TRUE の場合、このパラメータの値は使用されない。その場合、ガンマ値は GDIINFO 構造体の ciDevice メンバで指定される。Use8BPPMaskPal が FALSE の場合、このパラメータは、GDI がパレットをガンマ補正する際に使用する赤・緑・青のうち赤のガンマ値を指定する。この USHORT 値は、小数点の右側に下位 4 桁を持つ実数として解釈される。たとえば、ガンマ値 10000 は実数 1.0000 を表し、12345 は 1.2345 を表す。指定可能な最小ガンマ値は 0.0000、最大ガンマ値は 6.5535 である。
GreenGamma : [int] Use8BPPMaskPal が TRUE の場合、このパラメータの値は使用されない。その場合、ガンマ値は GDIINFO 構造体の ciDevice メンバで指定される。Use8BPPMaskPal が FALSE の場合、このパラメータは、GDI がパレットをガンマ補正する際に使用する赤・緑・青のうち緑のガンマ値を指定する。この USHORT 値は、小数点の右側に下位 4 桁を持つ実数として解釈される。たとえば、ガンマ値 10000 は実数 1.0000 を表し、12345 は 1.2345 を表す。指定可能な最小ガンマ値は 0.0000、最大ガンマ値は 6.5535 である。
BlueGamma : [int] Use8BPPMaskPal が TRUE の場合、このパラメータの値は使用されない。その場合、ガンマ値は GDIINFO 構造体の ciDevice メンバで指定される。Use8BPPMaskPal が FALSE の場合、このパラメータは、GDI がパレットをガンマ補正する際に使用する赤・緑・青のうち青のガンマ値を指定する。この USHORT 値は、小数点の右側に下位 4 桁を持つ実数として解釈される。たとえば、ガンマ値 10000 は実数 1.0000 を表し、12345 は 1.2345 を表す。指定可能な最小ガンマ値は 0.0000、最大ガンマ値は 6.5535 である。

(プラグイン / モジュール : gdi32.dll)

解説

HT_Get8BPPMaskPalette 関数は、8 ビット/ピクセルデバイス用のマスクパレットを返す。

[戻り値]
pPaletteEntry が NULL でない場合、HT_Get8BPPMaskPalette は pPaletteEntry
が指す配列内に GDI が埋めた PALETTEENTRY 構造体の数を返す。pPaletteEntry が NULL
の場合、戻り値はハーフトーンパレットを格納するために必要な PALETTEENTRY 構造体の総数である。CMYMask
パラメータに不正な値が渡された場合、HT_Get8BPPMaskPalette は 0 を返す。

[備考]
PALETTEENTRY 構造体は Windows SDK ドキュメントに記載されている。Use8BPPMaskPal を FALSE
にして HT_Get8BPPMaskPalette を呼び出すことは、HT_Get8BPPFormatPalette
を呼び出すことと等価である。この関数とパラメータの使用方法の詳細については、「Using GDI 8-Bit-Per-Pixel CMY
Mask Modes」を参照すること。

情報

プラグイン / モジュールgdi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の gdi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_gdi32_gen2.hs