xref: /reactos/sdk/include/psdk/msinkaut.idl (revision c2c66aff)
1/* Copyright (C) 2007 C John Klehm
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
16 */
17
18import "oaidl.idl";
19import "ocidl.idl";
20
21[
22    uuid(7D868ACD-1A5D-4A47-A247-F39741353012),
23    version(1.0)
24]
25library MSINKAUTLib
26{
27    importlib("stdole2.tlb");
28
29    typedef float single;
30
31    typedef enum InkBoundingBoxMode {
32        IBBM_Default = 0,
33        IBBM_NoCurveFit = 1,
34        IBBM_CurveFit = 2,
35        IBBM_PointsOnly = 3,
36        IBBM_Union = 4
37    } InkBoundingBoxMode;
38
39    typedef enum InkExtractFlags {
40        IEF_CopyFromOriginal = 0x0,
41        IEF_RemoveFromOriginal = 0x1,
42        IEF_Default = IEF_RemoveFromOriginal
43    } InkExtractFlags;
44
45    typedef enum InkPersistenceFormat {
46        IPF_InkSerializeFormat = 0,
47        IPF_Base64InkSerializedFormat = 1,
48        IPF_GIF = 2,
49        IPF_Base64GIF = 3
50    } InkPersistenceFormat;
51
52    typedef enum InkPersistenceCompressionMode
53    {
54        IPCM_Default = 0,
55        IPCM_MaximumCompression = 1,
56        IPCM_NoCompression = 2
57    } InkPersistenceCompressionMode;
58
59    typedef enum InkPenTip {
60        IPT_Ball = 0,
61        IPT_Rectangle = 1
62    } InkPenTip;
63
64    typedef enum InkRasterOperation {
65        IRO_Black = 1,
66        IRO_NotMergePen,
67        IRO_MaskNotPen,
68        IRO_NotCopyPen,
69        IRO_MaskPenNot,
70        IRO_Not,
71        IRO_XOrPen,
72        IRO_NotMaskPen,
73        IRO_MaskPen,
74        IRO_NotXOrPen,
75        IRO_NoOperation,
76        IRO_MergeNotPen,
77        IRO_CopyPen,
78        IRO_MergePenNot,
79        IRO_MergePen,
80        IRO_White
81    } InkRasterOperation;
82
83    typedef enum InkClipboardModes {
84        ICB_Copy = 0,
85        ICB_Cut = 0x1,
86        ICB_DelayedCopy = 0x20,
87        ICB_ExtractOnly = 0x30,
88        ICB_Default = ICB_Copy
89    } InkClipboardModes;
90
91    typedef enum InkClipboardFormats {
92        ICF_None = 0,
93        ICF_InkSerializedFormat = 0x1,
94        ICF_SketchInk = 0x2,
95        ICF_TextInk = 0x6,
96        ICF_EnhancedMetafile = 0x8,
97        ICF_Metafile = 0x20,
98        ICF_Bitmap = 0x40,
99        ICF_PasteMask = 0x7,
100        ICF_CopyMask = 0x7f,
101        ICF_Default = ICF_CopyMask
102    } InkClipboardFormats;
103
104    typedef enum InkRecognitionConfidence
105    {
106        IRC_Strong = 0,
107        IRC_Intermediate = 1,
108        IRC_Poor = 2
109    } InkRecognitionConfidence;
110
111    [
112        odl,
113        uuid(DB489209-B7C3-411D-90F6-1548CFFF271E),
114        dual,
115        oleautomation
116    ]
117    interface IInkExtendedProperty : IDispatch {
118        [id(0x00000001), propget] HRESULT Guid([out, retval] BSTR* Guid);
119        [id(0x00000002), propget] HRESULT Data([out, retval] VARIANT* Data);
120        [id(0x00000002), propput] HRESULT Data([in] VARIANT Data);
121    };
122
123    [
124        odl,
125        uuid(89F2A8BE-95A9-4530-8B8F-88E971E3E25F),
126        dual,
127        oleautomation
128    ]
129    interface IInkExtendedProperties : IDispatch {
130        HRESULT Count([out, retval] long* Count);
131        HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
132        HRESULT Item(
133            [in] VARIANT Identifier,
134            [out, retval] IInkExtendedProperty** Item);
135        HRESULT Add(
136            [in] BSTR Guid,
137            [in] VARIANT Data,
138            [out, retval] IInkExtendedProperty** InkExtendedProperty);
139        HRESULT Remove([in] VARIANT Identifier);
140        HRESULT Clear();
141        HRESULT DoesPropertyExist(
142            [in] BSTR Guid,
143            [out, retval] VARIANT_BOOL* DoesPropertyExist);
144    };
145
146    [
147        odl,
148        uuid(BF519B75-0A15-4623-ADC9-C00D436A8092),
149        dual,
150        oleautomation
151    ]
152    interface IInkDrawingAttributes : IDispatch {
153        [id(0x00000002), propget] HRESULT Color(
154            [out, retval] long* CurrentColor);
155        [id(0x00000002), propput] HRESULT Color([in] long CurrentColor);
156        [id(0x00000003), propget] HRESULT Width(
157            [out, retval] single* CurrentWidth);
158        [id(0x00000003), propput] HRESULT Width([in] single CurrentWidth);
159        [id(0x00000001), propget] HRESULT Height(
160            [out, retval] single* CurrentHeight);
161        [id(0x00000001), propput] HRESULT Height([in] single CurrentHeight);
162        [id(0x00000004), propget] HRESULT FitToCurve(
163            [out, retval] VARIANT_BOOL* Flag);
164        [id(0x00000004), propput] HRESULT FitToCurve([in] VARIANT_BOOL Flag);
165        [id(0x00000005), propget] HRESULT IgnorePressure(
166            [out, retval] VARIANT_BOOL* Flag);
167        [id(0x00000005), propput] HRESULT IgnorePressure(
168            [in] VARIANT_BOOL Flag);
169        [id(0x00000006), propget] HRESULT AntiAliased(
170            [out, retval] VARIANT_BOOL* Flag);
171        [id(0x00000006), propput] HRESULT AntiAliased([in] VARIANT_BOOL Flag);
172        [id(0x00000007), propget] HRESULT Transparency(
173            [out, retval] long* CurrentTransparency);
174        [id(0x00000007), propput] HRESULT Transparency(
175            [in] long CurrentTransparency);
176        [id(0x00000008), propget] HRESULT RasterOperation(
177            [out, retval] InkRasterOperation* CurrentRasterOperation);
178        [id(0x00000008), propput] HRESULT RasterOperation(
179            [in] InkRasterOperation CurrentRasterOperation);
180        [id(0x00000009), propget] HRESULT PenTip(
181            [out, retval] InkPenTip* CurrentPenTip);
182        [id(0x00000009), propput] HRESULT PenTip([in] InkPenTip CurrentPenTip);
183        [id(0x0000000b), propget] HRESULT ExtendedProperties(
184            [out, retval] IInkExtendedProperties** Properties);
185        [id(0x0000000a)]          HRESULT Clone(
186            [out, retval] IInkDrawingAttributes** DrawingAttributes);
187    };
188
189cpp_quote("#ifndef _WINGDI_")
190/* already defined in wingdi.h but needed for WIDL */
191    typedef struct tagXFORM {
192        single eM11;
193        single eM12;
194        single eM21;
195        single eM22;
196        single eDx;
197        single eDy;
198    } XFORM;
199cpp_quote("#endif /* _WINGDI_ */")
200
201    [
202        odl,
203        uuid(615F1D43-8703-4565-88E2-8201D2ECD7B7),
204        dual,
205        oleautomation
206    ]
207    interface IInkTransform : IDispatch {
208        [id(0x00000001)] HRESULT Reset();
209        [id(0x00000002)] HRESULT Translate(
210            [in] single HorizontalComponent,
211            [in] single VerticalComponent);
212        [id(0x00000003)] HRESULT Rotate(
213            [in] single Degrees,
214            [in, defaultvalue(0)] single x,
215            [in, defaultvalue(0)] single y);
216        [id(0x00000004)] HRESULT Reflect(
217            [in] VARIANT_BOOL Horizontally,
218            [in] VARIANT_BOOL Vertically);
219        [id(0x00000005)] HRESULT Shear(
220            [in] single HorizontalComponent,
221            [in] single VerticalComponent);
222        [id(0x00000006)] HRESULT ScaleTransform(
223            [in] single HorizontalMultiplier,
224            [in] single VerticalMultiplier);
225        [id(0x0000000d)] HRESULT GetTransform(
226            [out] single* eM11,
227            [out] single* eM12,
228            [out] single* eM21,
229            [out] single* eM22,
230            [out] single* eDx,
231            [out] single* eDy);
232        [id(0x0000000e)] HRESULT SetTransform(
233            [in] single eM11,
234            [in] single eM12,
235            [in] single eM21,
236            [in] single eM22,
237            [in] single eDx,
238            [in] single eDy);
239        [id(0x00000007), propget, hidden] HRESULT eM11(
240            [out, retval] single* Value);
241        [id(0x00000007), propput, hidden] HRESULT eM11([in] single Value);
242        [id(0x00000008), propget, hidden] HRESULT eM12(
243            [out, retval] single* Value);
244        [id(0x00000008), propput, hidden] HRESULT eM12([in] single Value);
245        [id(0x00000009), propget, hidden] HRESULT eM21(
246            [out, retval] single* Value);
247        [id(0x00000009), propput, hidden] HRESULT eM21([in] single Value);
248        [id(0x0000000a), propget, hidden] HRESULT eM22(
249            [out, retval] single* Value);
250        [id(0x0000000a), propput, hidden] HRESULT eM22([in] single Value);
251        [id(0x0000000b), propget, hidden] HRESULT eDx(
252            [out, retval] single* Value);
253        [id(0x0000000b), propput, hidden] HRESULT eDx([in] single Value);
254        [id(0x0000000c), propget, hidden] HRESULT eDy(
255            [out, retval] single* Value);
256        [id(0x0000000c), propput, hidden] HRESULT eDy([in] single Value);
257        [id(0x0000000f), propget, hidden] HRESULT Data(
258            [out, retval] XFORM* XFORM);
259        [id(0x0000000f), propput, hidden] HRESULT Data([in] XFORM XFORM);
260    };
261
262    interface IInkDisp;
263
264    [
265        odl,
266        uuid(9794FF82-6071-4717-8A8B-6AC7C64A686E),
267        dual,
268        oleautomation
269    ]
270    interface IInkRectangle
271    {
272        [id(1), propget] HRESULT Top([out, retval] long* Units);
273        [id(1), propput] HRESULT Top([in] long Units);
274        [id(2), propget] HRESULT Left([out, retval] long* Units);
275        [id(2), propput] HRESULT Left([in] long Units);
276        [id(3), propget] HRESULT Bottom([out, retval] long* Units);
277        [id(3), propput] HRESULT Bottom([in] long Units);
278        [id(4), propget] HRESULT Right([out, retval] long* Units);
279        [id(4), propput] HRESULT Right([in] long Units);
280        [id(7), propget] HRESULT Data([out, retval] RECT* Rect);
281        [id(7), propput] HRESULT Data([in] RECT Rect);
282        [id(5)] HRESULT GetRectangle(
283            [out] long* Top,
284            [out] long* Left,
285            [out] long* Bottom,
286            [out] long* Right);
287        [id(6)] HRESULT SetRectangle(
288            [in] long Top,
289            [in] long Left,
290            [in] long Bottom,
291            [in] long Right);
292    };
293
294    interface IInkStrokes;
295
296    typedef enum {
297        TPMU_Default,
298        TPMU_Inches,
299        TPMU_Centimeters,
300        TPMU_Degrees,
301        TPMU_Radians,
302        TPMU_Seconds,
303        TPMU_Pounds,
304        TPMU_Grams
305    } TabletPropertyMetricUnit;
306
307    [
308        odl,
309        uuid(43242FEA-91D1-4A72-963E-FBB91829CFA2),
310        dual,
311        oleautomation
312    ]
313    interface IInkStrokeDisp : IDispatch {
314        [id(0x00000002), propget]    HRESULT Id([out, retval] long* Id);
315        [id(0x0000000d), propget]    HRESULT BezierPoints(
316            [out, retval] VARIANT* Points);
317        [id(0x00000004), propget]    HRESULT DrawingAttributes(
318            [out, retval] IInkDrawingAttributes** DrawAttrs);
319        [id(0x00000004), propputref] HRESULT DrawingAttributes(
320            [in] IInkDrawingAttributes* DrawAttrs);
321        [id(0x0000000c), propget]    HRESULT Ink([out, retval] IInkDisp** Ink);
322        [id(0x0000000b), propget]    HRESULT ExtendedProperties(
323            [out, retval] IInkExtendedProperties** Properties);
324        [id(0x0000000e), propget]    HRESULT PolylineCusps(
325            [out, retval] VARIANT* Cusps);
326        [id(0x0000000f), propget]    HRESULT BezierCusps(
327            [out, retval] VARIANT* Cusps);
328        [id(0x00000010), propget]    HRESULT SelfIntersections(
329            [out, retval] VARIANT* Intersections);
330        [id(0x00000011), propget]    HRESULT PacketCount(
331            [out, retval] long* plCount);
332        [id(0x00000012), propget]    HRESULT PacketSize(
333            [out, retval] long* plSize);
334        [id(0x00000013), propget]    HRESULT PacketDescription(
335            [out, retval] VARIANT* PacketDescription);
336        [id(0x00000014), propget]    HRESULT Deleted(
337            [out, retval] VARIANT_BOOL* Deleted);
338        [id(0x00000003)]             HRESULT GetBoundingBox(
339            [in, defaultvalue(0)] InkBoundingBoxMode BoundingBoxMode,
340            [out, retval] IInkRectangle** Rectangle);
341        [id(0x00000005)]             HRESULT FindIntersections(
342            [in] IInkStrokes* Strokes,
343            [out, retval] VARIANT* Intersections);
344        [id(0x00000006)]             HRESULT GetRectangleIntersections(
345            [in] IInkRectangle* Rectangle,
346            [out, retval] VARIANT* Intersections);
347        [id(0x00000007)]             HRESULT Clip(
348            [in] IInkRectangle* Rectangle);
349        [id(0x00000008)]             HRESULT HitTestCircle(
350            [in] long x,
351            [in] long y,
352            [in] single radius,
353            [out, retval] VARIANT_BOOL* Intersects);
354        [id(0x00000009)]             HRESULT NearestPoint(
355            [in] long x,
356            [in] long y,
357            [in, out, defaultvalue(0)] single* Distance,
358            [out, retval] single* Point);
359        [id(0x0000000a)]             HRESULT Split(
360            [in] single SplitAt,
361            [out, retval] IInkStrokeDisp** NewStroke);
362        [id(0x00000015)]             HRESULT GetPacketDescriptionPropertyMetrics(
363            [in] BSTR propertyName,
364            [out] long* Minimum,
365            [out] long* Maximum,
366            [out] TabletPropertyMetricUnit* Units,
367            [out] single* Resolution);
368        [id(0x00000016)]             HRESULT GetPoints(
369            [in, defaultvalue(0)] long Index,
370            [in, defaultvalue(-1)] long Count,
371            [out, retval] VARIANT* Points);
372        [id(0x00000017)]             HRESULT SetPoints(
373            [in] VARIANT Points,
374            [in, defaultvalue(0)] long Index,
375            [in, defaultvalue(-1)] long Count,
376            [out, retval] long* NumberOfPointsSet);
377        [id(0x00000018)]             HRESULT GetPacketData(
378            [in, defaultvalue(0)] long Index,
379            [in, defaultvalue(-1)] long Count,
380            [out, retval] VARIANT* PacketData);
381        [id(0x00000019)]             HRESULT GetPacketValuesByProperty(
382            [in] BSTR propertyName,
383            [in, defaultvalue(0)] long Index,
384            [in, defaultvalue(-1)] long Count,
385            [out, retval] VARIANT* PacketValues);
386        [id(0x0000001a)]             HRESULT SetPacketValuesByProperty(
387            [in] BSTR bstrPropertyName,
388            [in] VARIANT PacketValues,
389            [in, defaultvalue(0)] long Index,
390            [in, defaultvalue(-1)] long Count,
391            [out, retval] long* NumberOfPacketsSet);
392        [id(0x0000001b)]             HRESULT GetFlattenedBezierPoints(
393            [in, defaultvalue(0)] long FittingError,
394            [out, retval] VARIANT* FlattenedBezierPoints);
395        [id(0x0000001d)]             HRESULT Transform(
396            [in] IInkTransform* Transform,
397            [in, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth);
398        [id(0x0000001c)]             HRESULT ScaleToRectangle(
399            [in] IInkRectangle* Rectangle);
400        [id(0x0000001e)]             HRESULT Move(
401            [in] single HorizontalComponent,
402            [in] single VerticalComponent);
403        [id(0x0000001f)]             HRESULT Rotate(
404            [in] single Degrees,
405            [in, defaultvalue(0)] single x,
406            [in, defaultvalue(0)] single y);
407        [id(0x00000020)]             HRESULT Shear(
408            [in] single HorizontalMultiplier,
409            [in] single VerticalMultiplier);
410        [id(0x00000021)]             HRESULT ScaleTransform(
411            [in] single HorizontalMultiplier,
412            [in] single VerticalMultiplier);
413    };
414
415    interface IInkRecognitionResult;
416
417    [
418        odl,
419        uuid(F1F4C9D8-590A-4963-B3AE-1935671BB6F3),
420        dual,
421        oleautomation
422    ]
423    interface IInkStrokes : IDispatch {
424        [propget]                   HRESULT Count(
425            [out, retval] long *Count);
426        [propget, restricted]       HRESULT _NewEnum(
427            [out, retval] IUnknown **_NewEnum);
428        [propget]                   HRESULT Ink(
429            [out, retval] IInkDisp **Ink);
430        [propget]                   HRESULT RecognitionResult(
431            [out, retval] IInkRecognitionResult **RecognitionResult);
432        HRESULT ToString(
433            [out, retval] BSTR *ToString);
434        HRESULT Item(
435            [in] long Index,
436            [out, retval] IInkStrokeDisp **Stroke);
437        HRESULT Add(
438            [in] IInkStrokeDisp *InkStroke);
439        HRESULT AddStrokes(
440            [in] IInkStrokes *InkStrokes);
441        HRESULT Remove(
442            [in] IInkStrokeDisp *InkStroke);
443        HRESULT RemoveStrokes(
444            [in] IInkStrokes *InkStrokes);
445        HRESULT ModifyDrawingAttributes(
446            [in] IInkDrawingAttributes *DrawAttrs);
447        HRESULT GetBoundingBox(
448            [in] InkBoundingBoxMode BoundingBoxMode,
449            [out, retval] IInkRectangle **BoundingBox);
450        HRESULT Transform(
451            [in] IInkTransform *Transform,
452            [in] VARIANT_BOOL ApplyOnPenWidth);
453        HRESULT ScaleToRectangle(
454            [in] IInkRectangle *Rectangle);
455        HRESULT Move(
456            [in] float HorizontalComponent,
457            [in] float VerticalComponent);
458        HRESULT Rotate(
459            [in] float Degrees,
460            [in] float x,
461            [in] float y);
462        HRESULT Shear(
463            [in] float HorizontalMultiplier,
464            [in] float VerticalMultiplier);
465        HRESULT ScaleTransform(
466            [in] float HorizontalMultiplier,
467            [in] float VerticalMultiplier);
468        HRESULT Clip(
469            [in] IInkRectangle *Rectangle);
470        HRESULT RemoveRecognitionResult();
471    };
472
473    [
474        odl,
475        uuid(7E23A88F-C30E-420f-9BDB-28902543F0C1),
476        dual,
477        oleautomation
478    ]
479    interface IInkCustomStrokes : IDispatch {
480        [propget]               HRESULT Count(
481            [out, retval] long *Count);
482        [propget]               HRESULT _NewEnum(
483            [out, retval] IUnknown **_NewEnum);
484        HRESULT Item(
485            [in] VARIANT Identifier,
486            [out, retval] IInkStrokes **Strokes);
487        HRESULT Add(
488            [in] BSTR Name,
489            [in] IInkStrokes *Strokes);
490        HRESULT Remove(
491            [in] VARIANT Identifier);
492        HRESULT Clear();
493    };
494
495    interface IInkRecognitionAlternate;
496    interface IInkRecognitionAlternates;
497
498    [
499        odl,
500        uuid(3BC129A8-86CD-45ad-BDE8-E0D32D61C16D),
501        dual,
502        oleautomation
503    ]
504    interface IInkRecognitionResult : IDispatch {
505        [propget]               HRESULT TopString(
506            [out, retval] BSTR *TopString);
507        [propget]               HRESULT TopAlternate(
508            [out, retval] IInkRecognitionAlternate **TopAlternate);
509        [propget]               HRESULT TopConfidence(
510            [out, retval] InkRecognitionConfidence *TopConfidence);
511        [propget]               HRESULT Strokes(
512            [out, retval] IInkStrokes **Strokes);
513        HRESULT AlternatesFromSelection(
514            [in] long selectionStart,
515            [in] long selectionLength,
516            [in] long maximumAlternates,
517            [out, retval] IInkRecognitionAlternates **AlternatesFromSelection);
518        HRESULT ModifyTopAlternate(
519            [in] IInkRecognitionAlternate *Alternate);
520        HRESULT SetResultOnStrokes();
521    };
522
523    [
524        odl,
525        uuid(B7E660AD-77E4-429b-ADDA-873780D1FC4A),
526        dual,
527        oleautomation
528    ]
529    interface IInkRecognitionAlternate : IDispatch {
530        [propget]               HRESULT String(
531            [out, retval] BSTR *RecoString);
532        [propget]               HRESULT Confidence(
533            [out, retval] InkRecognitionConfidence *Confidence);
534        [propget]               HRESULT Baseline(
535            [out, retval] VARIANT *Baseline);
536        [propget]               HRESULT Midline(
537            [out, retval] VARIANT *Midline);
538        [propget]               HRESULT Ascender(
539            [out, retval] VARIANT *Ascender);
540        [propget]               HRESULT Descender(
541            [out, retval] VARIANT *Descender);
542        [propget]               HRESULT LineNumber(
543            [out, retval] long *LineNumber);
544        [propget]               HRESULT Strokes(
545            [out, retval] IInkStrokes **Strokes);
546        [propget]               HRESULT LineAlternates(
547            [out, retval] IInkRecognitionAlternates **LineAlternates);
548        [propget]               HRESULT ConfidenceAlternates(
549            [out, retval] IInkRecognitionAlternates **ConfidenceAlternates);
550        HRESULT GetStrokesFromStrokeRanges(
551            [in] IInkStrokes *Stroke,
552            [out, retval] IInkStrokes **GetStrokesFromTextRange);
553        HRESULT GetStrokesFromTextRange(
554            [in, out] long *selectionStart,
555            [in, out] long *selectionLength,
556            [out, retval] IInkStrokes **GetStrokesFromTextRange);
557        HRESULT GetTextRangeFromStrokes(
558            [in] IInkStrokes *Strokes,
559            [in, out] long *selectionStart,
560            [in, out] long *selectionLength);
561        HRESULT AlternatesWithConstantPropertyValues(
562            [in] BSTR PropertyType,
563            [out, retval] IInkRecognitionAlternates **AlternatesWithConstantPropertyValues);
564        HRESULT GetPropertyValue(
565            [in] BSTR PropertyType,
566            [out, retval] VARIANT *PropertyValue);
567    };
568
569    [
570        odl,
571        uuid(286A167F-9F19-4c61-9D53-4F07BE622B84),
572        dual,
573        oleautomation
574    ]
575    interface IInkRecognitionAlternates : IDispatch {
576    [propget]                   HRESULT Count(
577        [out, retval] long *Count);
578    [propget, restricted]       HRESULT _NewEnum(
579        [out, retval] IUnknown **_NewEnum);
580    [propget]                   HRESULT Strokes(
581        [out, retval] IInkStrokes **Strokes);
582    HRESULT Item(
583        [in] long Index,
584        [out, retval] IInkRecognitionAlternate **InkRecoAlternate);
585    };
586
587    [
588        odl,
589        uuid(9D398FA0-C4E2-4fcd-9973-975CAAF47EA6),
590        dual,
591        oleautomation
592    ]
593    interface IInkDisp : IDispatch {
594        [propget]               HRESULT Strokes(
595            [out, retval] IInkStrokes **Strokes);
596        [propget]               HRESULT ExtendedProperties(
597            [out, retval] IInkExtendedProperties **Properties);
598        [propget]               HRESULT Dirty(
599            [out, retval] VARIANT_BOOL *Dirty);
600        [propput]               HRESULT Dirty(
601            [in] VARIANT_BOOL Dirty);
602        [propget]               HRESULT CustomStrokes(
603            [out, retval] IInkCustomStrokes **CustomStrokes);
604        HRESULT GetBoundingBox(
605            [in] InkBoundingBoxMode BoundingBoxMode,
606            [out] IInkRectangle **Rectangle);
607        HRESULT DeleteStrokes(
608            [in, unique] IInkStrokes *Strokes);
609        HRESULT DeleteStroke(
610            [in] IInkStrokeDisp *Stroke);
611        HRESULT ExtractStrokes(
612            [in] IInkStrokes *Strokes,
613            [in] InkExtractFlags ExtractFlags,
614            [out, retval] IInkDisp **ExtractedInk);
615        HRESULT ExtractWithRectangle(
616            [in] IInkRectangle *Rectangle,
617            [in] InkExtractFlags ExtractFlags,
618            [out, retval] IInkDisp **ExtractedInk);
619        HRESULT Clip(
620            [in] IInkRectangle *Rectangle);
621        HRESULT Clone(
622            [out, retval] IInkDisp **NewInk);
623        HRESULT HitTestCircle(
624            [in] long X,
625            [in] long Y,
626            [in] float radius,
627            [out, retval] IInkStrokes **Strokes);
628        HRESULT HitTestWithRectangle(
629            [in] IInkRectangle *SelectionRectangle,
630            [in] float IntersectPercent,
631            [out, retval] IInkStrokes **Strokes);
632        HRESULT HitTestWithLasso(
633            [in] VARIANT Points,
634            [in] float IntersectPercent,
635            [in, out, unique] VARIANT *LassoPoints,
636            [out, retval] IInkStrokes **Strokes);
637        HRESULT NearestPoint(
638            [in] long X,
639            [in] long Y,
640            [in, out] float *PointOnStroke,
641            [in, out] float *DistanceFromPacket,
642            [out, retval] IInkStrokeDisp **Stroke);
643        HRESULT CreateStrokes(
644            [in] VARIANT StrokeIds,
645            [out, retval] IInkStrokes **Strokes);
646        HRESULT AddStrokesAtRectangle(
647            [in] IInkStrokes *SourceStrokes,
648            [in] IInkRectangle *TargetRectangle);
649        HRESULT Save(
650            [in] InkPersistenceFormat PersistenceFormat,
651            [in] InkPersistenceCompressionMode CompressionMode,
652            [out, retval] VARIANT *Data);
653        HRESULT Load(
654            [in] VARIANT Data);
655        HRESULT CreateStroke(
656            [in] VARIANT PacketData,
657            [in] VARIANT PacketDescription,
658            [out, retval] IInkStrokeDisp **Stroke);
659        HRESULT ClipboardCopyWithRectangle(
660            [in] IInkRectangle *Rectangle,
661            [in] InkClipboardFormats ClipboardFormats,
662            [in] InkClipboardModes ClipboardModes,
663            [out, retval] IDataObject **DataObject);
664        HRESULT ClipboardCopy(
665            [in] IInkStrokes *strokes,
666            [in] InkClipboardFormats ClipboardFormats,
667            [in] InkClipboardModes ClipboardModes,
668            [out, retval] IDataObject **DataObject);
669        HRESULT CanPaste(
670            [in] IDataObject *DataObject,
671            [out, retval] VARIANT_BOOL *CanPaste);
672        HRESULT ClipboardPaste(
673            [in] long x,
674            [in] long y,
675            [in, unique] IDataObject *DataObject,
676            [out, retval] IInkStrokes **Strokes);
677    };
678
679    [
680        odl,
681        uuid(E6257A9C-B511-4F4C-A8B0-A7DBC9506B83),
682        dual,
683        oleautomation
684    ]
685    interface IInkRenderer : IDispatch {
686        HRESULT GetViewTransform([in] IInkTransform* ViewTransform);
687        HRESULT SetViewTransform([in] IInkTransform* ViewTransform);
688        HRESULT GetObjectTransform([in] IInkTransform* ObjectTransform);
689        HRESULT SetObjectTransform([in] IInkTransform* ObjectTransform);
690        HRESULT Draw(
691            [in] long hDC,
692            [in] IInkStrokes* Strokes);
693        HRESULT DrawStroke(
694            [in] long hDC,
695            [in] IInkStrokeDisp* Stroke,
696            [in, defaultvalue(0)]
697            IInkDrawingAttributes* DrawingAttributes);
698        HRESULT PixelToInkSpace(
699            [in] long hDC,
700            [in, out] long* x,
701            [in, out] long* y);
702        HRESULT InkSpaceToPixel(
703            [in] long hdcDisplay,
704            [in, out] long* x,
705            [in, out] long* y);
706        HRESULT PixelToInkSpaceFromPoints(
707            [in] long hDC,
708            [in, out] VARIANT* Points);
709        HRESULT InkSpaceToPixelFromPoints(
710            [in] long hDC,
711            [in, out] VARIANT* Points);
712        HRESULT Measure(
713            [in] IInkStrokes* Strokes,
714            [out, retval] IInkRectangle** Rectangle);
715        HRESULT MeasureStroke(
716            [in] IInkStrokeDisp* Stroke,
717            [in, defaultvalue(0)] IInkDrawingAttributes* DrawingAttributes,
718            [out, retval] IInkRectangle** Rectangle);
719        HRESULT Move(
720            [in] single HorizontalComponent,
721            [in] single VerticalComponent);
722        HRESULT Rotate(
723            [in] single Degrees,
724            [in, defaultvalue(0)] single x,
725            [in, defaultvalue(0)] single y);
726        HRESULT ScaleTransform(
727            [in] single HorizontalMultiplier,
728            [in] single VerticalMultiplier,
729            [in, defaultvalue(-1)] VARIANT_BOOL ApplyOnPenWidth);
730    };
731
732    typedef enum {
733        ICM_InkOnly,
734        ICM_GestureOnly,
735        ICM_InkAndGesture
736    } InkCollectionMode;
737
738    typedef enum {
739        IMP_Default,
740        IMP_Arrow,
741        IMP_Crosshair,
742        IMP_Ibeam,
743        IMP_SizeNESW,
744        IMP_SizeNS,
745        IMP_SizeNWSE,
746        IMP_SizeWE,
747        IMP_UpArrow,
748        IMP_Hourglass,
749        IMP_NoDrop,
750        IMP_ArrowHourglass,
751        IMP_ArrowQuestion,
752        IMP_SizeAll,
753        IMP_Hand,
754        IMP_Custom = 99
755    } InkMousePointer;
756
757    typedef enum {
758        THWC_Integrated = 1,
759        THWC_CursorMustTouch = 2,
760        THWC_HardProximity = 4,
761        THWC_CursorsHavePhysicalIds = 8
762    } TabletHardwareCapabilities;
763
764    [
765        odl,
766        uuid(2DE25EAA-6EF8-42D5-AEE9-185BC81B912D),
767        dual,
768        oleautomation
769    ]
770    interface IInkTablet : IDispatch {
771        [propget] HRESULT Name([out, retval] BSTR* Name);
772        [propget] HRESULT PlugAndPlayId([out, retval] BSTR* Id);
773        [propget] HRESULT MaximumInputRectangle([out, retval] IInkRectangle** Rectangle);
774        [propget] HRESULT HardwareCapabilities(
775            [out, retval] TabletHardwareCapabilities* Capabilities);
776        HRESULT IsPacketPropertySupported(
777            [in] BSTR packetPropertyName,
778            [out, retval] VARIANT_BOOL* Supported);
779        HRESULT GetPropertyMetrics(
780            [in] BSTR propertyName,
781            [out] long* Minimum,
782            [out] long* Maximum,
783            [out] TabletPropertyMetricUnit* Units,
784            [out] single* Resolution);
785    };
786
787    typedef enum {
788        ICBS_Unavailable,
789        ICBS_Up,
790        ICBS_Down
791    } InkCursorButtonState;
792
793    [
794        odl,
795        uuid(85EF9417-1D59-49B2-A13C-702C85430894),
796        dual,
797        oleautomation
798    ]
799    interface IInkCursorButton : IDispatch {
800        [propget] HRESULT Name([out, retval] BSTR* Name);
801        [propget] HRESULT Id([out, retval] BSTR* Id);
802        [propget] HRESULT State([out, retval] InkCursorButtonState* CurrentState);
803    };
804
805    [
806        odl,
807        uuid(3671CC40-B624-4671-9FA0-DB119D952D54),
808        dual,
809        oleautomation
810    ]
811    interface IInkCursorButtons : IDispatch {
812        [propget] HRESULT Count([out, retval] long* Count);
813        [propget] HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
814        HRESULT Item(
815            [in] VARIANT Identifier,
816            [out, retval] IInkCursorButton** Button);
817    };
818
819    [
820        odl,
821        uuid(AD30C630-40C5-4350-8405-9C71012FC558),
822        dual,
823        oleautomation
824    ]
825    interface IInkCursor : IDispatch {
826        [id(0x00000000), propget]    HRESULT Name([out, retval] BSTR* Name);
827        [id(0x00000001), propget]    HRESULT Id([out, retval] long* Id);
828        [id(0x00000004), propget]    HRESULT Inverted(
829            [out, retval] VARIANT_BOOL* Status);
830        [id(0x00000002), propget]    HRESULT DrawingAttributes(
831            [out, retval] IInkDrawingAttributes** Attributes);
832        [id(0x00000002), propputref] HRESULT DrawingAttributes(
833            [in] IInkDrawingAttributes* Attributes);
834        [id(0x00000005), propget]    HRESULT Tablet(
835            [out, retval] IInkTablet** Tablet);
836        [id(0x00000003), propget]    HRESULT Buttons(
837            [out, retval] IInkCursorButtons** Buttons);
838    };
839
840    [
841        odl,
842        uuid(A248C1AC-C698-4E06-9E5C-D57F77C7E647),
843        dual,
844        oleautomation
845    ]
846    interface IInkCursors : IDispatch {
847        [propget] HRESULT Count([out, retval] long* Count);
848        [propget] HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
849        HRESULT Item(
850            [in] long Index,
851            [out, retval] IInkCursor** Cursor);
852    };
853
854    typedef enum {
855        IAG_AllGestures = 0,
856        IAG_NoGesture = 61440,
857        IAG_Scratchout = 61441,
858        IAG_Triangle = 61442,
859        IAG_Square = 61443,
860        IAG_Star = 61444,
861        IAG_Check = 61445,
862        IAG_Curlicue = 61456,
863        IAG_DoubleCurlicue = 61457,
864        IAG_Circle = 61472,
865        IAG_DoubleCircle = 61473,
866        IAG_SemiCircleLeft = 61480,
867        IAG_SemiCircleRight = 61481,
868        IAG_ChevronUp = 61488,
869        IAG_ChevronDown = 61489,
870        IAG_ChevronLeft = 61490,
871        IAG_ChevronRight = 61491,
872        IAG_ArrowUp = 61496,
873        IAG_ArrowDown = 61497,
874        IAG_ArrowLeft = 61498,
875        IAG_ArrowRight = 61499,
876        IAG_Up = 61528,
877        IAG_Down = 61529,
878        IAG_Left = 61530,
879        IAG_Right = 61531,
880        IAG_UpDown = 61536,
881        IAG_DownUp = 61537,
882        IAG_LeftRight = 61538,
883        IAG_RightLeft = 61539,
884        IAG_UpLeftLong = 61540,
885        IAG_UpRightLong = 61541,
886        IAG_DownLeftLong = 61542,
887        IAG_DownRightLong = 61543,
888        IAG_UpLeft = 61544,
889        IAG_UpRight = 61545,
890        IAG_DownLeft = 61546,
891        IAG_DownRight = 61547,
892        IAG_LeftUp = 61548,
893        IAG_LeftDown = 61549,
894        IAG_RightUp = 61550,
895        IAG_RightDown = 61551,
896        IAG_Exclamation = 61604,
897        IAG_Tap = 61680,
898        IAG_DoubleTap = 61681
899    } InkApplicationGesture;
900
901    typedef enum {
902        ICEI_DefaultEvents = -1,
903        ICEI_CursorDown = 0,
904        ICEI_Stroke,
905        ICEI_NewPackets,
906        ICEI_NewInAirPackets,
907        ICEI_CursorButtonDown,
908        ICEI_CursorButtonUp,
909        ICEI_CursorInRange,
910        ICEI_CursorOutOfRange,
911        ICEI_SystemGesture,
912        ICEI_TabletAdded,
913        ICEI_TabletRemoved,
914        ICEI_MouseDown,
915        ICEI_MouseMove,
916        ICEI_MouseUp,
917        ICEI_MouseWheel,
918        ICEI_DblClick,
919        ICEI_AllEvents
920    } InkCollectorEventInterest;
921
922    [
923        odl,
924        uuid(F0F060B5-8B1F-4A7C-89EC-880692588A4F),
925        dual,
926        oleautomation
927    ]
928    interface IInkCollector : IDispatch {
929        [id(0x00000002), propget]    HRESULT hWnd(
930            [out, retval] long* CurrentWindow);
931        [id(0x00000002), propput]    HRESULT hWnd([in] long CurrentWindow);
932        [id(0x00000001), propget]    HRESULT Enabled(
933            [out, retval] VARIANT_BOOL* Collecting);
934        [id(0x00000001), propput]    HRESULT Enabled(
935            [in] VARIANT_BOOL Collecting);
936        [id(0x00000005), propget]    HRESULT DefaultDrawingAttributes(
937            [out, retval] IInkDrawingAttributes** CurrentAttributes);
938        [id(0x00000005), propputref] HRESULT DefaultDrawingAttributes(
939            [in] IInkDrawingAttributes* CurrentAttributes);
940        [id(0x00000006), propget]    HRESULT Renderer(
941            [out, retval] IInkRenderer** CurrentInkRenderer);
942        [id(0x00000006), propputref] HRESULT Renderer(
943            [in] IInkRenderer* CurrentInkRenderer);
944        [id(0x00000007), propget]    HRESULT Ink([out, retval] IInkDisp** Ink);
945        [id(0x00000007), propputref] HRESULT Ink([in] IInkDisp* Ink);
946        [id(0x00000008), propget]    HRESULT AutoRedraw(
947            [out, retval] VARIANT_BOOL* AutoRedraw);
948        [id(0x00000008), propput]    HRESULT AutoRedraw(
949            [in] VARIANT_BOOL AutoRedraw);
950        [id(0x00000009), propget]    HRESULT CollectingInk(
951            [out, retval] VARIANT_BOOL* Collecting);
952        [id(0x0000001c), propget]    HRESULT CollectionMode(
953            [out, retval] InkCollectionMode* Mode);
954        [id(0x0000001c), propput]    HRESULT CollectionMode(
955            [in] InkCollectionMode Mode);
956        [id(0x0000001f), propget]    HRESULT DynamicRendering(
957            [out, retval] VARIANT_BOOL* Enabled);
958        [id(0x0000001f), propput]    HRESULT DynamicRendering(
959            [in] VARIANT_BOOL Enabled);
960        [id(0x00000020), propget]    HRESULT DesiredPacketDescription(
961            [out, retval] VARIANT* PacketGuids);
962        [id(0x00000020), propput]    HRESULT DesiredPacketDescription(
963            [in] VARIANT PacketGuids);
964        [id(0x00000023), propget]    HRESULT MouseIcon(
965            [out, retval] IPictureDisp** MouseIcon);
966        [id(0x00000023), propput]    HRESULT MouseIcon(
967            [in] IPictureDisp* MouseIcon);
968        [id(0x00000023), propputref] HRESULT MouseIcon(
969            [in] IPictureDisp* MouseIcon);
970        [id(0x00000024), propget]    HRESULT MousePointer(
971            [out, retval] InkMousePointer* MousePointer);
972        [id(0x00000024), propput]    HRESULT MousePointer(
973            [in] InkMousePointer MousePointer);
974        [id(0x00000014), propget]    HRESULT Cursors(
975            [out, retval] IInkCursors** Cursors);
976        [id(0x00000015), propget]    HRESULT MarginX(
977            [out, retval] long* MarginX);
978        [id(0x00000015), propput]    HRESULT MarginX([in] long MarginX);
979        [id(0x00000016), propget]    HRESULT MarginY(
980            [out, retval] long* MarginY);
981        [id(0x00000016), propput]    HRESULT MarginY([in] long MarginY);
982        [id(0x00000019), propget]    HRESULT Tablet(
983            [out, retval] IInkTablet** SingleTablet);
984        [id(0x00000026), propget]    HRESULT SupportHighContrastInk(
985            [out, retval] VARIANT_BOOL* Support);
986        [id(0x00000026), propput]    HRESULT SupportHighContrastInk(
987            [in] VARIANT_BOOL Support);
988        [id(0x0000001d)]             HRESULT SetGestureStatus(
989            [in] InkApplicationGesture Gesture,
990            [in] VARIANT_BOOL Listen);
991        [id(0x0000001e)]             HRESULT GetGestureStatus(
992            [in] InkApplicationGesture Gesture,
993            [out, retval] VARIANT_BOOL* Listening);
994        [id(0x00000018)]             HRESULT GetWindowInputRectangle(
995            [in, out] IInkRectangle** WindowInputRectangle);
996        [id(0x00000017)]             HRESULT SetWindowInputRectangle(
997            [in] IInkRectangle* WindowInputRectangle);
998        [id(0x0000001a)]             HRESULT SetAllTabletsMode(
999            [in, defaultvalue(-1)] VARIANT_BOOL UseMouseForInput);
1000        [id(0x0000001b)]             HRESULT SetSingleTabletIntegratedMode(
1001            [in] IInkTablet* Tablet);
1002        [id(0x0000000b)]             HRESULT GetEventInterest(
1003            [in] InkCollectorEventInterest EventId,
1004            [out, retval] VARIANT_BOOL* Listen);
1005        [id(0x0000000a)]             HRESULT SetEventInterest(
1006            [in] InkCollectorEventInterest EventId,
1007            [in] VARIANT_BOOL Listen);
1008    };
1009};
1010