Win32 API 日本語リファレンス
ホームStorage.Xps › IXpsOMTileBrush

IXpsOMTileBrush

COM
IID0fc2328d-d722-4a54-b2ec-be90218a789e継承元IXpsOMBrush自前メソッド開始 vtbl7

公式ドキュメント

タイルブラシは、ビジュアルイメージを繰り返し描画することで領域を塗りつぶします。

解説(Remarks)

次の図に示すように、タイルブラシはビジュアル要素またはその一部を取得し、その要素を変換してタイルを作成し、そのタイルを出力領域のビューポートに配置して、タイルモードで指定されたとおりに出力領域を塗りつぶします。

タイルブラシがジオメトリを塗りつぶす方法を示す図 前の図において、viewport(ビューポート)は、出力領域内で最初のタイルが占める領域です。ビューポートの画像は、タイルモードで指定されたとおりに出力領域全体に繰り返されます。transform プロパティは、ビューポートが出力領域にタイル配置された後に、出力領域をどのように変換するかを決定します。最終的に可視イメージとして描画される出力領域の部分は、このタイルブラシを使用しているパス、ストローク、またはグリフによって決まります。

viewbox(ビューボックス)は、ブラシに使用されるソース画像の範囲を表します。前の図のビューボックスはソース画像と同じサイズであるため、ソース画像全体がブラシに使用されます。ビューボックスは元の画像より小さくすることもできます。

次の図では、元の画像またはビジュアルの一部だけを含むビューボックスを使用してブラシを作成しています。

ビューボックスの例を示す図 次の図は、タイル画像を繰り返して出力領域を塗りつぶすために使用されるタイルモードを示しています。タイルモードの値が XPS_TILE_MODE_NONE の場合、タイル画像は一度だけ描画されます。 さまざまなタイルモードの動作の例を示す図

メソッド 11

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

vtbl 7 HRESULT GetTransform(IXpsOMMatrixTransform** transform)

ブラシの解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースへのポインターを取得します。(IXpsOMTileBrush.GetTransform)

transformIXpsOMMatrixTransform**out

ブラシの解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースへのポインター。マトリックス変換が設定されていない場合は、NULL ポインターが返されます。

このパラメーターに返される値は、変換を設定するために直近に呼び出されたメソッドによって異なります。

直近に呼び出されたメソッド transform に返されるオブジェクト

SetTransformLocal

SetTransformLocal によって設定された変換。

SetTransformLookup

SetTransformLookup によって設定されたキーと一致するルックアップキーを使用して、リソースディレクトリから取得された変換。
SetTransformLocalSetTransformLookup のどちらもまだ呼び出されていません。 NULL ポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
transformNULL です。
XPS_E_LOOKUP_INVALID_TYPE
SetStrokeBrushLookup によって設定されたルックアップキー名が、ブラシではないオブジェクトを参照しています。
XPS_E_LOOKUP_NOT_FOUND
ルックアップ値と一致するキー名を持つオブジェクトが見つかりませんでした。

解説(Remarks)

この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に、出力領域をどのように変換するかを決定します。

vtbl 8 HRESULT GetTransformLocal(IXpsOMMatrixTransform** transform)

ブラシのローカルな(共有されない)解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースへのポインターを取得します。

transformIXpsOMMatrixTransform**out

ブラシのローカルな(共有されない)解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースへのポインター。ローカルなマトリックス変換が設定されていない場合、またはマトリックス変換のルックアップキーが設定されている場合は、NULL ポインターが返されます。

直近に呼び出されたメソッド transform に返されるオブジェクト

SetTransformLocal

SetTransformLocal によって設定された変換。

SetTransformLookup

NULL ポインター。
SetTransformLocalSetTransformLookup のどちらもまだ呼び出されていません。 NULL ポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
transformNULL です。

解説(Remarks)

この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に、出力領域をどのように変換するかを決定します。

vtbl 9 HRESULT SetTransformLocal(IXpsOMMatrixTransform* transform)

IXpsOMMatrixTransform インターフェースポインターを、ローカルな(共有されない)マトリックス変換として設定します。

transformIXpsOMMatrixTransform*inローカルな(共有されない)マトリックス変換として設定する IXpsOMMatrixTransform インターフェースへのポインター。ローカル変換が既に設定されている場合、NULL ポインターを指定するとそれが解放されます。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
XPS_E_NO_CUSTOM_OBJECTS
transform が認識可能なインターフェース実装を指していません。XPS ドキュメント API インターフェースの独自実装はサポートされていません。

解説(Remarks)

この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に、出力領域をどのように変換するかを決定します。

SetTransformLocal を呼び出すと、変換のルックアップキーは解放され、GetTransformLookupkey パラメーターに NULL ポインターを返します。次の表は、このプロパティのローカル値とルックアップ値の関係を示しています。

直近に呼び出されたメソッド GetTransformtransform に返すオブジェクト GetTransformLocaltransform に返すオブジェクト GetTransformLookupkey に返す文字列
SetTransformLocal(このメソッド) SetTransformLocal によって設定された変換。 SetTransformLocal によって設定された変換。 NULL ポインター。

