EngStretchBltROP 関数は、ROP を使って伸縮ビットブロック転送を実行する。
EngStretchBltROP psoDest, psoSrc, psoMask, pco, pxlo, pca, pptlHTOrg, prclDest, prclSrc, pptlMask, iMode, pbo, rop4
psoDest : [var] 描画先のサーフェスを記述する SURFOBJ 構造体へのポインタ。 psoSrc : [var] ビットブロック転送のソースサーフェスを記述する SURFOBJ 構造体へのポインタ。 psoMask : [var] ソースサーフェスのマスクを定義する SURFOBJ 構造体へのポインタ。マスクは 1 ピクセルあたり 1 ビットのビットマップである論理マップで定義される。通常、マスクは宛先サーフェスで変更される領域を制限する。このマスクは常にソースサーフェスと同じサイズであるべきである。 pco : [var] 宛先で変更する領域を制限する CLIPOBJ 構造体へのポインタ。CLIPOBJ_Xxx サービスルーチンが、クリップ領域を矩形の集合として列挙するために提供される。可能な限り GDI はクリッピングを単純化する。ただし EngBitBlt と異なり、EngStretchBltROP は単一クリッピング矩形で呼ばれることがある。これにより出力をクリッピングする際の丸め誤差を防ぐ。 pxlo : [var] ソースとターゲットのサーフェス間でカラーインデックスをどう変換するかを指定する XLATEOBJ 構造体へのポインタ。この XLATEOBJ 構造体は、任意のソースインデックスの RGB 色を見つけるためにも問い合わせることができる。場合によっては高品質な伸縮ビットブロック転送が色を補間する必要がある。 pca : [var] ビットを伸縮する前にソースビットマップに適用するカラー調整値を定義する COLORADJUSTMENT 構造体へのポインタ。詳細は Windows SDK ドキュメントを参照。 pptlHTOrg : [var] 宛先サーフェス上のハーフトーンブラシの原点を定義する POINTL 構造体へのポインタ。ハーフトーンブラシを使用する場合、GDI はブラシのパターンの左上ピクセルをこの点に整列させ、その寸法に従ってブラシを繰り返す。rop4 パラメータがパターンを必要としない場合、GDI はこのパラメータを無視する。 prclDest : [var] 変更する矩形領域を定義する RECTL 構造体へのポインタ。この矩形は宛先サーフェスの座標系で指定し、左上と右下の 2 点で定義される。矩形を定義する 2 点は常に整列しているわけではなく、すなわち 2 番目の点の座標は必ずしも 1 番目の点より大きいとは限らない。宛先矩形が整列していない場合、GDI がそれを整列させる。矩形は右下を含まない。すなわち、その下辺と右辺はコピーの一部ではない。EngStretchBltROP は決して空の宛先矩形で呼んではならない。 prclSrc : [var] コピーする領域を定義する RECTL 構造体へのポインタ。この矩形はソースサーフェスの座標系で指定し、左上と右下の 2 点で定義される。矩形を定義する 2 点は常に整列している。矩形は右下を含まない。すなわち、その下辺と右辺はコピーの一部ではない。この矩形は prclDest が指す矩形にマップされる。EngStretchBltROP は決して空のソース矩形で呼んではならない。 pptlMask : [var] prclMask が指すマスク内のピクセルを定義する POINTL 構造体へのポインタ。このピクセルは prclSrc が指すソース矩形の左上ピクセルに対応する。マスクが指定されない場合、このパラメータは無視される。すなわち prclMask が NULL の場合、GDI は pptlMask を無視する。 iMode : [int] pbo : [var] ビットブロック転送のパターンを定義するために使用する BRUSHOBJ 構造体へのポインタ。GDI の BRUSHOBJ_pvGetRbrush サービスルーチンがデバイスのブラシ実体化を取得する。rop4 パラメータがパターンを必要としない場合、GDI はこのパラメータを無視する。 rop4 : [int] マスク、パターン、ソース、宛先ピクセルがどのように組み合わされて宛先サーフェスへ出力ピクセルを書き込むかを定義するラスタ操作を表す。これは通常の三項 Rop3 操作の自然な拡張である四項ラスタ操作である。Rop4 には Rop3 の 8 個の定義ビットと類似する 16 個の関連ビットがある(Rop3 の他の冗長ビットは無視される)。Rop4 を実装する最も単純な方法は、その 2 バイトを別々に考えることである。下位バイトは psoMask が指すマスクが 1 のときに計算すべき Rop3 を指定する。上位バイトはマスクが 0 のときに計算・適用できる Rop3 を指定する。
(プラグイン / モジュール : gdi32.dll)
EngStretchBltROP 関数は、ROP を使って伸縮ビットブロック転送を実行する。 [戻り値] EngStretchBltROP は成功時に TRUE を返す。それ以外の場合はエラーを報告し FALSE を返す。 [備考] ドライバが DrvStretchBltROP をフックしているがすべての操作をサポートできない場合、EngStretchBltROP を呼ぶべきである。マッピングは prclSrc と prclDest によって定義される。prclDest と prclSrc に指定された点は整数座標上にあり、これはピクセル中心に対応する。そのような 2 点で定義される矩形は、与えられた点を頂点とする幾何学的矩形と見なされるが、各座標から 0.5 を引いたものになる。(POINTL 構造体はこれらの分数座標頂点を指定する省略表記である。)
| プラグイン / モジュール | gdi32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の gdi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_gdi32_gen2.hs |