Win32 API 日本語リファレンス
ホームGraphics.Direct2D › ID2D1CommandSink

ID2D1CommandSink

COM
IID54d7898a-a061-40a7-bec7-e465bcba2c4f継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

コマンドシンクは、コマンドリストに記録されたコマンドの再生をアプリケーションで受け取りたい場合に、あなた自身が実装します。

解説(Remarks)

ID2D1CommandSink を実装することで、コマンドリストに記録されたコマンドの再生を受け取ることができます。このインターフェイスは通常、コマンドリストを別の形式に変換する際に使用され、Direct2D のプリミティブとターゲット形式との間である程度の変換が必要となる場合に用いられます。

ID2D1CommandSink インターフェイスにはリソース作成メソッドはありません。リソースは、ID2D1CommandList が作成された Direct2D デバイスに論理的に関連付けられ、ID2D1CommandSink の実装に渡されます。

ID2D1DeviceContext が実装するすべてのメソッドが存在するわけではありません。

メソッド 25

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT BeginDraw()

描画が開始されようとしていることをコマンドシンクの実装に通知します。

戻り値

型: HRESULT

このメソッドは常に S_OK を返します。

vtbl 4 HRESULT EndDraw()

ID2D1CommandSink の処理が完了したことを示します。

戻り値

型: HRESULT

メソッド/関数が成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

コマンドリストの終端で有効な HRESULT が返されます。

これにより、呼び出し元の関数またはメソッドは、ストリームの実装に対して失敗を通知できます。

vtbl 5 HRESULT SetAntialiasMode(D2D1_ANTIALIAS_MODE antialiasMode)

以降のジオメトリのレンダリングに使用されるアンチエイリアスモードを設定します。

antialiasModeD2D1_ANTIALIAS_MODEinコマンドリストに対して選択されたアンチエイリアスモード。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 6 HRESULT SetTags(ULONGLONG tag1, ULONGLONG tag2)

コマンドシンク内のタグに対応するタグを設定します。

tag1ULONGLONGinプリミティブに関連付ける最初のタグ。
tag2ULONGLONGinプリミティブに関連付ける2番目のタグ。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT SetTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode)

テキストの新しい既定のアンチエイリアスモードを示します。

textAntialiasModeD2D1_TEXT_ANTIALIAS_MODEinテキストのアンチエイリアスモード。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 8 HRESULT SetTextRenderingParams(IDWriteRenderingParams* textRenderingParams)

より詳細なテキストレンダリングパラメーターを示します。

textRenderingParamsIDWriteRenderingParams*inoptionalテキストレンダリングに使用するパラメーター。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 9 HRESULT SetTransform(D2D_MATRIX_3X2_F* transform)

新しい変換を設定します。

transformD2D_MATRIX_3X2_F*in設定する変換。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

この変換は、対応するデバイスコンテキストに適用されます。

vtbl 10 HRESULT SetPrimitiveBlend(D2D1_PRIMITIVE_BLEND primitiveBlend)

新しいプリミティブブレンドモードを設定します。(ID2D1CommandSink.SetPrimitiveBlend)

primitiveBlendD2D1_PRIMITIVE_BLENDin以降のプリミティブに適用されるプリミティブブレンド。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 11 HRESULT SetUnitMode(D2D1_UNIT_MODE unitMode)

単位モードは、以降の単位の意味をデバイス非依存ピクセル(DIP)からピクセルへ、またはその逆に変更します。コマンドシンクは DPI を記録しません。これは再生コンテキスト、または ID2D1PrintControl などの他の再生インターフェイスによって暗黙的に決まります。

unitModeD2D1_UNIT_MODEin単位をどのように解釈するかを指定する列挙体。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

単位モードは、単位の解釈を DIP からピクセルへ、またはその逆に変更します。

vtbl 12 HRESULT Clear(D2D1_COLOR_F* color)

描画領域を指定した色でクリアします。(ID2D1CommandSink.Clear)

colorD2D1_COLOR_F*inoptionalコマンドシンクをクリアする色。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

クリア色は、現在選択されているクリップおよびレイヤーの境界によって制限されます。

色が指定されていない場合、色はコンテキストによって解釈されます。例としては次のようなものがありますが、これらに限定されません。

