IDWriteGdiInterop
COM公式ドキュメント
GDI との相互運用機能を提供します。フォントフェイスを LOGFONT 構造体に変換するメソッドや、GDI のフォント記述をフォントフェイスに変換するメソッドなどがあります。また、ビットマップレンダーターゲットオブジェクトの作成にも使用されます。(IDWriteGdiInterop)
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
LOGFONT 構造体で指定されたプロパティに一致するフォントオブジェクトを作成します。(IDWriteGdiInterop.CreateFontFromLOGFONT)
| logFont | LOGFONTW* | in | GDI 互換のフォント記述を格納した構造体。 |
| font | IDWriteFont** | out | このメソッドが返るとき、成功した場合は新しく作成された IDWriteFont オブジェクトへのポインターのアドレスを格納します。失敗した場合は NULL を格納します。 |
戻り値
Type: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定されたフォントの GDI 互換プロパティに基づいて LOGFONT 構造体を初期化します。(IDWriteGdiInterop.ConvertFontToLOGFONT)
| font | IDWriteFont* | in | GDI 互換の LOGFONT 構造体に変換する IDWriteFont オブジェクト。 |
| logFont | LOGFONTW* | out | このメソッドが返るとき、GDI 互換のフォント記述を受け取る構造体を格納します。 |
| isSystemFont | BOOL* | out | このメソッドが返るとき、指定されたフォントオブジェクトがシステムフォントコレクションに含まれている場合は TRUE を、そうでない場合は FALSE を格納します。 |
戻り値
Type: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ConvertFontToLOGFONT による LOGFONT への変換は論理フォントのレベルで動作し、特定の物理フォントにマッピングされることを保証しません。GDI が、LOGFONT で書式設定されたテキストを表示するために、変換元の IDWriteFont オブジェクトと同じ物理フォントを選択することは保証されません。
指定されたフォントの GDI 互換プロパティに基づいて LOGFONT 構造体を初期化します。(IDWriteGdiInterop.ConvertFontFaceToLOGFONT)
| font | IDWriteFontFace* | in | GDI 互換の LOGFONT 構造体に変換する IDWriteFontFace オブジェクト。 |
| logFont | LOGFONTW* | out | このメソッドが返るとき、GDI 互換のフォント記述を受け取る構造体へのポインターを格納します。 |
戻り値
Type: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ConvertFontFaceToLOGFONT による LOGFONT への変換は論理フォントのレベルで動作し、特定の物理フォントにマッピングされることを保証しません。GDI が、LOGFONT で書式設定されたテキストを表示するために、変換元の IDWriteFont オブジェクトと同じ物理フォントを選択することは保証されません。
指定された HDC で現在選択されている HFONT に対応する IDWriteFontFace オブジェクトを作成します。
| hdc | HDC | in | フォントが選択されているデバイスコンテキストへのハンドル。クライアントはすでにフォントマッピングを実行しており、デバイスコンテキストに選択されているフォントが、グリフのレンダリングに実際に使用されるフォントであることを前提とします。 |
| fontFace | IDWriteFontFace** | out | 新しく作成されたフォントフェイスオブジェクトへのポインターのアドレスを格納します。失敗した場合は NULL を格納します。返されるフォントフェイスは、ExtTextOut を使用してグリフ(必ずしも文字ではありません)を描画する際に使用されるものと同じ物理タイプフェイスを参照することが保証されます。 |
戻り値
Type: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
この関数は、アプリケーションがテキストのレイアウトとシェーピングに GDI および Uniscribe 1.x を使用しつつ、最終的なレンダリングには DirectWrite を使用するシナリオを想定しています。この関数は、クライアントがグリフインデックスを使用してテキスト出力を行うことを前提としています。
グリフのレンダリングに使用できるビットマップとメモリ DC(デバイスコンテキスト)をカプセル化するオブジェクトを作成します。
| hdc | HDC | inoptional | 互換性のあるメモリ DC(デバイスコンテキスト)の作成に使用する、省略可能なデバイスコンテキストへのハンドル。 |
| width | DWORD | in | ビットマップレンダーターゲットの幅。 |
| height | DWORD | in | ビットマップレンダーターゲットの高さ。 |
| renderTarget | IDWriteBitmapRenderTarget** | out | このメソッドが返るとき、新しく作成された IDWriteBitmapRenderTarget オブジェクトへのポインターのアドレスを格納します。 |
戻り値
Type: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDWriteGdiInterop "{1EDD9491-9853-4299-898F-6432983B6F3A}" #usecom global IDWriteGdiInterop IID_IDWriteGdiInterop "{}" #comfunc global IDWriteGdiInterop_CreateFontFromLOGFONT 3 var,sptr #comfunc global IDWriteGdiInterop_ConvertFontToLOGFONT 4 sptr,var,var #comfunc global IDWriteGdiInterop_ConvertFontFaceToLOGFONT 5 sptr,var #comfunc global IDWriteGdiInterop_CreateFontFaceFromHdc 6 sptr,sptr #comfunc global IDWriteGdiInterop_CreateBitmapRenderTarget 7 sptr,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDWriteGdiInterop "{1EDD9491-9853-4299-898F-6432983B6F3A}" #usecom global IDWriteGdiInterop IID_IDWriteGdiInterop "{}" #comfunc global IDWriteGdiInterop_CreateFontFromLOGFONT 3 sptr,sptr #comfunc global IDWriteGdiInterop_ConvertFontToLOGFONT 4 sptr,sptr,sptr #comfunc global IDWriteGdiInterop_ConvertFontFaceToLOGFONT 5 sptr,sptr #comfunc global IDWriteGdiInterop_CreateFontFaceFromHdc 6 sptr,sptr #comfunc global IDWriteGdiInterop_CreateBitmapRenderTarget 7 sptr,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。