ホーム › UI.TabletPC › IInkStrokeDisp
IInkStrokeDisp
COMIDispatch (デュアル)✅ IDispatch を実装(デュアルインターフェース)。HSP では
comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。メソッド 33
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
| ID | INT* | out | ストロークを一意に識別する ID を受け取るポインタである。 |
| Points | VARIANT* | out | ストロークを表すベジエ制御点の配列を受け取る VARIANT へのポインタである。 |
vtbl 9 HRESULT get_DrawingAttributes(IInkDrawingAttributes** DrawAttrs)
| DrawAttrs | IInkDrawingAttributes** | out | このストロークに適用されている描画属性を受け取るポインタである。 |
vtbl 10 HRESULT putref_DrawingAttributes(IInkDrawingAttributes* DrawAttrs)
| DrawAttrs | IInkDrawingAttributes* | inoptional | このストロークに適用する描画属性オブジェクトへのポインタである。 |
| Ink | IInkDisp** | out | このストロークが属するインク オブジェクトを受け取るポインタである。 |
vtbl 12 HRESULT get_ExtendedProperties(IInkExtendedProperties** Properties)
| Properties | IInkExtendedProperties** | out | このストロークに関連付けられた拡張プロパティのコレクションを受け取るポインタである。 |
| Cusps | VARIANT* | out | 折れ線近似におけるストロークの尖点(カスプ)の配列を受け取る VARIANT へのポインタである。 |
| Cusps | VARIANT* | out | ベジエ表現におけるストロークの尖点(カスプ)の配列を受け取る VARIANT へのポインタである。 |
| Intersections | VARIANT* | out | ストローク自身の交差点の配列を受け取る VARIANT へのポインタである。 |
| plCount | INT* | out | ストロークを構成するパケットの個数を受け取るポインタである。 |
| plSize | INT* | out | 1 パケットあたりのデータ サイズ(プロパティ数)を受け取るポインタである。 |
| PacketDescription | VARIANT* | out | パケットを構成する各プロパティの GUID 配列を受け取る VARIANT へのポインタである。 |
vtbl 19 HRESULT get_Deleted(VARIANT_BOOL* Deleted)
| Deleted | VARIANT_BOOL* | out | ストロークが削除済みであるかどうかを受け取る VARIANT_BOOL へのポインタである。 |
vtbl 20 HRESULT GetBoundingBox(InkBoundingBoxMode BoundingBoxMode, IInkRectangle** Rectangle)
| BoundingBoxMode | InkBoundingBoxMode | in | 境界ボックスの算出方法を指定する InkBoundingBoxMode 値である。 |
| Rectangle | IInkRectangle** | out | ストロークの境界矩形を受け取るポインタである。 |
vtbl 21 HRESULT FindIntersections(IInkStrokes* Strokes, VARIANT* Intersections)
| Strokes | IInkStrokes* | inoptional | 交差判定の対象とするストローク コレクションへのポインタである。 |
| Intersections | VARIANT* | out | このストロークと指定ストローク群との交差点の配列を受け取る VARIANT へのポインタである。 |
vtbl 22 HRESULT GetRectangleIntersections(IInkRectangle* Rectangle, VARIANT* Intersections)
| Rectangle | IInkRectangle* | inoptional | 交差判定を行う矩形へのポインタである。 |
| Intersections | VARIANT* | out | ストロークと矩形との交差区間の配列を受け取る VARIANT へのポインタである。 |
vtbl 23 HRESULT Clip(IInkRectangle* Rectangle)
| Rectangle | IInkRectangle* | inoptional | ストロークを切り取る境界となる矩形へのポインタである。 |
vtbl 24 HRESULT HitTestCircle(INT X, INT Y, FLOAT Radius, VARIANT_BOOL* Intersects)
| X | INT | in | ヒット テストを行う円の中心の X 座標(インク空間単位)を指定する。 |
| Y | INT | in | ヒット テストを行う円の中心の Y 座標(インク空間単位)を指定する。 |
| Radius | FLOAT | in | ヒット テストを行う円の半径を指定する。 |
| Intersects | VARIANT_BOOL* | out | ストロークが指定した円と交差するかどうかを受け取る VARIANT_BOOL へのポインタである。 |
| X | INT | in | 基準点の X 座標(インク空間単位)を指定する。 |
| Y | INT | in | 基準点の Y 座標(インク空間単位)を指定する。 |
| Distance | FLOAT* | inout | 基準点からストローク上の最近点までの距離を受け取るポインタである。 |
| Point | FLOAT* | out | ストローク上の最近点の位置(パラメータ値)を受け取るポインタである。 |
vtbl 26 HRESULT Split(FLOAT SplitAt, IInkStrokeDisp** NewStroke)
| SplitAt | FLOAT | in | ストロークを分割する位置を 0.0〜1.0 の浮動小数点パラメータで指定する。 |
| NewStroke | IInkStrokeDisp** | out | 分割により新たに生成されたストロークを受け取るポインタである。 |
vtbl 27 HRESULT GetPacketDescriptionPropertyMetrics(LPWSTR PropertyName, INT* Minimum, INT* Maximum, TabletPropertyMetricUnit* Units, FLOAT* Resolution)
| PropertyName | LPWSTR | in | メトリクスを取得するパケット プロパティの GUID 文字列を指定する。 |
| Minimum | INT* | out | プロパティ値の最小値を受け取るポインタである。 |
| Maximum | INT* | out | プロパティ値の最大値を受け取るポインタである。 |
| Units | TabletPropertyMetricUnit* | out | プロパティ値の単位を受け取る TabletPropertyMetricUnit へのポインタである。 |
| Resolution | FLOAT* | out | プロパティ値の分解能を受け取るポインタである。 |
| Index | INT | in | 取得を開始する点の 0 から始まるインデックスを指定する。 |
| Count | INT | in | 取得する点の数を指定する。-1 を指定すると残りすべてを取得する。 |
| Points | VARIANT* | out | 取得した点の座標配列を受け取る VARIANT へのポインタである。 |
| Points | VARIANT | in | 設定する点の座標配列を格納した VARIANT である。 |
| Index | INT | in | 設定を開始する点の 0 から始まるインデックスを指定する。 |
| Count | INT | in | 設定する点の数を指定する。 |
| NumberOfPointsSet | INT* | out | 実際に設定された点の数を受け取るポインタである。 |
| Index | INT | in | 取得を開始するパケットの 0 から始まるインデックスを指定する。 |
| Count | INT | in | 取得するパケットの数を指定する。 |
| PacketData | VARIANT* | out | 取得したパケット データの配列を受け取る VARIANT へのポインタである。 |
vtbl 31 HRESULT GetPacketValuesByProperty(LPWSTR PropertyName, INT Index, INT Count, VARIANT* PacketValues)
| PropertyName | LPWSTR | in | 値を取得するパケット プロパティの GUID 文字列を指定する。 |
| Index | INT | in | 取得を開始するパケットの 0 から始まるインデックスを指定する。 |
| Count | INT | in | 取得するパケットの数を指定する。 |
| PacketValues | VARIANT* | out | 指定プロパティのパケット値の配列を受け取る VARIANT へのポインタである。 |
vtbl 32 HRESULT SetPacketValuesByProperty(LPWSTR bstrPropertyName, VARIANT PacketValues, INT Index, INT Count, INT* NumberOfPacketsSet)
| bstrPropertyName | LPWSTR | in | 値を設定するパケット プロパティの GUID 文字列を指定する。 |
| PacketValues | VARIANT | in | 設定するパケット値の配列を格納した VARIANT である。 |
| Index | INT | in | 設定を開始するパケットの 0 から始まるインデックスを指定する。 |
| Count | INT | in | 設定するパケットの数を指定する。 |
| NumberOfPacketsSet | INT* | out | 実際に設定されたパケットの数を受け取るポインタである。 |
| FittingError | INT | in | ベジエ曲線を折れ線へ平坦化する際に許容するフィッティング誤差を指定する。 |
| FlattenedBezierPoints | VARIANT* | out | 平坦化された点の座標配列を受け取る VARIANT へのポインタである。 |
vtbl 34 HRESULT Transform(IInkTransform* Transform, VARIANT_BOOL ApplyOnPenWidth)
| Transform | IInkTransform* | inoptional | ストロークに適用する変換オブジェクトへのポインタである。 |
| ApplyOnPenWidth | VARIANT_BOOL | in | 変換をペン幅にも適用するかどうかを指定する VARIANT_BOOL である。 |
vtbl 35 HRESULT ScaleToRectangle(IInkRectangle* Rectangle)
| Rectangle | IInkRectangle* | inoptional | ストロークを拡大縮小して収める基準となる矩形へのポインタである。 |
| HorizontalComponent | FLOAT | in | 水平方向の移動量を指定する。 |
| VerticalComponent | FLOAT | in | 垂直方向の移動量を指定する。 |
| Degrees | FLOAT | in | 回転角度を度単位で指定する。 |
| x | FLOAT | in | 回転中心の X 座標を指定する。 |
| y | FLOAT | in | 回転中心の Y 座標を指定する。 |
| HorizontalMultiplier | FLOAT | in | 水平方向のせん断係数を指定する。 |
| VerticalMultiplier | FLOAT | in | 垂直方向のせん断係数を指定する。 |
| HorizontalMultiplier | FLOAT | in | 水平方向の拡大縮小倍率を指定する。 |
| VerticalMultiplier | FLOAT | in | 垂直方向の拡大縮小倍率を指定する。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IInkStrokeDisp "{43242FEA-91D1-4A72-963E-FBB91829CFA2}" #usecom global IInkStrokeDisp IID_IInkStrokeDisp "{}" #comfunc global IInkStrokeDisp_get_ID 7 var #comfunc global IInkStrokeDisp_get_BezierPoints 8 var #comfunc global IInkStrokeDisp_get_DrawingAttributes 9 sptr #comfunc global IInkStrokeDisp_putref_DrawingAttributes 10 sptr #comfunc global IInkStrokeDisp_get_Ink 11 sptr #comfunc global IInkStrokeDisp_get_ExtendedProperties 12 sptr #comfunc global IInkStrokeDisp_get_PolylineCusps 13 var #comfunc global IInkStrokeDisp_get_BezierCusps 14 var #comfunc global IInkStrokeDisp_get_SelfIntersections 15 var #comfunc global IInkStrokeDisp_get_PacketCount 16 var #comfunc global IInkStrokeDisp_get_PacketSize 17 var #comfunc global IInkStrokeDisp_get_PacketDescription 18 var #comfunc global IInkStrokeDisp_get_Deleted 19 var #comfunc global IInkStrokeDisp_GetBoundingBox 20 int,sptr #comfunc global IInkStrokeDisp_FindIntersections 21 sptr,var #comfunc global IInkStrokeDisp_GetRectangleIntersections 22 sptr,var #comfunc global IInkStrokeDisp_Clip 23 sptr #comfunc global IInkStrokeDisp_HitTestCircle 24 int,int,float,var #comfunc global IInkStrokeDisp_NearestPoint 25 int,int,var,var #comfunc global IInkStrokeDisp_Split 26 float,sptr #comfunc global IInkStrokeDisp_GetPacketDescriptionPropertyMetrics 27 wstr,var,var,var,var #comfunc global IInkStrokeDisp_GetPoints 28 int,int,var #comfunc global IInkStrokeDisp_SetPoints 29 int,int,int,var #comfunc global IInkStrokeDisp_GetPacketData 30 int,int,var #comfunc global IInkStrokeDisp_GetPacketValuesByProperty 31 wstr,int,int,var #comfunc global IInkStrokeDisp_SetPacketValuesByProperty 32 wstr,int,int,int,var #comfunc global IInkStrokeDisp_GetFlattenedBezierPoints 33 int,var #comfunc global IInkStrokeDisp_Transform 34 sptr,int #comfunc global IInkStrokeDisp_ScaleToRectangle 35 sptr #comfunc global IInkStrokeDisp_Move 36 float,float #comfunc global IInkStrokeDisp_Rotate 37 float,float,float #comfunc global IInkStrokeDisp_Shear 38 float,float #comfunc global IInkStrokeDisp_ScaleTransform 39 float,float ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IInkStrokeDisp "{43242FEA-91D1-4A72-963E-FBB91829CFA2}" #usecom global IInkStrokeDisp IID_IInkStrokeDisp "{}" #comfunc global IInkStrokeDisp_get_ID 7 sptr #comfunc global IInkStrokeDisp_get_BezierPoints 8 sptr #comfunc global IInkStrokeDisp_get_DrawingAttributes 9 sptr #comfunc global IInkStrokeDisp_putref_DrawingAttributes 10 sptr #comfunc global IInkStrokeDisp_get_Ink 11 sptr #comfunc global IInkStrokeDisp_get_ExtendedProperties 12 sptr #comfunc global IInkStrokeDisp_get_PolylineCusps 13 sptr #comfunc global IInkStrokeDisp_get_BezierCusps 14 sptr #comfunc global IInkStrokeDisp_get_SelfIntersections 15 sptr #comfunc global IInkStrokeDisp_get_PacketCount 16 sptr #comfunc global IInkStrokeDisp_get_PacketSize 17 sptr #comfunc global IInkStrokeDisp_get_PacketDescription 18 sptr #comfunc global IInkStrokeDisp_get_Deleted 19 sptr #comfunc global IInkStrokeDisp_GetBoundingBox 20 int,sptr #comfunc global IInkStrokeDisp_FindIntersections 21 sptr,sptr #comfunc global IInkStrokeDisp_GetRectangleIntersections 22 sptr,sptr #comfunc global IInkStrokeDisp_Clip 23 sptr #comfunc global IInkStrokeDisp_HitTestCircle 24 int,int,float,sptr #comfunc global IInkStrokeDisp_NearestPoint 25 int,int,sptr,sptr #comfunc global IInkStrokeDisp_Split 26 float,sptr #comfunc global IInkStrokeDisp_GetPacketDescriptionPropertyMetrics 27 wstr,sptr,sptr,sptr,sptr #comfunc global IInkStrokeDisp_GetPoints 28 int,int,sptr #comfunc global IInkStrokeDisp_SetPoints 29 int,int,int,sptr #comfunc global IInkStrokeDisp_GetPacketData 30 int,int,sptr #comfunc global IInkStrokeDisp_GetPacketValuesByProperty 31 wstr,int,int,sptr #comfunc global IInkStrokeDisp_SetPacketValuesByProperty 32 wstr,int,int,int,sptr #comfunc global IInkStrokeDisp_GetFlattenedBezierPoints 33 int,sptr #comfunc global IInkStrokeDisp_Transform 34 sptr,int #comfunc global IInkStrokeDisp_ScaleToRectangle 35 sptr #comfunc global IInkStrokeDisp_Move 36 float,float #comfunc global IInkStrokeDisp_Rotate 37 float,float,float #comfunc global IInkStrokeDisp_Shear 38 float,float #comfunc global IInkStrokeDisp_ScaleTransform 39 float,float ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。