SetTransformLookup

SetTransformLookup によって設定されたキーと一致するルックアップキーを使用して、リソースディレクトリから取得された変換。 NULL ポインター。 SetTransformLookup によって設定されたルックアップキー。
SetTransformLocalSetTransformLookup のどちらもまだ呼び出されていません。 NULL ポインター。 NULL ポインター。 NULL ポインター。
vtbl 10 HRESULT GetTransformLookup(LPWSTR* key)

ブラシの解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースを、リソースディクショナリ内で識別するルックアップキーを取得します。

keyLPWSTR*out

ブラシの解決済みマトリックス変換を保持する IXpsOMMatrixTransform インターフェースを、リソースディクショナリ内で識別するルックアップキー。マトリックス変換のルックアップキーが設定されていない場合、またはローカルなマトリックス変換が設定されている場合は、NULL ポインターが返されます。

直近に呼び出されたメソッド key に返されるオブジェクト

SetTransformLocal

NULL ポインター。

SetTransformLookup

SetTransformLookup によって設定されたルックアップキー。
SetTransformLocalSetTransformLookup のどちらもまだ呼び出されていません。 NULL ポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
keyNULL です。

解説(Remarks)

この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に、出力領域をどのように変換するかを決定します。

このメソッドは、key に返される文字列が使用するメモリを割り当てます。keyNULL でない場合は、CoTaskMemFree 関数を使用してメモリを解放してください。

vtbl 11 HRESULT SetTransformLookup(LPWSTR key)

このブラシの変換として使用する、共有マトリックス変換のルックアップキー名を設定します。

keyLPWSTRinリソースディクショナリ内の共有マトリックス変換のルックアップキー名を格納する文字列変数。ルックアップキーが既に設定されている場合、NULL ポインターを指定するとそれがクリアされます。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
XPS_E_INVALID_RESOURCE_KEY
XML Paper Specification に照らして、lookup の値が有効なルックアップキー文字列ではありません。
XPS_E_INVALID_LOOKUP_TYPE
key に指定されたルックアップキー名が、ジオメトリではないオブジェクトを参照しています。
XPS_E_LOOKUP_NOT_FOUND
key に渡された値と一致するキー名を持つオブジェクトが見つかりませんでした。

解説(Remarks)

この変換は、タイルブラシを使用しているパス、ストローク、またはグリフにブラシ画像が描画される前に適用されます。タイルブラシが持つ変換は 1 つだけで、ローカルまたはリモートのいずれかになります。

SetTransformLookup を呼び出すと、ローカル変換は解放され、GetTransformLocaltransform パラメーターに NULL ポインターを返します。次の表は、このプロパティのローカル値とルックアップ値の関係を示しています。

直近に呼び出されたメソッド GetTransformtransform に返すオブジェクト GetTransformLocaltransform に返すオブジェクト GetTransformLookupkey に返す文字列

SetTransformLocal

SetTransformLocal によって設定された変換。 SetTransformLocal によって設定された変換。 NULL ポインター。
SetTransformLookup(このメソッド) SetTransformLookup によって設定されたキーと一致するルックアップキーを使用して、リソースディレクトリから取得された変換。 NULL ポインター。 SetTransformLookup によって設定されたルックアップキー。
SetTransformLocalSetTransformLookup のどちらもまだ呼び出されていません。 NULL ポインター。 NULL ポインター。 NULL ポインター。
vtbl 12 HRESULT GetViewbox(XPS_RECT* viewbox)

タイルが使用するソース画像の範囲を取得します。

viewboxXPS_RECT*outタイルが使用するソースコンテンツの領域を表す XPS_RECT 構造体。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
viewboxNULL です。

解説(Remarks)

ブラシのビューボックスは、タイル画像として使用するソース画像またはビジュアルの範囲を指定します。

ブラシのビューボックスの座標はソースコンテンツを基準としており、(0,0) はソースコンテンツの左上隅を表します。画像の場合、ブラシのビューボックスで指定される寸法は 1/96" 単位で表されます。ソース画像内の対応するピクセル座標は次のように計算されます。

次の図では、左の画像はソース画像の例、中央の画像は選択されたビューボックス、右の画像はその結果得られるブラシを示しています。

ビューボックスの例を示す図 ソース画像の解像度が 96 × 96 dpi、画像サイズが 96 × 96 ピクセルである場合、viewbox パラメーターの各フィールドの値は次のようになります。

上記のパラメーター値は、ソース画像において次のように対応します。

SourceLeft = 96 × 48 / 96 = 左端から 48 ピクセル
SourceTop = 96 × 4 / 96 = 上端から 24 ピクセル
SourceWidth = 96 × 24 / 96 = 幅 24 ピクセル
SourceHeight = 96 × 48 / 96 = 高さ 48 ピクセル
vtbl 13 HRESULT SetViewbox(XPS_RECT* viewbox)

タイル画像として使用するソースコンテンツの範囲を設定します。

viewboxXPS_RECT*inタイル画像として使用するソースコンテンツの範囲を表す XPS_RECT 構造体。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
viewboxNULL です。
E_INVALIDARG
viewbox で指定された四角形が有効ではありませんでした。

