Blob Blame History Raw
From 7eee3397ffe04d53ccde517e4cf9669f824969c8 Mon Sep 17 00:00:00 2001
From: Jacek Caban <jacek@codeweavers.com>
Date: Wed, 29 Apr 2015 21:27:26 +0200
Subject: msinkaut.idl: Added new file.


diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am
index 4fa8d83..3271692 100644
--- a/mingw-w64-headers/Makefile.am
+++ b/mingw-w64-headers/Makefile.am
@@ -108,6 +108,7 @@ IDL_SRCS = \
   include/mmdeviceapi.idl \
   include/mscoree.idl \
   include/msctf.idl \
+  include/msinkaut.idl \
   include/mshtml.idl \
   include/mshtmhst.idl \
   include/msopc.idl \
diff --git a/mingw-w64-headers/Makefile.in b/mingw-w64-headers/Makefile.in
index 5a57f43..6c2c031 100644
--- a/mingw-w64-headers/Makefile.in
+++ b/mingw-w64-headers/Makefile.in
@@ -332,6 +332,7 @@ EXTRA_HEADERS = \
 @HAVE_WIDL_TRUE@  include/mmdeviceapi.idl \
 @HAVE_WIDL_TRUE@  include/mscoree.idl \
 @HAVE_WIDL_TRUE@  include/msctf.idl \
+@HAVE_WIDL_TRUE@  include/msinkaut.idl \
 @HAVE_WIDL_TRUE@  include/mshtml.idl \
 @HAVE_WIDL_TRUE@  include/mshtmhst.idl \
 @HAVE_WIDL_TRUE@  include/msopc.idl \
