/* 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, defaultvalue(0)] single x, [in, 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, 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, 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, defaultvalue(0)] long Index, [in, defaultvalue(-1)] long Count, [out, retval] VARIANT* Points); [id(0x00000017)] HRESULT SetPoints( [in] VARIANT Points, [in, defaultvalue(0)] long Index, [in, defaultvalue(-1)] long Count, [out, retval] long* NumberOfPointsSet); [id(0x00000018)] HRESULT GetPacketData( [in, defaultvalue(0)] long Index, [in, defaultvalue(-1)] long Count, [out, retval] VARIANT* PacketData); [id(0x00000019)] HRESULT GetPacketValuesByProperty( [in] BSTR propertyName, [in, defaultvalue(0)] long Index, [in, defaultvalue(-1)] long Count, [out, retval] VARIANT* PacketValues); [id(0x0000001a)] HRESULT SetPacketValuesByProperty( [in] BSTR bstrPropertyName, [in] VARIANT PacketValues, [in, defaultvalue(0)] long Index, [in, defaultvalue(-1)] long Count, [out, retval] long* NumberOfPacketsSet); [id(0x0000001b)] HRESULT GetFlattenedBezierPoints( [in, defaultvalue(0)] long FittingError, [out, retval] VARIANT* FlattenedBezierPoints); [id(0x0000001d)] HRESULT Transform( [in] IInkTransform* Transform, [in, 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, defaultvalue(0)] single x, [in, 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, 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, defaultvalue(0)] IInkDrawingAttributes* DrawingAttributes, [out, retval] IInkRectangle** Rectangle); HRESULT Move( [in] single HorizontalComponent, [in] single VerticalComponent); HRESULT Rotate( [in] single Degrees, [in, defaultvalue(0)] single x, [in, defaultvalue(0)] single y); HRESULT ScaleTransform( [in] single HorizontalMultiplier, [in] single VerticalMultiplier, [in, 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, 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); }; };