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

IDWriteTextRenderer

COM
IIDef8a8135-5cc6-45fe-8825-c5a0724eb819継承元IDWritePixelSnapping自前メソッド開始 vtbl6

公式ドキュメント

テキスト、インラインオブジェクト、および下線などの装飾のレンダリングを実行する、アプリケーション定義のコールバックの集合を表します。(IDWriteTextRenderer)

メソッド 4

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

vtbl 6 HRESULT DrawGlyphRun(void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_MEASURING_MODE measuringMode, DWRITE_GLYPH_RUN* glyphRun, DWRITE_GLYPH_RUN_DESCRIPTION* glyphRunDescription, IUnknown* clientDrawingEffect)

IDWriteTextLayout::Draw は、グリフ ランをレンダリングするようクライアントに指示するために、この関数を呼び出します。(IDWriteTextRenderer.DrawGlyphRun)

clientDrawingContextvoid*inoptionalIDWriteTextLayout::Draw に渡される、アプリケーション定義の描画コンテキストです。
baselineOriginXFLOATinグリフ ランのベースライン原点におけるピクセル位置(X 座標)です。
baselineOriginYFLOATinグリフ ランのベースライン原点におけるピクセル位置(Y 座標)です。
measuringModeDWRITE_MEASURING_MODEinラン内のグリフの計測方法です。他のプロパティと組み合わせて、レンダリングモードを決定するために使用されます。
glyphRunDWRITE_GLYPH_RUN*inレンダリングするグリフ ランインスタンスへのポインターです。
glyphRunDescriptionDWRITE_GLYPH_RUN_DESCRIPTION*inこのランに関連付けられた文字のプロパティを含む、グリフ ラン記述インスタンスへのポインターです。
clientDrawingEffectIUnknown*inoptionalレンダリングするグリフに適用する、アプリケーション定義の描画効果です。通常この引数は、テキストの内部を塗りつぶす前景ブラシなどの効果を表します。

戻り値

Type: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

IDWriteTextLayout::Draw 関数は、レンダリングするグリフに関するすべての情報を指定して、このコールバック関数を呼び出します。アプリケーションはこのコールバックを実装する際、主に Direct2D などの基盤となるプラットフォームのグラフィックス API へ呼び出しを委譲し、描画コンテキスト上にグリフを描画します。GDI を使用するアプリケーションでは、IDWriteBitmapRenderTarget::DrawGlyphRun メソッドを用いてこのコールバックを実装できます。

vtbl 7 HRESULT DrawUnderline(void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_UNDERLINE* underline, IUnknown* clientDrawingEffect)

IDWriteTextLayout::Draw は、下線を描画するようクライアントに指示するために、この関数を呼び出します。(IDWriteTextRenderer.DrawUnderline)

clientDrawingContextvoid*inoptionalIDWriteTextLayout::Draw に渡される、アプリケーション定義の描画コンテキストです。
baselineOriginXFLOATin下線が適用されるランのベースライン原点におけるピクセル位置(X 座標)です。
baselineOriginYFLOATin下線が適用されるランのベースライン原点におけるピクセル位置(Y 座標)です。
underlineDWRITE_UNDERLINE*in下線の論理情報を含む構造体へのポインターです。
clientDrawingEffectIUnknown*inoptional下線に適用する、アプリケーション定義の効果です。通常この引数は、線の内部を塗りつぶす前景ブラシなどの効果を表します。

戻り値

Type: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

1 本の下線は、書式による属性の変化のしかたによっては、複数の呼び出しに分割されることがあります。下線内でフォントのサイズやスタイルが変化する場合、太さとオフセットは文字数に応じて重み付け平均されます。適切な開始ピクセル位置を得るには、underline::offset をベースラインに加算します。そうしないとテキストとの間に間隔がなくなります。x 座標は、テキストの方向性にかかわらず常に左側として渡されます。これにより描画が簡素化され、隙間やアルファブレンドの二重適用を引き起こしかねない丸め誤差の問題が軽減されます。アルファの重なりを避けるには、端点を最も近いデバイスピクセルに丸めてください。

vtbl 8 HRESULT DrawStrikethrough(void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_STRIKETHROUGH* strikethrough, IUnknown* clientDrawingEffect)

IDWriteTextLayout::Draw は、取り消し線を描画するようクライアントに指示するために、この関数を呼び出します。(IDWriteTextRenderer.DrawStrikethrough)

clientDrawingContextvoid*inoptionalIDWriteTextLayout::Draw に渡される、アプリケーション定義の描画コンテキストです。
baselineOriginXFLOATin取り消し線が適用されるランのベースライン原点におけるピクセル位置(X 座標)です。
baselineOriginYFLOATin取り消し線が適用されるランのベースライン原点におけるピクセル位置(Y 座標)です。
strikethroughDWRITE_STRIKETHROUGH*in取り消し線の論理情報を含む構造体へのポインターです。
clientDrawingEffectIUnknown*inoptional取り消し線に適用する、アプリケーション定義の効果です。通常この引数は、線の内部を塗りつぶす前景ブラシなどの効果を表します。

戻り値

Type: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

1 本の取り消し線は、書式による属性の変化のしかたによっては、複数の呼び出しに分割されることがあります。取り消し線は、フォントのサイズやスタイルの変化にわたって平均化されることはありません。適切な開始ピクセル位置を得るには、strikethrough::offset をベースラインに加算します。下線と同様に、x 座標はテキストの方向性にかかわらず常に左側として渡されます。

vtbl 9 HRESULT DrawInlineObject(void* clientDrawingContext, FLOAT originX, FLOAT originY, IDWriteInlineObject* inlineObject, BOOL isSideways, BOOL isRightToLeft, IUnknown* clientDrawingEffect)

IDWriteTextLayout::Draw は、インラインオブジェクトを描画する必要があるときに、このアプリケーションコールバックを呼び出します。(IDWriteTextRenderer.DrawInlineObject)

clientDrawingContextvoid*inoptionalIDWriteTextLayout::Draw に渡される、アプリケーション定義の描画コンテキストです。
originXFLOATinインラインオブジェクトの左上隅の X 座標です。
originYFLOATinインラインオブジェクトの左上隅の Y 座標です。
inlineObjectIDWriteInlineObject*inIDWriteTextFormat::SetInlineObject を使用して設定された、アプリケーション定義のインラインオブジェクトです。
isSidewaysBOOLinオブジェクトのベースラインが行のベースライン軸に沿って伸びるかどうかを示すブール値フラグです。
isRightToLeftBOOLinオブジェクトが右から左のコンテキストにあるかどうかを示すブール値フラグで、描画時に通常の画像を反転させたほうがよいことを示唆します。
clientDrawingEffectIUnknown*inoptionalレンダリングするグリフに適用する、アプリケーション定義の描画効果です。通常この引数は、線の内部を塗りつぶす前景ブラシなどの効果を表します。

戻り値

Type: 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_IDWriteTextRenderer "{EF8A8135-5CC6-45FE-8825-C5A0724EB819}"
#usecom global IDWriteTextRenderer IID_IDWriteTextRenderer "{}"
#comfunc global IDWriteTextRenderer_DrawGlyphRun       6 sptr,float,float,int,var,var,sptr
#comfunc global IDWriteTextRenderer_DrawUnderline      7 sptr,float,float,var,sptr
#comfunc global IDWriteTextRenderer_DrawStrikethrough  8 sptr,float,float,var,sptr
#comfunc global IDWriteTextRenderer_DrawInlineObject   9 sptr,float,float,sptr,int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。