IDWriteFontDownloadQueue
COM公式ドキュメント
リモートフォント、文字、グリフ、およびフォントフラグメントのダウンロード要求をキューに登録するインターフェイスです。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ダウンロード通知を受け取る、クライアント定義のリスナーオブジェクトを登録します。登録されたすべてのリスナーの DownloadCompleted は、BeginDownload の完了後に呼び出されます。
| listener | IDWriteFontDownloadListener* | in | 追加するリスナーオブジェクトです。 |
| token | DWORD* | out | トークン値を受け取ります。呼び出し元は、この値を後で RemoveListener に渡す必要があります。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
IDWriteFontDownloadListener は、キューにグローバルに登録するのではなく、context パラメーターを使用して BeginDownload に渡すこともできます。
AddListener を使用して以前に登録した通知ハンドラーの登録を解除します。
| token | DWORD | in | AddListener が以前に返したトークン値です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ダウンロードキューが空かどうかを判定します。キューには、すでにダウンロード中の要求は含まれない点に注意してください。BeginDownload を呼び出すとキューはクリアされます。
戻り値
型: BOOL
キューが空の場合は TRUE、BeginDownload に対して保留中の要求がある場合は FALSE を返します。
非同期ダウンロード操作を開始します。ダウンロード操作は、完了するか、CancelDownload の呼び出しによってキャンセルされるまで、バックグラウンドで実行されます。
| context | IUnknown* | inoptional | 任意指定のコンテキストオブジェクトで、ダウンロード通知ハンドラーの DownloadCompleted メソッドに渡されます。コンテキストオブジェクトが IDWriteFontDownloadListener を実装している場合、完了時にその DownloadCompleted が呼び出されます。 |
戻り値
解説(Remarks)
BeginDownload はキューからすべてのダウンロード要求を削除し、それらを
バックグラウンドのダウンロード操作に転送します。BeginDownload が再度呼び出されたときに
以前のダウンロードがまだ進行中である場合、新しいダウンロードは
以前のダウンロードが完了するまで完了しません。
キューからすべてのダウンロード要求を削除し、実行中のダウンロード操作をキャンセルします。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ダウンロードキューの現在の世代番号を取得します。この番号は、ダウンロードが失敗したか成功したかにかかわらず、完了するたびにインクリメントされます。このクッキー値をキャッシュされたデータと比較することで、そのデータが古いかどうかを判断できます。
戻り値
型: UINT64
ダウンロードキューの現在の世代番号です。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDWriteFontDownloadQueue "{B71E6052-5AEA-4FA3-832E-F60D431F7E91}" #usecom global IDWriteFontDownloadQueue IID_IDWriteFontDownloadQueue "{}" #comfunc global IDWriteFontDownloadQueue_AddListener 3 sptr,var #comfunc global IDWriteFontDownloadQueue_RemoveListener 4 int #comfunc global IDWriteFontDownloadQueue_IsEmpty 5 #comfunc global IDWriteFontDownloadQueue_BeginDownload 6 sptr #comfunc global IDWriteFontDownloadQueue_CancelDownload 7 #comfunc global IDWriteFontDownloadQueue_GetGenerationCount 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDWriteFontDownloadQueue "{B71E6052-5AEA-4FA3-832E-F60D431F7E91}" #usecom global IDWriteFontDownloadQueue IID_IDWriteFontDownloadQueue "{}" #comfunc global IDWriteFontDownloadQueue_AddListener 3 sptr,sptr #comfunc global IDWriteFontDownloadQueue_RemoveListener 4 int #comfunc global IDWriteFontDownloadQueue_IsEmpty 5 #comfunc global IDWriteFontDownloadQueue_BeginDownload 6 sptr #comfunc global IDWriteFontDownloadQueue_CancelDownload 7 #comfunc global IDWriteFontDownloadQueue_GetGenerationCount 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。