vtbl 13 HRESULT DrawGlyphRun(D2D_POINT_2F baselineOrigin, DWRITE_GLYPH_RUN* glyphRun, DWRITE_GLYPH_RUN_DESCRIPTION* glyphRunDescription, ID2D1Brush* foregroundBrush, DWRITE_MEASURING_MODE measuringMode)

描画するグリフを示します。

baselineOriginD2D_POINT_2Finベースラインの左上隅。
glyphRunDWRITE_GLYPH_RUN*inレンダリングするグリフ。
glyphRunDescriptionDWRITE_GLYPH_RUN_DESCRIPTION*inoptionalグリフに関する、レンダリングに使用しない追加情報。
foregroundBrushID2D1Brush*inグリフを塗りつぶすために使用するブラシ。
measuringModeDWRITE_MEASURING_MODEinグリフに適用する計測モード。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

DrawText および DrawTextLayout は、コマンドシンクが処理される時点までにグリフランと矩形に分解されます。そのため、これらのメソッドはコマンドシンクでは使用できません。DrawTextLayout の呼び出し時にアプリケーションが追加のコールバック処理を必要とする場合があるため、このセマンティクスをコマンドリスト内で容易に保持することはできません。

vtbl 14 HRESULT DrawLine(D2D_POINT_2F point0, D2D_POINT_2F point1, ID2D1Brush* brush, FLOAT strokeWidth, ID2D1StrokeStyle* strokeStyle)

2点間に引かれる線を描画します。

point0D2D_POINT_2Fin線の開始点。
point1D2D_POINT_2Fin線の終了点。
brushID2D1Brush*in線を塗りつぶすために使用するブラシ。
strokeWidthFLOATin線を塗りつぶすストロークの幅。
strokeStyleID2D1StrokeStyle*inoptionalストロークのスタイル。指定しない場合、ストロークは実線になります。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

その他の参照

vtbl 15 HRESULT DrawGeometry(ID2D1Geometry* geometry, ID2D1Brush* brush, FLOAT strokeWidth, ID2D1StrokeStyle* strokeStyle)

コマンドシンクに描画するジオメトリを示します。

geometryID2D1Geometry*inストロークするジオメトリ。
brushID2D1Brush*inストロークされたジオメトリを塗りつぶすために使用するブラシ。
strokeWidthFLOATinストロークの幅。
strokeStyleID2D1StrokeStyle*inoptionalストロークのスタイル。

戻り値

型: HRESULT

HRESULT。

解説(Remarks)

楕円および角丸四角形は、DrawGeometry メソッドを呼び出す前に、対応する楕円ジオメトリおよび角丸四角形ジオメトリに変換されます。

vtbl 16 HRESULT DrawRectangle(D2D_RECT_F* rect, ID2D1Brush* brush, FLOAT strokeWidth, ID2D1StrokeStyle* strokeStyle)

四角形を描画します。

rectD2D_RECT_F*inコマンドシンクに描画する四角形。
brushID2D1Brush*inジオメトリをストロークするために使用するブラシ。
strokeWidthFLOATinストロークの幅。
strokeStyleID2D1StrokeStyle*inoptionalストロークのスタイル。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 17 HRESULT DrawBitmap(ID2D1Bitmap* bitmap, D2D_RECT_F* destinationRectangle, FLOAT opacity, D2D1_INTERPOLATION_MODE interpolationMode, D2D_RECT_F* sourceRectangle, D2D_MATRIX_4X4_F* perspectiveTransform)

ビットマップをレンダーターゲットに描画します。(ID2D1CommandSink.DrawBitmap)

bitmapID2D1Bitmap*in描画するビットマップ。
destinationRectangleD2D_RECT_F*inoptional描画先の四角形。既定ではビットマップのサイズとなり、位置はレンダーターゲットの左上隅になります。
opacityFLOATinビットマップの不透明度。
interpolationModeD2D1_INTERPOLATION_MODEin使用する補間モード。
sourceRectangleD2D_RECT_F*inoptional省略可能なソース四角形。
perspectiveTransformD2D_MATRIX_4X4_F*inoptional省略可能な透視変換。

戻り値

このメソッドは値を返しません。

解説(Remarks)