解説(Remarks)

ブラシのビューボックスは、タイル画像として使用するソース画像またはビジュアルの範囲を指定します。

ブラシのビューボックスの座標はソースコンテンツを基準としており、(0,0) はソースコンテンツの左上隅を表します。画像の場合、ブラシのビューボックスで指定される寸法は 1/96" 単位で表されます。ソース画像内の対応するピクセル座標は次のように計算されます。

次の図では、左の画像はソース画像の例で、右の画像はブラシ用に選択されたビューボックスを赤い四角形で示したソース画像です。この例では、タイルブラシのコンテンツとして使用されるのは赤い四角形の内側の領域です。画像の網掛け部分はブラシでは使用されません。

ビューボックスがソース画像にどのようにマップされるかを示す図 ソース画像の解像度が 96 × 96 dpi、画像サイズが 96 × 96 ピクセルである場合、viewbox パラメーターの各フィールドの値は次のようになります。

上記のパラメーター値は、ソース画像において次のように対応します。

SourceLeft = 96 * 48 / 96 = 左端から 48 ピクセル
SourceTop = 96 * 24 / 96 = 上端から 24 ピクセル
SourceWidth = 96 * 24 / 96 = 幅 24 ピクセル
SourceHeight = 96 * 48 / 96 = 高さ 48 ピクセル
vtbl 14 HRESULT GetViewport(XPS_RECT* viewport)

1 つのタイルが覆う描画先ジオメトリの範囲を取得します。

viewportXPS_RECT*out1 つのタイルが覆う描画先ジオメトリの範囲を表す XPS_RECT 構造体。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
viewportNULL です。

解説(Remarks)

ビューポートは、最初のタイルが描画される出力領域の部分です。図では、ビューポートは赤い点線の四角形の内側にある紫色の四角形で示されています。ブラシのタイルモードによって、残りのタイルが出力領域にどのように描画されるかが決まります。

ビューポートが出力領域にどのようにマップされるかを示す図
vtbl 15 HRESULT SetViewport(XPS_RECT* viewport)

1 つのタイルが覆う描画先ジオメトリの範囲を設定します。

viewportXPS_RECT*in1 つのタイルが覆う描画先ジオメトリの範囲を表す XPS_RECT 構造体。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
viewportNULL です。
E_INVALIDARG
viewport で指定された四角形が有効ではありません。

解説(Remarks)

ビューポートは、タイルが描画される出力領域の部分です。次の図では、ビューポートは赤い点線の四角形の内側にある青い四角形で示されています。ブラシのタイルモードによって、他のタイルが出力領域にどのように描画されるかが決まります。

ビューポートが出力領域にどのようにマップされるかを示す図
vtbl 16 HRESULT GetTileMode(XPS_TILE_MODE* tileMode)

ブラシのタイルモードを表す XPS_TILE_MODE 値を取得します。

tileModeXPS_TILE_MODE*outブラシのタイルモードを表す XPS_TILE_MODE 値。

戻り値

このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
tileModeNULL です。

解説(Remarks)

タイルモードは、出力領域を塗りつぶすためにタイル画像をどのように繰り返すかを決定します。タイルモードの値が XPS_TILE_MODE_NONE の場合、タイル画像は一度だけ描画されます。次の図は、いくつかのタイルモードでタイル画像がどのように表示されるかの例を示しています。

さまざまなタイルモードの動作の例を示す図
vtbl 17 HRESULT SetTileMode(XPS_TILE_MODE tileMode)

ブラシのタイリングモードを表す XPS_TILE_MODE 値を設定します。

tileModeXPS_TILE_MODEin設定する XPS_TILE_MODE 値。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
tileMode が有効な XPS_TILE_MODE 値ではありませんでした。

解説(Remarks)

タイルモードは、出力領域を塗りつぶすためにタイル画像をどのように繰り返すかを決定します。タイルモードの値が XPS_TILE_MODE_NONE の場合、タイル画像は一度だけ描画されます。

さまざまなタイルモードの動作の例を示す図
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IXpsOMTileBrush "{0FC2328D-D722-4A54-B2EC-BE90218A789E}"
#usecom global IXpsOMTileBrush IID_IXpsOMTileBrush "{}"
#comfunc global IXpsOMTileBrush_GetTransform        7 sptr
#comfunc global IXpsOMTileBrush_GetTransformLocal   8 sptr
#comfunc global IXpsOMTileBrush_SetTransformLocal   9 sptr
#comfunc global IXpsOMTileBrush_GetTransformLookup  10 var
#comfunc global IXpsOMTileBrush_SetTransformLookup  11 wstr
#comfunc global IXpsOMTileBrush_GetViewbox          12 var
#comfunc global IXpsOMTileBrush_SetViewbox          13 var
#comfunc global IXpsOMTileBrush_GetViewport         14 var
#comfunc global IXpsOMTileBrush_SetViewport         15 var
#comfunc global IXpsOMTileBrush_GetTileMode         16 var
#comfunc global IXpsOMTileBrush_SetTileMode         17 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。