• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
4 */
5
6import "oaidl.idl";
7import "ocidl.idl";
8import "tpcshrd.idl";
9
10// cpp_quote("#import <tpcerror.h>")
11
12typedef enum InkRasterOperation {
13    IRO_Black       = 1,
14    IRO_NotMergePen = 2,
15    IRO_MaskNotPen  = 3,
16    IRO_NotCopyPen  = 4,
17    IRO_MaskPenNot  = 5,
18    IRO_Not         = 6,
19    IRO_XOrPen      = 7,
20    IRO_NotMaskPen  = 8,
21    IRO_MaskPen     = 9,
22    IRO_NotXOrPen   = 10,
23    IRO_NoOperation = 11,
24    IRO_MergeNotPen = 12,
25    IRO_CopyPen     = 13,
26    IRO_MergePenNot = 14,
27    IRO_MergePen    = 15,
28    IRO_White       = 16
29} InkRasterOperation;
30
31typedef enum InkPenTip {
32    IPT_Ball      = 0,
33    IPT_Rectangle = 1
34} InkPenTip;
35
36typedef enum TabletHardwareCapabilities {
37    THWC_Integrated             = 0x1,
38    THWC_CursorMustTouch        = 0x2,
39    THWC_HardProximity          = 0x4,
40    THWC_CursorsHavePhysicalIds = 0x8
41} TabletHardwareCapabilities;
42
43typedef enum TabletPropertyMetricUnit {
44    TPMU_Default,
45    TPMU_Inches,
46    TPMU_Centimeters,
47    TPMU_Degrees,
48    TPMU_Radians,
49    TPMU_Seconds,
50    TPMU_Pounds,
51    TPMU_Grams
52} TabletPropertyMetricUnit;
53
54typedef enum InkCursorButtonState {
55    ICBS_Unavailable,
56    ICBS_Up,
57    ICBS_Down
58} InkCursorButtonState;
59
60typedef enum InkRecognitionConfidence {
61    IRC_Strong       = 0,
62    IRC_Intermediate = 1,
63    IRC_Poor         = 2
64} InkRecognitionConfidence;
65
66typedef enum InkBoundingBoxMode {
67    IBBM_Default    = 0,
68    IBBM_NoCurveFit = 1,
69    IBBM_CurveFit   = 2,
70    IBBM_PointsOnly = 3,
71    IBBM_Union      = 4
72} InkBoundingBoxMode;
73
74typedef enum InkExtractFlags {
75    IEF_CopyFromOriginal   = 0,
76    IEF_RemoveFromOriginal = 1,
77    IEF_Default            = IEF_RemoveFromOriginal
78} InkExtractFlags;
79
80typedef enum InkPersistenceFormat {
81    IPF_InkSerializedFormat       = 0,
82    IPF_Base64InkSerializedFormat = 1,
83    IPF_GIF                       = 2,
84    IPF_Base64GIF                 = 3
85} InkPersistenceFormat;
86
87typedef enum InkPersistenceCompressionMode {
88    IPCM_Default            = 0,
89    IPCM_MaximumCompression = 1,
90    IPCM_NoCompression      = 2
91} InkPersistenceCompressionMode;
92
93typedef enum InkClipboardFormats {
94    ICF_None                = 0x0000,
95    ICF_InkSerializedFormat = 0x0001,
96    ICF_SketchInk           = 0x0002,
97    ICF_TextInk             = 0x0006,
98    ICF_EnhancedMetafile    = 0x0008,
99    ICF_Metafile            = 0x0020,
100    ICF_Bitmap              = 0x0040,
101    ICF_PasteMask           = 0x0007,
102    ICF_CopyMask            = 0x007f,
103    ICF_Default             = ICF_CopyMask
104} InkClipboardFormats;
105
106typedef enum InkClipboardModes {
107    ICB_Copy        = 0x00,
108    ICB_Cut         = 0x01,
109    ICB_ExtractOnly = 0x30,
110    ICB_DelayedCopy = 0x20,
111    ICB_Default     = ICB_Copy
112} InkClipboardModes;
113
114typedef enum InkCollectionMode {
115    ICM_InkOnly,
116    ICM_GestureOnly,
117    ICM_InkAndGesture
118} InkCollectionMode;
119
120typedef enum InkMousePointer {
121    IMP_Default        = 0,
122    IMP_Arrow          = 1,
123    IMP_Crosshair      = 2,
124    IMP_Ibeam          = 3,
125    IMP_SizeNESW       = 4,
126    IMP_SizeNS         = 5,
127    IMP_SizeNWSE       = 6,
128    IMP_SizeWE         = 7,
129    IMP_UpArrow        = 8,
130    IMP_Hourglass      = 9,
131    IMP_NoDrop         = 10,
132    IMP_ArrowHourglass = 11,
133    IMP_ArrowQuestion  = 12,
134    IMP_SizeAll        = 13,
135    IMP_Hand           = 14,
136    IMP_Custom         = 99
137} InkMousePointer;
138
139typedef enum InkApplicationGesture {
140    IAG_AllGestures     = 0x0000,
141    IAG_NoGesture       = 0xf000,
142    IAG_Scratchout      = 0xf001,
143    IAG_Triangle        = 0xf002,
144    IAG_Square          = 0xf003,
145    IAG_Star            = 0xf004,
146    IAG_Check           = 0xf005,
147    IAG_Curlicue        = 0xf010,
148    IAG_DoubleCurlicue  = 0xf011,
149    IAG_Circle          = 0xf020,
150    IAG_DoubleCircle    = 0xf021,
151    IAG_SemiCircleLeft  = 0xf028,
152    IAG_SemiCircleRight = 0xf029,
153    IAG_ChevronUp       = 0xf030,
154    IAG_ChevronDown     = 0xf031,
155    IAG_ChevronLeft     = 0xf032,
156    IAG_ChevronRight    = 0xf033,
157    IAG_ArrowUp         = 0xf038,
158    IAG_ArrowDown       = 0xf039,
159    IAG_ArrowLeft       = 0xf03a,
160    IAG_ArrowRight      = 0xf03b,
161    IAG_Up              = 0xf058,
162    IAG_Down            = 0xf059,
163    IAG_Left            = 0xf05a,
164    IAG_Right           = 0xf05b,
165    IAG_UpDown          = 0xf060,
166    IAG_DownUp          = 0xf061,
167    IAG_LeftRight       = 0xf062,
168    IAG_RightLeft       = 0xf063,
169    IAG_UpLeftLong      = 0xf064,
170    IAG_UpRightLong     = 0xf065,
171    IAG_DownLeftLong    = 0xf066,
172    IAG_DownRightLong   = 0xf067,
173    IAG_UpLeft          = 0xf068,
174    IAG_UpRight         = 0xf069,
175    IAG_DownLeft        = 0xf06a,
176    IAG_DownRight       = 0xf06b,
177    IAG_LeftUp          = 0xf06c,
178    IAG_LeftDown        = 0xf06d,
179    IAG_RightUp         = 0xf06e,
180    IAG_RightDown       = 0xf06f,
181    IAG_Exclamation     = 0xf0a4,
182    IAG_Tap             = 0xf0f0,
183    IAG_DoubleTap       = 0xf0f1
184} InkApplicationGesture;
185
186typedef enum InkCollectorEventInterest {
187    ICEI_DefaultEvents    = -1,
188    ICEI_CursorDown       = (ICEI_DefaultEvents+1),
189    ICEI_Stroke           = (ICEI_CursorDown+1),
190    ICEI_NewPackets       = (ICEI_Stroke+1),
191    ICEI_NewInAirPackets  = (ICEI_NewPackets+1),
192    ICEI_CursorButtonDown = (ICEI_NewInAirPackets+1),
193    ICEI_CursorButtonUp   = (ICEI_CursorButtonDown+1),
194    ICEI_CursorInRange    = (ICEI_CursorButtonUp+1),
195    ICEI_CursorOutOfRange = (ICEI_CursorInRange+1),
196    ICEI_SystemGesture    = (ICEI_CursorOutOfRange+1),
197    ICEI_TabletAdded      = (ICEI_SystemGesture+1),
198    ICEI_TabletRemoved    = (ICEI_TabletAdded+1),
199    ICEI_MouseDown        = (ICEI_TabletRemoved+1),
200    ICEI_MouseMove        = (ICEI_MouseDown+1),
201    ICEI_MouseUp          = (ICEI_MouseMove+1),
202    ICEI_MouseWheel       = (ICEI_MouseUp+1),
203    ICEI_DblClick         = (ICEI_MouseWheel+1),
204    ICEI_AllEvents        = (ICEI_DblClick+1)
205} InkCollectorEventInterest;
206
207typedef enum DISPID_InkCollectorEvent {
208    DISPID_ICEStroke              = 1,
209    DISPID_ICECursorDown          = (DISPID_ICEStroke+1),
210    DISPID_ICENewPackets          = (DISPID_ICECursorDown+1),
211    DISPID_ICENewInAirPackets     = (DISPID_ICENewPackets+1),
212    DISPID_ICECursorButtonDown    = (DISPID_ICENewInAirPackets+1),
213    DISPID_ICECursorButtonUp      = (DISPID_ICECursorButtonDown+1),
214    DISPID_ICECursorInRange       = (DISPID_ICECursorButtonUp+1),
215    DISPID_ICECursorOutOfRange    = (DISPID_ICECursorInRange+1),
216    DISPID_ICESystemGesture       = (DISPID_ICECursorOutOfRange+1),
217    DISPID_ICEGesture             = (DISPID_ICESystemGesture+1),
218    DISPID_ICETabletAdded         = (DISPID_ICEGesture+1),
219    DISPID_ICETabletRemoved       = (DISPID_ICETabletAdded+1),
220    DISPID_IOEPainting            = (DISPID_ICETabletRemoved+1),
221    DISPID_IOEPainted             = (DISPID_IOEPainting+1),
222    DISPID_IOESelectionChanging   = (DISPID_IOEPainted+1),
223    DISPID_IOESelectionChanged    = (DISPID_IOESelectionChanging+1),
224    DISPID_IOESelectionMoving     = (DISPID_IOESelectionChanged+1),
225    DISPID_IOESelectionMoved      = (DISPID_IOESelectionMoving+1),
226    DISPID_IOESelectionResizing   = (DISPID_IOESelectionMoved+1),
227    DISPID_IOESelectionResized    = (DISPID_IOESelectionResizing+1),
228    DISPID_IOEStrokesDeleting     = (DISPID_IOESelectionResized+1),
229    DISPID_IOEStrokesDeleted      = (DISPID_IOEStrokesDeleting+1),
230    DISPID_IPEChangeUICues        = (DISPID_IOEStrokesDeleted+1),
231    DISPID_IPEClick               = (DISPID_IPEChangeUICues+1),
232    DISPID_IPEDblClick            = (DISPID_IPEClick+1),
233    DISPID_IPEInvalidated         = (DISPID_IPEDblClick+1),
234    DISPID_IPEMouseDown           = (DISPID_IPEInvalidated+1),
235    DISPID_IPEMouseEnter          = (DISPID_IPEMouseDown+1),
236    DISPID_IPEMouseHover          = (DISPID_IPEMouseEnter+1),
237    DISPID_IPEMouseLeave          = (DISPID_IPEMouseHover+1),
238    DISPID_IPEMouseMove           = (DISPID_IPEMouseLeave+1),
239    DISPID_IPEMouseUp             = (DISPID_IPEMouseMove+1),
240    DISPID_IPEMouseWheel          = (DISPID_IPEMouseUp+1),
241    DISPID_IPESizeModeChanged     = (DISPID_IPEMouseWheel+1),
242    DISPID_IPEStyleChanged        = (DISPID_IPESizeModeChanged+1),
243    DISPID_IPESystemColorsChanged = (DISPID_IPEStyleChanged+1),
244    DISPID_IPEKeyDown             = (DISPID_IPESystemColorsChanged+1),
245    DISPID_IPEKeyPress            = (DISPID_IPEKeyDown+1),
246    DISPID_IPEKeyUp               = (DISPID_IPEKeyPress+1),
247    DISPID_IPEResize              = (DISPID_IPEKeyUp+1),
248    DISPID_IPESizeChanged         = (DISPID_IPEResize+1)
249} DISPID_InkCollectorEvent;
250
251
252interface IInkDisp;
253interface IInkStrokes;
254interface IInkRecognitionAlternate;
255
256[
257    object,
258    uuid(db489209-b7c3-411d-90f6-1548cfff271e),
259    dual
260]
261interface IInkExtendedProperty : IDispatch
262{
263    [propget] HRESULT Guid([out, retval] BSTR *Guid);
264    [propget] HRESULT Data([out, retval] VARIANT *Data);
265    [propput] HRESULT Data([in] VARIANT Data);
266}
267
268[
269    object,
270    uuid(89f2a8be-95a9-4530-8b8f-88e971e3e25f),
271    dual
272]
273interface IInkExtendedProperties : IDispatch
274{
275    [propget] HRESULT Count([out, retval] long *Count);
276    [propget] HRESULT _NewEnum([out, retval] IUnknown **_NewEnum);
277    HRESULT Item([in] VARIANT Identifier, [out, retval] IInkExtendedProperty **Item);
278    HRESULT Add([in] BSTR Guid, [in] VARIANT Data, [out, retval] IInkExtendedProperty **InkExtendedProperty);
279    HRESULT Remove([in] VARIANT Identifier);
280    HRESULT Clear();
281    HRESULT DoesPropertyExist([in] BSTR Guid, [out, retval] VARIANT_BOOL *DoesPropertyExist);
282}
283
284[
285    object,
286    uuid(bf519b75-0a15-4623-adc9-c00d436a8092),
287    dual
288]
289interface IInkDrawingAttributes : IDispatch
290{
291    [propget] HRESULT Color([out] long *CurrentColor);
292    [propput] HRESULT Color([in] long NewColor);
293    [propget] HRESULT Width([out, retval] float *CurrentWidth);
294    [propput] HRESULT Width([in] float NewWidth);
295    [propget] HRESULT Height([out, retval] float *CurrentHeight);
296    [propput] HRESULT Height([in] float NewHeight);
297    [propget] HRESULT FitToCurve([out, retval] VARIANT_BOOL *Flag);
298    [propput] HRESULT FitToCurve([in] VARIANT_BOOL Flag);
299    [propget] HRESULT IgnorePressure([out, retval] VARIANT_BOOL *Flag);
300    [propput] HRESULT IgnorePressure([in] VARIANT_BOOL Flag);
301    [propget] HRESULT AntiAliased([out, retval] VARIANT_BOOL *Flag);
302    [propput] HRESULT AntiAliased([in] VARIANT_BOOL Flag);
303    [propget] HRESULT Transparency([out, retval] long *CurrentTransparency);
304    [propput] HRESULT Transparency([in] long NewTransparency);
305    [propget] HRESULT RasterOperation([out, retval] InkRasterOperation *CurrentRasterOperation);
306    [propput] HRESULT RasterOperation([in] InkRasterOperation NewRasterOperation);
307    [propget] HRESULT PenTip([out, retval] InkPenTip *CurrentPenTip);
308    [propput] HRESULT PenTip([in] InkPenTip NewPenTip);
309    [propget] HRESULT ExtendedProperties([out, retval] IInkExtendedProperties **Properties);
310    HRESULT Clone([out, retval] IInkDrawingAttributes **DrawingAttributes);
311}
312
313[
314    object,
315    uuid(9794ff82-6071-4717-8a8b-6ac7c64a686e),
316    dual
317]
318interface IInkRectangle : IDispatch
319{
320    [propget] HRESULT Top([out, retval] long *Units);
321    [propput] HRESULT Top([in] long Units);
322    [propget] HRESULT Left([out, retval] long *Units);
323    [propput] HRESULT Left([in] long Units);
324    [propget] HRESULT Bottom([out, retval] long *Units);
325    [propput] HRESULT Bottom([in] long Units);
326    [propget] HRESULT Right([out, retval] long *Units);
327    [propput] HRESULT Right([in] long Units);
328    [propget] HRESULT Data([out, retval] RECT *Rect);
329    [propput] HRESULT Data([in] RECT Rect);
330    HRESULT GetRectangle([out] long *Top, [out] long *Left, [out] long *Bottom, [out] long *Right);
331    HRESULT SetRectangle([in] long Top, [in] long Left, [in] long Bottom, [in] long Right);
332}
333
334[
335    object,
336    uuid(2de25eaa-6ef8-42d5-aee9-185bc81b912d),
337    dual
338]
339interface IInkTablet : IDispatch
340{
341    [propget] HRESULT Name([out, retval] BSTR *Name);
342    [propget] HRESULT PlugAndPlayId([out, retval] BSTR *Id);
343    [propget] HRESULT MaximumInputRectangle([out, retval] IInkRectangle **Rectangle);
344    [propget] HRESULT HardwareCapabilities([out, retval] TabletHardwareCapabilities *Capabilities);
345    HRESULT IsPacketPropertySupported([in] BSTR packetPropertyName, [out, retval] VARIANT_BOOL *Supported);
346    HRESULT GetPropertyMetrics([in] BSTR propertyName, [out] long *Minimum, [out] long *Maximum,
347            [out] TabletPropertyMetricUnit *Units, [out] float *Resolution);
348}
349
350[
351    object,
352    uuid(85ef9417-1d59-49b2-a13c-702c85430894),
353    dual
354]
355interface IInkCursorButton : IDispatch
356{
357    [propget] HRESULT Name([out, retval] BSTR *Name);
358    [propget] HRESULT Id([out, retval] BSTR *Id);
359    [propget] HRESULT State([out, retval] InkCursorButtonState *CurrentState);
360}
361
362[
363    object,
364    uuid(3671cC40-b624-4671-9fa0-db119d952d54),
365    dual
366]
367interface IInkCursorButtons : IDispatch
368{
369    [propget] HRESULT Count([out, retval] long *Count);
370    [propget] HRESULT _NewEnum([out, retval] IUnknown **_NewEnum);
371    HRESULT Item([in] VARIANT Identifier, [out, retval] IInkCursorButton **Button);
372}
373
374[
375    object,
376    uuid(ad30c630-40c5-4350-8405-9c71012fc558),
377    dual
378]
379interface IInkCursor : IDispatch
380{
381    [propget] HRESULT Name([out, retval] BSTR *Name);
382    [propget] HRESULT Id([out, retval] long *Id);
383    [propget] HRESULT Inverted([out, retval] VARIANT_BOOL *Status);
384    [propget] HRESULT DrawingAttributes([out, retval] IInkDrawingAttributes **Attributes);
385    [propputref] HRESULT DrawingAttributes([in] IInkDrawingAttributes *Attributes);
386    [propget] HRESULT Tablet([out, retval] IInkTablet **Tablet);
387    [propget] HRESULT Buttons([out, retval] IInkCursorButtons **Buttons);
388}
389
390[
391    object,
392    uuid(615f1d43-8703-4565-88e2-8201d2ecd7b7),
393    dual
394]
395interface IInkTransform : IDispatch
396{
397    HRESULT Reset();
398    HRESULT Translate([in] float HorizontalComponent, [in] float VerticalComponent);
399    HRESULT Rotate([in] float Degrees, [in, defaultvalue(0)] float x, [in, defaultvalue(0)] float y);
400    HRESULT Reflect([in] VARIANT_BOOL Horizontally, [in] VARIANT_BOOL Vertically);
401    HRESULT Shear([in] float HorizontalComponent, [in] float VerticalComponent);
402    HRESULT ScaleTransform([in] float HorizontalMultiplier, [in] float VerticalMultiplier);
403    HRESULT GetTransform([out] float *eM11, [out] float *eM12, [out] float *eM21, [out] float *eM22,
404            [out] float *eDx, [out] float *eDy);
405    HRESULT SetTransform([in] float eM11, [in] float eM12, [in] float eM21, [in] float eM22, [in] float eDx, [in] float eDy);
406    [propget, hidden] HRESULT eM11([out, retval] float *Value);
407    [propput, hidden] HRESULT eM11([in] float Value);
408    [propget, hidden] HRESULT eM12([out, retval] float *Value);
409    [propput, hidden] HRESULT eM12([in] float Value);
410    [propget, hidden] HRESULT eM21([out, retval] float *Value);
411    [propput, hidden] HRESULT eM21([in] float Value);
412    [propget, hidden] HRESULT eM22([out, retval] float *Value);
413    [propput, hidden] HRESULT eM22([in] float Value);
414    [propget, hidden] HRESULT eDx([out, retval] float *Value);
415    [propput, hidden] HRESULT eDx([in] float Value);
416    [propget, hidden] HRESULT eDy([out, retval] float *Value);
417    [propput, hidden] HRESULT eDy([in] float Value);
418    [propget, hidden] HRESULT Data([out, retval] XFORM *XForm);
419    [propput, hidden] HRESULT Data([in] XFORM XForm);
420}
421
422[
423    object,
424    uuid(286a167f-9f19-4c61-9d53-4f07be622b84),
425    dual
426]
427interface IInkRecognitionAlternates : IDispatch
428{
429    [propget] HRESULT Count([out, retval] long *Count);
430    [propget, restricted] HRESULT _NewEnum([out, retval] IUnknown **_NewEnum);
431    [propget] HRESULT Strokes([out, retval] IInkStrokes **Strokes);
432    HRESULT Item([in] long Index, [out, retval] IInkRecognitionAlternate **InkRecoAlternate);
433}
434
435[
436    object,
437    uuid(b7e660ad-77e4-429b-adda-873780d1fc4a),
438    dual
439]
440interface IInkRecognitionAlternate : IDispatch
441{
442    [propget] HRESULT String([out, retval] BSTR *RecoString);
443    [propget] HRESULT Confidence([out, retval] InkRecognitionConfidence *Confidence) ;
444    [propget] HRESULT Baseline([out, retval] VARIANT *Baseline);
445    [propget] HRESULT Midline([out, retval] VARIANT *Midline);
446    [propget] HRESULT Ascender([out, retval] VARIANT *Ascender);
447    [propget] HRESULT Descender([out, retval] VARIANT *Descender);
448    [propget] HRESULT LineNumber([out, retval] long *LineNumber);
449    [propget] HRESULT Strokes([out, retval] IInkStrokes **Strokes);
450    [propget] HRESULT LineAlternates([out, retval] IInkRecognitionAlternates **LineAlternates);
451    [propget] HRESULT ConfidenceAlternates([out, retval] IInkRecognitionAlternates **ConfidenceAlternates);
452    HRESULT GetStrokesFromStrokeRanges([in] IInkStrokes *Strokes, [out, retval] IInkStrokes **GetStrokesFromStrokeRanges);
453    HRESULT GetStrokesFromTextRange([in, out] long *selectionStart, [in, out] long *selectionLength,
454            [out, retval] IInkStrokes **GetStrokesFromTextRange);
455    HRESULT GetTextRangeFromStrokes([in] IInkStrokes *Strokes, [in, out] long *selectionStart, [in, out] long *selectionLength);
456    HRESULT AlternatesWithConstantPropertyValues([in] BSTR PropertyType,
457            [out, retval] IInkRecognitionAlternates **AlternatesWithConstantPropertyValues);
458    HRESULT GetPropertyValue([in] BSTR PropertyType, [out, retval] VARIANT *PropertyValue);
459}
460
461[
462    object,
463    uuid(3bc129a8-86cd-45ad-bde8-e0d32d61c16d),
464    dual
465]
466interface IInkRecognitionResult : IDispatch
467{
468    [propget] HRESULT TopString([out, retval] BSTR *TopString);
469    [propget] HRESULT TopAlternate([out, retval] IInkRecognitionAlternate **TopAlternate);
470    [propget] HRESULT TopConfidence([out, retval] InkRecognitionConfidence *TopConfidence);
471    [propget] HRESULT Strokes([out, retval] IInkStrokes **Strokes);
472    HRESULT AlternatesFromSelection([in] long selectionStart, [in] long selectionLength, [in] long maximumAlternates,
473            [out, retval] IInkRecognitionAlternates **AlternatesFromSelection);
474    HRESULT ModifyTopAlternate([in] IInkRecognitionAlternate *Alternate);
475    HRESULT SetResultOnStrokes();
476}
477
478[
479    object,
480    uuid(43242fea-91d1-4a72-963e-fbb91829cfa2),
481    dual
482]
483interface IInkStrokeDisp : IDispatch
484{
485    [propget] HRESULT ID([out, retval] long *ID);
486    [propget] HRESULT BezierPoints([out, retval] VARIANT *Points);
487    [propget] HRESULT DrawingAttributes([out, retval] IInkDrawingAttributes **DrawAttrs);
488    [propputref] HRESULT DrawingAttributes([in] IInkDrawingAttributes *DrawAttrs);
489    [propget] HRESULT Ink([out, retval] IInkDisp **Ink);
490    [propget] HRESULT ExtendedProperties([out, retval] IInkExtendedProperties **Properties);
491    [propget] HRESULT PolylineCusps([out, retval] VARIANT *Cusps);
492    [propget] HRESULT BezierCusps([out, retval] VARIANT *Cusps);
493    [propget] HRESULT SelfIntersections([out, retval] VARIANT *Intersections);
494    [propget] HRESULT PacketCount([out, retval] long *plCount);
495    [propget] HRESULT PacketSize([out, retval] long *plSize);
496    [propget] HRESULT PacketDescription([out, retval] VARIANT *PacketDescription);
497    [propget] HRESULT Deleted([out, retval] VARIANT_BOOL *Deleted);
498    HRESULT GetBoundingBox([in] InkBoundingBoxMode BoundingBoxMode, [out, retval] IInkRectangle **Rectangle);
499    HRESULT FindIntersections([in] IInkStrokes *Strokes, [out, retval] VARIANT *Intersections);
500    HRESULT GetRectangleIntersections([in] IInkRectangle *Rectangle, [out, retval] VARIANT *Intersections);
501    HRESULT Clip([in] IInkRectangle *Rectangle);
502    HRESULT HitTestCircle([in] long X, [in] long Y, [in] float Radius, [out, retval] VARIANT_BOOL *Intersects);
503    HRESULT NearestPoint([in] long X, [in] long Y, [in, out] float *Distance, [out, retval] float *Point);
504    HRESULT Split([in] float SplitAt, [out, retval] IInkStrokeDisp **NewStroke);
505    HRESULT GetPacketDescriptionPropertyMetrics([in] BSTR PropertyName, [out] long *Minimum, [out] long *Maximum,
506            [out] TabletPropertyMetricUnit *Units, [out] float *Resolution);
507    HRESULT GetPoints([in] long Index, [in] long Count, [out, retval] VARIANT *Points);
508    HRESULT SetPoints([in] VARIANT Points, [in] long Index, [in] long Count, [out, retval] long *NumberOfPointsSet);
509    HRESULT GetPacketData([in] long Index, [in] long Count, [out, retval] VARIANT *PacketData);
510    HRESULT GetPacketValuesByProperty([in] BSTR PropertyName, [in] long Index, [in] long Count,
511            [out, retval] VARIANT *PacketValues) ;
512    HRESULT SetPacketValuesByProperty([in] BSTR bstrPropertyName, [in] VARIANT PacketValues, [in] long Index,
513            [in] long Count, [out, retval] long *NumberOfPacketsSet);
514    HRESULT GetFlattenedBezierPoints([in] long FittingError, [out, retval] VARIANT *FlattenedBezierPoints);
515    HRESULT Transform([in] IInkTransform *Transform, [in, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth);
516    HRESULT ScaleToRectangle([in] IInkRectangle *Rectangle);
517    HRESULT Move([in] float HorizontalComponent, [in] float VerticalComponent);
518    HRESULT Rotate([in] float Degrees, [in, defaultvalue(0)] float x, [in, defaultvalue(0)] float y);
519    HRESULT Shear([in] float HorizontalMultiplier, [in] float VerticalMultiplier);
520    HRESULT ScaleTransform([in] float HorizontalMultiplier, [in] float VerticalMultiplier);
521}
522
523[
524    object,
525    uuid(7e23a88f-c30e-420f-9bdb-28902543f0c1),
526    dual
527]
528interface IInkCustomStrokes : IDispatch
529{
530    [propget] HRESULT Count([out, retval] long *Count);
531    [propget, restricted] HRESULT _NewEnum([out, retval] IUnknown **_NewEnum);
532    HRESULT Item([in] VARIANT Identifier, [out, retval] IInkStrokes **Strokes);
533    HRESULT Add([in] BSTR Name, [in] IInkStrokes *Strokes);
534    HRESULT Remove([in] VARIANT Identifier);
535    HRESULT Clear();
536}
537
538[
539    object,
540    uuid(9d398fa0-c4e2-4fcd-9973-975caaf47ea6),
541    dual
542]
543interface IInkDisp : IDispatch
544{
545    [propget] HRESULT Strokes([out, retval] IInkStrokes **Strokes);
546    [propget] HRESULT ExtendedProperties([out, retval] IInkExtendedProperties **Properties);
547    [propget] HRESULT Dirty([out, retval] VARIANT_BOOL *Dirty);
548    [propput] HRESULT Dirty([in] VARIANT_BOOL Dirty);
549    [propget] HRESULT CustomStrokes([out, retval] IInkCustomStrokes **ppunkInkCustomStrokes);
550    HRESULT GetBoundingBox([in] InkBoundingBoxMode BoundingBoxMode, [out, retval] IInkRectangle **Rectangle);
551    HRESULT DeleteStrokes([in, unique, defaultvalue(0)] IInkStrokes *Strokes);
552    HRESULT DeleteStroke([in] IInkStrokeDisp *Stroke);
553    HRESULT ExtractStrokes([in] IInkStrokes *Strokes, InkExtractFlags ExtractFlags, [out, retval] IInkDisp **ExtractedInk);
554    HRESULT ExtractWithRectangle([in] IInkRectangle *Rectangle, [in] InkExtractFlags extractFlags,
555            [out, retval] IInkDisp **ExtractedInk);
556    HRESULT Clip([in] IInkRectangle *Rectangle);
557    HRESULT Clone([out, retval] IInkDisp **NewInk);
558    HRESULT HitTestCircle([in] long X, [in] long Y, [in] float radius, [out, retval] IInkStrokes **Strokes);
559    HRESULT HitTestWithRectangle([in] IInkRectangle *SelectionRectangle, [in] float IntersectPercent,
560            [out, retval] IInkStrokes **Strokes);
561    HRESULT HitTestWithLasso([in] VARIANT Points, [in] float IntersectPercent, [in, out, unique] VARIANT *LassoPoints,
562            [out, retval] IInkStrokes **Strokes);
563    HRESULT NearestPoint([in] long X, [in] long Y, [in, out] float *PointOnStroke, [in, out] float *DistanceFromPacket,
564            [out, retval] IInkStrokeDisp **Stroke);
565    HRESULT CreateStrokes([in] VARIANT StrokeIds, [out, retval] IInkStrokes **Strokes);
566    HRESULT AddStrokesAtRectangle([in] IInkStrokes *SourceStrokes, [in] IInkRectangle *TargetRectangle);
567    HRESULT Save([in] InkPersistenceFormat PersistenceFormat, [in] InkPersistenceCompressionMode CompressionMode,
568            [out, retval] VARIANT *Data);
569    HRESULT Load([in] VARIANT Data);
570    HRESULT CreateStroke([in] VARIANT PacketData, [in] VARIANT PacketDescription, [out, retval] IInkStrokeDisp **Stroke);
571    HRESULT ClipboardCopyWithRectangle([in] IInkRectangle *Rectangle, [in] InkClipboardFormats ClipboardFormats,
572            [in] InkClipboardModes ClipboardModes, [out, retval] IDataObject **DataObject);
573    HRESULT ClipboardCopy([in] IInkStrokes *strokes, [in] InkClipboardFormats ClipboardFormats,
574            [in] InkClipboardModes ClipboardModes, [out, retval] IDataObject **DataObject);
575    HRESULT CanPaste([in] IDataObject *DataObject, [out, retval] VARIANT_BOOL *CanPaste);
576    HRESULT ClipboardPaste([in] long x, [in] long y, [in, unique] IDataObject *DataObject, [out, retval] IInkStrokes **Strokes);
577}
578
579[
580    object,
581    uuid(f1f4c9d8-590a-4963-b3ae-1935671bb6f3),
582    dual
583]
584interface IInkStrokes : IDispatch
585{
586    [propget] HRESULT Count([out, retval] long *Count);
587    [propget] HRESULT _NewEnum([out, retval] IUnknown **_NewEnum);
588    [propget] HRESULT Ink([out, retval] IInkDisp **Ink);
589    [propget] HRESULT RecognitionResult([out, retval] IInkRecognitionResult **RecognitionResult);
590    HRESULT ToString([out, retval] BSTR *ToString);
591    HRESULT Item([in] long Index, [out, retval] IInkStrokeDisp **Stroke);
592    HRESULT Add([in] IInkStrokeDisp *InkStroke);
593    HRESULT AddStrokes([in] IInkStrokes *InkStrokes);
594    HRESULT Remove([in] IInkStrokeDisp *InkStroke);
595    HRESULT RemoveStrokes([in] IInkStrokes *InkStrokes);
596    HRESULT ModifyDrawingAttributes([in] IInkDrawingAttributes *DrawAttrs);
597    HRESULT GetBoundingBox([in] InkBoundingBoxMode BoundingBoxMode, [out, retval] IInkRectangle **BoundingBox);
598    HRESULT Transform([in] IInkTransform *Transform, [in, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth);
599    HRESULT ScaleToRectangle([in] IInkRectangle *Rectangle);
600    HRESULT Move([in] float HorizontalComponent, [in] float VerticalComponent);
601    HRESULT Rotate([in] float Degrees, [in, defaultvalue(0)] float x, [in, defaultvalue(0)] float y);
602    HRESULT Shear([in] float HorizontalMultiplier, [in] float VerticalMultiplier);
603    HRESULT ScaleTransform([in] float HorizontalMultiplier, [in] float VerticalMultiplier);
604    HRESULT Clip([in] IInkRectangle *Rectangle);
605    HRESULT RemoveRecognitionResult();
606}
607
608[
609    object,
610    uuid(e6257a9c-b511-4f4c-a8b0-a7dbc9506b83),
611    dual
612]
613interface IInkRenderer : IDispatch
614{
615    HRESULT GetViewTransform([in] IInkTransform *ViewTransform) ;
616    HRESULT SetViewTransform([in] IInkTransform *ViewTransform);
617    HRESULT GetObjectTransform([in] IInkTransform *ObjectTransform);
618    HRESULT SetObjectTransform([in] IInkTransform *ObjectTransform);
619    HRESULT Draw([in] LONG_PTR hDC, [in] IInkStrokes *Strokes);
620    HRESULT DrawStroke([in] LONG_PTR hDC, [in] IInkStrokeDisp *Stroke,
621            [in, defaultvalue(0)] IInkDrawingAttributes *DrawingAttributes);
622    HRESULT PixelToInkSpace([in] LONG_PTR hDC, [in, out] long *x, [in, out] long *y);
623    HRESULT InkSpaceToPixel([in] LONG_PTR hdcDisplay, [in, out] long *x, [in, out] long *y);
624    HRESULT PixelToInkSpaceFromPoints([in] LONG_PTR hDC, [in, out] VARIANT *Points);
625    HRESULT InkSpaceToPixelFromPoints([in] LONG_PTR hDC, [in, out] VARIANT *Points);
626    HRESULT Measure([in] IInkStrokes *Strokes, [out, retval] IInkRectangle **Rectangle);
627    HRESULT MeasureStroke([in] IInkStrokeDisp *Stroke, [in] IInkDrawingAttributes *DrawingAttributes,
628            [out, retval] IInkRectangle **Rectangle);
629    HRESULT Move([in] float HorizontalComponent, [in] float VerticalComponent);
630    HRESULT Rotate([in] float Degrees, [in, defaultvalue(0)] float x, [in, defaultvalue(0)] float y);
631    HRESULT ScaleTransform([in] float HorizontalMultiplier, [in] float VerticalMultiplier,
632            [in, defaultvalue(-1)] VARIANT_BOOL ApplyOnPenWidth);
633}
634
635[
636    object,
637    uuid(a248c1ac-c698-4e06-9e5c-d57f77c7e647),
638    dual
639]
640interface IInkCursors : IDispatch
641{
642    [propget] HRESULT Count([out, retval] long *Count);
643    [propget, restricted] HRESULT _NewEnum([out, retval] IUnknown **_NewEnum);
644    HRESULT Item([in] long Index, [out, retval] IInkCursor **Cursor);
645}
646
647[
648    object,
649    uuid(f0f060b5-8b1f-4a7c-89ec-880692588a4f),
650    dual
651]
652interface IInkCollector : IDispatch
653{
654    [propget] HRESULT hWnd([out, retval] LONG_PTR *CurrentWindow);
655    [propput] HRESULT hWnd([in] LONG_PTR NewWindow);
656    [propget] HRESULT Enabled([out, retval] VARIANT_BOOL *Collecting);
657    [propput] HRESULT Enabled([in] VARIANT_BOOL Collecting);
658    [propget] HRESULT DefaultDrawingAttributes([out, retval] IInkDrawingAttributes **CurrentAttributes);
659    [propputref] HRESULT DefaultDrawingAttributes([in] IInkDrawingAttributes *NewAttributes);
660    [propget] HRESULT Renderer([out, retval] IInkRenderer **CurrentInkRenderer);
661    [propputref] HRESULT Renderer([in] IInkRenderer *NewInkRenderer);
662    [propget] HRESULT Ink([out, retval] IInkDisp **Ink);
663    [propputref] HRESULT Ink([in] IInkDisp *NewInk);
664    [propget] HRESULT AutoRedraw([out, retval] VARIANT_BOOL *AutoRedraw);
665    [propput] HRESULT AutoRedraw([in] VARIANT_BOOL AutoRedraw);
666    [propget] HRESULT CollectingInk([out, retval] VARIANT_BOOL *Collecting);
667    [propget] HRESULT CollectionMode([out, retval] InkCollectionMode *Mode);
668    [propput] HRESULT CollectionMode([in] InkCollectionMode Mode);
669    [propget] HRESULT DynamicRendering([out, retval] VARIANT_BOOL *Enabled);
670    [propput] HRESULT DynamicRendering([in] VARIANT_BOOL Enabled);
671    [propget] HRESULT DesiredPacketDescription([out, retval] VARIANT *PacketGuids);
672    [propput] HRESULT DesiredPacketDescription([in] VARIANT PacketGuids);
673    [propget] HRESULT MouseIcon([out, retval] IPictureDisp **MouseIcon);
674    [propput] HRESULT MouseIcon([in, unique] IPictureDisp *MouseIcon);
675    [propputref] HRESULT MouseIcon([in, unique] IPictureDisp *MouseIcon);
676    [propget] HRESULT MousePointer([out, retval] InkMousePointer *MousePointer);
677    [propput] HRESULT MousePointer([in] InkMousePointer MousePointer);
678    [propget] HRESULT Cursors([out, retval] IInkCursors **Cursors);
679    [propget] HRESULT MarginX([out, retval] long *MarginX);
680    [propput] HRESULT MarginX([in] long MarginX);
681    [propget] HRESULT MarginY([out, retval] long *MarginY);
682    [propput] HRESULT MarginY([in] long MarginY);
683    [propget] HRESULT Tablet([out, retval] IInkTablet **SingleTablet);
684    [propget] HRESULT SupportHighContrastInk([out, retval] VARIANT_BOOL *Support);
685    [propput] HRESULT SupportHighContrastInk([in] VARIANT_BOOL Support);
686    HRESULT SetGestureStatus([in] InkApplicationGesture Gesture, [in] VARIANT_BOOL Listen);
687    HRESULT GetGestureStatus([in] InkApplicationGesture Gesture, [out, retval] VARIANT_BOOL *Listening);
688    HRESULT GetWindowInputRectangle([in, out] IInkRectangle **WindowInputRectangle);
689    HRESULT SetWindowInputRectangle([in] IInkRectangle *WindowInputRectangle);
690    HRESULT SetAllTabletsMode([in, defaultvalue(-1)] VARIANT_BOOL UseMouseForInput);
691    HRESULT SetSingleTabletIntegratedMode([in] IInkTablet *Tablet);
692    HRESULT GetEventInterest([in] InkCollectorEventInterest EventId, [out, retval] VARIANT_BOOL *Listen);
693    HRESULT SetEventInterest([in] InkCollectorEventInterest EventId, [in] VARIANT_BOOL Listen);
694}
695
696[
697    uuid(11a583f2-712d-4fea-abcf-ab4af38ea06b)
698]
699dispinterface _IInkCollectorEvents
700{
701    properties:
702    methods:
703    /* FIXME */
704}
705
706[
707    uuid(43fb1553-ad74-4ee8-88e4-3e6daac915db)
708]
709coclass InkCollector
710{
711}
712