|  | /* Copyright (C) 2007 C John Klehm | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | import "oaidl.idl"; | 
|  | import "ocidl.idl"; | 
|  |  | 
|  | [ | 
|  | uuid(7D868ACD-1A5D-4A47-A247-F39741353012), | 
|  | version(1.0) | 
|  | ] | 
|  | library MSINKAUTLib | 
|  | { | 
|  | importlib("stdole2.tlb"); | 
|  |  | 
|  | typedef float single; | 
|  |  | 
|  | typedef enum InkBoundingBoxMode { | 
|  | IBBM_Default = 0, | 
|  | IBBM_NoCurveFit = 1, | 
|  | IBBM_CurveFit = 2, | 
|  | IBBM_PointsOnly = 3, | 
|  | IBBM_Union = 4 | 
|  | } InkBoundingBoxMode; | 
|  |  | 
|  | typedef enum InkExtractFlags { | 
|  | IEF_CopyFromOriginal = 0x0, | 
|  | IEF_RemoveFromOriginal = 0x1, | 
|  | IEF_Default = IEF_RemoveFromOriginal | 
|  | } InkExtractFlags; | 
|  |  | 
|  | typedef enum InkPersistenceFormat { | 
|  | IPF_InkSerializeFormat = 0, | 
|  | IPF_Base64InkSerializedFormat = 1, | 
|  | IPF_GIF = 2, | 
|  | IPF_Base64GIF = 3 | 
|  | } InkPersistenceFormat; | 
|  |  | 
|  | typedef enum InkPersistenceCompressionMode | 
|  | { | 
|  | IPCM_Default = 0, | 
|  | IPCM_MaximumCompression = 1, | 
|  | IPCM_NoCompression = 2 | 
|  | } InkPersistenceCompressionMode; | 
|  |  | 
|  | typedef enum InkPenTip { | 
|  | IPT_Ball = 0, | 
|  | IPT_Rectangle = 1 | 
|  | } InkPenTip; | 
|  |  | 
|  | typedef enum InkRasterOperation { | 
|  | IRO_Black = 1, | 
|  | IRO_NotMergePen, | 
|  | IRO_MaskNotPen, | 
|  | IRO_NotCopyPen, | 
|  | IRO_MaskPenNot, | 
|  | IRO_Not, | 
|  | IRO_XOrPen, | 
|  | IRO_NotMaskPen, | 
|  | IRO_MaskPen, | 
|  | IRO_NotXOrPen, | 
|  | IRO_NoOperation, | 
|  | IRO_MergeNotPen, | 
|  | IRO_CopyPen, | 
|  | IRO_MergePenNot, | 
|  | IRO_MergePen, | 
|  | IRO_White | 
|  | } InkRasterOperation; | 
|  |  | 
|  | typedef enum InkClipboardModes { | 
|  | ICB_Copy = 0, | 
|  | ICB_Cut = 0x1, | 
|  | ICB_DelayedCopy = 0x20, | 
|  | ICB_ExtractOnly = 0x30, | 
|  | ICB_Default = ICB_Copy | 
|  | } InkClipboardModes; | 
|  |  | 
|  | typedef enum InkClipboardFormats { | 
|  | ICF_None = 0, | 
|  | ICF_InkSerializedFormat = 0x1, | 
|  | ICF_SketchInk = 0x2, | 
|  | ICF_TextInk = 0x6, | 
|  | ICF_EnhancedMetafile = 0x8, | 
|  | ICF_Metafile = 0x20, | 
|  | ICF_Bitmap = 0x40, | 
|  | ICF_PasteMask = 0x7, | 
|  | ICF_CopyMask = 0x7f, | 
|  | ICF_Default = ICF_CopyMask | 
|  | } InkClipboardFormats; | 
|  |  | 
|  | typedef enum InkRecognitionConfidence | 
|  | { | 
|  | IRC_Strong = 0, | 
|  | IRC_Intermediate = 1, | 
|  | IRC_Poor = 2 | 
|  | } InkRecognitionConfidence; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(DB489209-B7C3-411D-90F6-1548CFFF271E), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkExtendedProperty : IDispatch { | 
|  | [id(0x00000001), propget] HRESULT Guid([out, retval] BSTR* Guid); | 
|  | [id(0x00000002), propget] HRESULT Data([out, retval] VARIANT* Data); | 
|  | [id(0x00000002), propput] HRESULT Data([in] VARIANT Data); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(89F2A8BE-95A9-4530-8B8F-88E971E3E25F), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkExtendedProperties : IDispatch { | 
|  | HRESULT Count([out, retval] long* Count); | 
|  | HRESULT _NewEnum([out, retval] IUnknown** _NewEnum); | 
|  | HRESULT Item( | 
|  | [in] VARIANT Identifier, | 
|  | [out, retval] IInkExtendedProperty** Item); | 
|  | HRESULT Add( | 
|  | [in] BSTR Guid, | 
|  | [in] VARIANT Data, | 
|  | [out, retval] IInkExtendedProperty** InkExtendedProperty); | 
|  | HRESULT Remove([in] VARIANT Identifier); | 
|  | HRESULT Clear(); | 
|  | HRESULT DoesPropertyExist( | 
|  | [in] BSTR Guid, | 
|  | [out, retval] VARIANT_BOOL* DoesPropertyExist); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(BF519B75-0A15-4623-ADC9-C00D436A8092), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkDrawingAttributes : IDispatch { | 
|  | [id(0x00000002), propget] HRESULT Color( | 
|  | [out, retval] long* CurrentColor); | 
|  | [id(0x00000002), propput] HRESULT Color([in] long CurrentColor); | 
|  | [id(0x00000003), propget] HRESULT Width( | 
|  | [out, retval] single* CurrentWidth); | 
|  | [id(0x00000003), propput] HRESULT Width([in] single CurrentWidth); | 
|  | [id(0x00000001), propget] HRESULT Height( | 
|  | [out, retval] single* CurrentHeight); | 
|  | [id(0x00000001), propput] HRESULT Height([in] single CurrentHeight); | 
|  | [id(0x00000004), propget] HRESULT FitToCurve( | 
|  | [out, retval] VARIANT_BOOL* Flag); | 
|  | [id(0x00000004), propput] HRESULT FitToCurve([in] VARIANT_BOOL Flag); | 
|  | [id(0x00000005), propget] HRESULT IgnorePressure( | 
|  | [out, retval] VARIANT_BOOL* Flag); | 
|  | [id(0x00000005), propput] HRESULT IgnorePressure( | 
|  | [in] VARIANT_BOOL Flag); | 
|  | [id(0x00000006), propget] HRESULT AntiAliased( | 
|  | [out, retval] VARIANT_BOOL* Flag); | 
|  | [id(0x00000006), propput] HRESULT AntiAliased([in] VARIANT_BOOL Flag); | 
|  | [id(0x00000007), propget] HRESULT Transparency( | 
|  | [out, retval] long* CurrentTransparency); | 
|  | [id(0x00000007), propput] HRESULT Transparency( | 
|  | [in] long CurrentTransparency); | 
|  | [id(0x00000008), propget] HRESULT RasterOperation( | 
|  | [out, retval] InkRasterOperation* CurrentRasterOperation); | 
|  | [id(0x00000008), propput] HRESULT RasterOperation( | 
|  | [in] InkRasterOperation CurrentRasterOperation); | 
|  | [id(0x00000009), propget] HRESULT PenTip( | 
|  | [out, retval] InkPenTip* CurrentPenTip); | 
|  | [id(0x00000009), propput] HRESULT PenTip([in] InkPenTip CurrentPenTip); | 
|  | [id(0x0000000b), propget] HRESULT ExtendedProperties( | 
|  | [out, retval] IInkExtendedProperties** Properties); | 
|  | [id(0x0000000a)]          HRESULT Clone( | 
|  | [out, retval] IInkDrawingAttributes** DrawingAttributes); | 
|  | }; | 
|  |  | 
|  | cpp_quote("#ifndef _WINGDI_") | 
|  | /* already defined in wingdi.h but needed for WIDL */ | 
|  | typedef struct tagXFORM { | 
|  | single eM11; | 
|  | single eM12; | 
|  | single eM21; | 
|  | single eM22; | 
|  | single eDx; | 
|  | single eDy; | 
|  | } XFORM; | 
|  | cpp_quote("#endif /* _WINGDI_ */") | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(615F1D43-8703-4565-88E2-8201D2ECD7B7), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkTransform : IDispatch { | 
|  | [id(0x00000001)] HRESULT Reset(); | 
|  | [id(0x00000002)] HRESULT Translate( | 
|  | [in] single HorizontalComponent, | 
|  | [in] single VerticalComponent); | 
|  | [id(0x00000003)] HRESULT Rotate( | 
|  | [in] single Degrees, | 
|  | [in, optional, defaultvalue(0)] single x, | 
|  | [in, optional, defaultvalue(0)] single y); | 
|  | [id(0x00000004)] HRESULT Reflect( | 
|  | [in] VARIANT_BOOL Horizontally, | 
|  | [in] VARIANT_BOOL Vertically); | 
|  | [id(0x00000005)] HRESULT Shear( | 
|  | [in] single HorizontalComponent, | 
|  | [in] single VerticalComponent); | 
|  | [id(0x00000006)] HRESULT ScaleTransform( | 
|  | [in] single HorizontalMultiplier, | 
|  | [in] single VerticalMultiplier); | 
|  | [id(0x0000000d)] HRESULT GetTransform( | 
|  | [out] single* eM11, | 
|  | [out] single* eM12, | 
|  | [out] single* eM21, | 
|  | [out] single* eM22, | 
|  | [out] single* eDx, | 
|  | [out] single* eDy); | 
|  | [id(0x0000000e)] HRESULT SetTransform( | 
|  | [in] single eM11, | 
|  | [in] single eM12, | 
|  | [in] single eM21, | 
|  | [in] single eM22, | 
|  | [in] single eDx, | 
|  | [in] single eDy); | 
|  | [id(0x00000007), propget, hidden] HRESULT eM11( | 
|  | [out, retval] single* Value); | 
|  | [id(0x00000007), propput, hidden] HRESULT eM11([in] single Value); | 
|  | [id(0x00000008), propget, hidden] HRESULT eM12( | 
|  | [out, retval] single* Value); | 
|  | [id(0x00000008), propput, hidden] HRESULT eM12([in] single Value); | 
|  | [id(0x00000009), propget, hidden] HRESULT eM21( | 
|  | [out, retval] single* Value); | 
|  | [id(0x00000009), propput, hidden] HRESULT eM21([in] single Value); | 
|  | [id(0x0000000a), propget, hidden] HRESULT eM22( | 
|  | [out, retval] single* Value); | 
|  | [id(0x0000000a), propput, hidden] HRESULT eM22([in] single Value); | 
|  | [id(0x0000000b), propget, hidden] HRESULT eDx( | 
|  | [out, retval] single* Value); | 
|  | [id(0x0000000b), propput, hidden] HRESULT eDx([in] single Value); | 
|  | [id(0x0000000c), propget, hidden] HRESULT eDy( | 
|  | [out, retval] single* Value); | 
|  | [id(0x0000000c), propput, hidden] HRESULT eDy([in] single Value); | 
|  | [id(0x0000000f), propget, hidden] HRESULT Data( | 
|  | [out, retval] XFORM* XFORM); | 
|  | [id(0x0000000f), propput, hidden] HRESULT Data([in] XFORM XFORM); | 
|  | }; | 
|  |  | 
|  | interface IInkDisp; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(9794FF82-6071-4717-8A8B-6AC7C64A686E), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkRectangle | 
|  | { | 
|  | [id(1), propget] HRESULT Top([out, retval] long* Units); | 
|  | [id(1), propput] HRESULT Top([in] long Units); | 
|  | [id(2), propget] HRESULT Left([out, retval] long* Units); | 
|  | [id(2), propput] HRESULT Left([in] long Units); | 
|  | [id(3), propget] HRESULT Bottom([out, retval] long* Units); | 
|  | [id(3), propput] HRESULT Bottom([in] long Units); | 
|  | [id(4), propget] HRESULT Right([out, retval] long* Units); | 
|  | [id(4), propput] HRESULT Right([in] long Units); | 
|  | [id(7), propget] HRESULT Data([out, retval] RECT* Rect); | 
|  | [id(7), propput] HRESULT Data([in] RECT Rect); | 
|  | [id(5)] HRESULT GetRectangle( | 
|  | [out] long* Top, | 
|  | [out] long* Left, | 
|  | [out] long* Bottom, | 
|  | [out] long* Right); | 
|  | [id(6)] HRESULT SetRectangle( | 
|  | [in] long Top, | 
|  | [in] long Left, | 
|  | [in] long Bottom, | 
|  | [in] long Right); | 
|  | }; | 
|  |  | 
|  | interface IInkStrokes; | 
|  |  | 
|  | typedef enum { | 
|  | TPMU_Default, | 
|  | TPMU_Inches, | 
|  | TPMU_Centimeters, | 
|  | TPMU_Degrees, | 
|  | TPMU_Radians, | 
|  | TPMU_Seconds, | 
|  | TPMU_Pounds, | 
|  | TPMU_Grams | 
|  | } TabletPropertyMetricUnit; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(43242FEA-91D1-4A72-963E-FBB91829CFA2), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkStrokeDisp : IDispatch { | 
|  | [id(0x00000002), propget]    HRESULT Id([out, retval] long* Id); | 
|  | [id(0x0000000d), propget]    HRESULT BezierPoints( | 
|  | [out, retval] VARIANT* Points); | 
|  | [id(0x00000004), propget]    HRESULT DrawingAttributes( | 
|  | [out, retval] IInkDrawingAttributes** DrawAttrs); | 
|  | [id(0x00000004), propputref] HRESULT DrawingAttributes( | 
|  | [in] IInkDrawingAttributes* DrawAttrs); | 
|  | [id(0x0000000c), propget]    HRESULT Ink([out, retval] IInkDisp** Ink); | 
|  | [id(0x0000000b), propget]    HRESULT ExtendedProperties( | 
|  | [out, retval] IInkExtendedProperties** Properties); | 
|  | [id(0x0000000e), propget]    HRESULT PolylineCusps( | 
|  | [out, retval] VARIANT* Cusps); | 
|  | [id(0x0000000f), propget]    HRESULT BezierCusps( | 
|  | [out, retval] VARIANT* Cusps); | 
|  | [id(0x00000010), propget]    HRESULT SelfIntersections( | 
|  | [out, retval] VARIANT* Intersections); | 
|  | [id(0x00000011), propget]    HRESULT PacketCount( | 
|  | [out, retval] long* plCount); | 
|  | [id(0x00000012), propget]    HRESULT PacketSize( | 
|  | [out, retval] long* plSize); | 
|  | [id(0x00000013), propget]    HRESULT PacketDescription( | 
|  | [out, retval] VARIANT* PacketDescription); | 
|  | [id(0x00000014), propget]    HRESULT Deleted( | 
|  | [out, retval] VARIANT_BOOL* Deleted); | 
|  | [id(0x00000003)]             HRESULT GetBoundingBox( | 
|  | [in, optional, defaultvalue(0)] InkBoundingBoxMode BoundingBoxMode, | 
|  | [out, retval] IInkRectangle** Rectangle); | 
|  | [id(0x00000005)]             HRESULT FindIntersections( | 
|  | [in] IInkStrokes* Strokes, | 
|  | [out, retval] VARIANT* Intersections); | 
|  | [id(0x00000006)]             HRESULT GetRectangleIntersections( | 
|  | [in] IInkRectangle* Rectangle, | 
|  | [out, retval] VARIANT* Intersections); | 
|  | [id(0x00000007)]             HRESULT Clip( | 
|  | [in] IInkRectangle* Rectangle); | 
|  | [id(0x00000008)]             HRESULT HitTestCircle( | 
|  | [in] long x, | 
|  | [in] long y, | 
|  | [in] single radius, | 
|  | [out, retval] VARIANT_BOOL* Intersects); | 
|  | [id(0x00000009)]             HRESULT NearestPoint( | 
|  | [in] long x, | 
|  | [in] long y, | 
|  | [in, out, optional, defaultvalue(0)] single* Distance, | 
|  | [out, retval] single* Point); | 
|  | [id(0x0000000a)]             HRESULT Split( | 
|  | [in] single SplitAt, | 
|  | [out, retval] IInkStrokeDisp** NewStroke); | 
|  | [id(0x00000015)]             HRESULT GetPacketDescriptionPropertyMetrics( | 
|  | [in] BSTR propertyName, | 
|  | [out] long* Minimum, | 
|  | [out] long* Maximum, | 
|  | [out] TabletPropertyMetricUnit* Units, | 
|  | [out] single* Resolution); | 
|  | [id(0x00000016)]             HRESULT GetPoints( | 
|  | [in, optional, defaultvalue(0)] long Index, | 
|  | [in, optional, defaultvalue(-1)] long Count, | 
|  | [out, retval] VARIANT* Points); | 
|  | [id(0x00000017)]             HRESULT SetPoints( | 
|  | [in] VARIANT Points, | 
|  | [in, optional, defaultvalue(0)] long Index, | 
|  | [in, optional, defaultvalue(-1)] long Count, | 
|  | [out, retval] long* NumberOfPointsSet); | 
|  | [id(0x00000018)]             HRESULT GetPacketData( | 
|  | [in, optional, defaultvalue(0)] long Index, | 
|  | [in, optional, defaultvalue(-1)] long Count, | 
|  | [out, retval] VARIANT* PacketData); | 
|  | [id(0x00000019)]             HRESULT GetPacketValuesByProperty( | 
|  | [in] BSTR propertyName, | 
|  | [in, optional, defaultvalue(0)] long Index, | 
|  | [in, optional, defaultvalue(-1)] long Count, | 
|  | [out, retval] VARIANT* PacketValues); | 
|  | [id(0x0000001a)]             HRESULT SetPacketValuesByProperty( | 
|  | [in] BSTR bstrPropertyName, | 
|  | [in] VARIANT PacketValues, | 
|  | [in, optional, defaultvalue(0)] long Index, | 
|  | [in, optional, defaultvalue(-1)] long Count, | 
|  | [out, retval] long* NumberOfPacketsSet); | 
|  | [id(0x0000001b)]             HRESULT GetFlattenedBezierPoints( | 
|  | [in, optional, defaultvalue(0)] long FittingError, | 
|  | [out, retval] VARIANT* FlattenedBezierPoints); | 
|  | [id(0x0000001d)]             HRESULT Transform( | 
|  | [in] IInkTransform* Transform, | 
|  | [in, optional, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth); | 
|  | [id(0x0000001c)]             HRESULT ScaleToRectangle( | 
|  | [in] IInkRectangle* Rectangle); | 
|  | [id(0x0000001e)]             HRESULT Move( | 
|  | [in] single HorizontalComponent, | 
|  | [in] single VerticalComponent); | 
|  | [id(0x0000001f)]             HRESULT Rotate( | 
|  | [in] single Degrees, | 
|  | [in, optional, defaultvalue(0)] single x, | 
|  | [in, optional, defaultvalue(0)] single y); | 
|  | [id(0x00000020)]             HRESULT Shear( | 
|  | [in] single HorizontalMultiplier, | 
|  | [in] single VerticalMultiplier); | 
|  | [id(0x00000021)]             HRESULT ScaleTransform( | 
|  | [in] single HorizontalMultiplier, | 
|  | [in] single VerticalMultiplier); | 
|  | }; | 
|  |  | 
|  | interface IInkRecognitionResult; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(F1F4C9D8-590A-4963-B3AE-1935671BB6F3), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkStrokes : IDispatch { | 
|  | [propget]                   HRESULT Count( | 
|  | [out, retval] long *Count); | 
|  | [propget, restricted]       HRESULT _NewEnum( | 
|  | [out, retval] IUnknown **_NewEnum); | 
|  | [propget]                   HRESULT Ink( | 
|  | [out, retval] IInkDisp **Ink); | 
|  | [propget]                   HRESULT RecognitionResult( | 
|  | [out, retval] IInkRecognitionResult **RecognitionResult); | 
|  | HRESULT ToString( | 
|  | [out, retval] BSTR *ToString); | 
|  | HRESULT Item( | 
|  | [in] long Index, | 
|  | [out, retval] IInkStrokeDisp **Stroke); | 
|  | HRESULT Add( | 
|  | [in] IInkStrokeDisp *InkStroke); | 
|  | HRESULT AddStrokes( | 
|  | [in] IInkStrokes *InkStrokes); | 
|  | HRESULT Remove( | 
|  | [in] IInkStrokeDisp *InkStroke); | 
|  | HRESULT RemoveStrokes( | 
|  | [in] IInkStrokes *InkStrokes); | 
|  | HRESULT ModifyDrawingAttributes( | 
|  | [in] IInkDrawingAttributes *DrawAttrs); | 
|  | HRESULT GetBoundingBox( | 
|  | [in] InkBoundingBoxMode BoundingBoxMode, | 
|  | [out, retval] IInkRectangle **BoundingBox); | 
|  | HRESULT Transform( | 
|  | [in] IInkTransform *Transform, | 
|  | [in] VARIANT_BOOL ApplyOnPenWidth); | 
|  | HRESULT ScaleToRectangle( | 
|  | [in] IInkRectangle *Rectangle); | 
|  | HRESULT Move( | 
|  | [in] float HorizontalComponent, | 
|  | [in] float VerticalComponent); | 
|  | HRESULT Rotate( | 
|  | [in] float Degrees, | 
|  | [in] float x, | 
|  | [in] float y); | 
|  | HRESULT Shear( | 
|  | [in] float HorizontalMultiplier, | 
|  | [in] float VerticalMultiplier); | 
|  | HRESULT ScaleTransform( | 
|  | [in] float HorizontalMultiplier, | 
|  | [in] float VerticalMultiplier); | 
|  | HRESULT Clip( | 
|  | [in] IInkRectangle *Rectangle); | 
|  | HRESULT RemoveRecognitionResult(); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(7E23A88F-C30E-420f-9BDB-28902543F0C1), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkCustomStrokes : IDispatch { | 
|  | [propget]               HRESULT Count( | 
|  | [out, retval] long *Count); | 
|  | [propget]               HRESULT _NewEnum( | 
|  | [out, retval] IUnknown **_NewEnum); | 
|  | HRESULT Item( | 
|  | [in] VARIANT Identifier, | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | HRESULT Add( | 
|  | [in] BSTR Name, | 
|  | [in] IInkStrokes *Strokes); | 
|  | HRESULT Remove( | 
|  | [in] VARIANT Identifier); | 
|  | HRESULT Clear(); | 
|  | }; | 
|  |  | 
|  | interface IInkRecognitionAlternate; | 
|  | interface IInkRecognitionAlternates; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(3BC129A8-86CD-45ad-BDE8-E0D32D61C16D), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkRecognitionResult : IDispatch { | 
|  | [propget]               HRESULT TopString( | 
|  | [out, retval] BSTR *TopString); | 
|  | [propget]               HRESULT TopAlternate( | 
|  | [out, retval] IInkRecognitionAlternate **TopAlternate); | 
|  | [propget]               HRESULT TopConfidence( | 
|  | [out, retval] InkRecognitionConfidence *TopConfidence); | 
|  | [propget]               HRESULT Strokes( | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | HRESULT AlternatesFromSelection( | 
|  | [in] long selectionStart, | 
|  | [in] long selectionLength, | 
|  | [in] long maximumAlternates, | 
|  | [out, retval] IInkRecognitionAlternates **AlternatesFromSelection); | 
|  | HRESULT ModifyTopAlternate( | 
|  | [in] IInkRecognitionAlternate *Alternate); | 
|  | HRESULT SetResultOnStrokes(); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(B7E660AD-77E4-429b-ADDA-873780D1FC4A), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkRecognitionAlternate : IDispatch { | 
|  | [propget]               HRESULT String( | 
|  | [out, retval] BSTR *RecoString); | 
|  | [propget]               HRESULT Confidence( | 
|  | [out, retval] InkRecognitionConfidence *Confidence); | 
|  | [propget]               HRESULT Baseline( | 
|  | [out, retval] VARIANT *Baseline); | 
|  | [propget]               HRESULT Midline( | 
|  | [out, retval] VARIANT *Midline); | 
|  | [propget]               HRESULT Ascender( | 
|  | [out, retval] VARIANT *Ascender); | 
|  | [propget]               HRESULT Descender( | 
|  | [out, retval] VARIANT *Descender); | 
|  | [propget]               HRESULT LineNumber( | 
|  | [out, retval] long *LineNumber); | 
|  | [propget]               HRESULT Strokes( | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | [propget]               HRESULT LineAlternates( | 
|  | [out, retval] IInkRecognitionAlternates **LineAlternates); | 
|  | [propget]               HRESULT ConfidenceAlternates( | 
|  | [out, retval] IInkRecognitionAlternates **ConfidenceAlternates); | 
|  | HRESULT GetStrokesFromStrokeRanges( | 
|  | [in] IInkStrokes *Stroke, | 
|  | [out, retval] IInkStrokes **GetStrokesFromTextRange); | 
|  | HRESULT GetStrokesFromTextRange( | 
|  | [in, out] long *selectionStart, | 
|  | [in, out] long *selectionLength, | 
|  | [out, retval] IInkStrokes **GetStrokesFromTextRange); | 
|  | HRESULT GetTextRangeFromStrokes( | 
|  | [in] IInkStrokes *Strokes, | 
|  | [in, out] long *selectionStart, | 
|  | [in, out] long *selectionLength); | 
|  | HRESULT AlternatesWithConstantPropertyValues( | 
|  | [in] BSTR PropertyType, | 
|  | [out, retval] IInkRecognitionAlternates **AlternatesWithConstantPropertyValues); | 
|  | HRESULT GetPropertyValue( | 
|  | [in] BSTR PropertyType, | 
|  | [out, retval] VARIANT *PropertyValue); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(286A167F-9F19-4c61-9D53-4F07BE622B84), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkRecognitionAlternates : IDispatch { | 
|  | [propget]                   HRESULT Count( | 
|  | [out, retval] long *Count); | 
|  | [propget, restricted]       HRESULT _NewEnum( | 
|  | [out, retval] IUnknown **_NewEnum); | 
|  | [propget]                   HRESULT Strokes( | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | HRESULT Item( | 
|  | [in] long Index, | 
|  | [out, retval] IInkRecognitionAlternate **InkRecoAlternate); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(9D398FA0-C4E2-4fcd-9973-975CAAF47EA6), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkDisp : IDispatch { | 
|  | [propget]               HRESULT Strokes( | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | [propget]               HRESULT ExtendedProperties( | 
|  | [out, retval] IInkExtendedProperties **Properties); | 
|  | [propget]               HRESULT Dirty( | 
|  | [out, retval] VARIANT_BOOL *Dirty); | 
|  | [propput]               HRESULT Dirty( | 
|  | [in] VARIANT_BOOL Dirty); | 
|  | [propget]               HRESULT CustomStrokes( | 
|  | [out, retval] IInkCustomStrokes **CustomStrokes); | 
|  | HRESULT GetBoundingBox( | 
|  | [in] InkBoundingBoxMode BoundingBoxMode, | 
|  | [out] IInkRectangle **Rectangle); | 
|  | HRESULT DeleteStrokes( | 
|  | [in, unique] IInkStrokes *Strokes); | 
|  | HRESULT DeleteStroke( | 
|  | [in] IInkStrokeDisp *Stroke); | 
|  | HRESULT ExtractStrokes( | 
|  | [in] IInkStrokes *Strokes, | 
|  | [in] InkExtractFlags ExtractFlags, | 
|  | [out, retval] IInkDisp **ExtractedInk); | 
|  | HRESULT ExtractWithRectangle( | 
|  | [in] IInkRectangle *Rectangle, | 
|  | [in] InkExtractFlags ExtractFlags, | 
|  | [out, retval] IInkDisp **ExtractedInk); | 
|  | HRESULT Clip( | 
|  | [in] IInkRectangle *Rectangle); | 
|  | HRESULT Clone( | 
|  | [out, retval] IInkDisp **NewInk); | 
|  | HRESULT HitTestCircle( | 
|  | [in] long X, | 
|  | [in] long Y, | 
|  | [in] float radius, | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | HRESULT HitTestWithRectangle( | 
|  | [in] IInkRectangle *SelectionRectangle, | 
|  | [in] float IntersectPercent, | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | HRESULT HitTestWithLasso( | 
|  | [in] VARIANT Points, | 
|  | [in] float IntersectPercent, | 
|  | [in, out, unique] VARIANT *LassoPoints, | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | HRESULT NearestPoint( | 
|  | [in] long X, | 
|  | [in] long Y, | 
|  | [in, out] float *PointOnStroke, | 
|  | [in, out] float *DistanceFromPacket, | 
|  | [out, retval] IInkStrokeDisp **Stroke); | 
|  | HRESULT CreateStrokes( | 
|  | [in] VARIANT StrokeIds, | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | HRESULT AddStrokesAtRectangle( | 
|  | [in] IInkStrokes *SourceStrokes, | 
|  | [in] IInkRectangle *TargetRectangle); | 
|  | HRESULT Save( | 
|  | [in] InkPersistenceFormat PersistenceFormat, | 
|  | [in] InkPersistenceCompressionMode CompressionMode, | 
|  | [out, retval] VARIANT *Data); | 
|  | HRESULT Load( | 
|  | [in] VARIANT Data); | 
|  | HRESULT CreateStroke( | 
|  | [in] VARIANT PacketData, | 
|  | [in] VARIANT PacketDescription, | 
|  | [out, retval] IInkStrokeDisp **Stroke); | 
|  | HRESULT ClipboardCopyWithRectangle( | 
|  | [in] IInkRectangle *Rectangle, | 
|  | [in] InkClipboardFormats ClipboardFormats, | 
|  | [in] InkClipboardModes ClipboardModes, | 
|  | [out, retval] IDataObject **DataObject); | 
|  | HRESULT ClipboardCopy( | 
|  | [in] IInkStrokes *strokes, | 
|  | [in] InkClipboardFormats ClipboardFormats, | 
|  | [in] InkClipboardModes ClipboardModes, | 
|  | [out, retval] IDataObject **DataObject); | 
|  | HRESULT CanPaste( | 
|  | [in] IDataObject *DataObject, | 
|  | [out, retval] VARIANT_BOOL *CanPaste); | 
|  | HRESULT ClipboardPaste( | 
|  | [in] long x, | 
|  | [in] long y, | 
|  | [in, unique] IDataObject *DataObject, | 
|  | [out, retval] IInkStrokes **Strokes); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(E6257A9C-B511-4F4C-A8B0-A7DBC9506B83), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkRenderer : IDispatch { | 
|  | HRESULT GetViewTransform([in] IInkTransform* ViewTransform); | 
|  | HRESULT SetViewTransform([in] IInkTransform* ViewTransform); | 
|  | HRESULT GetObjectTransform([in] IInkTransform* ObjectTransform); | 
|  | HRESULT SetObjectTransform([in] IInkTransform* ObjectTransform); | 
|  | HRESULT Draw( | 
|  | [in] long hDC, | 
|  | [in] IInkStrokes* Strokes); | 
|  | HRESULT DrawStroke( | 
|  | [in] long hDC, | 
|  | [in] IInkStrokeDisp* Stroke, | 
|  | [in, optional, defaultvalue(0)] | 
|  | IInkDrawingAttributes* DrawingAttributes); | 
|  | HRESULT PixelToInkSpace( | 
|  | [in] long hDC, | 
|  | [in, out] long* x, | 
|  | [in, out] long* y); | 
|  | HRESULT InkSpaceToPixel( | 
|  | [in] long hdcDisplay, | 
|  | [in, out] long* x, | 
|  | [in, out] long* y); | 
|  | HRESULT PixelToInkSpaceFromPoints( | 
|  | [in] long hDC, | 
|  | [in, out] VARIANT* Points); | 
|  | HRESULT InkSpaceToPixelFromPoints( | 
|  | [in] long hDC, | 
|  | [in, out] VARIANT* Points); | 
|  | HRESULT Measure( | 
|  | [in] IInkStrokes* Strokes, | 
|  | [out, retval] IInkRectangle** Rectangle); | 
|  | HRESULT MeasureStroke( | 
|  | [in] IInkStrokeDisp* Stroke, | 
|  | [in, optional, defaultvalue(0)] IInkDrawingAttributes* DrawingAttributes, | 
|  | [out, retval] IInkRectangle** Rectangle); | 
|  | HRESULT Move( | 
|  | [in] single HorizontalComponent, | 
|  | [in] single VerticalComponent); | 
|  | HRESULT Rotate( | 
|  | [in] single Degrees, | 
|  | [in, optional, defaultvalue(0)] single x, | 
|  | [in, optional, defaultvalue(0)] single y); | 
|  | HRESULT ScaleTransform( | 
|  | [in] single HorizontalMultiplier, | 
|  | [in] single VerticalMultiplier, | 
|  | [in, optional, defaultvalue(-1)] VARIANT_BOOL ApplyOnPenWidth); | 
|  | }; | 
|  |  | 
|  | typedef enum { | 
|  | ICM_InkOnly, | 
|  | ICM_GestureOnly, | 
|  | ICM_InkAndGesture | 
|  | } InkCollectionMode; | 
|  |  | 
|  | typedef enum { | 
|  | IMP_Default, | 
|  | IMP_Arrow, | 
|  | IMP_Crosshair, | 
|  | IMP_Ibeam, | 
|  | IMP_SizeNESW, | 
|  | IMP_SizeNS, | 
|  | IMP_SizeNWSE, | 
|  | IMP_SizeWE, | 
|  | IMP_UpArrow, | 
|  | IMP_Hourglass, | 
|  | IMP_NoDrop, | 
|  | IMP_ArrowHourglass, | 
|  | IMP_ArrowQuestion, | 
|  | IMP_SizeAll, | 
|  | IMP_Hand, | 
|  | IMP_Custom = 99 | 
|  | } InkMousePointer; | 
|  |  | 
|  | typedef enum { | 
|  | THWC_Integrated = 1, | 
|  | THWC_CursorMustTouch = 2, | 
|  | THWC_HardProximity = 4, | 
|  | THWC_CursorsHavePhysicalIds = 8 | 
|  | } TabletHardwareCapabilities; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(2DE25EAA-6EF8-42D5-AEE9-185BC81B912D), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkTablet : IDispatch { | 
|  | [propget] HRESULT Name([out, retval] BSTR* Name); | 
|  | [propget] HRESULT PlugAndPlayId([out, retval] BSTR* Id); | 
|  | [propget] HRESULT MaximumInputRectangle([out, retval] IInkRectangle** Rectangle); | 
|  | [propget] HRESULT HardwareCapabilities( | 
|  | [out, retval] TabletHardwareCapabilities* Capabilities); | 
|  | HRESULT IsPacketPropertySupported( | 
|  | [in] BSTR packetPropertyName, | 
|  | [out, retval] VARIANT_BOOL* Supported); | 
|  | HRESULT GetPropertyMetrics( | 
|  | [in] BSTR propertyName, | 
|  | [out] long* Minimum, | 
|  | [out] long* Maximum, | 
|  | [out] TabletPropertyMetricUnit* Units, | 
|  | [out] single* Resolution); | 
|  | }; | 
|  |  | 
|  | typedef enum { | 
|  | ICBS_Unavailable, | 
|  | ICBS_Up, | 
|  | ICBS_Down | 
|  | } InkCursorButtonState; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(85EF9417-1D59-49B2-A13C-702C85430894), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkCursorButton : IDispatch { | 
|  | [propget] HRESULT Name([out, retval] BSTR* Name); | 
|  | [propget] HRESULT Id([out, retval] BSTR* Id); | 
|  | [propget] HRESULT State([out, retval] InkCursorButtonState* CurrentState); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(3671CC40-B624-4671-9FA0-DB119D952D54), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkCursorButtons : IDispatch { | 
|  | [propget] HRESULT Count([out, retval] long* Count); | 
|  | [propget] HRESULT _NewEnum([out, retval] IUnknown** _NewEnum); | 
|  | HRESULT Item( | 
|  | [in] VARIANT Identifier, | 
|  | [out, retval] IInkCursorButton** Button); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(AD30C630-40C5-4350-8405-9C71012FC558), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkCursor : IDispatch { | 
|  | [id(0x00000000), propget]    HRESULT Name([out, retval] BSTR* Name); | 
|  | [id(0x00000001), propget]    HRESULT Id([out, retval] long* Id); | 
|  | [id(0x00000004), propget]    HRESULT Inverted( | 
|  | [out, retval] VARIANT_BOOL* Status); | 
|  | [id(0x00000002), propget]    HRESULT DrawingAttributes( | 
|  | [out, retval] IInkDrawingAttributes** Attributes); | 
|  | [id(0x00000002), propputref] HRESULT DrawingAttributes( | 
|  | [in] IInkDrawingAttributes* Attributes); | 
|  | [id(0x00000005), propget]    HRESULT Tablet( | 
|  | [out, retval] IInkTablet** Tablet); | 
|  | [id(0x00000003), propget]    HRESULT Buttons( | 
|  | [out, retval] IInkCursorButtons** Buttons); | 
|  | }; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(A248C1AC-C698-4E06-9E5C-D57F77C7E647), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkCursors : IDispatch { | 
|  | [propget] HRESULT Count([out, retval] long* Count); | 
|  | [propget] HRESULT _NewEnum([out, retval] IUnknown** _NewEnum); | 
|  | HRESULT Item( | 
|  | [in] long Index, | 
|  | [out, retval] IInkCursor** Cursor); | 
|  | }; | 
|  |  | 
|  | typedef enum { | 
|  | IAG_AllGestures = 0, | 
|  | IAG_NoGesture = 61440, | 
|  | IAG_Scratchout = 61441, | 
|  | IAG_Triangle = 61442, | 
|  | IAG_Square = 61443, | 
|  | IAG_Star = 61444, | 
|  | IAG_Check = 61445, | 
|  | IAG_Curlicue = 61456, | 
|  | IAG_DoubleCurlicue = 61457, | 
|  | IAG_Circle = 61472, | 
|  | IAG_DoubleCircle = 61473, | 
|  | IAG_SemiCircleLeft = 61480, | 
|  | IAG_SemiCircleRight = 61481, | 
|  | IAG_ChevronUp = 61488, | 
|  | IAG_ChevronDown = 61489, | 
|  | IAG_ChevronLeft = 61490, | 
|  | IAG_ChevronRight = 61491, | 
|  | IAG_ArrowUp = 61496, | 
|  | IAG_ArrowDown = 61497, | 
|  | IAG_ArrowLeft = 61498, | 
|  | IAG_ArrowRight = 61499, | 
|  | IAG_Up = 61528, | 
|  | IAG_Down = 61529, | 
|  | IAG_Left = 61530, | 
|  | IAG_Right = 61531, | 
|  | IAG_UpDown = 61536, | 
|  | IAG_DownUp = 61537, | 
|  | IAG_LeftRight = 61538, | 
|  | IAG_RightLeft = 61539, | 
|  | IAG_UpLeftLong = 61540, | 
|  | IAG_UpRightLong = 61541, | 
|  | IAG_DownLeftLong = 61542, | 
|  | IAG_DownRightLong = 61543, | 
|  | IAG_UpLeft = 61544, | 
|  | IAG_UpRight = 61545, | 
|  | IAG_DownLeft = 61546, | 
|  | IAG_DownRight = 61547, | 
|  | IAG_LeftUp = 61548, | 
|  | IAG_LeftDown = 61549, | 
|  | IAG_RightUp = 61550, | 
|  | IAG_RightDown = 61551, | 
|  | IAG_Exclamation = 61604, | 
|  | IAG_Tap = 61680, | 
|  | IAG_DoubleTap = 61681 | 
|  | } InkApplicationGesture; | 
|  |  | 
|  | typedef enum { | 
|  | ICEI_DefaultEvents = -1, | 
|  | ICEI_CursorDown = 0, | 
|  | ICEI_Stroke, | 
|  | ICEI_NewPackets, | 
|  | ICEI_NewInAirPackets, | 
|  | ICEI_CursorButtonDown, | 
|  | ICEI_CursorButtonUp, | 
|  | ICEI_CursorInRange, | 
|  | ICEI_CursorOutOfRange, | 
|  | ICEI_SystemGesture, | 
|  | ICEI_TabletAdded, | 
|  | ICEI_TabletRemoved, | 
|  | ICEI_MouseDown, | 
|  | ICEI_MouseMove, | 
|  | ICEI_MouseUp, | 
|  | ICEI_MouseWheel, | 
|  | ICEI_DblClick, | 
|  | ICEI_AllEvents | 
|  | } InkCollectorEventInterest; | 
|  |  | 
|  | [ | 
|  | odl, | 
|  | uuid(F0F060B5-8B1F-4A7C-89EC-880692588A4F), | 
|  | dual, | 
|  | oleautomation | 
|  | ] | 
|  | interface IInkCollector : IDispatch { | 
|  | [id(0x00000002), propget]    HRESULT hWnd( | 
|  | [out, retval] long* CurrentWindow); | 
|  | [id(0x00000002), propput]    HRESULT hWnd([in] long CurrentWindow); | 
|  | [id(0x00000001), propget]    HRESULT Enabled( | 
|  | [out, retval] VARIANT_BOOL* Collecting); | 
|  | [id(0x00000001), propput]    HRESULT Enabled( | 
|  | [in] VARIANT_BOOL Collecting); | 
|  | [id(0x00000005), propget]    HRESULT DefaultDrawingAttributes( | 
|  | [out, retval] IInkDrawingAttributes** CurrentAttributes); | 
|  | [id(0x00000005), propputref] HRESULT DefaultDrawingAttributes( | 
|  | [in] IInkDrawingAttributes* CurrentAttributes); | 
|  | [id(0x00000006), propget]    HRESULT Renderer( | 
|  | [out, retval] IInkRenderer** CurrentInkRenderer); | 
|  | [id(0x00000006), propputref] HRESULT Renderer( | 
|  | [in] IInkRenderer* CurrentInkRenderer); | 
|  | [id(0x00000007), propget]    HRESULT Ink([out, retval] IInkDisp** Ink); | 
|  | [id(0x00000007), propputref] HRESULT Ink([in] IInkDisp* Ink); | 
|  | [id(0x00000008), propget]    HRESULT AutoRedraw( | 
|  | [out, retval] VARIANT_BOOL* AutoRedraw); | 
|  | [id(0x00000008), propput]    HRESULT AutoRedraw( | 
|  | [in] VARIANT_BOOL AutoRedraw); | 
|  | [id(0x00000009), propget]    HRESULT CollectingInk( | 
|  | [out, retval] VARIANT_BOOL* Collecting); | 
|  | [id(0x0000001c), propget]    HRESULT CollectionMode( | 
|  | [out, retval] InkCollectionMode* Mode); | 
|  | [id(0x0000001c), propput]    HRESULT CollectionMode( | 
|  | [in] InkCollectionMode Mode); | 
|  | [id(0x0000001f), propget]    HRESULT DynamicRendering( | 
|  | [out, retval] VARIANT_BOOL* Enabled); | 
|  | [id(0x0000001f), propput]    HRESULT DynamicRendering( | 
|  | [in] VARIANT_BOOL Enabled); | 
|  | [id(0x00000020), propget]    HRESULT DesiredPacketDescription( | 
|  | [out, retval] VARIANT* PacketGuids); | 
|  | [id(0x00000020), propput]    HRESULT DesiredPacketDescription( | 
|  | [in] VARIANT PacketGuids); | 
|  | [id(0x00000023), propget]    HRESULT MouseIcon( | 
|  | [out, retval] IPictureDisp** MouseIcon); | 
|  | [id(0x00000023), propput]    HRESULT MouseIcon( | 
|  | [in] IPictureDisp* MouseIcon); | 
|  | [id(0x00000023), propputref] HRESULT MouseIcon( | 
|  | [in] IPictureDisp* MouseIcon); | 
|  | [id(0x00000024), propget]    HRESULT MousePointer( | 
|  | [out, retval] InkMousePointer* MousePointer); | 
|  | [id(0x00000024), propput]    HRESULT MousePointer( | 
|  | [in] InkMousePointer MousePointer); | 
|  | [id(0x00000014), propget]    HRESULT Cursors( | 
|  | [out, retval] IInkCursors** Cursors); | 
|  | [id(0x00000015), propget]    HRESULT MarginX( | 
|  | [out, retval] long* MarginX); | 
|  | [id(0x00000015), propput]    HRESULT MarginX([in] long MarginX); | 
|  | [id(0x00000016), propget]    HRESULT MarginY( | 
|  | [out, retval] long* MarginY); | 
|  | [id(0x00000016), propput]    HRESULT MarginY([in] long MarginY); | 
|  | [id(0x00000019), propget]    HRESULT Tablet( | 
|  | [out, retval] IInkTablet** SingleTablet); | 
|  | [id(0x00000026), propget]    HRESULT SupportHighContrastInk( | 
|  | [out, retval] VARIANT_BOOL* Support); | 
|  | [id(0x00000026), propput]    HRESULT SupportHighContrastInk( | 
|  | [in] VARIANT_BOOL Support); | 
|  | [id(0x0000001d)]             HRESULT SetGestureStatus( | 
|  | [in] InkApplicationGesture Gesture, | 
|  | [in] VARIANT_BOOL Listen); | 
|  | [id(0x0000001e)]             HRESULT GetGestureStatus( | 
|  | [in] InkApplicationGesture Gesture, | 
|  | [out, retval] VARIANT_BOOL* Listening); | 
|  | [id(0x00000018)]             HRESULT GetWindowInputRectangle( | 
|  | [in, out] IInkRectangle** WindowInputRectangle); | 
|  | [id(0x00000017)]             HRESULT SetWindowInputRectangle( | 
|  | [in] IInkRectangle* WindowInputRectangle); | 
|  | [id(0x0000001a)]             HRESULT SetAllTabletsMode( | 
|  | [in, optional, defaultvalue(-1)] VARIANT_BOOL UseMouseForInput); | 
|  | [id(0x0000001b)]             HRESULT SetSingleTabletIntegratedMode( | 
|  | [in] IInkTablet* Tablet); | 
|  | [id(0x0000000b)]             HRESULT GetEventInterest( | 
|  | [in] InkCollectorEventInterest EventId, | 
|  | [out, retval] VARIANT_BOOL* Listen); | 
|  | [id(0x0000000a)]             HRESULT SetEventInterest( | 
|  | [in] InkCollectorEventInterest EventId, | 
|  | [in] VARIANT_BOOL Listen); | 
|  | }; | 
|  | }; |