localspl: Avoid sizeof in a trace.
[wine] / include / msinkaut.idl
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
18 import "oaidl.idl";
19 import "ocidl.idl";
20
21 [
22     uuid(7D868ACD-1A5D-4A47-A247-F39741353012),
23     version(1.0)
24 ]
25 library MSINKAUTLib
26 {
27     importlib("stdole2.tlb");
28
29     typedef float single;
30
31     [
32         odl,
33         uuid(DB489209-B7C3-411D-90F6-1548CFFF271E),
34         dual,
35         oleautomation
36     ]
37     interface IInkExtendedProperty : IDispatch {
38         [id(0x00000001), propget] HRESULT Guid([out, retval] BSTR* Guid);
39         [id(0x00000002), propget] HRESULT Data([out, retval] VARIANT* Data);
40         [id(0x00000002), propput] HRESULT Data([in] VARIANT Data);
41     };
42
43     [
44         odl,
45         uuid(89F2A8BE-95A9-4530-8B8F-88E971E3E25F),
46         dual,
47         oleautomation
48     ]
49     interface IInkExtendedProperties : IDispatch {
50         HRESULT Count([out, retval] long* Count);
51         HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
52         HRESULT Item(
53             [in] VARIANT Identifier,
54             [out, retval] IInkExtendedProperty** Item);
55         HRESULT Add(
56             [in] BSTR Guid,
57             [in] VARIANT Data,
58             [out, retval] IInkExtendedProperty** InkExtendedProperty);
59         HRESULT Remove([in] VARIANT Identifier);
60         HRESULT Clear();
61         HRESULT DoesPropertyExist(
62             [in] BSTR Guid,
63             [out, retval] VARIANT_BOOL* DoesPropertyExist);
64     };
65
66     typedef enum {
67         IRO_Black = 1,
68         IRO_NotMergePen,
69         IRO_MaskNotPen,
70         IRO_NotCopyPen,
71         IRO_MaskPenNot,
72         IRO_Not,
73         IRO_XOrPen,
74         IRO_NotMaskPen,
75         IRO_MaskPen,
76         IRO_NotXOrPen,
77         IRO_NoOperation,
78         IRO_MergeNotPen,
79         IRO_CopyPen,
80         IRO_MergePenNot,
81         IRO_MergePen,
82         IRO_White
83     } InkRasterOperation;
84
85     typedef enum {
86         IPT_Ball,
87         IPT_Rectangle
88     } InkPenTip;
89
90     [
91         odl,
92         uuid(BF519B75-0A15-4623-ADC9-C00D436A8092),
93         dual,
94         oleautomation
95     ]
96     interface IInkDrawingAttributes : IDispatch {
97         [id(0x00000002), propget] HRESULT Color(
98             [out, retval] long* CurrentColor);
99         [id(0x00000002), propput] HRESULT Color([in] long CurrentColor);
100         [id(0x00000003), propget] HRESULT Width(
101             [out, retval] single* CurrentWidth);
102         [id(0x00000003), propput] HRESULT Width([in] single CurrentWidth);
103         [id(0x00000001), propget] HRESULT Height(
104             [out, retval] single* CurrentHeight);
105         [id(0x00000001), propput] HRESULT Height([in] single CurrentHeight);
106         [id(0x00000004), propget] HRESULT FitToCurve(
107             [out, retval] VARIANT_BOOL* Flag);
108         [id(0x00000004), propput] HRESULT FitToCurve([in] VARIANT_BOOL Flag);
109         [id(0x00000005), propget] HRESULT IgnorePressure(
110             [out, retval] VARIANT_BOOL* Flag);
111         [id(0x00000005), propput] HRESULT IgnorePressure(
112             [in] VARIANT_BOOL Flag);
113         [id(0x00000006), propget] HRESULT AntiAliased(
114             [out, retval] VARIANT_BOOL* Flag);
115         [id(0x00000006), propput] HRESULT AntiAliased([in] VARIANT_BOOL Flag);
116         [id(0x00000007), propget] HRESULT Transparency(
117             [out, retval] long* CurrentTransparency);
118         [id(0x00000007), propput] HRESULT Transparency(
119             [in] long CurrentTransparency);
120         [id(0x00000008), propget] HRESULT RasterOperation(
121             [out, retval] InkRasterOperation* CurrentRasterOperation);
122         [id(0x00000008), propput] HRESULT RasterOperation(
123             [in] InkRasterOperation CurrentRasterOperation);
124         [id(0x00000009), propget] HRESULT PenTip(
125             [out, retval] InkPenTip* CurrentPenTip);
126         [id(0x00000009), propput] HRESULT PenTip([in] InkPenTip CurrentPenTip);
127         [id(0x0000000b), propget] HRESULT ExtendedProperties(
128             [out, retval] IInkExtendedProperties** Properties);
129         [id(0x0000000a)]          HRESULT Clone(
130             [out, retval] IInkDrawingAttributes** DrawingAttributes);
131     };
132
133 cpp_quote("#ifndef _WINGDI_")
134 /* already defined in wingdi.h but needed for WIDL */
135     typedef struct tagXFORM {
136         single eM11;
137         single eM12;
138         single eM21;
139         single eM22;
140         single eDx;
141         single eDy;
142     } XFORM;
143 cpp_quote("#endif /* _WINGDI_ */")
144
145     [
146         odl,
147         uuid(615F1D43-8703-4565-88E2-8201D2ECD7B7),
148         dual,
149         oleautomation
150     ]
151     interface IInkTransform : IDispatch {
152         [id(0x00000001)] HRESULT Reset();
153         [id(0x00000002)] HRESULT Translate(
154             [in] single HorizontalComponent,
155             [in] single VerticalComponent);
156         [id(0x00000003)] HRESULT Rotate(
157             [in] single Degrees,
158             [in, optional, defaultvalue(0)] single x,
159             [in, optional, defaultvalue(0)] single y);
160         [id(0x00000004)] HRESULT Reflect(
161             [in] VARIANT_BOOL Horizontally,
162             [in] VARIANT_BOOL Vertically);
163         [id(0x00000005)] HRESULT Shear(
164             [in] single HorizontalComponent,
165             [in] single VerticalComponent);
166         [id(0x00000006)] HRESULT ScaleTransform(
167             [in] single HorizontalMultiplier,
168             [in] single VerticalMultiplier);
169         [id(0x0000000d)] HRESULT GetTransform(
170             [out] single* eM11,
171             [out] single* eM12,
172             [out] single* eM21,
173             [out] single* eM22,
174             [out] single* eDx,
175             [out] single* eDy);
176         [id(0x0000000e)] HRESULT SetTransform(
177             [in] single eM11,
178             [in] single eM12,
179             [in] single eM21,
180             [in] single eM22,
181             [in] single eDx,
182             [in] single eDy);
183         [id(0x00000007), propget, hidden] HRESULT eM11(
184             [out, retval] single* Value);
185         [id(0x00000007), propput, hidden] HRESULT eM11([in] single Value);
186         [id(0x00000008), propget, hidden] HRESULT eM12(
187             [out, retval] single* Value);
188         [id(0x00000008), propput, hidden] HRESULT eM12([in] single Value);
189         [id(0x00000009), propget, hidden] HRESULT eM21(
190             [out, retval] single* Value);
191         [id(0x00000009), propput, hidden] HRESULT eM21([in] single Value);
192         [id(0x0000000a), propget, hidden] HRESULT eM22(
193             [out, retval] single* Value);
194         [id(0x0000000a), propput, hidden] HRESULT eM22([in] single Value);
195         [id(0x0000000b), propget, hidden] HRESULT eDx(
196             [out, retval] single* Value);
197         [id(0x0000000b), propput, hidden] HRESULT eDx([in] single Value);
198         [id(0x0000000c), propget, hidden] HRESULT eDy(
199             [out, retval] single* Value);
200         [id(0x0000000c), propput, hidden] HRESULT eDy([in] single Value);
201         [id(0x0000000f), propget, hidden] HRESULT Data(
202             [out, retval] XFORM* XFORM);
203         [id(0x0000000f), propput, hidden] HRESULT Data([in] XFORM XFORM);
204     };
205
206     interface IInkDisp;
207
208     typedef enum {
209         IBBM_Default,
210         IBBM_NoCurveFit,
211         IBBM_CurveFit,
212         IBBM_PointsOnly,
213         IBBM_Union
214     } InkBoundingBoxMode;
215
216     [
217         odl,
218         uuid(9794FF82-6071-4717-8A8B-6AC7C64A686E),
219         dual,
220         oleautomation
221     ]
222     interface IInkRectangle
223     {
224         [id(1), propget] HRESULT Top([out, retval] long* Units);
225         [id(1), propput] HRESULT Top([in] long Units);
226         [id(2), propget] HRESULT Left([out, retval] long* Units);
227         [id(2), propput] HRESULT Left([in] long Units);
228         [id(3), propget] HRESULT Bottom([out, retval] long* Units);
229         [id(3), propput] HRESULT Bottom([in] long Units);
230         [id(4), propget] HRESULT Right([out, retval] long* Units);
231         [id(4), propput] HRESULT Right([in] long Units);
232         [id(7), propget] HRESULT Data([out, retval] RECT* Rect);
233         [id(7), propput] HRESULT Data([in] RECT Rect);
234         [id(5)] HRESULT GetRectangle(
235             [out] long* Top,
236             [out] long* Left,
237             [out] long* Bottom,
238             [out] long* Right);
239         [id(6)] HRESULT SetRectangle(
240             [in] long Top,
241             [in] long Left,
242             [in] long Bottom,
243             [in] long Right);
244     };
245
246     interface IInkStrokes;
247
248     typedef enum {
249         TPMU_Default,
250         TPMU_Inches,
251         TPMU_Centimeters,
252         TPMU_Degrees,
253         TPMU_Radians,
254         TPMU_Seconds,
255         TPMU_Pounds,
256         TPMU_Grams
257     } TabletPropertyMetricUnit;
258
259     [
260         odl,
261         uuid(43242FEA-91D1-4A72-963E-FBB91829CFA2),
262         dual,
263         oleautomation
264     ]
265     interface IInkStrokeDisp : IDispatch {
266         [id(0x00000002), propget]    HRESULT Id([out, retval] long* Id);
267         [id(0x0000000d), propget]    HRESULT BezierPoints(
268             [out, retval] VARIANT* Points);
269         [id(0x00000004), propget]    HRESULT DrawingAttributes(
270             [out, retval] IInkDrawingAttributes** DrawAttrs);
271         [id(0x00000004), propputref] HRESULT DrawingAttributes(
272             [in] IInkDrawingAttributes* DrawAttrs);
273         [id(0x0000000c), propget]    HRESULT Ink([out, retval] IInkDisp** Ink);
274         [id(0x0000000b), propget]    HRESULT ExtendedProperties(
275             [out, retval] IInkExtendedProperties** Properties);
276         [id(0x0000000e), propget]    HRESULT PolylineCusps(
277             [out, retval] VARIANT* Cusps);
278         [id(0x0000000f), propget]    HRESULT BezierCusps(
279             [out, retval] VARIANT* Cusps);
280         [id(0x00000010), propget]    HRESULT SelfIntersections(
281             [out, retval] VARIANT* Intersections);
282         [id(0x00000011), propget]    HRESULT PacketCount(
283             [out, retval] long* plCount);
284         [id(0x00000012), propget]    HRESULT PacketSize(
285             [out, retval] long* plSize);
286         [id(0x00000013), propget]    HRESULT PacketDescription(
287             [out, retval] VARIANT* PacketDescription);
288         [id(0x00000014), propget]    HRESULT Deleted(
289             [out, retval] VARIANT_BOOL* Deleted);
290         [id(0x00000003)]             HRESULT GetBoundingBox(
291             [in, optional, defaultvalue(0)] InkBoundingBoxMode BoundingBoxMode,
292             [out, retval] IInkRectangle** Rectangle);
293         [id(0x00000005)]             HRESULT FindIntersections(
294             [in] IInkStrokes* Strokes,
295             [out, retval] VARIANT* Intersections);
296         [id(0x00000006)]             HRESULT GetRectangleIntersections(
297             [in] IInkRectangle* Rectangle,
298             [out, retval] VARIANT* Intersections);
299         [id(0x00000007)]             HRESULT Clip(
300             [in] IInkRectangle* Rectangle);
301         [id(0x00000008)]             HRESULT HitTestCircle(
302             [in] long x,
303             [in] long y,
304             [in] single radius,
305             [out, retval] VARIANT_BOOL* Intersects);
306         [id(0x00000009)]             HRESULT NearestPoint(
307             [in] long x,
308             [in] long y,
309             [in, out, optional, defaultvalue(0)] single* Distance,
310             [out, retval] single* Point);
311         [id(0x0000000a)]             HRESULT Split(
312             [in] single SplitAt,
313             [out, retval] IInkStrokeDisp** NewStroke);
314         [id(0x00000015)]             HRESULT GetPacketDescriptionPropertyMetrics(
315             [in] BSTR propertyName,
316             [out] long* Minimum,
317             [out] long* Maximum,
318             [out] TabletPropertyMetricUnit* Units,
319             [out] single* Resolution);
320         [id(0x00000016)]             HRESULT GetPoints(
321             [in, optional, defaultvalue(0)] long Index,
322             [in, optional, defaultvalue(-1)] long Count,
323             [out, retval] VARIANT* Points);
324         [id(0x00000017)]             HRESULT SetPoints(
325             [in] VARIANT Points,
326             [in, optional, defaultvalue(0)] long Index,
327             [in, optional, defaultvalue(-1)] long Count,
328             [out, retval] long* NumberOfPointsSet);
329         [id(0x00000018)]             HRESULT GetPacketData(
330             [in, optional, defaultvalue(0)] long Index,
331             [in, optional, defaultvalue(-1)] long Count,
332             [out, retval] VARIANT* PacketData);
333         [id(0x00000019)]             HRESULT GetPacketValuesByProperty(
334             [in] BSTR propertyName,
335             [in, optional, defaultvalue(0)] long Index,
336             [in, optional, defaultvalue(-1)] long Count,
337             [out, retval] VARIANT* PacketValues);
338         [id(0x0000001a)]             HRESULT SetPacketValuesByProperty(
339             [in] BSTR bstrPropertyName,
340             [in] VARIANT PacketValues,
341             [in, optional, defaultvalue(0)] long Index,
342             [in, optional, defaultvalue(-1)] long Count,
343             [out, retval] long* NumberOfPacketsSet);
344         [id(0x0000001b)]             HRESULT GetFlattenedBezierPoints(
345             [in, optional, defaultvalue(0)] long FittingError,
346             [out, retval] VARIANT* FlattenedBezierPoints);
347         [id(0x0000001d)]             HRESULT Transform(
348             [in] IInkTransform* Transform,
349             [in, optional, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth);
350         [id(0x0000001c)]             HRESULT ScaleToRectangle(
351             [in] IInkRectangle* Rectangle);
352         [id(0x0000001e)]             HRESULT Move(
353             [in] single HorizontalComponent,
354             [in] single VerticalComponent);
355         [id(0x0000001f)]             HRESULT Rotate(
356             [in] single Degrees,
357             [in, optional, defaultvalue(0)] single x,
358             [in, optional, defaultvalue(0)] single y);
359         [id(0x00000020)]             HRESULT Shear(
360             [in] single HorizontalMultiplier,
361             [in] single VerticalMultiplier);
362         [id(0x00000021)]             HRESULT ScaleTransform(
363             [in] single HorizontalMultiplier,
364             [in] single VerticalMultiplier);
365     };
366
367     [
368         odl,
369         uuid(E6257A9C-B511-4F4C-A8B0-A7DBC9506B83),
370         dual,
371         oleautomation
372     ]
373     interface IInkRenderer : IDispatch {
374         HRESULT GetViewTransform([in] IInkTransform* ViewTransform);
375         HRESULT SetViewTransform([in] IInkTransform* ViewTransform);
376         HRESULT GetObjectTransform([in] IInkTransform* ObjectTransform);
377         HRESULT SetObjectTransform([in] IInkTransform* ObjectTransform);
378         HRESULT Draw(
379             [in] long hDC,
380             [in] IInkStrokes* Strokes);
381         HRESULT DrawStroke(
382             [in] long hDC,
383             [in] IInkStrokeDisp* Stroke,
384             [in, optional, defaultvalue(0)]
385             IInkDrawingAttributes* DrawingAttributes);
386         HRESULT PixelToInkSpace(
387             [in] long hDC,
388             [in, out] long* x,
389             [in, out] long* y);
390         HRESULT InkSpaceToPixel(
391             [in] long hdcDisplay,
392             [in, out] long* x,
393             [in, out] long* y);
394         HRESULT PixelToInkSpaceFromPoints(
395             [in] long hDC,
396             [in, out] VARIANT* Points);
397         HRESULT InkSpaceToPixelFromPoints(
398             [in] long hDC,
399             [in, out] VARIANT* Points);
400         HRESULT Measure(
401             [in] IInkStrokes* Strokes,
402             [out, retval] IInkRectangle** Rectangle);
403         HRESULT MeasureStroke(
404             [in] IInkStrokeDisp* Stroke,
405             [in, optional, defaultvalue(0)] IInkDrawingAttributes* DrawingAttributes,
406             [out, retval] IInkRectangle** Rectangle);
407         HRESULT Move(
408             [in] single HorizontalComponent,
409             [in] single VerticalComponent);
410         HRESULT Rotate(
411             [in] single Degrees,
412             [in, optional, defaultvalue(0)] single x,
413             [in, optional, defaultvalue(0)] single y);
414         HRESULT ScaleTransform(
415             [in] single HorizontalMultiplier,
416             [in] single VerticalMultiplier,
417             [in, optional, defaultvalue(-1)] VARIANT_BOOL ApplyOnPenWidth);
418     };
419
420     typedef enum {
421         ICM_InkOnly,
422         ICM_GestureOnly,
423         ICM_InkAndGesture
424     } InkCollectionMode;
425
426     typedef enum {
427         IMP_Default,
428         IMP_Arrow,
429         IMP_Crosshair,
430         IMP_Ibeam,
431         IMP_SizeNESW,
432         IMP_SizeNS,
433         IMP_SizeNWSE,
434         IMP_SizeWE,
435         IMP_UpArrow,
436         IMP_Hourglass,
437         IMP_NoDrop,
438         IMP_ArrowHourglass,
439         IMP_ArrowQuestion,
440         IMP_SizeAll,
441         IMP_Hand,
442         IMP_Custom = 99
443     } InkMousePointer;
444
445     typedef enum {
446         THWC_Integrated = 1,
447         THWC_CursorMustTouch = 2,
448         THWC_HardProximity = 4,
449         THWC_CursorsHavePhysicalIds = 8
450     } TabletHardwareCapabilities;
451
452     [
453         odl,
454         uuid(2DE25EAA-6EF8-42D5-AEE9-185BC81B912D),
455         dual,
456         oleautomation
457     ]
458     interface IInkTablet : IDispatch {
459         [propget] HRESULT Name([out, retval] BSTR* Name);
460         [propget] HRESULT PlugAndPlayId([out, retval] BSTR* Id);
461         [propget] HRESULT MaximumInputRectangle([out, retval] IInkRectangle** Rectangle);
462         [propget] HRESULT HardwareCapabilities(
463             [out, retval] TabletHardwareCapabilities* Capabilities);
464         HRESULT IsPacketPropertySupported(
465             [in] BSTR packetPropertyName,
466             [out, retval] VARIANT_BOOL* Supported);
467         HRESULT GetPropertyMetrics(
468             [in] BSTR propertyName,
469             [out] long* Minimum,
470             [out] long* Maximum,
471             [out] TabletPropertyMetricUnit* Units,
472             [out] single* Resolution);
473     };
474
475     typedef enum {
476         ICBS_Unavailable,
477         ICBS_Up,
478         ICBS_Down
479     } InkCursorButtonState;
480
481     [
482         odl,
483         uuid(85EF9417-1D59-49B2-A13C-702C85430894),
484         dual,
485         oleautomation
486     ]
487     interface IInkCursorButton : IDispatch {
488         [propget] HRESULT Name([out, retval] BSTR* Name);
489         [propget] HRESULT Id([out, retval] BSTR* Id);
490         [propget] HRESULT State([out, retval] InkCursorButtonState* CurrentState);
491     };
492
493     [
494         odl,
495         uuid(3671CC40-B624-4671-9FA0-DB119D952D54),
496         dual,
497         oleautomation
498     ]
499     interface IInkCursorButtons : IDispatch {
500         [propget] HRESULT Count([out, retval] long* Count);
501         [propget] HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
502         HRESULT Item(
503             [in] VARIANT Identifier,
504             [out, retval] IInkCursorButton** Button);
505     };
506
507     [
508         odl,
509         uuid(AD30C630-40C5-4350-8405-9C71012FC558),
510         dual,
511         oleautomation
512     ]
513     interface IInkCursor : IDispatch {
514         [id(0x00000000), propget]    HRESULT Name([out, retval] BSTR* Name);
515         [id(0x00000001), propget]    HRESULT Id([out, retval] long* Id);
516         [id(0x00000004), propget]    HRESULT Inverted(
517             [out, retval] VARIANT_BOOL* Status);
518         [id(0x00000002), propget]    HRESULT DrawingAttributes(
519             [out, retval] IInkDrawingAttributes** Attributes);
520         [id(0x00000002), propputref] HRESULT DrawingAttributes(
521             [in] IInkDrawingAttributes* Attributes);
522         [id(0x00000005), propget]    HRESULT Tablet(
523             [out, retval] IInkTablet** Tablet);
524         [id(0x00000003), propget]    HRESULT Buttons(
525             [out, retval] IInkCursorButtons** Buttons);
526     };
527
528     [
529         odl,
530         uuid(A248C1AC-C698-4E06-9E5C-D57F77C7E647),
531         dual,
532         oleautomation
533     ]
534     interface IInkCursors : IDispatch {
535         [propget] HRESULT Count([out, retval] long* Count);
536         [propget] HRESULT _NewEnum([out, retval] IUnknown** _NewEnum);
537         HRESULT Item(
538             [in] long Index,
539             [out, retval] IInkCursor** Cursor);
540     };
541
542     typedef enum {
543         IAG_AllGestures = 0,
544         IAG_NoGesture = 61440,
545         IAG_Scratchout = 61441,
546         IAG_Triangle = 61442,
547         IAG_Square = 61443,
548         IAG_Star = 61444,
549         IAG_Check = 61445,
550         IAG_Curlicue = 61456,
551         IAG_DoubleCurlicue = 61457,
552         IAG_Circle = 61472,
553         IAG_DoubleCircle = 61473,
554         IAG_SemiCircleLeft = 61480,
555         IAG_SemiCircleRight = 61481,
556         IAG_ChevronUp = 61488,
557         IAG_ChevronDown = 61489,
558         IAG_ChevronLeft = 61490,
559         IAG_ChevronRight = 61491,
560         IAG_ArrowUp = 61496,
561         IAG_ArrowDown = 61497,
562         IAG_ArrowLeft = 61498,
563         IAG_ArrowRight = 61499,
564         IAG_Up = 61528,
565         IAG_Down = 61529,
566         IAG_Left = 61530,
567         IAG_Right = 61531,
568         IAG_UpDown = 61536,
569         IAG_DownUp = 61537,
570         IAG_LeftRight = 61538,
571         IAG_RightLeft = 61539,
572         IAG_UpLeftLong = 61540,
573         IAG_UpRightLong = 61541,
574         IAG_DownLeftLong = 61542,
575         IAG_DownRightLong = 61543,
576         IAG_UpLeft = 61544,
577         IAG_UpRight = 61545,
578         IAG_DownLeft = 61546,
579         IAG_DownRight = 61547,
580         IAG_LeftUp = 61548,
581         IAG_LeftDown = 61549,
582         IAG_RightUp = 61550,
583         IAG_RightDown = 61551,
584         IAG_Exclamation = 61604,
585         IAG_Tap = 61680,
586         IAG_DoubleTap = 61681
587     } InkApplicationGesture;
588
589     typedef enum {
590         ICEI_DefaultEvents = -1,
591         ICEI_CursorDown = 0,
592         ICEI_Stroke,
593         ICEI_NewPackets,
594         ICEI_NewInAirPackets,
595         ICEI_CursorButtonDown,
596         ICEI_CursorButtonUp,
597         ICEI_CursorInRange,
598         ICEI_CursorOutOfRange,
599         ICEI_SystemGesture,
600         ICEI_TabletAdded,
601         ICEI_TabletRemoved,
602         ICEI_MouseDown,
603         ICEI_MouseMove,
604         ICEI_MouseUp,
605         ICEI_MouseWheel,
606         ICEI_DblClick,
607         ICEI_AllEvents
608     } InkCollectorEventInterest;
609
610     [
611         odl,
612         uuid(F0F060B5-8B1F-4A7C-89EC-880692588A4F),
613         dual,
614         oleautomation
615     ]
616     interface IInkCollector : IDispatch {
617         [id(0x00000002), propget]    HRESULT hWnd(
618             [out, retval] long* CurrentWindow);
619         [id(0x00000002), propput]    HRESULT hWnd([in] long CurrentWindow);
620         [id(0x00000001), propget]    HRESULT Enabled(
621             [out, retval] VARIANT_BOOL* Collecting);
622         [id(0x00000001), propput]    HRESULT Enabled(
623             [in] VARIANT_BOOL Collecting);
624         [id(0x00000005), propget]    HRESULT DefaultDrawingAttributes(
625             [out, retval] IInkDrawingAttributes** CurrentAttributes);
626         [id(0x00000005), propputref] HRESULT DefaultDrawingAttributes(
627             [in] IInkDrawingAttributes* CurrentAttributes);
628         [id(0x00000006), propget]    HRESULT Renderer(
629             [out, retval] IInkRenderer** CurrentInkRenderer);
630         [id(0x00000006), propputref] HRESULT Renderer(
631             [in] IInkRenderer* CurrentInkRenderer);
632         [id(0x00000007), propget]    HRESULT Ink([out, retval] IInkDisp** Ink);
633         [id(0x00000007), propputref] HRESULT Ink([in] IInkDisp* Ink);
634         [id(0x00000008), propget]    HRESULT AutoRedraw(
635             [out, retval] VARIANT_BOOL* AutoRedraw);
636         [id(0x00000008), propput]    HRESULT AutoRedraw(
637             [in] VARIANT_BOOL AutoRedraw);
638         [id(0x00000009), propget]    HRESULT CollectingInk(
639             [out, retval] VARIANT_BOOL* Collecting);
640         [id(0x0000001c), propget]    HRESULT CollectionMode(
641             [out, retval] InkCollectionMode* Mode);
642         [id(0x0000001c), propput]    HRESULT CollectionMode(
643             [in] InkCollectionMode Mode);
644         [id(0x0000001f), propget]    HRESULT DynamicRendering(
645             [out, retval] VARIANT_BOOL* Enabled);
646         [id(0x0000001f), propput]    HRESULT DynamicRendering(
647             [in] VARIANT_BOOL Enabled);
648         [id(0x00000020), propget]    HRESULT DesiredPacketDescription(
649             [out, retval] VARIANT* PacketGuids);
650         [id(0x00000020), propput]    HRESULT DesiredPacketDescription(
651             [in] VARIANT PacketGuids);
652         [id(0x00000023), propget]    HRESULT MouseIcon(
653             [out, retval] IPictureDisp** MouseIcon);
654         [id(0x00000023), propput]    HRESULT MouseIcon(
655             [in] IPictureDisp* MouseIcon);
656         [id(0x00000023), propputref] HRESULT MouseIcon(
657             [in] IPictureDisp* MouseIcon);
658         [id(0x00000024), propget]    HRESULT MousePointer(
659             [out, retval] InkMousePointer* MousePointer);
660         [id(0x00000024), propput]    HRESULT MousePointer(
661             [in] InkMousePointer MousePointer);
662         [id(0x00000014), propget]    HRESULT Cursors(
663             [out, retval] IInkCursors** Cursors);
664         [id(0x00000015), propget]    HRESULT MarginX(
665             [out, retval] long* MarginX);
666         [id(0x00000015), propput]    HRESULT MarginX([in] long MarginX);
667         [id(0x00000016), propget]    HRESULT MarginY(
668             [out, retval] long* MarginY);
669         [id(0x00000016), propput]    HRESULT MarginY([in] long MarginY);
670         [id(0x00000019), propget]    HRESULT Tablet(
671             [out, retval] IInkTablet** SingleTablet);
672         [id(0x00000026), propget]    HRESULT SupportHighContrastInk(
673             [out, retval] VARIANT_BOOL* Support);
674         [id(0x00000026), propput]    HRESULT SupportHighContrastInk(
675             [in] VARIANT_BOOL Support);
676         [id(0x0000001d)]             HRESULT SetGestureStatus(
677             [in] InkApplicationGesture Gesture,
678             [in] VARIANT_BOOL Listen);
679         [id(0x0000001e)]             HRESULT GetGestureStatus(
680             [in] InkApplicationGesture Gesture,
681             [out, retval] VARIANT_BOOL* Listening);
682         [id(0x00000018)]             HRESULT GetWindowInputRectangle(
683             [in, out] IInkRectangle** WindowInputRectangle);
684         [id(0x00000017)]             HRESULT SetWindowInputRectangle(
685             [in] IInkRectangle* WindowInputRectangle);
686         [id(0x0000001a)]             HRESULT SetAllTabletsMode(
687             [in, optional, defaultvalue(-1)] VARIANT_BOOL UseMouseForInput);
688         [id(0x0000001b)]             HRESULT SetSingleTabletIntegratedMode(
689             [in] IInkTablet* Tablet);
690         [id(0x0000000b)]             HRESULT GetEventInterest(
691             [in] InkCollectorEventInterest EventId,
692             [out, retval] VARIANT_BOOL* Listen);
693         [id(0x0000000a)]             HRESULT SetEventInterest(
694             [in] InkCollectorEventInterest EventId,
695             [in] VARIANT_BOOL Listen);
696     };
697 };