destinationRectangle パラメーターは、ビットマップが表示されるターゲット内の四角形をデバイス非依存ピクセル(DIP)で定義します。これは、現在設定されている変換と、設定されている場合は透視変換の影響を受けます。NULL を指定した場合、描画先の四角形は (left=0, top=0, right = width(sourceRectangle), bottom = height(sourceRectangle) になります。

sourceRectangle は、ソースビットマップの部分四角形を DIP で定義します。DrawBitmap はこの四角形をソースビットマップのサイズにクリップするため、ビットマップの外側をサンプリングすることはできません。NULL を指定した場合、ソース四角形はソースビットマップのサイズとして扱われます。

perspectiveTransform は、デバイスコンテキスト上の変換に加えて指定されます。

vtbl 18 HRESULT DrawImage(ID2D1Image* image, D2D_POINT_2F* targetOffset, D2D_RECT_F* imageRectangle, D2D1_INTERPOLATION_MODE interpolationMode, D2D1_COMPOSITE_MODE compositeMode)

指定された画像をコマンドシンクに描画します。

imageID2D1Image*inコマンドシンクに描画する画像。
targetOffsetD2D_POINT_2F*inoptional画像がレンダリングされる描画先空間でのオフセットを定義します。画像の論理的な範囲全体が、対応する描画先にレンダリングされます。指定しない場合、描画先の原点は (0, 0) になります。画像の左上隅がターゲットオフセットにマッピングされます。これは必ずしも原点になるとは限りません。
imageRectangleD2D_RECT_F*inoptional画像の処理時に、画像空間内の対応する四角形が、指定された原点にマッピングされます。
interpolationModeD2D1_INTERPOLATION_MODEin必要に応じて画像をスケーリングするために使用する補間モード。
compositeModeD2D1_COMPOSITE_MODEin指定した場合、現在選択されているクリップの範囲に適用される合成モード。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

画像自体がコマンドリストである場合や、コマンドリストを含むエフェクトグラフを含む場合があるため、このメソッドは再帰的な処理を引き起こす可能性があります。

vtbl 19 HRESULT DrawGdiMetafile(ID2D1GdiMetafile* gdiMetafile, D2D_POINT_2F* targetOffset)

メタファイルをデバイスコンテキストに描画します。(ID2D1CommandSink.DrawGdiMetafile)

gdiMetafileID2D1GdiMetafile*in描画するメタファイル。
targetOffsetD2D_POINT_2F*inoptionalレンダーターゲットの左上隅からのオフセット。

戻り値

このメソッドは値を返しません。

解説(Remarks)

targetOffset は、画像がレンダリングされる描画先空間でのオフセットを定義します。画像の論理的な範囲全体が、対応する描画先にレンダリングされます。オフセットを指定しない場合、描画先の原点は (0, 0) になります。画像の左上隅がターゲットオフセットにマッピングされます。これは必ずしも原点になるとは限りません。

vtbl 20 HRESULT FillMesh(ID2D1Mesh* mesh, ID2D1Brush* brush)

コマンドシンクによって塗りつぶされるメッシュを示します。

meshID2D1Mesh*in塗りつぶすメッシュオブジェクト。
brushID2D1Brush*inメッシュを塗りつぶすために使用するブラシ。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 21 HRESULT FillOpacityMask(ID2D1Bitmap* opacityMask, ID2D1Brush* brush, D2D_RECT_F* destinationRectangle, D2D_RECT_F* sourceRectangle)

コマンドシンク上で不透明度マスクを塗りつぶします。

opacityMaskID2D1Bitmap*inアルファチャネルをサンプリングして不透明度マスクを定義するビットマップ。
brushID2D1Brush*inマスクを塗りつぶすために使用するブラシ。
destinationRectangleD2D_RECT_F*inoptionalマスクを塗りつぶす描画先の四角形。指定しない場合、これは原点になります。
sourceRectangleD2D_RECT_F*inoptional不透明度マスク内のソース四角形。指定しない場合、これはマスク全体になります。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

不透明度マスクのビットマップは、各軸でクランプされるものとみなす必要があります。

vtbl 22 HRESULT FillGeometry(ID2D1Geometry* geometry, ID2D1Brush* brush, ID2D1Brush* opacityBrush)

塗りつぶすジオメトリをコマンドシンクに示します。

geometryID2D1Geometry*in塗りつぶすジオメトリ。
brushID2D1Brush*inジオメトリを塗りつぶすために使用する主ブラシ。
opacityBrushID2D1Brush*inoptionalアルファチャネルを使用して主塗りつぶしブラシの不透明度を変更するブラシ。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

不透明度ブラシが指定されている場合、主ブラシは x 軸と y 軸の両方で固定されたビットマップブラシになります。

楕円と角丸四角形は、FillGeometry に渡される前に対応するジオメトリに変換されます。

vtbl 23 HRESULT FillRectangle(D2D_RECT_F* rect, ID2D1Brush* brush)

塗りつぶす四角形をコマンドシンクに示します。

rectD2D_RECT_F*in塗りつぶす四角形。
brushID2D1Brush*in四角形を塗りつぶすために使用するブラシ。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 24 HRESULT PushAxisAlignedClip(D2D_RECT_F* clipRect, D2D1_ANTIALIAS_MODE antialiasMode)

クリッピング四角形をクリップおよびレイヤースタックにプッシュします。

clipRectD2D_RECT_F*inクリップを定義する四角形。
antialiasModeD2D1_ANTIALIAS_MODEinクリップのアンチエイリアスモード。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

現在のワールド変換が軸を保持しない場合、clipRectangle は変換され、変換後の四角形の境界が代わりに使用されます。

vtbl 25 HRESULT PushLayer(D2D1_LAYER_PARAMETERS1* layerParameters1, ID2D1Layer* layer)

レイヤーをクリップおよびレイヤースタックにプッシュします。

layerParameters1D2D1_LAYER_PARAMETERS1*inレイヤーを定義するパラメーター。
layerID2D1Layer*inoptional以降の描画操作を受け取るレイヤーリソース。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 26 HRESULT PopAxisAlignedClip()

軸に沿ったクリップをレイヤーおよびクリップスタックから削除します。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

vtbl 27 HRESULT PopLayer()

レイヤーをレイヤーおよびクリップスタックから削除します。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ID2D1CommandSink "{54D7898A-A061-40A7-BEC7-E465BCBA2C4F}"
#usecom global ID2D1CommandSink IID_ID2D1CommandSink "{}"
#comfunc global ID2D1CommandSink_BeginDraw               3
#comfunc global ID2D1CommandSink_EndDraw                 4
#comfunc global ID2D1CommandSink_SetAntialiasMode        5 int
#comfunc global ID2D1CommandSink_SetTags                 6 int64,int64
#comfunc global ID2D1CommandSink_SetTextAntialiasMode    7 int
#comfunc global ID2D1CommandSink_SetTextRenderingParams  8 sptr
#comfunc global ID2D1CommandSink_SetTransform            9 var
#comfunc global ID2D1CommandSink_SetPrimitiveBlend       10 int
#comfunc global ID2D1CommandSink_SetUnitMode             11 int
#comfunc global ID2D1CommandSink_Clear                   12 var
#comfunc global ID2D1CommandSink_DrawGlyphRun            13 int,var,var,sptr,int
#comfunc global ID2D1CommandSink_DrawLine                14 int,int,sptr,float,sptr
#comfunc global ID2D1CommandSink_DrawGeometry            15 sptr,sptr,float,sptr
#comfunc global ID2D1CommandSink_DrawRectangle           16 var,sptr,float,sptr
#comfunc global ID2D1CommandSink_DrawBitmap              17 sptr,var,float,int,var,var
#comfunc global ID2D1CommandSink_DrawImage               18 sptr,var,var,int,int
#comfunc global ID2D1CommandSink_DrawGdiMetafile         19 sptr,var
#comfunc global ID2D1CommandSink_FillMesh                20 sptr,sptr
#comfunc global ID2D1CommandSink_FillOpacityMask         21 sptr,sptr,var,var
#comfunc global ID2D1CommandSink_FillGeometry            22 sptr,sptr,sptr
#comfunc global ID2D1CommandSink_FillRectangle           23 var,sptr
#comfunc global ID2D1CommandSink_PushAxisAlignedClip     24 var,int
#comfunc global ID2D1CommandSink_PushLayer               25 var,sptr
#comfunc global ID2D1CommandSink_PopAxisAlignedClip      26
#comfunc global ID2D1CommandSink_PopLayer                27
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。