diff --git a/mingw-w64-headers/include/msinkaut.idl b/mingw-w64-headers/include/msinkaut.idl
new file mode 100644
index 0000000..6d3c547
--- /dev/null
+++ b/mingw-w64-headers/include/msinkaut.idl
@@ -0,0 +1,711 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+import "oaidl.idl";
+import "ocidl.idl";
+import "tpcshrd.idl";
+
+// cpp_quote("#import <tpcerror.h>")
+
+typedef enum InkRasterOperation {
+    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 InkPenTip {
+    IPT_Ball      = 0,
+    IPT_Rectangle = 1
+} InkPenTip;
+
+typedef enum TabletHardwareCapabilities {
+    THWC_Integrated             = 0x1,
+    THWC_CursorMustTouch        = 0x2,
+    THWC_HardProximity          = 0x4,
+    THWC_CursorsHavePhysicalIds = 0x8
+} TabletHardwareCapabilities;
+
+typedef enum TabletPropertyMetricUnit {
+    TPMU_Default,
+    TPMU_Inches,
+    TPMU_Centimeters,
+    TPMU_Degrees,
+    TPMU_Radians,
+    TPMU_Seconds,
+    TPMU_Pounds,
+    TPMU_Grams
+} TabletPropertyMetricUnit;
+
+typedef enum InkCursorButtonState {
+    ICBS_Unavailable,
+    ICBS_Up,
+    ICBS_Down
+} InkCursorButtonState;
+
+typedef enum InkRecognitionConfidence {
+    IRC_Strong       = 0,
+    IRC_Intermediate = 1,
+    IRC_Poor         = 2
+} InkRecognitionConfidence;
+
+typedef enum InkBoundingBoxMode {
+    IBBM_Default    = 0,
+    IBBM_NoCurveFit = 1,
+    IBBM_CurveFit   = 2,
+    IBBM_PointsOnly = 3,
+    IBBM_Union      = 4
+} InkBoundingBoxMode;
+
+typedef enum InkExtractFlags {
+    IEF_CopyFromOriginal   = 0,
+    IEF_RemoveFromOriginal = 1,
+    IEF_Default            = IEF_RemoveFromOriginal
+} InkExtractFlags;
+
+typedef enum InkPersistenceFormat {
+    IPF_InkSerializedFormat       = 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 InkClipboardFormats {
+    ICF_None                = 0x0000,
+    ICF_InkSerializedFormat = 0x0001,
+    ICF_SketchInk           = 0x0002,
+    ICF_TextInk             = 0x0006,
+    ICF_EnhancedMetafile    = 0x0008,
+    ICF_Metafile            = 0x0020,
+    ICF_Bitmap              = 0x0040,
+    ICF_PasteMask           = 0x0007,
+    ICF_CopyMask            = 0x007f,
+    ICF_Default             = ICF_CopyMask
+} InkClipboardFormats;
+
+typedef enum InkClipboardModes {
+    ICB_Copy        = 0x00,
+    ICB_Cut         = 0x01,
+    ICB_ExtractOnly = 0x30,
+    ICB_DelayedCopy = 0x20,
+    ICB_Default     = ICB_Copy
+} InkClipboardModes;
+
+typedef enum InkCollectionMode {
+    ICM_InkOnly,
+    ICM_GestureOnly,
+    ICM_InkAndGesture
+} InkCollectionMode;
+
+typedef enum InkMousePointer {
+    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 InkApplicationGesture {
+    IAG_AllGestures     = 0x0000,
+    IAG_NoGesture       = 0xf000,
+    IAG_Scratchout      = 0xf001,
+    IAG_Triangle        = 0xf002,
+    IAG_Square          = 0xf003,
+    IAG_Star            = 0xf004,
+    IAG_Check           = 0xf005,
+    IAG_Curlicue        = 0xf010,
+    IAG_DoubleCurlicue  = 0xf011,
+    IAG_Circle          = 0xf020,
+    IAG_DoubleCircle    = 0xf021,
+    IAG_SemiCircleLeft  = 0xf028,
+    IAG_SemiCircleRight = 0xf029,
+    IAG_ChevronUp       = 0xf030,
+    IAG_ChevronDown     = 0xf031,
+    IAG_ChevronLeft     = 0xf032,
+    IAG_ChevronRight    = 0xf033,
+    IAG_ArrowUp         = 0xf038,
+    IAG_ArrowDown       = 0xf039,
+    IAG_ArrowLeft       = 0xf03a,
+    IAG_ArrowRight      = 0xf03b,
+    IAG_Up              = 0xf058,
+    IAG_Down            = 0xf059,
+    IAG_Left            = 0xf05a,
+    IAG_Right           = 0xf05b,
+    IAG_UpDown          = 0xf060,
+    IAG_DownUp          = 0xf061,
+    IAG_LeftRight       = 0xf062,
+    IAG_RightLeft       = 0xf063,
+    IAG_UpLeftLong      = 0xf064,
+    IAG_UpRightLong     = 0xf065,
+    IAG_DownLeftLong    = 0xf066,
+    IAG_DownRightLong   = 0xf067,
+    IAG_UpLeft          = 0xf068,
+    IAG_UpRight         = 0xf069,
+    IAG_DownLeft        = 0xf06a,
+    IAG_DownRight       = 0xf06b,
+    IAG_LeftUp          = 0xf06c,
+    IAG_LeftDown        = 0xf06d,
+    IAG_RightUp         = 0xf06e,
+    IAG_RightDown       = 0xf06f,
+    IAG_Exclamation     = 0xf0a4,
+    IAG_Tap             = 0xf0f0,
+    IAG_DoubleTap       = 0xf0f1
+} InkApplicationGesture;
+
+typedef enum InkCollectorEventInterest {
+    ICEI_DefaultEvents    = -1,
+    ICEI_CursorDown       = (ICEI_DefaultEvents+1),
+    ICEI_Stroke           = (ICEI_CursorDown+1),
+    ICEI_NewPackets       = (ICEI_Stroke+1),
+    ICEI_NewInAirPackets  = (ICEI_NewPackets+1),
+    ICEI_CursorButtonDown = (ICEI_NewInAirPackets+1),
+    ICEI_CursorButtonUp   = (ICEI_CursorButtonDown+1),
+    ICEI_CursorInRange    = (ICEI_CursorButtonUp+1),
+    ICEI_CursorOutOfRange = (ICEI_CursorInRange+1),
+    ICEI_SystemGesture    = (ICEI_CursorOutOfRange+1),
+    ICEI_TabletAdded      = (ICEI_SystemGesture+1),
+    ICEI_TabletRemoved    = (ICEI_TabletAdded+1),
+    ICEI_MouseDown        = (ICEI_TabletRemoved+1),
+    ICEI_MouseMove        = (ICEI_MouseDown+1),
+    ICEI_MouseUp          = (ICEI_MouseMove+1),
+    ICEI_MouseWheel       = (ICEI_MouseUp+1),
+    ICEI_DblClick         = (ICEI_MouseWheel+1),
+    ICEI_AllEvents        = (ICEI_DblClick+1)
+} InkCollectorEventInterest;
+
+typedef enum DISPID_InkCollectorEvent {
+    DISPID_ICEStroke              = 1,
+    DISPID_ICECursorDown          = (DISPID_ICEStroke+1),
+    DISPID_ICENewPackets          = (DISPID_ICECursorDown+1),
+    DISPID_ICENewInAirPackets     = (DISPID_ICENewPackets+1),
+    DISPID_ICECursorButtonDown    = (DISPID_ICENewInAirPackets+1),
+    DISPID_ICECursorButtonUp      = (DISPID_ICECursorButtonDown+1),
+    DISPID_ICECursorInRange       = (DISPID_ICECursorButtonUp+1),
+    DISPID_ICECursorOutOfRange    = (DISPID_ICECursorInRange+1),
+    DISPID_ICESystemGesture       = (DISPID_ICECursorOutOfRange+1),
+    DISPID_ICEGesture             = (DISPID_ICESystemGesture+1),
+    DISPID_ICETabletAdded         = (DISPID_ICEGesture+1),
+    DISPID_ICETabletRemoved       = (DISPID_ICETabletAdded+1),
+    DISPID_IOEPainting            = (DISPID_ICETabletRemoved+1),
+    DISPID_IOEPainted             = (DISPID_IOEPainting+1),
+    DISPID_IOESelectionChanging   = (DISPID_IOEPainted+1),
+    DISPID_IOESelectionChanged    = (DISPID_IOESelectionChanging+1),
+    DISPID_IOESelectionMoving     = (DISPID_IOESelectionChanged+1),
+    DISPID_IOESelectionMoved      = (DISPID_IOESelectionMoving+1),
+    DISPID_IOESelectionResizing   = (DISPID_IOESelectionMoved+1),
+    DISPID_IOESelectionResized    = (DISPID_IOESelectionResizing+1),
+    DISPID_IOEStrokesDeleting     = (DISPID_IOESelectionResized+1),
+    DISPID_IOEStrokesDeleted      = (DISPID_IOEStrokesDeleting+1),
+    DISPID_IPEChangeUICues        = (DISPID_IOEStrokesDeleted+1),
+    DISPID_IPEClick               = (DISPID_IPEChangeUICues+1),
+    DISPID_IPEDblClick            = (DISPID_IPEClick+1),
+    DISPID_IPEInvalidated         = (DISPID_IPEDblClick+1),
+    DISPID_IPEMouseDown           = (DISPID_IPEInvalidated+1),
+    DISPID_IPEMouseEnter          = (DISPID_IPEMouseDown+1),
+    DISPID_IPEMouseHover          = (DISPID_IPEMouseEnter+1),
+    DISPID_IPEMouseLeave          = (DISPID_IPEMouseHover+1),
+    DISPID_IPEMouseMove           = (DISPID_IPEMouseLeave+1),
+    DISPID_IPEMouseUp             = (DISPID_IPEMouseMove+1),
+    DISPID_IPEMouseWheel          = (DISPID_IPEMouseUp+1),
+    DISPID_IPESizeModeChanged     = (DISPID_IPEMouseWheel+1),
+    DISPID_IPEStyleChanged        = (DISPID_IPESizeModeChanged+1),
+    DISPID_IPESystemColorsChanged = (DISPID_IPEStyleChanged+1),
+    DISPID_IPEKeyDown             = (DISPID_IPESystemColorsChanged+1),
+    DISPID_IPEKeyPress            = (DISPID_IPEKeyDown+1),
+    DISPID_IPEKeyUp               = (DISPID_IPEKeyPress+1),
+    DISPID_IPEResize              = (DISPID_IPEKeyUp+1),
+    DISPID_IPESizeChanged         = (DISPID_IPEResize+1)
+} DISPID_InkCollectorEvent;
+
+
+interface IInkDisp;
+interface IInkStrokes;
+interface IInkRecognitionAlternate;
+
+[
+    object,
+    uuid(db489209-b7c3-411d-90f6-1548cfff271e),
+    dual
+]
+interface IInkExtendedProperty : IDispatch
+{
+    [propget] HRESULT Guid([out, retval] BSTR *Guid);
+    [propget] HRESULT Data([out, retval] VARIANT *Data);
+    [propput] HRESULT Data([in] VARIANT Data);
+}
+
+[
+    object,
+    uuid(89f2a8be-95a9-4530-8b8f-88e971e3e25f),
+    dual
+]
+interface IInkExtendedProperties : IDispatch
+{
+    [propget] HRESULT Count([out, retval] long *Count);
+    [propget] 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);
+}
+
+[
+    object,
+    uuid(bf519b75-0a15-4623-adc9-c00d436a8092),
+    dual
+]
+interface IInkDrawingAttributes : IDispatch
+{
+    [propget] HRESULT Color([out] long *CurrentColor);
+    [propput] HRESULT Color([in] long NewColor);
+    [propget] HRESULT Width([out, retval] float *CurrentWidth);
+    [propput] HRESULT Width([in] float NewWidth);
+    [propget] HRESULT Height([out, retval] float *CurrentHeight);
+    [propput] HRESULT Height([in] float NewHeight);
+    [propget] HRESULT FitToCurve([out, retval] VARIANT_BOOL *Flag);
+    [propput] HRESULT FitToCurve([in] VARIANT_BOOL Flag);
+    [propget] HRESULT IgnorePressure([out, retval] VARIANT_BOOL *Flag);
+    [propput] HRESULT IgnorePressure([in] VARIANT_BOOL Flag);
+    [propget] HRESULT AntiAliased([out, retval] VARIANT_BOOL *Flag);
+    [propput] HRESULT AntiAliased([in] VARIANT_BOOL Flag);
+    [propget] HRESULT Transparency([out, retval] long *CurrentTransparency);
+    [propput] HRESULT Transparency([in] long NewTransparency);
+    [propget] HRESULT RasterOperation([out, retval] InkRasterOperation *CurrentRasterOperation);
+    [propput] HRESULT RasterOperation([in] InkRasterOperation NewRasterOperation);
+    [propget] HRESULT PenTip([out, retval] InkPenTip *CurrentPenTip);
+    [propput] HRESULT PenTip([in] InkPenTip NewPenTip);
+    [propget] HRESULT ExtendedProperties([out, retval] IInkExtendedProperties **Properties);
+    HRESULT Clone([out, retval] IInkDrawingAttributes **DrawingAttributes);
+}
+
+[
+    object,
+    uuid(9794ff82-6071-4717-8a8b-6ac7c64a686e),
+    dual
+]
+interface IInkRectangle : IDispatch
+{
+    [propget] HRESULT Top([out, retval] long *Units);
+    [propput] HRESULT Top([in] long Units);
+    [propget] HRESULT Left([out, retval] long *Units);
+    [propput] HRESULT Left([in] long Units);
+    [propget] HRESULT Bottom([out, retval] long *Units);
+    [propput] HRESULT Bottom([in] long Units);
+    [propget] HRESULT Right([out, retval] long *Units);
+    [propput] HRESULT Right([in] long Units);
+    [propget] HRESULT Data([out, retval] RECT *Rect);
+    [propput] HRESULT Data([in] RECT Rect);
+    HRESULT GetRectangle([out] long *Top, [out] long *Left, [out] long *Bottom, [out] long *Right);
+    HRESULT SetRectangle([in] long Top, [in] long Left, [in] long Bottom, [in] long Right);
+}
+
+[
+    object,
+    uuid(2de25eaa-6ef8-42d5-aee9-185bc81b912d),
+    dual
+]
+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] float *Resolution);
+}
+
+[
+    object,
+    uuid(85ef9417-1d59-49b2-a13c-702c85430894),
+    dual
+]
+interface IInkCursorButton : IDispatch
+{
+    [propget] HRESULT Name([out, retval] BSTR *Name);
+    [propget] HRESULT Id([out, retval] BSTR *Id);
+    [propget] HRESULT State([out, retval] InkCursorButtonState *CurrentState);
+}
+
+[
+    object,
+    uuid(3671cC40-b624-4671-9fa0-db119d952d54),
+    dual
+]
+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);
+}
+
+[
+    object,
+    uuid(ad30c630-40c5-4350-8405-9c71012fc558),
+    dual
+]
+interface IInkCursor : IDispatch
+{
+    [propget] HRESULT Name([out, retval] BSTR *Name);
+    [propget] HRESULT Id([out, retval] long *Id);
+    [propget] HRESULT Inverted([out, retval] VARIANT_BOOL *Status);
+    [propget] HRESULT DrawingAttributes([out, retval] IInkDrawingAttributes **Attributes);
+    [propputref] HRESULT DrawingAttributes([in] IInkDrawingAttributes *Attributes);
+    [propget] HRESULT Tablet([out, retval] IInkTablet **Tablet);
+    [propget] HRESULT Buttons([out, retval] IInkCursorButtons **Buttons);
+}
+
+[
+    object,
+    uuid(615f1d43-8703-4565-88e2-8201d2ecd7b7),
+    dual
+]
+interface IInkTransform : IDispatch
+{
+    HRESULT Reset();
+    HRESULT Translate([in] float HorizontalComponent, [in] float VerticalComponent);
+    HRESULT Rotate([in] float Degrees, [in, defaultvalue(0)] float x, [in, defaultvalue(0)] float y);
+    HRESULT Reflect([in] VARIANT_BOOL Horizontally, [in] VARIANT_BOOL Vertically);
+    HRESULT Shear([in] float HorizontalComponent, [in] float VerticalComponent);
+    HRESULT ScaleTransform([in] float HorizontalMultiplier, [in] float VerticalMultiplier);
+    HRESULT GetTransform([out] float *eM11, [out] float *eM12, [out] float *eM21, [out] float *eM22,
+            [out] float *eDx, [out] float *eDy);
+    HRESULT SetTransform([in] float eM11, [in] float eM12, [in] float eM21, [in] float eM22, [in] float eDx, [in] float eDy);
+    [propget, hidden] HRESULT eM11([out, retval] float *Value);
+    [propput, hidden] HRESULT eM11([in] float Value);
+    [propget, hidden] HRESULT eM12([out, retval] float *Value);
+    [propput, hidden] HRESULT eM12([in] float Value);
+    [propget, hidden] HRESULT eM21([out, retval] float *Value);
+    [propput, hidden] HRESULT eM21([in] float Value);
+    [propget, hidden] HRESULT eM22([out, retval] float *Value);
+    [propput, hidden] HRESULT eM22([in] float Value);
+    [propget, hidden] HRESULT eDx([out, retval] float *Value);
+    [propput, hidden] HRESULT eDx([in] float Value);
+    [propget, hidden] HRESULT eDy([out, retval] float *Value);
+    [propput, hidden] HRESULT eDy([in] float Value);
+    [propget, hidden] HRESULT Data([out, retval] XFORM *XForm);
+    [propput, hidden] HRESULT Data([in] XFORM XForm);
+}
+
+[
+    object,
+    uuid(286a167f-9f19-4c61-9d53-4f07be622b84),
+    dual
+]
+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);
+}
+
+[
+    object,
+    uuid(b7e660ad-77e4-429b-adda-873780d1fc4a),
+    dual
+]
+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 *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);
+}
+
+[
+    object,
+    uuid(3bc129a8-86cd-45ad-bde8-e0d32d61c16d),
+    dual
+]
+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();
+}
+
+[
+    object,
+    uuid(43242fea-91d1-4a72-963e-fbb91829cfa2),
+    dual
+]
+interface IInkStrokeDisp : IDispatch
+{
+    [propget] HRESULT ID([out, retval] long *ID);
+    [propget] HRESULT BezierPoints([out, retval] VARIANT *Points);
+    [propget] HRESULT DrawingAttributes([out, retval] IInkDrawingAttributes **DrawAttrs);
+    [propputref] HRESULT DrawingAttributes([in] IInkDrawingAttributes *DrawAttrs);
+    [propget] HRESULT Ink([out, retval] IInkDisp **Ink);
+    [propget] HRESULT ExtendedProperties([out, retval] IInkExtendedProperties **Properties);
+    [propget] HRESULT PolylineCusps([out, retval] VARIANT *Cusps);
+    [propget] HRESULT BezierCusps([out, retval] VARIANT *Cusps);
+    [propget] HRESULT SelfIntersections([out, retval] VARIANT *Intersections);
+    [propget] HRESULT PacketCount([out, retval] long *plCount);
+    [propget] HRESULT PacketSize([out, retval] long *plSize);
+    [propget] HRESULT PacketDescription([out, retval] VARIANT *PacketDescription);
+    [propget] HRESULT Deleted([out, retval] VARIANT_BOOL *Deleted);
+    HRESULT GetBoundingBox([in] InkBoundingBoxMode BoundingBoxMode, [out, retval] IInkRectangle **Rectangle);
+    HRESULT FindIntersections([in] IInkStrokes *Strokes, [out, retval] VARIANT *Intersections);
+    HRESULT GetRectangleIntersections([in] IInkRectangle *Rectangle, [out, retval] VARIANT *Intersections);
+    HRESULT Clip([in] IInkRectangle *Rectangle);
+    HRESULT HitTestCircle([in] long X, [in] long Y, [in] float Radius, [out, retval] VARIANT_BOOL *Intersects);
+    HRESULT NearestPoint([in] long X, [in] long Y, [in, out] float *Distance, [out, retval] float *Point);
+    HRESULT Split([in] float SplitAt, [out, retval] IInkStrokeDisp **NewStroke);
+    HRESULT GetPacketDescriptionPropertyMetrics([in] BSTR PropertyName, [out] long *Minimum, [out] long *Maximum,
+            [out] TabletPropertyMetricUnit *Units, [out] float *Resolution);
+    HRESULT GetPoints([in] long Index, [in] long Count, [out, retval] VARIANT *Points);
+    HRESULT SetPoints([in] VARIANT Points, [in] long Index, [in] long Count, [out, retval] long *NumberOfPointsSet);
+    HRESULT GetPacketData([in] long Index, [in] long Count, [out, retval] VARIANT *PacketData);
+    HRESULT GetPacketValuesByProperty([in] BSTR PropertyName, [in] long Index, [in] long Count,
+            [out, retval] VARIANT *PacketValues) ;
+    HRESULT SetPacketValuesByProperty([in] BSTR bstrPropertyName, [in] VARIANT PacketValues, [in] long Index,
+            [in] long Count, [out, retval] long *NumberOfPacketsSet);
+    HRESULT GetFlattenedBezierPoints([in] long FittingError, [out, retval] VARIANT *FlattenedBezierPoints);
+    HRESULT Transform([in] IInkTransform *Transform, [in, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth);
+    HRESULT ScaleToRectangle([in] IInkRectangle *Rectangle);
+    HRESULT Move([in] float HorizontalComponent, [in] float VerticalComponent);
+    HRESULT Rotate([in] float Degrees, [in, defaultvalue(0)] float x, [in, defaultvalue(0)] float y);
+    HRESULT Shear([in] float HorizontalMultiplier, [in] float VerticalMultiplier);
+    HRESULT ScaleTransform([in] float HorizontalMultiplier, [in] float VerticalMultiplier);
+}
+
+[
+    object,
+    uuid(7e23a88f-c30e-420f-9bdb-28902543f0c1),
+    dual
+]
+interface IInkCustomStrokes : IDispatch
+{
+    [propget] HRESULT Count([out, retval] long *Count);
+    [propget, restricted] 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();
+}
+
+[
+    object,
+    uuid(9d398fa0-c4e2-4fcd-9973-975caaf47ea6),
+    dual
+]
+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 **ppunkInkCustomStrokes);
+    HRESULT GetBoundingBox([in] InkBoundingBoxMode BoundingBoxMode, [out, retval] IInkRectangle **Rectangle);
+    HRESULT DeleteStrokes([in, unique, defaultvalue(0)] IInkStrokes *Strokes);
+    HRESULT DeleteStroke([in] IInkStrokeDisp *Stroke);
+    HRESULT ExtractStrokes([in] IInkStrokes *Strokes, 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);
+}
+
+[
+    object,
+    uuid(f1f4c9d8-590a-4963-b3ae-1935671bb6f3),
+    dual
+]
+interface IInkStrokes : IDispatch
+{
+    [propget] HRESULT Count([out, retval] long *Count);
+    [propget] 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, defaultvalue(0)] VARIANT_BOOL ApplyOnPenWidth);
+    HRESULT ScaleToRectangle([in] IInkRectangle *Rectangle);
+    HRESULT Move([in] float HorizontalComponent, [in] float VerticalComponent);
+    HRESULT Rotate([in] float Degrees, [in, defaultvalue(0)] float x, [in, defaultvalue(0)] 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();
+}
+
+[
+    object,
+    uuid(e6257a9c-b511-4f4c-a8b0-a7dbc9506b83),
+    dual
+]
+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_PTR hDC, [in] IInkStrokes *Strokes);
+    HRESULT DrawStroke([in] LONG_PTR hDC, [in] IInkStrokeDisp *Stroke,
+            [in, defaultvalue(0)] IInkDrawingAttributes *DrawingAttributes);
+    HRESULT PixelToInkSpace([in] LONG_PTR hDC, [in, out] long *x, [in, out] long *y);
+    HRESULT InkSpaceToPixel([in] LONG_PTR hdcDisplay, [in, out] long *x, [in, out] long *y);
+    HRESULT PixelToInkSpaceFromPoints([in] LONG_PTR hDC, [in, out] VARIANT *Points);
+    HRESULT InkSpaceToPixelFromPoints([in] LONG_PTR hDC, [in, out] VARIANT *Points);
+    HRESULT Measure([in] IInkStrokes *Strokes, [out, retval] IInkRectangle **Rectangle);
+    HRESULT MeasureStroke([in] IInkStrokeDisp *Stroke, [in] IInkDrawingAttributes *DrawingAttributes,
+            [out, retval] IInkRectangle **Rectangle);
+    HRESULT Move([in] float HorizontalComponent, [in] float VerticalComponent);
+    HRESULT Rotate([in] float Degrees, [in, defaultvalue(0)] float x, [in, defaultvalue(0)] float y);
+    HRESULT ScaleTransform([in] float HorizontalMultiplier, [in] float VerticalMultiplier,
+            [in, defaultvalue(-1)] VARIANT_BOOL ApplyOnPenWidth);
+}
+
+[
+    object,
+    uuid(a248c1ac-c698-4e06-9e5c-d57f77c7e647),
+    dual
+]
+interface IInkCursors : IDispatch
+{
+    [propget] HRESULT Count([out, retval] long *Count);
+    [propget, restricted] HRESULT _NewEnum([out, retval] IUnknown **_NewEnum);
+    HRESULT Item([in] long Index, [out, retval] IInkCursor **Cursor);
+}
+
+[
+    object,
+    uuid(f0f060b5-8b1f-4a7c-89ec-880692588a4f),
+    dual
+]
+interface IInkCollector : IDispatch
+{
+    [propget] HRESULT hWnd([out, retval] LONG_PTR *CurrentWindow);
+    [propput] HRESULT hWnd([in] LONG_PTR NewWindow);
+    [propget] HRESULT Enabled([out, retval] VARIANT_BOOL *Collecting);
+    [propput] HRESULT Enabled([in] VARIANT_BOOL Collecting);
+    [propget] HRESULT DefaultDrawingAttributes([out, retval] IInkDrawingAttributes **CurrentAttributes);
+    [propputref] HRESULT DefaultDrawingAttributes([in] IInkDrawingAttributes *NewAttributes);
+    [propget] HRESULT Renderer([out, retval] IInkRenderer **CurrentInkRenderer);
+    [propputref] HRESULT Renderer([in] IInkRenderer *NewInkRenderer);
+    [propget] HRESULT Ink([out, retval] IInkDisp **Ink);
+    [propputref] HRESULT Ink([in] IInkDisp *NewInk);
+    [propget] HRESULT AutoRedraw([out, retval] VARIANT_BOOL *AutoRedraw);
+    [propput] HRESULT AutoRedraw([in] VARIANT_BOOL AutoRedraw);
+    [propget] HRESULT CollectingInk([out, retval] VARIANT_BOOL *Collecting);
+    [propget] HRESULT CollectionMode([out, retval] InkCollectionMode *Mode);
+    [propput] HRESULT CollectionMode([in] InkCollectionMode Mode);
+    [propget] HRESULT DynamicRendering([out, retval] VARIANT_BOOL *Enabled);
+    [propput] HRESULT DynamicRendering([in] VARIANT_BOOL Enabled);
+    [propget] HRESULT DesiredPacketDescription([out, retval] VARIANT *PacketGuids);
+    [propput] HRESULT DesiredPacketDescription([in] VARIANT PacketGuids);
+    [propget] HRESULT MouseIcon([out, retval] IPictureDisp **MouseIcon);
+    [propput] HRESULT MouseIcon([in, unique] IPictureDisp *MouseIcon);
+    [propputref] HRESULT MouseIcon([in, unique] IPictureDisp *MouseIcon);
+    [propget] HRESULT MousePointer([out, retval] InkMousePointer *MousePointer);
+    [propput] HRESULT MousePointer([in] InkMousePointer MousePointer);
+    [propget] HRESULT Cursors([out, retval] IInkCursors **Cursors);
+    [propget] HRESULT MarginX([out, retval] long *MarginX);
+    [propput] HRESULT MarginX([in] long MarginX);
+    [propget] HRESULT MarginY([out, retval] long *MarginY);
+    [propput] HRESULT MarginY([in] long MarginY);
+    [propget] HRESULT Tablet([out, retval] IInkTablet **SingleTablet);
+    [propget] HRESULT SupportHighContrastInk([out, retval] VARIANT_BOOL *Support);
+    [propput] HRESULT SupportHighContrastInk([in] VARIANT_BOOL Support);
+    HRESULT SetGestureStatus([in] InkApplicationGesture Gesture, [in] VARIANT_BOOL Listen);
+    HRESULT GetGestureStatus([in] InkApplicationGesture Gesture, [out, retval] VARIANT_BOOL *Listening);
+    HRESULT GetWindowInputRectangle([in, out] IInkRectangle **WindowInputRectangle);
+    HRESULT SetWindowInputRectangle([in] IInkRectangle *WindowInputRectangle);
+    HRESULT SetAllTabletsMode([in, defaultvalue(-1)] VARIANT_BOOL UseMouseForInput);
+    HRESULT SetSingleTabletIntegratedMode([in] IInkTablet *Tablet);
+    HRESULT GetEventInterest([in] InkCollectorEventInterest EventId, [out, retval] VARIANT_BOOL *Listen);
+    HRESULT SetEventInterest([in] InkCollectorEventInterest EventId, [in] VARIANT_BOOL Listen);
+}
+
+[
+    uuid(11a583f2-712d-4fea-abcf-ab4af38ea06b)
+]
+dispinterface _IInkCollectorEvents
+{
+    properties:
+    methods:
+    /* FIXME */
+}
+
+[
+    uuid(43fb1553-ad74-4ee8-88e4-3e6daac915db)
+]
+coclass InkCollector
+{
+}
diff --git a/mingw-w64-headers/include/tpcshrd.h b/mingw-w64-headers/include/tpcshrd.h
index a8dd1fc..b114270 100644
--- a/mingw-w64-headers/include/tpcshrd.h
+++ b/mingw-w64-headers/include/tpcshrd.h
@@ -44,6 +44,17 @@ extern "C" {
 typedef DWORD CURSOR_ID;
 typedef USHORT SYSTEM_EVENT;
 typedef DWORD TABLET_CONTEXT_ID;
+#ifndef _XFORM_
+#define _XFORM_
+typedef struct tagXFORM {
+    float eM11;
+    float eM12;
+    float eM21;
+    float eM22;
+    float eDx;
+    float eDy;
+} XFORM;
+#endif
 /* Begin additional prototypes for all interfaces */
 
 
diff --git a/mingw-w64-headers/include/tpcshrd.idl b/mingw-w64-headers/include/tpcshrd.idl
index cc74801..d11f3e8 100644
--- a/mingw-w64-headers/include/tpcshrd.idl
+++ b/mingw-w64-headers/include/tpcshrd.idl
@@ -28,3 +28,15 @@ cpp_quote("#define IP_MARGIN       0x4")
 typedef DWORD CURSOR_ID;
 typedef USHORT SYSTEM_EVENT;
 typedef DWORD TABLET_CONTEXT_ID;
+
+cpp_quote("#ifndef _XFORM_")
+cpp_quote("#define _XFORM_")
+typedef struct tagXFORM {
+    float eM11;
+    float eM12;
+    float eM21;
+    float eM22;
+    float eDx;
+    float eDy;
+} XFORM;
+cpp_quote("#endif")