[CSRSRV]: Fix two DPRINTs.
[reactos.git] / reactos / include / psdk / 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 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
189 cpp_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;
199 cpp_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, optional, defaultvalue(0)] single x,
215 [in, optional, 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, optional, 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, optional, 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, optional, defaultvalue(0)] long Index,
370 [in, optional, defaultvalue(-1)] long Count,
371 [out, retval] VARIANT* Points);
372 [id(0x00000017)] HRESULT SetPoints(
373 [in] VARIANT Points,
374 [in, optional, defaultvalue(0)] long Index,
375 [in, optional, defaultvalue(-1)] long Count,
376 [out, retval] long* NumberOfPointsSet);
377 [id(0x00000018)] HRESULT GetPacketData(
378 [in, optional, defaultvalue(0)] long Index,
379 [in, optional, defaultvalue(-1)] long Count,
380 [out, retval] VARIANT* PacketData);
381 [id(0x00000019)] HRESULT GetPacketValuesByProperty(
382 [in] BSTR propertyName,
383 [in, optional, defaultvalue(0)] long Index,
384 [in, optional, defaultvalue(-1)] long Count,
385 [out, retval] VARIANT* PacketValues);
386 [id(0x0000001a)] HRESULT SetPacketValuesByProperty(
387 [in] BSTR bstrPropertyName,
388 [in] VARIANT PacketValues,
389 [in, optional, defaultvalue(0)] long Index,
390 [in, optional, defaultvalue(-1)] long Count,
391 [out, retval] long* NumberOfPacketsSet);
392 [id(0x0000001b)] HRESULT GetFlattenedBezierPoints(
393 [in, optional, defaultvalue(0)] long FittingError,
394 [out, retval] VARIANT* FlattenedBezierPoints);
395 [id(0x0000001d)] HRESULT Transform(
396 [in] IInkTransform* Transform,
397 [in, optional, 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, optional, defaultvalue(0)] single x,
406 [in, optional, 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, optional, 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, optional, 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, optional, defaultvalue(0)] single x,
725 [in, optional, defaultvalue(0)] single y);
726 HRESULT ScaleTransform(
727 [in] single HorizontalMultiplier,
728 [in] single VerticalMultiplier,
729 [in, optional, 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, optional, 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 };