/* Copyright 2007 C John Klehm * Licensed under the LGPLv2 */ /* FIXME is this really needed */ cpp_quote("#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__)"); cpp_quote("#include "); cpp_quote("#include "); cpp_quote("#endif"); import "ocidl.idl"; [ uuid(7D868ACD-1A5D-4A47-A247-F39741353012), version(1.0) ] library MSINKAUTLib { importlib("stdole2.tlb"); typedef float single; typedef __int64 int64; typedef unsigned __int64 uint64; interface IInkDisp; interface IInkStrokes; interface IInkRecognitionAlternate; interface IInkRecognizerContext; [ dllname(""), uuid(D534179B-F9CE-4E3A-A6BA-ECCE86B71861) ] module InkConstants { const long InkMinTransparencyValue = 0; const long InkMaxTransparencyValue = 255; }; typedef enum { ISC_FirstElement = 0, ISC_AllElements = 0xffffffff } ItemSelectionConstants; typedef ItemSelectionConstants InkSelectionConstants; [ dllname(""), uuid(3DE228C4-4D83-491E-B73E-128461DBEDA4) ] module InkCollectorConstants { const long InkCollectorClipInkToMargin = 0; const long InkCollectorDefaultMargin = 0x80000000; }; typedef enum { IBBM_Default = 0, IBBM_NoCurveFit = 1, IBBM_CurveFit = 2, IBBM_PointsOnly = 3, IBBM_Union = 4 } InkBoundingBoxMode; typedef enum { IEF_CopyFromOriginal = 0, IEF_RemoveFromOriginal = 1, IEF_Default = 1 } InkExtractFlags; typedef enum { IPF_InkSerializedFormat = 0, IPF_Base64InkSerializedFormat = 1, IPF_GIF = 2, IPF_Base64GIF = 3 } InkPersistenceFormat; typedef enum { IPCM_Default = 0, IPCM_MaximumCompression = 1, IPCM_NoCompression = 2 } InkPersistenceCompressionMode; typedef enum { IPT_Ball = 0, IPT_Rectangle = 1 } InkPenTip; typedef enum { IRO_Black = 1, IRO_NotMergePen = 2, IRO_MaskNotPen = 3, IRO_NotCopyPen = 4, IRO_MaskPenNot = 5, IRO_Not = 6, IRO_XOrPen = 7, IRO_NotMaskPen = 8, IRO_MaskPen = 9, IRO_NotXOrPen = 10, IRO_NoOperation = 11, IRO_MergeNotPen = 12, IRO_CopyPen = 13, IRO_MergePenNot = 14, IRO_MergePen = 15, IRO_White = 16 } InkRasterOperation; typedef enum { IMP_Default = 0, IMP_Arrow = 1, IMP_Crosshair = 2, IMP_Ibeam = 3, IMP_SizeNESW = 4, IMP_SizeNS = 5, IMP_SizeNWSE = 6, IMP_SizeWE = 7, IMP_UpArrow = 8, IMP_Hourglass = 9, IMP_NoDrop = 10, IMP_ArrowHourglass = 11, IMP_ArrowQuestion = 12, IMP_SizeAll = 13, IMP_Hand = 14, IMP_Custom = 99 } InkMousePointer; typedef enum { ICB_Copy = 0, ICB_Cut = 1, ICB_ExtractOnly = 48, ICB_DelayedCopy = 32, ICB_Default = 0 } InkClipboardModes; typedef enum { ICF_None = 0, ICF_InkSerializedFormat = 1, ICF_SketchInk = 2, ICF_TextInk = 6, ICF_EnhancedMetafile = 8, ICF_Metafile = 32, ICF_Bitmap = 64, ICF_PasteMask = 7, ICF_CopyMask = 127, ICF_Default = 127 } InkClipboardFormats; typedef enum { SHR_None = 0, SHR_NW = 1, SHR_SE = 2, SHR_NE = 3, SHR_SW = 4, SHR_E = 5, SHR_W = 6, SHR_N = 7, SHR_S = 8, SHR_Selection = 9 } SelectionHitResult; typedef enum { IRS_NoError = 0, IRS_Interrupted = 1, IRS_ProcessFailed = 2, IRS_InkAddedFailed = 4, IRS_SetAutoCompletionModeFailed = 8, IRS_SetStrokesFailed = 16, IRS_SetGuideFailed = 32, IRS_SetFlagsFailed = 64, IRS_SetFactoidFailed = 128, IRS_SetPrefixSuffixFailed = 256, IRS_SetWordListFailed = 512 } InkRecognitionStatus; typedef enum { DISPID_IRTop = 1, DISPID_IRLeft = 2, DISPID_IRBottom = 3, DISPID_IRRight = 4, DISPID_IRGetRectangle = 5, DISPID_IRSetRectangle = 6, DISPID_IRData = 7 } DISPID_InkRectangle; typedef struct tagtagRECT { long Left; long Top; long Right; long Bottom; } tagRECT; [ 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] tagRECT* Rect); [id(7), propput] HRESULT Data([in] tagRECT 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); }; typedef enum { DISPID_IEPGuid = 1, DISPID_IEPData = 2 } DISPID_InkExtendedProperty; [ 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); }; typedef enum { DISPID_IEPs_NewEnum = 0xfffffffc, DISPID_IEPsItem = 0, DISPID_IEPsCount = 1, DISPID_IEPsAdd = 2, DISPID_IEPsRemove = 3, DISPID_IEPsClear = 4, DISPID_IEPsDoesPropertyExist = 5 } DISPID_InkExtendedProperties; [ 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); }; typedef enum { DISPID_DAHeight = 1, DISPID_DAColor = 2, DISPID_DAWidth = 3, DISPID_DAFitToCurve = 4, DISPID_DAIgnorePressure = 5, DISPID_DAAntiAliased = 6, DISPID_DATransparency = 7, DISPID_DARasterOperation = 8, DISPID_DAPenTip = 9, DISPID_DAClone = 10, DISPID_DAExtendedProperties = 11 } DISPID_InkDrawingAttributes; [ 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); }; typedef enum { DISPID_ITReset = 1, DISPID_ITTranslate = 2, DISPID_ITRotate = 3, DISPID_ITReflect = 4, DISPID_ITShear = 5, DISPID_ITScale = 6, DISPID_ITeM11 = 7, DISPID_ITeM12 = 8, DISPID_ITeM21 = 9, DISPID_ITeM22 = 10, DISPID_ITeDx = 11, DISPID_ITeDy = 12, DISPID_ITGetTransform = 13, DISPID_ITSetTransform = 14, DISPID_ITData = 15 } DISPID_InkTransform; cpp_quote("#ifndef _WINGDI_"); /* already defined in wingdi.h but needed for WIDL */ typedef struct tagtagXFORM { single eM11; single eM12; single eM21; single eM22; single eDx; single eDy; } tagXFORM; typedef tagXFORM 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); }; 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 { ISG_Tap = 16, ISG_DoubleTap = 17, ISG_RightTap = 18, ISG_Drag = 19, ISG_RightDrag = 20, ISG_HoldEnter = 21, ISG_HoldLeave = 22, ISG_HoverEnter = 23, ISG_HoverLeave = 24 } InkSystemGesture; typedef enum { IRC_Strong = 0, IRC_Intermediate = 1, IRC_Poor = 2 } InkRecognitionConfidence; typedef enum { DISPID_IGId = 0, DISPID_IGGetHotPoint = 1, DISPID_IGConfidence = 2 } DISPID_InkGesture; [ odl, uuid(3BDC0A97-04E5-4E26-B813-18F052D41DEF), dual, oleautomation ] interface IInkGesture : IDispatch { HRESULT Confidence([out, retval] InkRecognitionConfidence* Confidence); HRESULT Id([out, retval] InkApplicationGesture* Id); HRESULT GetHotPoint( [in, out] long* x, [in, out] long* y); }; typedef enum { DISPID_ICsrName = 0, DISPID_ICsrId = 1, DISPID_ICsrDrawingAttributes = 2, DISPID_ICsrButtons = 3, DISPID_ICsrInverted = 4, DISPID_ICsrTablet = 5 } DISPID_InkCursor; typedef enum { THWC_Integrated = 1, THWC_CursorMustTouch = 2, THWC_HardProximity = 4, THWC_CursorsHavePhysicalIds = 8 } TabletHardwareCapabilities; typedef enum { TPMU_Default = 0, TPMU_Inches = 1, TPMU_Centimeters = 2, TPMU_Degrees = 3, TPMU_Radians = 4, TPMU_Seconds = 5, TPMU_Pounds = 6, TPMU_Grams = 7 } TabletPropertyMetricUnit; [ odl, uuid(2DE25EAA-6EF8-42D5-AEE9-185BC81B912D), dual, oleautomation ] interface IInkTablet : IDispatch { HRESULT Name([out, retval] BSTR* Name); HRESULT PlugAndPlayId([out, retval] BSTR* Id); HRESULT MaximumInputRectangle([out, retval] IInkRectangle** Rectangle); 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 = 0, ICBS_Up = 1, ICBS_Down = 2 } InkCursorButtonState; [ odl, uuid(85EF9417-1D59-49B2-A13C-702C85430894), dual, oleautomation ] interface IInkCursorButton : IDispatch { HRESULT Name([out, retval] BSTR* Name); HRESULT Id([out, retval] BSTR* Id); HRESULT State([out, retval] InkCursorButtonState* CurrentState); }; [ odl, uuid(3671CC40-B624-4671-9FA0-DB119D952D54), dual, oleautomation ] interface IInkCursorButtons : IDispatch { HRESULT Count([out, retval] long* Count); 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); }; typedef enum { DISPID_ICs_NewEnum = 0xfffffffc, DISPID_ICsItem = 0, DISPID_ICsCount = 1 } DISPID_InkCursors; [ odl, uuid(A248C1AC-C698-4E06-9E5C-D57F77C7E647), dual, oleautomation ] interface IInkCursors : IDispatch { HRESULT Count([out, retval] long* Count); HRESULT _NewEnum([out, retval] IUnknown** _NewEnum); HRESULT Item( [in] long Index, [out, retval] IInkCursor** Cursor); }; typedef enum { DISPID_ICBName = 0, DISPID_ICBId = 1, DISPID_ICBState = 2 } DISPID_InkCursorButton; typedef enum { DISPID_ICBs_NewEnum = 0xfffffffc, DISPID_ICBsItem = 0, DISPID_ICBsCount = 1 } DISPID_InkCursorButtons; typedef enum { DISPID_ITName = 0, DISPID_ITPlugAndPlayId = 1, DISPID_ITPropertyMetrics = 2, DISPID_ITIsPacketPropertySupported = 3, DISPID_ITMaximumInputRectangle = 4, DISPID_ITHardwareCapabilities = 5 } DISPID_InkTablet; typedef enum { DISPID_ITs_NewEnum = 0xfffffffc, DISPID_ITsItem = 0, DISPID_ITsDefaultTablet = 1, DISPID_ITsCount = 2, DISPID_ITsIsPacketPropertySupported = 3 } DISPID_InkTablets; [ odl, uuid(112086D9-7779-4535-A699-862B43AC1863), dual, oleautomation ] interface IInkTablets : IDispatch { HRESULT Count([out, retval] long* Count); HRESULT _NewEnum([out, retval] IUnknown** _NewEnum); HRESULT DefaultTablet([out, retval] IInkTablet** DefaultTablet); HRESULT Item( [in] long Index, [out, retval] IInkTablet** Tablet); HRESULT IsPacketPropertySupported( [in] BSTR packetPropertyName, [out, retval] VARIANT_BOOL* Supported); }; typedef enum { DISPID_ISDInkIndex = 1, DISPID_ISDID = 2, DISPID_ISDGetBoundingBox = 3, DISPID_ISDDrawingAttributes = 4, DISPID_ISDFindIntersections = 5, DISPID_ISDGetRectangleIntersections = 6, DISPID_ISDClip = 7, DISPID_ISDHitTestCircle = 8, DISPID_ISDNearestPoint = 9, DISPID_ISDSplit = 10, DISPID_ISDExtendedProperties = 11, DISPID_ISDInk = 12, DISPID_ISDBezierPoints = 13, DISPID_ISDPolylineCusps = 14, DISPID_ISDBezierCusps = 15, DISPID_ISDSelfIntersections = 16, DISPID_ISDPacketCount = 17, DISPID_ISDPacketSize = 18, DISPID_ISDPacketDescription = 19, DISPID_ISDDeleted = 20, DISPID_ISDGetPacketDescriptionPropertyMetrics = 21, DISPID_ISDGetPoints = 22, DISPID_ISDSetPoints = 23, DISPID_ISDGetPacketData = 24, DISPID_ISDGetPacketValuesByProperty = 25, DISPID_ISDSetPacketValuesByProperty = 26, DISPID_ISDGetFlattenedBezierPoints = 27, DISPID_ISDScaleToRectangle = 28, DISPID_ISDTransform = 29, DISPID_ISDMove = 30, DISPID_ISDRotate = 31, DISPID_ISDShear = 32, DISPID_ISDScale = 33 } DISPID_InkStrokeDisp; [ odl, uuid(286A167F-9F19-4C61-9D53-4F07BE622B84), dual, oleautomation ] interface IInkRecognitionAlternates : IDispatch { HRESULT Count([out, retval] long* Count); HRESULT _NewEnum([out, retval] IUnknown** _NewEnum); HRESULT Strokes([out, retval] IInkStrokes** Strokes); HRESULT Item( [in] long Index, [out, retval] IInkRecognitionAlternate** InkRecoAlternate); }; [ odl, uuid(B7E660AD-77E4-429B-ADDA-873780D1FC4A), dual, oleautomation ] interface IInkRecognitionAlternate : IDispatch { HRESULT String([out, retval] BSTR* RecoString); HRESULT Confidence([out, retval] InkRecognitionConfidence* Confidence); HRESULT Baseline([out, retval] VARIANT* Baseline); HRESULT Midline([out, retval] VARIANT* Midline); HRESULT Ascender([out, retval] VARIANT* Ascender); HRESULT Descender([out, retval] VARIANT* Descender); HRESULT LineNumber([out, retval] long* LineNumber); HRESULT Strokes([out, retval] IInkStrokes** Strokes); HRESULT LineAlternates( [out, retval] IInkRecognitionAlternates** LineAlternates); HRESULT ConfidenceAlternates( [out, retval] IInkRecognitionAlternates** ConfidenceAlternates); HRESULT GetStrokesFromStrokeRanges( [in] IInkStrokes* Strokes, [out, retval] IInkStrokes** GetStrokesFromStrokeRanges); 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(3BC129A8-86CD-45AD-BDE8-E0D32D61C16D), dual, oleautomation ] interface IInkRecognitionResult : IDispatch { HRESULT TopString([out, retval] BSTR* TopString); HRESULT TopAlternate( [out, retval] IInkRecognitionAlternate** TopAlternate); HRESULT TopConfidence( [out, retval] InkRecognitionConfidence* TopConfidence); HRESULT Strokes([out, retval] IInkStrokes** Strokes); HRESULT AlternatesFromSelection( [in, optional, defaultvalue(0)] long selectionStart, [in, optional, defaultvalue(-1)] long selectionLength, [in, optional, defaultvalue(10)] long maximumAlternates, [out, retval] IInkRecognitionAlternates** AlternatesFromSelection); HRESULT ModifyTopAlternate([in] IInkRecognitionAlternate* Alternate); HRESULT SetResultOnStrokes(); }; [ 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); }; [ odl, uuid(F1F4C9D8-590A-4963-B3AE-1935671BB6F3), dual, oleautomation ] interface IInkStrokes : IDispatch { HRESULT Count([out, retval] long* Count); HRESULT _NewEnum([out, retval] IUnknown** _NewEnum); HRESULT Ink([out, retval] IInkDisp** Ink); 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, optional, defaultvalue(0)] InkBoundingBoxMode BoundingBoxMode, [out, retval] IInkRectangle** BoundingBox); HRESULT Transform( [in] IInkTransform* Transform, [in, optional, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth); HRESULT ScaleToRectangle([in] 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 Shear( [in] single HorizontalMultiplier, [in] single VerticalMultiplier); HRESULT ScaleTransform( [in] single HorizontalMultiplier, [in] single VerticalMultiplier); HRESULT Clip([in] IInkRectangle* Rectangle); HRESULT RemoveRecognitionResult(); }; [ odl, uuid(7E23A88F-C30E-420F-9BDB-28902543F0C1), dual, oleautomation ] interface IInkCustomStrokes : IDispatch { HRESULT Count([out, retval] long* Count); 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(); }; [ odl, uuid(9D398FA0-C4E2-4FCD-9973-975CAAF47EA6), dual, oleautomation ] interface IInkDisp : IDispatch { [id(0x00000001), propget] HRESULT Strokes( [out, retval] IInkStrokes** Strokes); [id(0x00000002), propget] HRESULT ExtendedProperties( [out, retval] IInkExtendedProperties** Properties); [id(0x00000008), propget] HRESULT Dirty( [out, retval] VARIANT_BOOL* Dirty); [id(0x00000008), propput] HRESULT Dirty([in] VARIANT_BOOL Dirty); [id(0x00000009), propget] HRESULT CustomStrokes( [out, retval] IInkCustomStrokes** ppunkInkCustomStrokes); [id(0x00000003)] HRESULT GetBoundingBox( [in, optional, defaultvalue(0)] InkBoundingBoxMode BoundingBoxMode, [out, retval] IInkRectangle** Rectangle); [id(0x00000004)] HRESULT DeleteStrokes( [in, optional, defaultvalue(0)] IInkStrokes* Strokes); [id(0x00000005)] HRESULT DeleteStroke( [in] IInkStrokeDisp* Stroke); [id(0x00000006)] HRESULT ExtractStrokes( [in, optional, defaultvalue(0)] IInkStrokes* Strokes, [in, optional, defaultvalue(1)] InkExtractFlags ExtractFlags, [out, retval] IInkDisp** ExtractedInk); [id(0x00000007)] HRESULT ExtractWithRectangle( [in] IInkRectangle* Rectangle, [in, optional, defaultvalue(1)] InkExtractFlags ExtractFlags, [out, retval] IInkDisp** ExtractedInk); [id(0x00000012)] HRESULT Clip([in] IInkRectangle* Rectangle); [id(0x0000000a)] HRESULT Clone( [out, retval] IInkDisp** NewInk); [id(0x0000000b)] HRESULT HitTestCircle( [in] long x, [in] long y, [in] single radius, [out, retval] IInkStrokes** Strokes); [id(0x0000000c)] HRESULT HitTestWithRectangle( [in] IInkRectangle* SelectionRectangle, [in] single IntersectPercent, [out, retval] IInkStrokes** Strokes); [id(0x0000000d)] HRESULT HitTestWithLasso( [in] VARIANT Points, [in] single IntersectPercent, [in, out, optional, defaultvalue(0)] VARIANT* LassoPoints, [out, retval] IInkStrokes** Strokes); [id(0x0000000e)] HRESULT NearestPoint( [in] long x, [in] long y, [in, out, optional, defaultvalue(0)] single* PointOnStroke, [in, out, optional, defaultvalue(0)] single* DistanceFromPacket, [out, retval] IInkStrokeDisp** Stroke); [id(0x0000000f)] HRESULT CreateStrokes( [in, optional, defaultvalue(0)] VARIANT StrokeIds, [out, retval] IInkStrokes** Strokes); [id(0x00000011)] HRESULT AddStrokesAtRectangle( [in] IInkStrokes* SourceStrokes, [in] IInkRectangle* TargetRectangle); [id(0x00000013)] HRESULT Save( [in, optional, defaultvalue(0)] InkPersistenceFormat PersistenceFormat, [in, optional, defaultvalue(0)] InkPersistenceCompressionMode CompressionMode, [out, retval] VARIANT* Data); [id(0x00000014)] HRESULT Load([in] VARIANT Data); [id(0x00000010)] HRESULT CreateStroke( [in] VARIANT PacketData, [in] VARIANT PacketDescription, [out, retval] IInkStrokeDisp** Stroke); [id(0x00000016)] HRESULT ClipboardCopyWithRectangle( [in] IInkRectangle* Rectangle, [in, optional, defaultvalue(127)] InkClipboardFormats ClipboardFormats, [in, optional, defaultvalue(0)] InkClipboardModes ClipboardModes, [out, retval] IDataObject** DataObject); [id(0x00000017)] HRESULT ClipboardCopy( [in, optional, defaultvalue(0)] IInkStrokes* Strokes, [in, optional, defaultvalue(127)] InkClipboardFormats ClipboardFormats, [in, optional, defaultvalue(0)] InkClipboardModes ClipboardModes, [out, retval] IDataObject** DataObject); [id(0x00000018)] HRESULT CanPaste( [in, optional, defaultvalue(0)] IDataObject* DataObject, [out, retval] VARIANT_BOOL* CanPaste); [id(0x00000019)] HRESULT ClipboardPaste( [in, optional, defaultvalue(0)] long x, [in, optional, defaultvalue(0)] long y, [in, optional, defaultvalue(0)] IDataObject* DataObject, [out, retval] IInkStrokes** Strokes); }; typedef struct tag_BYTE_BLOB { unsigned long clSize; unsigned char* abData; } _BYTE_BLOB; typedef union tag__MIDL_IWinTypes_0004 { long hInproc; _BYTE_BLOB* hRemote; int64 hInproc64; } __MIDL_IWinTypes_0004; typedef struct tag_userHMETAFILE { long fContext; __MIDL_IWinTypes_0004 u; } _userHMETAFILE; typedef struct tag_remoteMETAFILEPICT { long mm; long xExt; long yExt; _userHMETAFILE* hMF; } _remoteMETAFILEPICT; typedef union tag__MIDL_IWinTypes_0005 { long hInproc; _remoteMETAFILEPICT* hRemote; int64 hInproc64; } __MIDL_IWinTypes_0005; typedef struct tag_userHMETAFILEPICT { long fContext; __MIDL_IWinTypes_0005 u; } _userHMETAFILEPICT; typedef union tag__MIDL_IWinTypes_0006 { long hInproc; _BYTE_BLOB* hRemote; int64 hInproc64; } __MIDL_IWinTypes_0006; typedef struct tag_userHENHMETAFILE { long fContext; __MIDL_IWinTypes_0006 u; } _userHENHMETAFILE; typedef struct tag_userBITMAP { long bmType; long bmWidth; long bmHeight; long bmWidthBytes; unsigned short bmPlanes; unsigned short bmBitsPixel; unsigned long cbSize; unsigned char* pBuffer; } _userBITMAP; typedef union tag__MIDL_IWinTypes_0007 { long hInproc; _userBITMAP* hRemote; int64 hInproc64; } __MIDL_IWinTypes_0007; typedef struct tag_userHBITMAP { long fContext; __MIDL_IWinTypes_0007 u; } _userHBITMAP; typedef struct tagtagPALETTEENTRY { unsigned char peRed; unsigned char peGreen; unsigned char peBlue; unsigned char peFlags; } tagPALETTEENTRY; typedef struct tagtagLOGPALETTE { unsigned short palVersion; unsigned short palNumEntries; tagPALETTEENTRY* palPalEntry; } tagLOGPALETTE; typedef union tag__MIDL_IWinTypes_0008 { long hInproc; tagLOGPALETTE* hRemote; int64 hInproc64; } __MIDL_IWinTypes_0008; typedef struct tag_userHPALETTE { long fContext; __MIDL_IWinTypes_0008 u; } _userHPALETTE; typedef struct tag_FLAGGED_BYTE_BLOB { unsigned long fFlags; unsigned long clSize; unsigned char* abData; } _FLAGGED_BYTE_BLOB; typedef union tag__MIDL_IWinTypes_0003 { long hInproc; _FLAGGED_BYTE_BLOB* hRemote; int64 hInproc64; } __MIDL_IWinTypes_0003; typedef struct tag_userHGLOBAL { long fContext; __MIDL_IWinTypes_0003 u; } _userHGLOBAL; typedef union tag__MIDL_IAdviseSink_0002 { _userHBITMAP* hBitmap; _userHPALETTE* hPalette; _userHGLOBAL* hGeneric; } __MIDL_IAdviseSink_0002; typedef struct tag_GDI_OBJECT { unsigned long ObjectType; __MIDL_IAdviseSink_0002 u; } _GDI_OBJECT; typedef union tag__MIDL_IAdviseSink_0003 { _userHMETAFILEPICT* hMetaFilePict; _userHENHMETAFILE* hHEnhMetaFile; _GDI_OBJECT* hGdiHandle; _userHGLOBAL* hGlobal; LPWSTR lpszFileName; _BYTE_BLOB* pstm; _BYTE_BLOB* pstg; } __MIDL_IAdviseSink_0003; typedef struct tag_STGMEDIUM_UNION { unsigned long tymed; __MIDL_IAdviseSink_0003 u; } _STGMEDIUM_UNION; typedef struct tag_userSTGMEDIUM { _STGMEDIUM_UNION __MIDL_0003; IUnknown* pUnkForRelease; } _userSTGMEDIUM; typedef struct tag_userFLAG_STGMEDIUM { long ContextFlags; long fPassOwnership; _userSTGMEDIUM Stgmed; } _userFLAG_STGMEDIUM; typedef union tag__MIDL_IWinTypes_0001 { unsigned long dwValue; LPWSTR pwszName; } __MIDL_IWinTypes_0001; typedef struct tagtagDVTARGETDEVICE { unsigned long tdSize; unsigned short tdDriverNameOffset; unsigned short tdDeviceNameOffset; unsigned short tdPortNameOffset; unsigned short tdExtDevmodeOffset; unsigned char* tdData; } tagDVTARGETDEVICE; typedef struct tag_userCLIPFORMAT { long fContext; __MIDL_IWinTypes_0001 u; } _userCLIPFORMAT; typedef struct tagtagFORMATETC { wireCLIPFORMAT cfFormat; tagDVTARGETDEVICE* ptd; unsigned long dwAspect; long lindex; unsigned long tymed; } tagFORMATETC; /* FIXME unneeded */ typedef struct tag_FILETIME { unsigned long dwLowDateTime; unsigned long dwHighDateTime; } _FILETIME; /* FIXME unneeded */ typedef struct tag_ULARGE_INTEGER { uint64 QuadPart; } _ULARGE_INTEGER; typedef struct tag_LARGE_INTEGER { int64 QuadPart; } _LARGE_INTEGER; typedef struct tagtagSTATSTG { LPWSTR pwcsName; unsigned long type; _ULARGE_INTEGER cbSize; _FILETIME mtime; _FILETIME ctime; _FILETIME atime; unsigned long grfMode; unsigned long grfLocksSupported; GUID clsid; unsigned long grfStateBits; unsigned long reserved; } tagSTATSTG; typedef struct tag_COAUTHIDENTITY { unsigned short* User; unsigned long UserLength; unsigned short* Domain; unsigned long DomainLength; unsigned short* Password; unsigned long PasswordLength; unsigned long Flags; } _COAUTHIDENTITY; typedef struct tag_COAUTHINFO { unsigned long dwAuthnSvc; unsigned long dwAuthzSvc; LPWSTR pwszServerPrincName; unsigned long dwAuthnLevel; unsigned long dwImpersonationLevel; _COAUTHIDENTITY* pAuthIdentityData; unsigned long dwCapabilities; } _COAUTHINFO; typedef struct tag_COSERVERINFO { unsigned long dwReserved1; LPWSTR pwszName; _COAUTHINFO* pAuthInfo; unsigned long dwReserved2; } _COSERVERINFO; typedef struct tagtagBIND_OPTS2 { unsigned long cbStruct; unsigned long grfFlags; unsigned long grfMode; unsigned long dwTickCountDeadline; unsigned long dwTrackFlags; unsigned long dwClassContext; unsigned long locale; _COSERVERINFO* pServerInfo; } tagBIND_OPTS2; typedef struct tagtagSTATDATA { tagFORMATETC formatetc; unsigned long advf; IAdviseSink* pAdvSink; unsigned long dwConnection; } tagSTATDATA; typedef enum { DISPID_ISs_NewEnum = 0xfffffffc, DISPID_ISsItem = 0, DISPID_ISsCount = 1, DISPID_ISsValid = 2, DISPID_ISsInk = 3, DISPID_ISsAdd = 4, DISPID_ISsAddStrokes = 5, DISPID_ISsRemove = 6, DISPID_ISsRemoveStrokes = 7, DISPID_ISsToString = 8, DISPID_ISsModifyDrawingAttributes = 9, DISPID_ISsGetBoundingBox = 10, DISPID_ISsScaleToRectangle = 11, DISPID_ISsTransform = 12, DISPID_ISsMove = 13, DISPID_ISsRotate = 14, DISPID_ISsShear = 15, DISPID_ISsScale = 16, DISPID_ISsClip = 17, DISPID_ISsRecognitionResult = 18, DISPID_ISsRemoveRecognitionResult = 19 } DISPID_InkStrokes; typedef enum { DISPID_ICSs_NewEnum = 0xfffffffc, DISPID_ICSsItem = 0, DISPID_ICSsCount = 1, DISPID_ICSsAdd = 2, DISPID_ICSsRemove = 3, DISPID_ICSsClear = 4 } DISPID_InkCustomStrokes; typedef enum { DISPID_SEStrokesAdded = 1, DISPID_SEStrokesRemoved = 2 } DISPID_StrokeEvent; [ uuid(F33053EC-5D25-430A-928F-76A6491DDE15) ] dispinterface _IInkStrokesEvents { properties: methods: [id(1)] void StrokesAdded([in] VARIANT StrokeIds); [id(2)] void StrokesRemoved([in] VARIANT StrokeIds); }; typedef enum { DISPID_IStrokes = 1, DISPID_IExtendedProperties = 2, DISPID_IGetBoundingBox = 3, DISPID_IDeleteStrokes = 4, DISPID_IDeleteStroke = 5, DISPID_IExtractStrokes = 6, DISPID_IExtractWithRectangle = 7, DISPID_IDirty = 8, DISPID_ICustomStrokes = 9, DISPID_IClone = 10, DISPID_IHitTestCircle = 11, DISPID_IHitTestWithRectangle = 12, DISPID_IHitTestWithLasso = 13, DISPID_INearestPoint = 14, DISPID_ICreateStrokes = 15, DISPID_ICreateStroke = 16, DISPID_IAddStrokesAtRectangle = 17, DISPID_IClip = 18, DISPID_ISave = 19, DISPID_ILoad = 20, DISPID_ICreateStrokeFromPoints = 21, DISPID_IClipboardCopyWithRectangle = 22, DISPID_IClipboardCopy = 23, DISPID_ICanPaste = 24, DISPID_IClipboardPaste = 25 } DISPID_Ink; typedef enum { DISPID_IEInkAdded = 1, DISPID_IEInkDeleted = 2 } DISPID_InkEvent; [ uuid(427B1865-CA3F-479A-83A9-0F420F2A0073) ] dispinterface _IInkEvents { properties: methods: [id(1)] void InkAdded([in] VARIANT StrokeIds); [id(2)] void InkDeleted([in] VARIANT StrokeIds); }; typedef enum { DISPID_IRGetViewTransform = 1, DISPID_IRSetViewTransform = 2, DISPID_IRGetObjectTransform = 3, DISPID_IRSetObjectTransform = 4, DISPID_IRDraw = 5, DISPID_IRDrawStroke = 6, DISPID_IRPixelToInkSpace = 7, DISPID_IRInkSpaceToPixel = 8, DISPID_IRPixelToInkSpaceFromPoints = 9, DISPID_IRInkSpaceToPixelFromPoints = 10, DISPID_IRMeasure = 11, DISPID_IRMeasureStroke = 12, DISPID_IRMove = 13, DISPID_IRRotate = 14, DISPID_IRScale = 15 } DISPID_InkRenderer; [ 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 { ICEI_DefaultEvents = 0xffffffff, ICEI_CursorDown = 0, ICEI_Stroke = 1, ICEI_NewPackets = 2, ICEI_NewInAirPackets = 3, ICEI_CursorButtonDown = 4, ICEI_CursorButtonUp = 5, ICEI_CursorInRange = 6, ICEI_CursorOutOfRange = 7, ICEI_SystemGesture = 8, ICEI_TabletAdded = 9, ICEI_TabletRemoved = 10, ICEI_MouseDown = 11, ICEI_MouseMove = 12, ICEI_MouseUp = 13, ICEI_MouseWheel = 14, ICEI_DblClick = 15, ICEI_AllEvents = 16 } InkCollectorEventInterest; typedef enum { IMF_Left = 1, IMF_Right = 2, IMF_Middle = 4 } InkMouseButton; typedef enum { IKM_Shift = 1, IKM_Control = 2, IKM_Alt = 4 } InkShiftKeyModifierFlags; typedef enum { DISPID_ICEStroke = 1, DISPID_ICECursorDown = 2, DISPID_ICENewPackets = 3, DISPID_ICENewInAirPackets = 4, DISPID_ICECursorButtonDown = 5, DISPID_ICECursorButtonUp = 6, DISPID_ICECursorInRange = 7, DISPID_ICECursorOutOfRange = 8, DISPID_ICESystemGesture = 9, DISPID_ICEGesture = 10, DISPID_ICETabletAdded = 11, DISPID_ICETabletRemoved = 12, DISPID_IOEPainting = 13, DISPID_IOEPainted = 14, DISPID_IOESelectionChanging = 15, DISPID_IOESelectionChanged = 16, DISPID_IOESelectionMoving = 17, DISPID_IOESelectionMoved = 18, DISPID_IOESelectionResizing = 19, DISPID_IOESelectionResized = 20, DISPID_IOEStrokesDeleting = 21, DISPID_IOEStrokesDeleted = 22, DISPID_IPEChangeUICues = 23, DISPID_IPEClick = 24, DISPID_IPEDblClick = 25, DISPID_IPEInvalidated = 26, DISPID_IPEMouseDown = 27, DISPID_IPEMouseEnter = 28, DISPID_IPEMouseHover = 29, DISPID_IPEMouseLeave = 30, DISPID_IPEMouseMove = 31, DISPID_IPEMouseUp = 32, DISPID_IPEMouseWheel = 33, DISPID_IPESizeModeChanged = 34, DISPID_IPEStyleChanged = 35, DISPID_IPESystemColorsChanged = 36, DISPID_IPEKeyDown = 37, DISPID_IPEKeyPress = 38, DISPID_IPEKeyUp = 39, DISPID_IPEResize = 40, DISPID_IPESizeChanged = 41 } DISPID_InkCollectorEvent; typedef enum { IOEM_Ink = 0, IOEM_Delete = 1, IOEM_Select = 2 } InkOverlayEditingMode; typedef enum { IOAM_Behind = 0, IOAM_InFront = 1 } InkOverlayAttachMode; typedef enum { IPSM_AutoSize = 0, IPSM_CenterImage = 1, IPSM_Normal = 2, IPSM_StretchImage = 3 } InkPictureSizeMode; typedef enum { IOERM_StrokeErase = 0, IOERM_PointErase = 1 } InkOverlayEraserMode; typedef enum { ICM_InkOnly = 0, ICM_GestureOnly = 1, ICM_InkAndGesture = 2 } InkCollectionMode; typedef enum { DISPID_ICEnabled = 1, DISPID_ICHwnd = 2, DISPID_ICPaint = 3, DISPID_ICText = 4, DISPID_ICDefaultDrawingAttributes = 5, DISPID_ICRenderer = 6, DISPID_ICInk = 7, DISPID_ICAutoRedraw = 8, DISPID_ICCollectingInk = 9, DISPID_ICSetEventInterest = 10, DISPID_ICGetEventInterest = 11, DISPID_IOEditingMode = 12, DISPID_IOSelection = 13, DISPID_IOAttachMode = 14, DISPID_IOHitTestSelection = 15, DISPID_IODraw = 16, DISPID_IPPicture = 17, DISPID_IPSizeMode = 18, DISPID_IPBackColor = 19, DISPID_ICCursors = 20, DISPID_ICMarginX = 21, DISPID_ICMarginY = 22, DISPID_ICSetWindowInputRectangle = 23, DISPID_ICGetWindowInputRectangle = 24, DISPID_ICTablet = 25, DISPID_ICSetAllTabletsMode = 26, DISPID_ICSetSingleTabletIntegratedMode = 27, DISPID_ICCollectionMode = 28, DISPID_ICSetGestureStatus = 29, DISPID_ICGetGestureStatus = 30, DISPID_ICDynamicRendering = 31, DISPID_ICDesiredPacketDescription = 32, DISPID_IOEraserMode = 33, DISPID_IOEraserWidth = 34, DISPID_ICMouseIcon = 35, DISPID_ICMousePointer = 36, DISPID_IPInkEnabled = 37, DISPID_ICSupportHighContrastInk = 38, DISPID_IOSupportHighContrastSelectionUI = 39 } DISPID_InkCollector; [ 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); }; [ uuid(11A583F2-712D-4FEA-ABCF-AB4AF38EA06B) ] dispinterface _IInkCollectorEvents { properties: methods: [id(1)] void Stroke( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke, [in, out] VARIANT_BOOL* Cancel); [id(2)] void CursorDown( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke); [id(3)] void NewPackets( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke, [in] long PacketCount, [in, out] VARIANT* PacketData); [id(19)] void DblClick([in, out] VARIANT_BOOL* Cancel); [id(31)] void MouseMove( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(27)] void MouseDown( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(20)] void MouseUp( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(21)] void MouseWheel( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long Delta, [in] long x, [in] long y, [in, out] VARIANT_BOOL* Cancel); [id(4)] void NewInAirPackets( [in] IInkCursor* Cursor, [in] long lPacketCount, [in, out] VARIANT* PacketData); [id(5)] void CursorButtonDown( [in] IInkCursor* Cursor, [in] IInkCursorButton* Button); [id(6)] void CursorButtonUp( [in] IInkCursor* Cursor, [in] IInkCursorButton* Button); [id(7)] void CursorInRange( [in] IInkCursor* Cursor, [in] VARIANT_BOOL NewCursor, [in] VARIANT ButtonsState); [id(8)] void CursorOutOfRange([in] IInkCursor* Cursor); [id(9)] void SystemGesture( [in] IInkCursor* Cursor, [in] InkSystemGesture Id, [in] long x, [in] long y, [in] long Modifier, [in] BSTR Character, [in] long CursorMode); [id(10)] void Gesture( [in] IInkCursor* Cursor, [in] IInkStrokes* Strokes, [in] VARIANT Gestures, [in, out] VARIANT_BOOL* Cancel); [id(11)] void TabletAdded([in] IInkTablet* Tablet); [id(12)] void TabletRemoved([in] long TabletId); }; [ odl, uuid(B82A463B-C1C5-45A3-997C-DEAB5651B67A), dual, oleautomation ] interface IInkOverlay : 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), propput] 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(0x0000000c), propget] HRESULT EditingMode( [out, retval] InkOverlayEditingMode* EditingMode); [id(0x0000000c), propput] HRESULT EditingMode( [in] InkOverlayEditingMode EditingMode); [id(0x0000000d), propget] HRESULT Selection( [out, retval] IInkStrokes** Selection); [id(0x0000000d), propput] HRESULT Selection( [in] IInkStrokes* Selection); [id(0x00000021), propget] HRESULT EraserMode( [out, retval] InkOverlayEraserMode* EraserMode); [id(0x00000021), propput] HRESULT EraserMode( [in] InkOverlayEraserMode EraserMode); [id(0x00000022), propget] HRESULT EraserWidth( [out, retval] long* EraserWidth); [id(0x00000022), propput] HRESULT EraserWidth( [in] long EraserWidth); [id(0x0000000e), propget] HRESULT AttachMode( [out, retval] InkOverlayAttachMode* AttachMode); [id(0x0000000e), propput] HRESULT AttachMode( [in] InkOverlayAttachMode AttachMode); [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(0x00000027), propget] HRESULT SupportHighContrastSelectionUI( [out, retval] VARIANT_BOOL* Support); [id(0x00000027), propput] HRESULT SupportHighContrastSelectionUI( [in] VARIANT_BOOL Support); [id(0x0000000f)] HRESULT HitTestSelection( [in] long x, [in] long y, [out, retval] SelectionHitResult* SelArea); [id(0x00000010)] HRESULT Draw([in] IInkRectangle* Rect); [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); }; [ uuid(31179B69-E563-489E-B16F-712F1E8A0651) ] dispinterface _IInkOverlayEvents { properties: methods: [id(0x00000001)] void Stroke( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke, [in, out] VARIANT_BOOL* Cancel); [id(0x00000002)] void CursorDown( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke); [id(0x00000003)] void NewPackets( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke, [in] long PacketCount, [in, out] VARIANT* PacketData); [id(0x00000019)] void DblClick([in, out] VARIANT_BOOL* Cancel); [id(0x0000001f)] void MouseMove( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(0x0000001b)] void MouseDown( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(0x00000020)] void MouseUp( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(0x00000021)] void MouseWheel( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long Delta, [in] long x, [in] long y, [in, out] VARIANT_BOOL* Cancel); [id(0x0000000d)] void Painting( [in] long hDC, [in] IInkRectangle* Rect, [in, out] VARIANT_BOOL* Allow); [id(0x0000000e)] void Painted( [in] long hDC, [in] IInkRectangle* Rect); [id(0x0000000f)] void SelectionChanging( [in] IInkStrokes* NewSelection); [id(0x00000010)] void SelectionChanged(); [id(0x00000011)] void SelectionMoving( [in] IInkRectangle* CurSelectionRect); [id(0x00000012)] void SelectionMoved( [in] IInkRectangle* OldSelectionRect); [id(0x00000013)] void SelectionResizing( [in] IInkRectangle* CurSelectionRect); [id(0x00000014)] void SelectionResized( [in] IInkRectangle* OldSelectionRect); [id(0x00000015)] void StrokesDeleting([in] IInkStrokes* Strokes); [id(0x00000016)] void StrokesDeleted(); [id(0x00000004)] void NewInAirPackets( [in] IInkCursor* Cursor, [in] long lPacketCount, [in, out] VARIANT* PacketData); [id(0x00000005)] void CursorButtonDown( [in] IInkCursor* Cursor, [in] IInkCursorButton* Button); [id(0x00000006)] void CursorButtonUp( [in] IInkCursor* Cursor, [in] IInkCursorButton* Button); [id(0x00000007)] void CursorInRange( [in] IInkCursor* Cursor, [in] VARIANT_BOOL NewCursor, [in] VARIANT ButtonsState); [id(0x00000008)] void CursorOutOfRange([in] IInkCursor* Cursor); [id(0x00000009)] void SystemGesture( [in] IInkCursor* Cursor, [in] InkSystemGesture Id, [in] long x, [in] long y, [in] long Modifier, [in] BSTR Character, [in] long CursorMode); [id(0x0000000a)] void Gesture( [in] IInkCursor* Cursor, [in] IInkStrokes* Strokes, [in] VARIANT Gestures, [in, out] VARIANT_BOOL* Cancel); [id(0x0000000b)] void TabletAdded([in] IInkTablet* Tablet); [id(0x0000000c)] void TabletRemoved([in] long TabletId); }; [ odl, uuid(E85662E0-379A-40D7-9B5C-757D233F9923), dual, oleautomation ] interface IInkPicture : IDispatch { [id(0x00000002), propget] HRESULT hWnd( [out, retval] long* CurrentWindow); [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(0x0000000c), propget] HRESULT EditingMode( [out, retval] InkOverlayEditingMode* EditingMode); [id(0x0000000c), propput] HRESULT EditingMode( [in] InkOverlayEditingMode EditingMode); [id(0x0000000d), propget] HRESULT Selection( [out, retval] IInkStrokes** Selection); [id(0x0000000d), propput] HRESULT Selection( [in] IInkStrokes* Selection); [id(0x00000021), propget] HRESULT EraserMode( [out, retval] InkOverlayEraserMode* EraserMode); [id(0x00000021), propput] HRESULT EraserMode( [in] InkOverlayEraserMode EraserMode); [id(0x00000022), propget] HRESULT EraserWidth( [out, retval] long* EraserWidth); [id(0x00000022), propput] HRESULT EraserWidth( [in] long EraserWidth); [id(0x00000011), propputref] HRESULT Picture( [in] IPictureDisp* ppPicture); [id(0x00000011), propput] HRESULT Picture( [in] IPictureDisp* ppPicture); [id(0x00000011), propget] HRESULT Picture( [out, retval] IPictureDisp** ppPicture); [id(0x00000012), propput] HRESULT SizeMode( [in] InkPictureSizeMode smSizeMode); [id(0x00000012), propget] HRESULT SizeMode( [out, retval] InkPictureSizeMode* smSizeMode); [id(0x00000013), propput] HRESULT BackColor( [in] OLE_COLOR pColor); [id(0x00000013), propget] HRESULT BackColor( [out, retval] OLE_COLOR* pColor); [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(0x00000027), propget] HRESULT SupportHighContrastSelectionUI( [out, retval] VARIANT_BOOL* Support); [id(0x00000027), propput] HRESULT SupportHighContrastSelectionUI( [in] VARIANT_BOOL Support); [id(0x0000000f)] HRESULT HitTestSelection( [in] long x, [in] long y, [out, retval] SelectionHitResult* SelArea); [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); [id(0x00000025), propget] HRESULT InkEnabled( [out, retval] VARIANT_BOOL* Collecting); [id(0x00000025), propput] HRESULT InkEnabled( [in] VARIANT_BOOL Collecting); [id(0xfffffdfe), propget] HRESULT Enabled( [out, retval] VARIANT_BOOL* pbool); [id(0xfffffdfe), propput] HRESULT Enabled([in] VARIANT_BOOL pbool); }; [ uuid(60FF4FEE-22FF-4484-ACC1-D308D9CD7EA3) ] dispinterface _IInkPictureEvents { properties: methods: [id(0x00000001)] void Stroke( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke, [in, out] VARIANT_BOOL* Cancel); [id(0x00000002)] void CursorDown( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke); [id(0x00000003)] void NewPackets( [in] IInkCursor* Cursor, [in] IInkStrokeDisp* Stroke, [in] long PacketCount, [in, out] VARIANT* PacketData); [id(0x00000019)] void DblClick([in, out] VARIANT_BOOL* Cancel); [id(0x0000001f)] void MouseMove( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(0x0000001b)] void MouseDown( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(0x00000020)] void MouseUp( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long pX, [in] long pY, [in, out] VARIANT_BOOL* Cancel); [id(0x00000021)] void MouseWheel( [in] InkMouseButton Button, [in] InkShiftKeyModifierFlags Shift, [in] long Delta, [in] long x, [in] long y, [in, out] VARIANT_BOOL* Cancel); [id(0x0000000d)] void Painting( [in] long hDC, [in] IInkRectangle* Rect, [in, out] VARIANT_BOOL* Allow); [id(0x0000000e)] void Painted( [in] long hDC, [in] IInkRectangle* Rect); [id(0x0000000f)] void SelectionChanging( [in] IInkStrokes* NewSelection); [id(0x00000010)] void SelectionChanged(); [id(0x00000011)] void SelectionMoving( [in] IInkRectangle* CurSelectionRect); [id(0x00000012)] void SelectionMoved( [in] IInkRectangle* OldSelectionRect); [id(0x00000013)] void SelectionResizing( [in] IInkRectangle* CurSelectionRect); [id(0x00000014)] void SelectionResized( [in] IInkRectangle* OldSelectionRect); [id(0x00000015)] void StrokesDeleting([in] IInkStrokes* Strokes); [id(0x00000016)] void StrokesDeleted(); [id(0x0000001c)] void MouseEnter(); [id(0x00000018)] void Click(); [id(0x0000001d)] void MouseHover(); [id(0x0000001e)] void MouseLeave(); [id(0x00000025)] void KeyDown( [in, out] short* KeyCode, [in, out] short* Shift); [id(0x00000027)] void KeyUp( [in, out] short* KeyCode, [in, out] short* Shift); [id(0x00000026)] void KeyPress([in, out] short* KeyAscii); [id(0x00000022)] void SizeModeChanged( [in] InkPictureSizeMode NewMode, [in] InkPictureSizeMode OldMode); [id(0x00000024)] void SystemColorsChanged(); [id(0x00000028)] void Resize( [in, out] long* Left, [in, out] long* Top, [in, out] long* Right, [in, out] long* Bottom); [id(0x00000029)] void SizeChanged( [in] long Left, [in] long Top, [in] long Right, [in] long Bottom); [id(0x00000023)] void StyleChanged(); [id(0x00000017)] void ChangeUICues([in] long UICues); [id(0x00000004)] void NewInAirPackets( [in] IInkCursor* Cursor, [in] long lPacketCount, [in, out] VARIANT* PacketData); [id(0x00000005)] void CursorButtonDown( [in] IInkCursor* Cursor, [in] IInkCursorButton* Button); [id(0x00000006)] void CursorButtonUp( [in] IInkCursor* Cursor, [in] IInkCursorButton* Button); [id(0x00000007)] void CursorInRange( [in] IInkCursor* Cursor, [in] VARIANT_BOOL NewCursor, [in] VARIANT ButtonsState); [id(0x00000008)] void CursorOutOfRange([in] IInkCursor* Cursor); [id(0x00000009)] void SystemGesture( [in] IInkCursor* Cursor, [in] InkSystemGesture Id, [in] long x, [in] long y, [in] long Modifier, [in] BSTR Character, [in] long CursorMode); [id(0x0000000a)] void Gesture( [in] IInkCursor* Cursor, [in] IInkStrokes* Strokes, [in] VARIANT Gestures, [in, out] VARIANT_BOOL* Cancel); [id(0x0000000b)] void TabletAdded([in] IInkTablet* Tablet); [id(0x0000000c)] void TabletRemoved([in] long TabletId); }; typedef enum { DISPID_RecoClsid = 1, DISPID_RecoName = 2, DISPID_RecoVendor = 3, DISPID_RecoCapabilities = 4, DISPID_RecoLanguageID = 5, DISPID_RecoPreferredPacketDescription = 6, DISPID_RecoCreateRecognizerContext = 7, DISPID_RecoSupportedProperties = 8 } DISPID_InkRecognizer; typedef enum { IRC_DontCare = 1, IRC_Object = 2, IRC_FreeInput = 4, IRC_LinedInput = 8, IRC_BoxedInput = 16, IRC_CharacterAutoCompletionInput = 32, IRC_RightAndDown = 64, IRC_LeftAndDown = 128, IRC_DownAndLeft = 256, IRC_DownAndRight = 512, IRC_ArbitraryAngle = 1024, IRC_Lattice = 2048, IRC_AdviseInkChange = 4096, IRC_StrokeReorder = 8192 } InkRecognizerCapabilities; typedef enum { IRCACM_Full = 0, IRCACM_Prefix = 1, IRCACM_Random = 2 } InkRecognizerCharacterAutoCompletionMode; typedef struct tag_InkRecoGuide { tagRECT rectWritingBox; tagRECT rectDrawnBox; long cRows; long cColumns; long Midline; } _InkRecoGuide; typedef [public] _InkRecoGuide InkRecoGuide; [ odl, uuid(D934BE07-7B84-4208-9136-83C20994E905), dual, oleautomation ] interface IInkRecognizerGuide : IDispatch { [id(0x00000001), propget] HRESULT WritingBox( [out, retval] IInkRectangle** Rectangle); [id(0x00000001), propput] HRESULT WritingBox( [in] IInkRectangle* Rectangle); [id(0x00000002), propget] HRESULT DrawnBox( [out, retval] IInkRectangle** Rectangle); [id(0x00000002), propput] HRESULT DrawnBox( [in] IInkRectangle* Rectangle); [id(0x00000003), propget] HRESULT Rows([out, retval] long* Units); [id(0x00000003), propput] HRESULT Rows([in] long Units); [id(0x00000004), propget] HRESULT Columns( [out, retval] long* Units); [id(0x00000004), propput] HRESULT Columns([in] long Units); [id(0x00000005), propget] HRESULT Midline( [out, retval] long* Units); [id(0x00000005), propput] HRESULT Midline([in] long Units); [id(0x00000006), propget] HRESULT GuideData( [out, retval] InkRecoGuide* pRecoGuide); [id(0x00000006), propput] HRESULT GuideData( [in] InkRecoGuide pRecoGuide); }; typedef enum { IRM_None = 0, IRM_WordModeOnly = 1, IRM_Coerce = 2, IRM_TopInkBreaksOnly = 4, IRM_Max = 8 } InkRecognitionModes; [ odl, uuid(76BA3491-CB2F-406B-9961-0E0C4CDAAEF2), dual, oleautomation ] interface IInkWordList : IDispatch { HRESULT AddWord([in] BSTR NewWord); HRESULT RemoveWord([in] BSTR RemoveWord); HRESULT Merge([in] IInkWordList* MergeWordList); }; [ odl, uuid(782BF7CF-034B-4396-8A32-3A1833CF6B56), dual, oleautomation ] interface IInkRecognizer : IDispatch { HRESULT Name([out, retval] BSTR* Name); HRESULT Vendor([out, retval] BSTR* Vendor); HRESULT Capabilities( [out, retval] InkRecognizerCapabilities* CapabilitiesFlags); HRESULT Languages([out, retval] VARIANT* Languages); HRESULT SupportedProperties( [out, retval] VARIANT* SupportedProperties); HRESULT PreferredPacketDescription( [out, retval] VARIANT* PreferredPacketDescription); HRESULT CreateRecognizerContext( [out, retval] IInkRecognizerContext** Context); }; [ odl, uuid(C68F52F9-32A3-4625-906C-44FC23B40958), dual, oleautomation ] interface IInkRecognizerContext : IDispatch { [id(0x00000001), propget] HRESULT Strokes( [out, retval] IInkStrokes** Strokes); [id(0x00000001), propputref] HRESULT Strokes( [in] IInkStrokes* Strokes); [id(0x00000002), propget] HRESULT CharacterAutoCompletionMode( [out, retval] InkRecognizerCharacterAutoCompletionMode* Mode); [id(0x00000002), propput] HRESULT CharacterAutoCompletionMode( [in] InkRecognizerCharacterAutoCompletionMode Mode); [id(0x00000003), propget] HRESULT Factoid( [out, retval] BSTR* Factoid); [id(0x00000003), propput] HRESULT Factoid([in] BSTR Factoid); [id(0x00000006), propget] HRESULT Guide( [out, retval] IInkRecognizerGuide** RecognizerGuide); [id(0x00000006), propputref] HRESULT Guide( [in] IInkRecognizerGuide* RecognizerGuide); [id(0x00000008), propget] HRESULT PrefixText( [out, retval] BSTR* Prefix); [id(0x00000008), propput] HRESULT PrefixText([in] BSTR Prefix); [id(0x00000009), propget] HRESULT SuffixText( [out, retval] BSTR* Suffix); [id(0x00000009), propput] HRESULT SuffixText([in] BSTR Suffix); [id(0x00000007), propget] HRESULT RecognitionFlags( [out, retval] InkRecognitionModes* Modes); [id(0x00000007), propput] HRESULT RecognitionFlags( [in] InkRecognitionModes Modes); [id(0x00000004), propget] HRESULT WordList( [out, retval] IInkWordList** WordList); [id(0x00000004), propputref] HRESULT WordList( [in] IInkWordList* WordList); [id(0x00000005), propget] HRESULT Recognizer( [out, retval] IInkRecognizer** Recognizer); [id(0x0000000c)] HRESULT Recognize( [in, out] InkRecognitionStatus* RecognitionStatus, [out, retval] IInkRecognitionResult** RecognitionResult); [id(0x0000000d)] HRESULT StopBackgroundRecognition(); [id(0x0000000e)] HRESULT EndInkInput(); [id(0x0000000f)] HRESULT BackgroundRecognize( [in, optional] VARIANT CustomData); [id(0x00000010)] HRESULT BackgroundRecognizeWithAlternates( [in, optional] VARIANT CustomData); [id(0x0000000b)] HRESULT Clone( [out, retval] IInkRecognizerContext** RecoContext); [id(0x00000011)] HRESULT IsStringSupported( [in] BSTR String, [out, retval] VARIANT_BOOL* Supported); }; typedef enum { DISPID_IRecos_NewEnum = 0xfffffffc, DISPID_IRecosItem = 0, DISPID_IRecosCount = 1, DISPID_IRecosGetDefaultRecognizer = 2 } DISPID_InkRecognizers; [ odl, uuid(9CCC4F12-B0B7-4A8B-BF58-4AECA4E8CEFD), dual, oleautomation ] interface IInkRecognizers : IDispatch { HRESULT Count([out, retval] long* Count); HRESULT _NewEnum([out, retval] IUnknown** _NewEnum); HRESULT GetDefaultRecognizer( [in, optional, defaultvalue(0)] long lcid, [out, retval] IInkRecognizer** DefaultRecognizer); HRESULT Item( [in] long Index, [out, retval] IInkRecognizer** InkRecognizer); }; typedef enum { DISPID_IRERecognitionWithAlternates = 1, DISPID_IRERecognition = 2 } DISPID_InkRecognitionEvent; [ uuid(17BCE92F-2E21-47FD-9D33-3C6AFBFD8C59) ] dispinterface _IInkRecognitionEvents { properties: methods: [id(0x00000001)] void RecognitionWithAlternates( [in] IInkRecognitionResult* RecognitionResult, [in] VARIANT CustomData, [in] InkRecognitionStatus RecognitionStatus); [id(0x00000002)]void Recognition( [in] BSTR RecognizedString, [in] VARIANT CustomData, [in] InkRecognitionStatus RecognitionStatus); }; typedef enum { DISPID_IRecoCtx_Strokes = 1, DISPID_IRecoCtx_CharacterAutoCompletionMode = 2, DISPID_IRecoCtx_Factoid = 3, DISPID_IRecoCtx_WordList = 4, DISPID_IRecoCtx_Recognizer = 5, DISPID_IRecoCtx_Guide = 6, DISPID_IRecoCtx_Flags = 7, DISPID_IRecoCtx_PrefixText = 8, DISPID_IRecoCtx_SuffixText = 9, DISPID_IRecoCtx_StopRecognition = 10, DISPID_IRecoCtx_Clone = 11, DISPID_IRecoCtx_Recognize = 12, DISPID_IRecoCtx_StopBackgroundRecognition = 13, DISPID_IRecoCtx_EndInkInput = 14, DISPID_IRecoCtx_BackgroundRecognize = 15, DISPID_IRecoCtx_BackgroundRecognizeWithAlternates = 16, DISPID_IRecoCtx_IsStringSupported = 17 } DISPID_InkRecoContext; typedef enum { IRAS_Start = 0, IRAS_DefaultCount = 10, IRAS_All = 0xffffffff } InkRecognitionAlternatesSelection; typedef enum { DISPID_InkRecognitionResult_TopString = 1, DISPID_InkRecognitionResult_TopAlternate = 2, DISPID_InkRecognitionResult_Strokes = 3, DISPID_InkRecognitionResult_TopConfidence = 4, DISPID_InkRecognitionResult_AlternatesFromSelection = 5, DISPID_InkRecognitionResult_ModifyTopAlternate = 6, DISPID_InkRecognitionResult_SetResultOnStrokes = 7 } DISPID_InkRecognitionResult; typedef enum { DISPID_InkRecoAlternate_String = 1, DISPID_InkRecoAlternate_LineNumber = 2, DISPID_InkRecoAlternate_Baseline = 3, DISPID_InkRecoAlternate_Midline = 4, DISPID_InkRecoAlternate_Ascender = 5, DISPID_InkRecoAlternate_Descender = 6, DISPID_InkRecoAlternate_Confidence = 7, DISPID_InkRecoAlternate_Strokes = 8, DISPID_InkRecoAlternate_GetStrokesFromStrokeRanges = 9, DISPID_InkRecoAlternate_GetStrokesFromTextRange = 10, DISPID_InkRecoAlternate_GetTextRangeFromStrokes = 11, DISPID_InkRecoAlternate_GetPropertyValue = 12, DISPID_InkRecoAlternate_LineAlternates = 13, DISPID_InkRecoAlternate_ConfidenceAlternates = 14, DISPID_InkRecoAlternate_AlternatesWithConstantPropertyValues = 15 } DISPID_InkRecoAlternate; typedef enum { DISPID_InkRecognitionAlternates_NewEnum = 0xfffffffc, DISPID_InkRecognitionAlternates_Item = 0, DISPID_InkRecognitionAlternates_Count = 1, DISPID_InkRecognitionAlternates_Strokes = 2 } DISPID_InkRecognitionAlternates; typedef enum { DISPID_IRGWritingBox = 1, DISPID_IRGDrawnBox = 2, DISPID_IRGRows = 3, DISPID_IRGColumns = 4, DISPID_IRGMidline = 5, DISPID_IRGGuideData = 6 } DISPID_InkRecognizerGuide; typedef enum { DISPID_InkWordList_AddWord = 0, DISPID_InkWordList_RemoveWord = 1, DISPID_InkWordList_Merge = 2 } DISPID_InkWordList; [ uuid(937C1A34-151D-4610-9CA6-A8CC9BDB5D83) ] coclass InkDisp { [default] interface IInkDisp; [default, source] dispinterface _IInkEvents; }; [ uuid(65D00646-CDE3-4A88-9163-6769F0F1A97D) ] coclass InkOverlay { [default] interface IInkOverlay; [default, source] dispinterface _IInkOverlayEvents; }; [ uuid(04A1E553-FE36-4FDE-865E-344194E69424) ] coclass InkPicture { [default] interface IInkPicture; [default, source] dispinterface _IInkPictureEvents; }; [ uuid(43FB1553-AD74-4EE8-88E4-3E6DAAC915DB) ] coclass InkCollector { [default] interface IInkCollector; [default, source] dispinterface _IInkCollectorEvents; }; [ uuid(D8BF32A2-05A5-44C3-B3AA-5E80AC7D2576) ] coclass InkDrawingAttributes { [default] interface IInkDrawingAttributes; }; [ uuid(43B07326-AAE0-4B62-A83D-5FD768B7353C) ] coclass InkRectangle { [default] interface IInkRectangle; }; [ uuid(9C1CC6E4-D7EB-4EEB-9091-15A7C8791ED9) ] coclass InkRenderer { [default] interface IInkRenderer; }; [ uuid(E3D5D93C-1663-4A78-A1A7-22375DFEBAEE) ] coclass InkTransform { [default] interface IInkTransform; }; [ uuid(9FD4E808-F6E6-4E65-98D3-AA39054C1255) ] coclass InkRecognizers { [default] interface IInkRecognizers; }; [ uuid(AAC46A37-9229-4FC0-8CCE-4497569BF4D1) ] coclass InkRecognizerContext { [default] interface IInkRecognizerContext; [default, source] dispinterface _IInkRecognitionEvents; }; [ uuid(8770D941-A63A-4671-A375-2855A18EBA73) ] coclass InkRecognizerGuide { [default] interface IInkRecognizerGuide; }; [ uuid(6E4FCB12-510A-4D40-9304-1DA10AE9147C) ] coclass InkTablets { [default] interface IInkTablets; }; [ uuid(9DE85094-F71F-44F1-8471-15A2FA76FCF3) ] coclass InkWordList { [default] interface IInkWordList; }; [ uuid(48F491BC-240E-4860-B079-A1E94D3D2C86), noncreatable ] coclass InkStrokes { [default] interface IInkStrokes; [default, source] dispinterface _IInkStrokesEvents; }; [ odl, uuid(03F8E511-43A1-11D3-8BB6-0080C7D6BAD5), hidden, dual, oleautomation ] interface IInk : IDispatch { }; typedef struct tagtagINKMETRIC { int iHeight; int iFontAscent; int iFontDescent; unsigned long dwFlags; unsigned long Color; } tagINKMETRIC; [ odl, uuid(9C1C5AD6-F22F-4DE4-B453-A2CC482E7C33), hidden ] interface IInkLineInfo : IUnknown { HRESULT _stdcall SetFormat(tagINKMETRIC* pim); HRESULT _stdcall GetFormat(tagINKMETRIC* pim); HRESULT _stdcall GetInkExtent( tagINKMETRIC* pim, unsigned int* pnWidth); HRESULT _stdcall GetCandidate( unsigned int nCandidateNum, LPWSTR pwcRecogWord, unsigned int* pcwcRecogWord, unsigned long dwFlags); HRESULT _stdcall SetCandidate( unsigned int nCandidateNum, LPWSTR strRecogWord); HRESULT _stdcall Recognize(); }; [ odl, uuid(B4563688-98EB-4646-B279-44DA14D45748), hidden, dual, oleautomation ] interface ISketchInk : IDispatch { }; [ uuid(13DE4A42-8D21-4C8E-BF9C-8F69CB068FCA), hidden ] coclass Ink { [default] interface IInk; interface IInkLineInfo; }; [ uuid(F0291081-E87C-4E07-97DA-A0A03761E586), hidden ] coclass SketchInk { [default] interface ISketchInk; }; };