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