/*** Autogenerated by WIDL 5.0.5 from msinkaut.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __msinkaut_h__
#define __msinkaut_h__

/* Forward declarations */

#ifndef __IInkExtendedProperty_FWD_DEFINED__
#define __IInkExtendedProperty_FWD_DEFINED__
typedef interface IInkExtendedProperty IInkExtendedProperty;
#ifdef __cplusplus
interface IInkExtendedProperty;
#endif /* __cplusplus */
#endif

#ifndef __IInkExtendedProperties_FWD_DEFINED__
#define __IInkExtendedProperties_FWD_DEFINED__
typedef interface IInkExtendedProperties IInkExtendedProperties;
#ifdef __cplusplus
interface IInkExtendedProperties;
#endif /* __cplusplus */
#endif

#ifndef __IInkDrawingAttributes_FWD_DEFINED__
#define __IInkDrawingAttributes_FWD_DEFINED__
typedef interface IInkDrawingAttributes IInkDrawingAttributes;
#ifdef __cplusplus
interface IInkDrawingAttributes;
#endif /* __cplusplus */
#endif

#ifndef __IInkTransform_FWD_DEFINED__
#define __IInkTransform_FWD_DEFINED__
typedef interface IInkTransform IInkTransform;
#ifdef __cplusplus
interface IInkTransform;
#endif /* __cplusplus */
#endif

#ifndef __IInkRectangle_FWD_DEFINED__
#define __IInkRectangle_FWD_DEFINED__
typedef interface IInkRectangle IInkRectangle;
#ifdef __cplusplus
interface IInkRectangle;
#endif /* __cplusplus */
#endif

#ifndef __IInkStrokeDisp_FWD_DEFINED__
#define __IInkStrokeDisp_FWD_DEFINED__
typedef interface IInkStrokeDisp IInkStrokeDisp;
#ifdef __cplusplus
interface IInkStrokeDisp;
#endif /* __cplusplus */
#endif

#ifndef __IInkStrokes_FWD_DEFINED__
#define __IInkStrokes_FWD_DEFINED__
typedef interface IInkStrokes IInkStrokes;
#ifdef __cplusplus
interface IInkStrokes;
#endif /* __cplusplus */
#endif

#ifndef __IInkCustomStrokes_FWD_DEFINED__
#define __IInkCustomStrokes_FWD_DEFINED__
typedef interface IInkCustomStrokes IInkCustomStrokes;
#ifdef __cplusplus
interface IInkCustomStrokes;
#endif /* __cplusplus */
#endif

#ifndef __IInkRecognitionResult_FWD_DEFINED__
#define __IInkRecognitionResult_FWD_DEFINED__
typedef interface IInkRecognitionResult IInkRecognitionResult;
#ifdef __cplusplus
interface IInkRecognitionResult;
#endif /* __cplusplus */
#endif

#ifndef __IInkRecognitionAlternate_FWD_DEFINED__
#define __IInkRecognitionAlternate_FWD_DEFINED__
typedef interface IInkRecognitionAlternate IInkRecognitionAlternate;
#ifdef __cplusplus
interface IInkRecognitionAlternate;
#endif /* __cplusplus */
#endif

#ifndef __IInkRecognitionAlternates_FWD_DEFINED__
#define __IInkRecognitionAlternates_FWD_DEFINED__
typedef interface IInkRecognitionAlternates IInkRecognitionAlternates;
#ifdef __cplusplus
interface IInkRecognitionAlternates;
#endif /* __cplusplus */
#endif

#ifndef __IInkDisp_FWD_DEFINED__
#define __IInkDisp_FWD_DEFINED__
typedef interface IInkDisp IInkDisp;
#ifdef __cplusplus
interface IInkDisp;
#endif /* __cplusplus */
#endif

#ifndef __IInkRenderer_FWD_DEFINED__
#define __IInkRenderer_FWD_DEFINED__
typedef interface IInkRenderer IInkRenderer;
#ifdef __cplusplus
interface IInkRenderer;
#endif /* __cplusplus */
#endif

#ifndef __IInkTablet_FWD_DEFINED__
#define __IInkTablet_FWD_DEFINED__
typedef interface IInkTablet IInkTablet;
#ifdef __cplusplus
interface IInkTablet;
#endif /* __cplusplus */
#endif

#ifndef __IInkCursorButton_FWD_DEFINED__
#define __IInkCursorButton_FWD_DEFINED__
typedef interface IInkCursorButton IInkCursorButton;
#ifdef __cplusplus
interface IInkCursorButton;
#endif /* __cplusplus */
#endif

#ifndef __IInkCursorButtons_FWD_DEFINED__
#define __IInkCursorButtons_FWD_DEFINED__
typedef interface IInkCursorButtons IInkCursorButtons;
#ifdef __cplusplus
interface IInkCursorButtons;
#endif /* __cplusplus */
#endif

#ifndef __IInkCursor_FWD_DEFINED__
#define __IInkCursor_FWD_DEFINED__
typedef interface IInkCursor IInkCursor;
#ifdef __cplusplus
interface IInkCursor;
#endif /* __cplusplus */
#endif

#ifndef __IInkCursors_FWD_DEFINED__
#define __IInkCursors_FWD_DEFINED__
typedef interface IInkCursors IInkCursors;
#ifdef __cplusplus
interface IInkCursors;
#endif /* __cplusplus */
#endif

#ifndef __IInkCollector_FWD_DEFINED__
#define __IInkCollector_FWD_DEFINED__
typedef interface IInkCollector IInkCollector;
#ifdef __cplusplus
interface IInkCollector;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <oaidl.h>
#include <ocidl.h>

#ifdef __cplusplus
extern "C" {
#endif


DEFINE_GUID(LIBID_MSINKAUTLib, 0x7d868acd, 0x1a5d, 0x4a47, 0xa2,0x47, 0xf3,0x97,0x41,0x35,0x30,0x12);

typedef float single;
typedef enum InkBoundingBoxMode {
    IBBM_Default = 0,
    IBBM_NoCurveFit = 1,
    IBBM_CurveFit = 2,
    IBBM_PointsOnly = 3,
    IBBM_Union = 4
} InkBoundingBoxMode;
typedef enum InkExtractFlags {
    IEF_CopyFromOriginal = 0x0,
    IEF_RemoveFromOriginal = 0x1,
    IEF_Default = IEF_RemoveFromOriginal
} InkExtractFlags;
typedef enum InkPersistenceFormat {
    IPF_InkSerializeFormat = 0,
    IPF_Base64InkSerializedFormat = 1,
    IPF_GIF = 2,
    IPF_Base64GIF = 3
} InkPersistenceFormat;
typedef enum InkPersistenceCompressionMode {
    IPCM_Default = 0,
    IPCM_MaximumCompression = 1,
    IPCM_NoCompression = 2
} InkPersistenceCompressionMode;
typedef enum InkPenTip {
    IPT_Ball = 0,
    IPT_Rectangle = 1
} InkPenTip;
typedef enum InkRasterOperation {
    IRO_Black = 1,
    IRO_NotMergePen = 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 InkClipboardModes {
    ICB_Copy = 0,
    ICB_Cut = 0x1,
    ICB_DelayedCopy = 0x20,
    ICB_ExtractOnly = 0x30,
    ICB_Default = ICB_Copy
} InkClipboardModes;
typedef enum InkClipboardFormats {
    ICF_None = 0,
    ICF_InkSerializedFormat = 0x1,
    ICF_SketchInk = 0x2,
    ICF_TextInk = 0x6,
    ICF_EnhancedMetafile = 0x8,
    ICF_Metafile = 0x20,
    ICF_Bitmap = 0x40,
    ICF_PasteMask = 0x7,
    ICF_CopyMask = 0x7f,
    ICF_Default = ICF_CopyMask
} InkClipboardFormats;
typedef enum InkRecognitionConfidence {
    IRC_Strong = 0,
    IRC_Intermediate = 1,
    IRC_Poor = 2
} InkRecognitionConfidence;
/*****************************************************************************
 * IInkExtendedProperty interface
 */
#ifndef __IInkExtendedProperty_INTERFACE_DEFINED__
#define __IInkExtendedProperty_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkExtendedProperty, 0xdb489209, 0xb7c3, 0x411d, 0x90,0xf6, 0x15,0x48,0xcf,0xff,0x27,0x1e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("db489209-b7c3-411d-90f6-1548cfff271e")
IInkExtendedProperty : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Guid(
        BSTR *Guid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Data(
        VARIANT *Data) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Data(
        VARIANT Data) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkExtendedProperty, 0xdb489209, 0xb7c3, 0x411d, 0x90,0xf6, 0x15,0x48,0xcf,0xff,0x27,0x1e)
#endif
#else
typedef struct IInkExtendedPropertyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkExtendedProperty *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkExtendedProperty *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkExtendedProperty *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkExtendedProperty *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkExtendedProperty *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkExtendedProperty *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkExtendedProperty *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkExtendedProperty methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Guid)(
        IInkExtendedProperty *This,
        BSTR *Guid);

    HRESULT (STDMETHODCALLTYPE *get_Data)(
        IInkExtendedProperty *This,
        VARIANT *Data);

    HRESULT (STDMETHODCALLTYPE *put_Data)(
        IInkExtendedProperty *This,
        VARIANT Data);

    END_INTERFACE
} IInkExtendedPropertyVtbl;

interface IInkExtendedProperty {
    CONST_VTBL IInkExtendedPropertyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkExtendedProperty_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkExtendedProperty_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkExtendedProperty_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkExtendedProperty_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkExtendedProperty_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkExtendedProperty_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkExtendedProperty_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkExtendedProperty methods ***/
#define IInkExtendedProperty_get_Guid(This,Guid) (This)->lpVtbl->get_Guid(This,Guid)
#define IInkExtendedProperty_get_Data(This,Data) (This)->lpVtbl->get_Data(This,Data)
#define IInkExtendedProperty_put_Data(This,Data) (This)->lpVtbl->put_Data(This,Data)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkExtendedProperty_QueryInterface(IInkExtendedProperty* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkExtendedProperty_AddRef(IInkExtendedProperty* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkExtendedProperty_Release(IInkExtendedProperty* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkExtendedProperty_GetTypeInfoCount(IInkExtendedProperty* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkExtendedProperty_GetTypeInfo(IInkExtendedProperty* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkExtendedProperty_GetIDsOfNames(IInkExtendedProperty* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkExtendedProperty_Invoke(IInkExtendedProperty* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkExtendedProperty methods ***/
static FORCEINLINE HRESULT IInkExtendedProperty_get_Guid(IInkExtendedProperty* This,BSTR *Guid) {
    return This->lpVtbl->get_Guid(This,Guid);
}
static FORCEINLINE HRESULT IInkExtendedProperty_get_Data(IInkExtendedProperty* This,VARIANT *Data) {
    return This->lpVtbl->get_Data(This,Data);
}
static FORCEINLINE HRESULT IInkExtendedProperty_put_Data(IInkExtendedProperty* This,VARIANT Data) {
    return This->lpVtbl->put_Data(This,Data);
}
#endif
#endif

#endif


#endif  /* __IInkExtendedProperty_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkExtendedProperties interface
 */
#ifndef __IInkExtendedProperties_INTERFACE_DEFINED__
#define __IInkExtendedProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkExtendedProperties, 0x89f2a8be, 0x95a9, 0x4530, 0x8b,0x8f, 0x88,0xe9,0x71,0xe3,0xe2,0x5f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("89f2a8be-95a9-4530-8b8f-88e971e3e25f")
IInkExtendedProperties : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE _NewEnum(
        IUnknown **_NewEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        VARIANT Identifier,
        IInkExtendedProperty **Item) = 0;

    virtual HRESULT STDMETHODCALLTYPE Add(
        BSTR Guid,
        VARIANT Data,
        IInkExtendedProperty **InkExtendedProperty) = 0;

    virtual HRESULT STDMETHODCALLTYPE Remove(
        VARIANT Identifier) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clear(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesPropertyExist(
        BSTR Guid,
        VARIANT_BOOL *DoesPropertyExist) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkExtendedProperties, 0x89f2a8be, 0x95a9, 0x4530, 0x8b,0x8f, 0x88,0xe9,0x71,0xe3,0xe2,0x5f)
#endif
#else
typedef struct IInkExtendedPropertiesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkExtendedProperties *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkExtendedProperties *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkExtendedProperties *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkExtendedProperties *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkExtendedProperties *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkExtendedProperties *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkExtendedProperties *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkExtendedProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *Count)(
        IInkExtendedProperties *This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *_NewEnum)(
        IInkExtendedProperties *This,
        IUnknown **_NewEnum);

    HRESULT (STDMETHODCALLTYPE *Item)(
        IInkExtendedProperties *This,
        VARIANT Identifier,
        IInkExtendedProperty **Item);

    HRESULT (STDMETHODCALLTYPE *Add)(
        IInkExtendedProperties *This,
        BSTR Guid,
        VARIANT Data,
        IInkExtendedProperty **InkExtendedProperty);

    HRESULT (STDMETHODCALLTYPE *Remove)(
        IInkExtendedProperties *This,
        VARIANT Identifier);

    HRESULT (STDMETHODCALLTYPE *Clear)(
        IInkExtendedProperties *This);

    HRESULT (STDMETHODCALLTYPE *DoesPropertyExist)(
        IInkExtendedProperties *This,
        BSTR Guid,
        VARIANT_BOOL *DoesPropertyExist);

    END_INTERFACE
} IInkExtendedPropertiesVtbl;

interface IInkExtendedProperties {
    CONST_VTBL IInkExtendedPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkExtendedProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkExtendedProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkExtendedProperties_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkExtendedProperties_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkExtendedProperties_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkExtendedProperties_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkExtendedProperties_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkExtendedProperties methods ***/
#define IInkExtendedProperties_Count(This,Count) (This)->lpVtbl->Count(This,Count)
#define IInkExtendedProperties__NewEnum(This,_NewEnum) (This)->lpVtbl->_NewEnum(This,_NewEnum)
#define IInkExtendedProperties_Item(This,Identifier,Item) (This)->lpVtbl->Item(This,Identifier,Item)
#define IInkExtendedProperties_Add(This,Guid,Data,InkExtendedProperty) (This)->lpVtbl->Add(This,Guid,Data,InkExtendedProperty)
#define IInkExtendedProperties_Remove(This,Identifier) (This)->lpVtbl->Remove(This,Identifier)
#define IInkExtendedProperties_Clear(This) (This)->lpVtbl->Clear(This)
#define IInkExtendedProperties_DoesPropertyExist(This,Guid,DoesPropertyExist) (This)->lpVtbl->DoesPropertyExist(This,Guid,DoesPropertyExist)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkExtendedProperties_QueryInterface(IInkExtendedProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkExtendedProperties_AddRef(IInkExtendedProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkExtendedProperties_Release(IInkExtendedProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkExtendedProperties_GetTypeInfoCount(IInkExtendedProperties* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkExtendedProperties_GetTypeInfo(IInkExtendedProperties* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkExtendedProperties_GetIDsOfNames(IInkExtendedProperties* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkExtendedProperties_Invoke(IInkExtendedProperties* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkExtendedProperties methods ***/
static FORCEINLINE HRESULT IInkExtendedProperties_Count(IInkExtendedProperties* This,LONG *Count) {
    return This->lpVtbl->Count(This,Count);
}
static FORCEINLINE HRESULT IInkExtendedProperties__NewEnum(IInkExtendedProperties* This,IUnknown **_NewEnum) {
    return This->lpVtbl->_NewEnum(This,_NewEnum);
}
static FORCEINLINE HRESULT IInkExtendedProperties_Item(IInkExtendedProperties* This,VARIANT Identifier,IInkExtendedProperty **Item) {
    return This->lpVtbl->Item(This,Identifier,Item);
}
static FORCEINLINE HRESULT IInkExtendedProperties_Add(IInkExtendedProperties* This,BSTR Guid,VARIANT Data,IInkExtendedProperty **InkExtendedProperty) {
    return This->lpVtbl->Add(This,Guid,Data,InkExtendedProperty);
}
static FORCEINLINE HRESULT IInkExtendedProperties_Remove(IInkExtendedProperties* This,VARIANT Identifier) {
    return This->lpVtbl->Remove(This,Identifier);
}
static FORCEINLINE HRESULT IInkExtendedProperties_Clear(IInkExtendedProperties* This) {
    return This->lpVtbl->Clear(This);
}
static FORCEINLINE HRESULT IInkExtendedProperties_DoesPropertyExist(IInkExtendedProperties* This,BSTR Guid,VARIANT_BOOL *DoesPropertyExist) {
    return This->lpVtbl->DoesPropertyExist(This,Guid,DoesPropertyExist);
}
#endif
#endif

#endif


#endif  /* __IInkExtendedProperties_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkDrawingAttributes interface
 */
#ifndef __IInkDrawingAttributes_INTERFACE_DEFINED__
#define __IInkDrawingAttributes_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkDrawingAttributes, 0xbf519b75, 0x0a15, 0x4623, 0xad,0xc9, 0xc0,0x0d,0x43,0x6a,0x80,0x92);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bf519b75-0a15-4623-adc9-c00d436a8092")
IInkDrawingAttributes : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Color(
        LONG *CurrentColor) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Color(
        LONG CurrentColor) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Width(
        single *CurrentWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Width(
        single CurrentWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Height(
        single *CurrentHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Height(
        single CurrentHeight) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FitToCurve(
        VARIANT_BOOL *Flag) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FitToCurve(
        VARIANT_BOOL Flag) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IgnorePressure(
        VARIANT_BOOL *Flag) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_IgnorePressure(
        VARIANT_BOOL Flag) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AntiAliased(
        VARIANT_BOOL *Flag) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AntiAliased(
        VARIANT_BOOL Flag) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Transparency(
        LONG *CurrentTransparency) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Transparency(
        LONG CurrentTransparency) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RasterOperation(
        InkRasterOperation *CurrentRasterOperation) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_RasterOperation(
        InkRasterOperation CurrentRasterOperation) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PenTip(
        InkPenTip *CurrentPenTip) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PenTip(
        InkPenTip CurrentPenTip) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
        IInkExtendedProperties **Properties) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IInkDrawingAttributes **DrawingAttributes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkDrawingAttributes, 0xbf519b75, 0x0a15, 0x4623, 0xad,0xc9, 0xc0,0x0d,0x43,0x6a,0x80,0x92)
#endif
#else
typedef struct IInkDrawingAttributesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkDrawingAttributes *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkDrawingAttributes *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkDrawingAttributes *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkDrawingAttributes *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkDrawingAttributes *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkDrawingAttributes *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkDrawingAttributes *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkDrawingAttributes methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Color)(
        IInkDrawingAttributes *This,
        LONG *CurrentColor);

    HRESULT (STDMETHODCALLTYPE *put_Color)(
        IInkDrawingAttributes *This,
        LONG CurrentColor);

    HRESULT (STDMETHODCALLTYPE *get_Width)(
        IInkDrawingAttributes *This,
        single *CurrentWidth);

    HRESULT (STDMETHODCALLTYPE *put_Width)(
        IInkDrawingAttributes *This,
        single CurrentWidth);

    HRESULT (STDMETHODCALLTYPE *get_Height)(
        IInkDrawingAttributes *This,
        single *CurrentHeight);

    HRESULT (STDMETHODCALLTYPE *put_Height)(
        IInkDrawingAttributes *This,
        single CurrentHeight);

    HRESULT (STDMETHODCALLTYPE *get_FitToCurve)(
        IInkDrawingAttributes *This,
        VARIANT_BOOL *Flag);

    HRESULT (STDMETHODCALLTYPE *put_FitToCurve)(
        IInkDrawingAttributes *This,
        VARIANT_BOOL Flag);

    HRESULT (STDMETHODCALLTYPE *get_IgnorePressure)(
        IInkDrawingAttributes *This,
        VARIANT_BOOL *Flag);

    HRESULT (STDMETHODCALLTYPE *put_IgnorePressure)(
        IInkDrawingAttributes *This,
        VARIANT_BOOL Flag);

    HRESULT (STDMETHODCALLTYPE *get_AntiAliased)(
        IInkDrawingAttributes *This,
        VARIANT_BOOL *Flag);

    HRESULT (STDMETHODCALLTYPE *put_AntiAliased)(
        IInkDrawingAttributes *This,
        VARIANT_BOOL Flag);

    HRESULT (STDMETHODCALLTYPE *get_Transparency)(
        IInkDrawingAttributes *This,
        LONG *CurrentTransparency);

    HRESULT (STDMETHODCALLTYPE *put_Transparency)(
        IInkDrawingAttributes *This,
        LONG CurrentTransparency);

    HRESULT (STDMETHODCALLTYPE *get_RasterOperation)(
        IInkDrawingAttributes *This,
        InkRasterOperation *CurrentRasterOperation);

    HRESULT (STDMETHODCALLTYPE *put_RasterOperation)(
        IInkDrawingAttributes *This,
        InkRasterOperation CurrentRasterOperation);

    HRESULT (STDMETHODCALLTYPE *get_PenTip)(
        IInkDrawingAttributes *This,
        InkPenTip *CurrentPenTip);

    HRESULT (STDMETHODCALLTYPE *put_PenTip)(
        IInkDrawingAttributes *This,
        InkPenTip CurrentPenTip);

    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
        IInkDrawingAttributes *This,
        IInkExtendedProperties **Properties);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IInkDrawingAttributes *This,
        IInkDrawingAttributes **DrawingAttributes);

    END_INTERFACE
} IInkDrawingAttributesVtbl;

interface IInkDrawingAttributes {
    CONST_VTBL IInkDrawingAttributesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkDrawingAttributes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkDrawingAttributes_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkDrawingAttributes_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkDrawingAttributes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkDrawingAttributes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkDrawingAttributes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkDrawingAttributes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkDrawingAttributes methods ***/
#define IInkDrawingAttributes_get_Color(This,CurrentColor) (This)->lpVtbl->get_Color(This,CurrentColor)
#define IInkDrawingAttributes_put_Color(This,CurrentColor) (This)->lpVtbl->put_Color(This,CurrentColor)
#define IInkDrawingAttributes_get_Width(This,CurrentWidth) (This)->lpVtbl->get_Width(This,CurrentWidth)
#define IInkDrawingAttributes_put_Width(This,CurrentWidth) (This)->lpVtbl->put_Width(This,CurrentWidth)
#define IInkDrawingAttributes_get_Height(This,CurrentHeight) (This)->lpVtbl->get_Height(This,CurrentHeight)
#define IInkDrawingAttributes_put_Height(This,CurrentHeight) (This)->lpVtbl->put_Height(This,CurrentHeight)
#define IInkDrawingAttributes_get_FitToCurve(This,Flag) (This)->lpVtbl->get_FitToCurve(This,Flag)
#define IInkDrawingAttributes_put_FitToCurve(This,Flag) (This)->lpVtbl->put_FitToCurve(This,Flag)
#define IInkDrawingAttributes_get_IgnorePressure(This,Flag) (This)->lpVtbl->get_IgnorePressure(This,Flag)
#define IInkDrawingAttributes_put_IgnorePressure(This,Flag) (This)->lpVtbl->put_IgnorePressure(This,Flag)
#define IInkDrawingAttributes_get_AntiAliased(This,Flag) (This)->lpVtbl->get_AntiAliased(This,Flag)
#define IInkDrawingAttributes_put_AntiAliased(This,Flag) (This)->lpVtbl->put_AntiAliased(This,Flag)
#define IInkDrawingAttributes_get_Transparency(This,CurrentTransparency) (This)->lpVtbl->get_Transparency(This,CurrentTransparency)
#define IInkDrawingAttributes_put_Transparency(This,CurrentTransparency) (This)->lpVtbl->put_Transparency(This,CurrentTransparency)
#define IInkDrawingAttributes_get_RasterOperation(This,CurrentRasterOperation) (This)->lpVtbl->get_RasterOperation(This,CurrentRasterOperation)
#define IInkDrawingAttributes_put_RasterOperation(This,CurrentRasterOperation) (This)->lpVtbl->put_RasterOperation(This,CurrentRasterOperation)
#define IInkDrawingAttributes_get_PenTip(This,CurrentPenTip) (This)->lpVtbl->get_PenTip(This,CurrentPenTip)
#define IInkDrawingAttributes_put_PenTip(This,CurrentPenTip) (This)->lpVtbl->put_PenTip(This,CurrentPenTip)
#define IInkDrawingAttributes_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
#define IInkDrawingAttributes_Clone(This,DrawingAttributes) (This)->lpVtbl->Clone(This,DrawingAttributes)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkDrawingAttributes_QueryInterface(IInkDrawingAttributes* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkDrawingAttributes_AddRef(IInkDrawingAttributes* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkDrawingAttributes_Release(IInkDrawingAttributes* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkDrawingAttributes_GetTypeInfoCount(IInkDrawingAttributes* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_GetTypeInfo(IInkDrawingAttributes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_GetIDsOfNames(IInkDrawingAttributes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_Invoke(IInkDrawingAttributes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkDrawingAttributes methods ***/
static FORCEINLINE HRESULT IInkDrawingAttributes_get_Color(IInkDrawingAttributes* This,LONG *CurrentColor) {
    return This->lpVtbl->get_Color(This,CurrentColor);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_Color(IInkDrawingAttributes* This,LONG CurrentColor) {
    return This->lpVtbl->put_Color(This,CurrentColor);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_Width(IInkDrawingAttributes* This,single *CurrentWidth) {
    return This->lpVtbl->get_Width(This,CurrentWidth);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_Width(IInkDrawingAttributes* This,single CurrentWidth) {
    return This->lpVtbl->put_Width(This,CurrentWidth);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_Height(IInkDrawingAttributes* This,single *CurrentHeight) {
    return This->lpVtbl->get_Height(This,CurrentHeight);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_Height(IInkDrawingAttributes* This,single CurrentHeight) {
    return This->lpVtbl->put_Height(This,CurrentHeight);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_FitToCurve(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
    return This->lpVtbl->get_FitToCurve(This,Flag);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_FitToCurve(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
    return This->lpVtbl->put_FitToCurve(This,Flag);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_IgnorePressure(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
    return This->lpVtbl->get_IgnorePressure(This,Flag);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_IgnorePressure(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
    return This->lpVtbl->put_IgnorePressure(This,Flag);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_AntiAliased(IInkDrawingAttributes* This,VARIANT_BOOL *Flag) {
    return This->lpVtbl->get_AntiAliased(This,Flag);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_AntiAliased(IInkDrawingAttributes* This,VARIANT_BOOL Flag) {
    return This->lpVtbl->put_AntiAliased(This,Flag);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_Transparency(IInkDrawingAttributes* This,LONG *CurrentTransparency) {
    return This->lpVtbl->get_Transparency(This,CurrentTransparency);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_Transparency(IInkDrawingAttributes* This,LONG CurrentTransparency) {
    return This->lpVtbl->put_Transparency(This,CurrentTransparency);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_RasterOperation(IInkDrawingAttributes* This,InkRasterOperation *CurrentRasterOperation) {
    return This->lpVtbl->get_RasterOperation(This,CurrentRasterOperation);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_RasterOperation(IInkDrawingAttributes* This,InkRasterOperation CurrentRasterOperation) {
    return This->lpVtbl->put_RasterOperation(This,CurrentRasterOperation);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_PenTip(IInkDrawingAttributes* This,InkPenTip *CurrentPenTip) {
    return This->lpVtbl->get_PenTip(This,CurrentPenTip);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_put_PenTip(IInkDrawingAttributes* This,InkPenTip CurrentPenTip) {
    return This->lpVtbl->put_PenTip(This,CurrentPenTip);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_get_ExtendedProperties(IInkDrawingAttributes* This,IInkExtendedProperties **Properties) {
    return This->lpVtbl->get_ExtendedProperties(This,Properties);
}
static FORCEINLINE HRESULT IInkDrawingAttributes_Clone(IInkDrawingAttributes* This,IInkDrawingAttributes **DrawingAttributes) {
    return This->lpVtbl->Clone(This,DrawingAttributes);
}
#endif
#endif

#endif


#endif  /* __IInkDrawingAttributes_INTERFACE_DEFINED__ */

#ifndef _WINGDI_
typedef struct tagXFORM {
    single eM11;
    single eM12;
    single eM21;
    single eM22;
    single eDx;
    single eDy;
} XFORM;
#endif /* _WINGDI_ */
/*****************************************************************************
 * IInkTransform interface
 */
#ifndef __IInkTransform_INTERFACE_DEFINED__
#define __IInkTransform_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkTransform, 0x615f1d43, 0x8703, 0x4565, 0x88,0xe2, 0x82,0x01,0xd2,0xec,0xd7,0xb7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("615f1d43-8703-4565-88e2-8201d2ecd7b7")
IInkTransform : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Translate(
        single HorizontalComponent,
        single VerticalComponent) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rotate(
        single Degrees,
        single x = 0,
        single y = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reflect(
        VARIANT_BOOL Horizontally,
        VARIANT_BOOL Vertically) = 0;

    virtual HRESULT STDMETHODCALLTYPE Shear(
        single HorizontalComponent,
        single VerticalComponent) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
        single HorizontalMultiplier,
        single VerticalMultiplier) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTransform(
        single *eM11,
        single *eM12,
        single *eM21,
        single *eM22,
        single *eDx,
        single *eDy) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTransform(
        single eM11,
        single eM12,
        single eM21,
        single eM22,
        single eDx,
        single eDy) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_eM11(
        single *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_eM11(
        single Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_eM12(
        single *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_eM12(
        single Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_eM21(
        single *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_eM21(
        single Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_eM22(
        single *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_eM22(
        single Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_eDx(
        single *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_eDx(
        single Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_eDy(
        single *Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_eDy(
        single Value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Data(
        XFORM *XFORM) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Data(
        XFORM XFORM) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkTransform, 0x615f1d43, 0x8703, 0x4565, 0x88,0xe2, 0x82,0x01,0xd2,0xec,0xd7,0xb7)
#endif
#else
typedef struct IInkTransformVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkTransform *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkTransform *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkTransform *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkTransform *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkTransform *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkTransform *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkTransform *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkTransform methods ***/
    HRESULT (STDMETHODCALLTYPE *Reset)(
        IInkTransform *This);

    HRESULT (STDMETHODCALLTYPE *Translate)(
        IInkTransform *This,
        single HorizontalComponent,
        single VerticalComponent);

    HRESULT (STDMETHODCALLTYPE *Rotate)(
        IInkTransform *This,
        single Degrees,
        single x,
        single y);

    HRESULT (STDMETHODCALLTYPE *Reflect)(
        IInkTransform *This,
        VARIANT_BOOL Horizontally,
        VARIANT_BOOL Vertically);

    HRESULT (STDMETHODCALLTYPE *Shear)(
        IInkTransform *This,
        single HorizontalComponent,
        single VerticalComponent);

    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
        IInkTransform *This,
        single HorizontalMultiplier,
        single VerticalMultiplier);

    HRESULT (STDMETHODCALLTYPE *GetTransform)(
        IInkTransform *This,
        single *eM11,
        single *eM12,
        single *eM21,
        single *eM22,
        single *eDx,
        single *eDy);

    HRESULT (STDMETHODCALLTYPE *SetTransform)(
        IInkTransform *This,
        single eM11,
        single eM12,
        single eM21,
        single eM22,
        single eDx,
        single eDy);

    HRESULT (STDMETHODCALLTYPE *get_eM11)(
        IInkTransform *This,
        single *Value);

    HRESULT (STDMETHODCALLTYPE *put_eM11)(
        IInkTransform *This,
        single Value);

    HRESULT (STDMETHODCALLTYPE *get_eM12)(
        IInkTransform *This,
        single *Value);

    HRESULT (STDMETHODCALLTYPE *put_eM12)(
        IInkTransform *This,
        single Value);

    HRESULT (STDMETHODCALLTYPE *get_eM21)(
        IInkTransform *This,
        single *Value);

    HRESULT (STDMETHODCALLTYPE *put_eM21)(
        IInkTransform *This,
        single Value);

    HRESULT (STDMETHODCALLTYPE *get_eM22)(
        IInkTransform *This,
        single *Value);

    HRESULT (STDMETHODCALLTYPE *put_eM22)(
        IInkTransform *This,
        single Value);

    HRESULT (STDMETHODCALLTYPE *get_eDx)(
        IInkTransform *This,
        single *Value);

    HRESULT (STDMETHODCALLTYPE *put_eDx)(
        IInkTransform *This,
        single Value);

    HRESULT (STDMETHODCALLTYPE *get_eDy)(
        IInkTransform *This,
        single *Value);

    HRESULT (STDMETHODCALLTYPE *put_eDy)(
        IInkTransform *This,
        single Value);

    HRESULT (STDMETHODCALLTYPE *get_Data)(
        IInkTransform *This,
        XFORM *XFORM);

    HRESULT (STDMETHODCALLTYPE *put_Data)(
        IInkTransform *This,
        XFORM XFORM);

    END_INTERFACE
} IInkTransformVtbl;

interface IInkTransform {
    CONST_VTBL IInkTransformVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkTransform_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkTransform_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkTransform_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkTransform_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkTransform_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkTransform methods ***/
#define IInkTransform_Reset(This) (This)->lpVtbl->Reset(This)
#define IInkTransform_Translate(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Translate(This,HorizontalComponent,VerticalComponent)
#define IInkTransform_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
#define IInkTransform_Reflect(This,Horizontally,Vertically) (This)->lpVtbl->Reflect(This,Horizontally,Vertically)
#define IInkTransform_Shear(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Shear(This,HorizontalComponent,VerticalComponent)
#define IInkTransform_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
#define IInkTransform_GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy) (This)->lpVtbl->GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy)
#define IInkTransform_SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy) (This)->lpVtbl->SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy)
#define IInkTransform_get_eM11(This,Value) (This)->lpVtbl->get_eM11(This,Value)
#define IInkTransform_put_eM11(This,Value) (This)->lpVtbl->put_eM11(This,Value)
#define IInkTransform_get_eM12(This,Value) (This)->lpVtbl->get_eM12(This,Value)
#define IInkTransform_put_eM12(This,Value) (This)->lpVtbl->put_eM12(This,Value)
#define IInkTransform_get_eM21(This,Value) (This)->lpVtbl->get_eM21(This,Value)
#define IInkTransform_put_eM21(This,Value) (This)->lpVtbl->put_eM21(This,Value)
#define IInkTransform_get_eM22(This,Value) (This)->lpVtbl->get_eM22(This,Value)
#define IInkTransform_put_eM22(This,Value) (This)->lpVtbl->put_eM22(This,Value)
#define IInkTransform_get_eDx(This,Value) (This)->lpVtbl->get_eDx(This,Value)
#define IInkTransform_put_eDx(This,Value) (This)->lpVtbl->put_eDx(This,Value)
#define IInkTransform_get_eDy(This,Value) (This)->lpVtbl->get_eDy(This,Value)
#define IInkTransform_put_eDy(This,Value) (This)->lpVtbl->put_eDy(This,Value)
#define IInkTransform_get_Data(This,XFORM) (This)->lpVtbl->get_Data(This,XFORM)
#define IInkTransform_put_Data(This,XFORM) (This)->lpVtbl->put_Data(This,XFORM)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkTransform_QueryInterface(IInkTransform* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkTransform_AddRef(IInkTransform* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkTransform_Release(IInkTransform* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkTransform_GetTypeInfoCount(IInkTransform* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkTransform_GetTypeInfo(IInkTransform* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkTransform_GetIDsOfNames(IInkTransform* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkTransform_Invoke(IInkTransform* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkTransform methods ***/
static FORCEINLINE HRESULT IInkTransform_Reset(IInkTransform* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IInkTransform_Translate(IInkTransform* This,single HorizontalComponent,single VerticalComponent) {
    return This->lpVtbl->Translate(This,HorizontalComponent,VerticalComponent);
}
static FORCEINLINE HRESULT IInkTransform_Rotate(IInkTransform* This,single Degrees,single x,single y) {
    return This->lpVtbl->Rotate(This,Degrees,x,y);
}
static FORCEINLINE HRESULT IInkTransform_Reflect(IInkTransform* This,VARIANT_BOOL Horizontally,VARIANT_BOOL Vertically) {
    return This->lpVtbl->Reflect(This,Horizontally,Vertically);
}
static FORCEINLINE HRESULT IInkTransform_Shear(IInkTransform* This,single HorizontalComponent,single VerticalComponent) {
    return This->lpVtbl->Shear(This,HorizontalComponent,VerticalComponent);
}
static FORCEINLINE HRESULT IInkTransform_ScaleTransform(IInkTransform* This,single HorizontalMultiplier,single VerticalMultiplier) {
    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
}
static FORCEINLINE HRESULT IInkTransform_GetTransform(IInkTransform* This,single *eM11,single *eM12,single *eM21,single *eM22,single *eDx,single *eDy) {
    return This->lpVtbl->GetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy);
}
static FORCEINLINE HRESULT IInkTransform_SetTransform(IInkTransform* This,single eM11,single eM12,single eM21,single eM22,single eDx,single eDy) {
    return This->lpVtbl->SetTransform(This,eM11,eM12,eM21,eM22,eDx,eDy);
}
static FORCEINLINE HRESULT IInkTransform_get_eM11(IInkTransform* This,single *Value) {
    return This->lpVtbl->get_eM11(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_put_eM11(IInkTransform* This,single Value) {
    return This->lpVtbl->put_eM11(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_get_eM12(IInkTransform* This,single *Value) {
    return This->lpVtbl->get_eM12(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_put_eM12(IInkTransform* This,single Value) {
    return This->lpVtbl->put_eM12(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_get_eM21(IInkTransform* This,single *Value) {
    return This->lpVtbl->get_eM21(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_put_eM21(IInkTransform* This,single Value) {
    return This->lpVtbl->put_eM21(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_get_eM22(IInkTransform* This,single *Value) {
    return This->lpVtbl->get_eM22(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_put_eM22(IInkTransform* This,single Value) {
    return This->lpVtbl->put_eM22(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_get_eDx(IInkTransform* This,single *Value) {
    return This->lpVtbl->get_eDx(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_put_eDx(IInkTransform* This,single Value) {
    return This->lpVtbl->put_eDx(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_get_eDy(IInkTransform* This,single *Value) {
    return This->lpVtbl->get_eDy(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_put_eDy(IInkTransform* This,single Value) {
    return This->lpVtbl->put_eDy(This,Value);
}
static FORCEINLINE HRESULT IInkTransform_get_Data(IInkTransform* This,XFORM *XFORM) {
    return This->lpVtbl->get_Data(This,XFORM);
}
static FORCEINLINE HRESULT IInkTransform_put_Data(IInkTransform* This,XFORM XFORM) {
    return This->lpVtbl->put_Data(This,XFORM);
}
#endif
#endif

#endif


#endif  /* __IInkTransform_INTERFACE_DEFINED__ */

#ifndef __IInkDisp_FWD_DEFINED__
#define __IInkDisp_FWD_DEFINED__
typedef interface IInkDisp IInkDisp;
#ifdef __cplusplus
interface IInkDisp;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IInkRectangle interface
 */
#ifndef __IInkRectangle_INTERFACE_DEFINED__
#define __IInkRectangle_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkRectangle, 0x9794ff82, 0x6071, 0x4717, 0x8a,0x8b, 0x6a,0xc7,0xc6,0x4a,0x68,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9794ff82-6071-4717-8a8b-6ac7c64a686e")
IInkRectangle
{

    BEGIN_INTERFACE

    virtual HRESULT STDMETHODCALLTYPE get_Top(
        LONG *Units) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Top(
        LONG Units) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Left(
        LONG *Units) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Left(
        LONG Units) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Bottom(
        LONG *Units) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Bottom(
        LONG Units) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Right(
        LONG *Units) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Right(
        LONG Units) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Data(
        RECT *Rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Data(
        RECT Rect) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRectangle(
        LONG *Top,
        LONG *Left,
        LONG *Bottom,
        LONG *Right) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRectangle(
        LONG Top,
        LONG Left,
        LONG Bottom,
        LONG Right) = 0;

    END_INTERFACE

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkRectangle, 0x9794ff82, 0x6071, 0x4717, 0x8a,0x8b, 0x6a,0xc7,0xc6,0x4a,0x68,0x6e)
#endif
#else
typedef struct IInkRectangleVtbl {
    BEGIN_INTERFACE

    /*** IInkRectangle methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Top)(
        IInkRectangle *This,
        LONG *Units);

    HRESULT (STDMETHODCALLTYPE *put_Top)(
        IInkRectangle *This,
        LONG Units);

    HRESULT (STDMETHODCALLTYPE *get_Left)(
        IInkRectangle *This,
        LONG *Units);

    HRESULT (STDMETHODCALLTYPE *put_Left)(
        IInkRectangle *This,
        LONG Units);

    HRESULT (STDMETHODCALLTYPE *get_Bottom)(
        IInkRectangle *This,
        LONG *Units);

    HRESULT (STDMETHODCALLTYPE *put_Bottom)(
        IInkRectangle *This,
        LONG Units);

    HRESULT (STDMETHODCALLTYPE *get_Right)(
        IInkRectangle *This,
        LONG *Units);

    HRESULT (STDMETHODCALLTYPE *put_Right)(
        IInkRectangle *This,
        LONG Units);

    HRESULT (STDMETHODCALLTYPE *get_Data)(
        IInkRectangle *This,
        RECT *Rect);

    HRESULT (STDMETHODCALLTYPE *put_Data)(
        IInkRectangle *This,
        RECT Rect);

    HRESULT (STDMETHODCALLTYPE *GetRectangle)(
        IInkRectangle *This,
        LONG *Top,
        LONG *Left,
        LONG *Bottom,
        LONG *Right);

    HRESULT (STDMETHODCALLTYPE *SetRectangle)(
        IInkRectangle *This,
        LONG Top,
        LONG Left,
        LONG Bottom,
        LONG Right);

    END_INTERFACE
} IInkRectangleVtbl;

interface IInkRectangle {
    CONST_VTBL IInkRectangleVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IInkRectangle methods ***/
#define IInkRectangle_get_Top(This,Units) (This)->lpVtbl->get_Top(This,Units)
#define IInkRectangle_put_Top(This,Units) (This)->lpVtbl->put_Top(This,Units)
#define IInkRectangle_get_Left(This,Units) (This)->lpVtbl->get_Left(This,Units)
#define IInkRectangle_put_Left(This,Units) (This)->lpVtbl->put_Left(This,Units)
#define IInkRectangle_get_Bottom(This,Units) (This)->lpVtbl->get_Bottom(This,Units)
#define IInkRectangle_put_Bottom(This,Units) (This)->lpVtbl->put_Bottom(This,Units)
#define IInkRectangle_get_Right(This,Units) (This)->lpVtbl->get_Right(This,Units)
#define IInkRectangle_put_Right(This,Units) (This)->lpVtbl->put_Right(This,Units)
#define IInkRectangle_get_Data(This,Rect) (This)->lpVtbl->get_Data(This,Rect)
#define IInkRectangle_put_Data(This,Rect) (This)->lpVtbl->put_Data(This,Rect)
#define IInkRectangle_GetRectangle(This,Top,Left,Bottom,Right) (This)->lpVtbl->GetRectangle(This,Top,Left,Bottom,Right)
#define IInkRectangle_SetRectangle(This,Top,Left,Bottom,Right) (This)->lpVtbl->SetRectangle(This,Top,Left,Bottom,Right)
#else
/*** IInkRectangle methods ***/
static FORCEINLINE HRESULT IInkRectangle_get_Top(IInkRectangle* This,LONG *Units) {
    return This->lpVtbl->get_Top(This,Units);
}
static FORCEINLINE HRESULT IInkRectangle_put_Top(IInkRectangle* This,LONG Units) {
    return This->lpVtbl->put_Top(This,Units);
}
static FORCEINLINE HRESULT IInkRectangle_get_Left(IInkRectangle* This,LONG *Units) {
    return This->lpVtbl->get_Left(This,Units);
}
static FORCEINLINE HRESULT IInkRectangle_put_Left(IInkRectangle* This,LONG Units) {
    return This->lpVtbl->put_Left(This,Units);
}
static FORCEINLINE HRESULT IInkRectangle_get_Bottom(IInkRectangle* This,LONG *Units) {
    return This->lpVtbl->get_Bottom(This,Units);
}
static FORCEINLINE HRESULT IInkRectangle_put_Bottom(IInkRectangle* This,LONG Units) {
    return This->lpVtbl->put_Bottom(This,Units);
}
static FORCEINLINE HRESULT IInkRectangle_get_Right(IInkRectangle* This,LONG *Units) {
    return This->lpVtbl->get_Right(This,Units);
}
static FORCEINLINE HRESULT IInkRectangle_put_Right(IInkRectangle* This,LONG Units) {
    return This->lpVtbl->put_Right(This,Units);
}
static FORCEINLINE HRESULT IInkRectangle_get_Data(IInkRectangle* This,RECT *Rect) {
    return This->lpVtbl->get_Data(This,Rect);
}
static FORCEINLINE HRESULT IInkRectangle_put_Data(IInkRectangle* This,RECT Rect) {
    return This->lpVtbl->put_Data(This,Rect);
}
static FORCEINLINE HRESULT IInkRectangle_GetRectangle(IInkRectangle* This,LONG *Top,LONG *Left,LONG *Bottom,LONG *Right) {
    return This->lpVtbl->GetRectangle(This,Top,Left,Bottom,Right);
}
static FORCEINLINE HRESULT IInkRectangle_SetRectangle(IInkRectangle* This,LONG Top,LONG Left,LONG Bottom,LONG Right) {
    return This->lpVtbl->SetRectangle(This,Top,Left,Bottom,Right);
}
#endif
#endif

#endif


#endif  /* __IInkRectangle_INTERFACE_DEFINED__ */

#ifndef __IInkStrokes_FWD_DEFINED__
#define __IInkStrokes_FWD_DEFINED__
typedef interface IInkStrokes IInkStrokes;
#ifdef __cplusplus
interface IInkStrokes;
#endif /* __cplusplus */
#endif

typedef enum __WIDL_msinkaut_generated_name_0000001D {
    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;
/*****************************************************************************
 * IInkStrokeDisp interface
 */
#ifndef __IInkStrokeDisp_INTERFACE_DEFINED__
#define __IInkStrokeDisp_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkStrokeDisp, 0x43242fea, 0x91d1, 0x4a72, 0x96,0x3e, 0xfb,0xb9,0x18,0x29,0xcf,0xa2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("43242fea-91d1-4a72-963e-fbb91829cfa2")
IInkStrokeDisp : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Id(
        LONG *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BezierPoints(
        VARIANT *Points) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DrawingAttributes(
        IInkDrawingAttributes **DrawAttrs) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_DrawingAttributes(
        IInkDrawingAttributes *DrawAttrs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Ink(
        IInkDisp **Ink) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
        IInkExtendedProperties **Properties) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PolylineCusps(
        VARIANT *Cusps) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BezierCusps(
        VARIANT *Cusps) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SelfIntersections(
        VARIANT *Intersections) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PacketCount(
        LONG *plCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PacketSize(
        LONG *plSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PacketDescription(
        VARIANT *PacketDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Deleted(
        VARIANT_BOOL *Deleted) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
        InkBoundingBoxMode BoundingBoxMode,
        IInkRectangle **Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindIntersections(
        IInkStrokes *Strokes,
        VARIANT *Intersections) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRectangleIntersections(
        IInkRectangle *Rectangle,
        VARIANT *Intersections) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clip(
        IInkRectangle *Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE HitTestCircle(
        LONG x,
        LONG y,
        single radius,
        VARIANT_BOOL *Intersects) = 0;

    virtual HRESULT STDMETHODCALLTYPE NearestPoint(
        LONG x,
        LONG y,
        single *Distance,
        single *Point) = 0;

    virtual HRESULT STDMETHODCALLTYPE Split(
        single SplitAt,
        IInkStrokeDisp **NewStroke) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPacketDescriptionPropertyMetrics(
        BSTR propertyName,
        LONG *Minimum,
        LONG *Maximum,
        TabletPropertyMetricUnit *Units,
        single *Resolution) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPoints(
        LONG Index,
        LONG Count,
        VARIANT *Points) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPoints(
        VARIANT Points,
        LONG Index,
        LONG Count,
        LONG *NumberOfPointsSet) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPacketData(
        LONG Index,
        LONG Count,
        VARIANT *PacketData) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPacketValuesByProperty(
        BSTR propertyName,
        LONG Index,
        LONG Count,
        VARIANT *PacketValues) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPacketValuesByProperty(
        BSTR bstrPropertyName,
        VARIANT PacketValues,
        LONG Index,
        LONG Count,
        LONG *NumberOfPacketsSet) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlattenedBezierPoints(
        LONG FittingError,
        VARIANT *FlattenedBezierPoints) = 0;

    virtual HRESULT STDMETHODCALLTYPE Transform(
        IInkTransform *Transform,
        VARIANT_BOOL ApplyOnPenWidth = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleToRectangle(
        IInkRectangle *Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE Move(
        single HorizontalComponent,
        single VerticalComponent) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rotate(
        single Degrees,
        single x = 0,
        single y = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE Shear(
        single HorizontalMultiplier,
        single VerticalMultiplier) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
        single HorizontalMultiplier,
        single VerticalMultiplier) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkStrokeDisp, 0x43242fea, 0x91d1, 0x4a72, 0x96,0x3e, 0xfb,0xb9,0x18,0x29,0xcf,0xa2)
#endif
#else
typedef struct IInkStrokeDispVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkStrokeDisp *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkStrokeDisp *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkStrokeDisp *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkStrokeDisp *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkStrokeDisp *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkStrokeDisp *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkStrokeDisp *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkStrokeDisp methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Id)(
        IInkStrokeDisp *This,
        LONG *Id);

    HRESULT (STDMETHODCALLTYPE *get_BezierPoints)(
        IInkStrokeDisp *This,
        VARIANT *Points);

    HRESULT (STDMETHODCALLTYPE *get_DrawingAttributes)(
        IInkStrokeDisp *This,
        IInkDrawingAttributes **DrawAttrs);

    HRESULT (STDMETHODCALLTYPE *putref_DrawingAttributes)(
        IInkStrokeDisp *This,
        IInkDrawingAttributes *DrawAttrs);

    HRESULT (STDMETHODCALLTYPE *get_Ink)(
        IInkStrokeDisp *This,
        IInkDisp **Ink);

    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
        IInkStrokeDisp *This,
        IInkExtendedProperties **Properties);

    HRESULT (STDMETHODCALLTYPE *get_PolylineCusps)(
        IInkStrokeDisp *This,
        VARIANT *Cusps);

    HRESULT (STDMETHODCALLTYPE *get_BezierCusps)(
        IInkStrokeDisp *This,
        VARIANT *Cusps);

    HRESULT (STDMETHODCALLTYPE *get_SelfIntersections)(
        IInkStrokeDisp *This,
        VARIANT *Intersections);

    HRESULT (STDMETHODCALLTYPE *get_PacketCount)(
        IInkStrokeDisp *This,
        LONG *plCount);

    HRESULT (STDMETHODCALLTYPE *get_PacketSize)(
        IInkStrokeDisp *This,
        LONG *plSize);

    HRESULT (STDMETHODCALLTYPE *get_PacketDescription)(
        IInkStrokeDisp *This,
        VARIANT *PacketDescription);

    HRESULT (STDMETHODCALLTYPE *get_Deleted)(
        IInkStrokeDisp *This,
        VARIANT_BOOL *Deleted);

    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
        IInkStrokeDisp *This,
        InkBoundingBoxMode BoundingBoxMode,
        IInkRectangle **Rectangle);

    HRESULT (STDMETHODCALLTYPE *FindIntersections)(
        IInkStrokeDisp *This,
        IInkStrokes *Strokes,
        VARIANT *Intersections);

    HRESULT (STDMETHODCALLTYPE *GetRectangleIntersections)(
        IInkStrokeDisp *This,
        IInkRectangle *Rectangle,
        VARIANT *Intersections);

    HRESULT (STDMETHODCALLTYPE *Clip)(
        IInkStrokeDisp *This,
        IInkRectangle *Rectangle);

    HRESULT (STDMETHODCALLTYPE *HitTestCircle)(
        IInkStrokeDisp *This,
        LONG x,
        LONG y,
        single radius,
        VARIANT_BOOL *Intersects);

    HRESULT (STDMETHODCALLTYPE *NearestPoint)(
        IInkStrokeDisp *This,
        LONG x,
        LONG y,
        single *Distance,
        single *Point);

    HRESULT (STDMETHODCALLTYPE *Split)(
        IInkStrokeDisp *This,
        single SplitAt,
        IInkStrokeDisp **NewStroke);

    HRESULT (STDMETHODCALLTYPE *GetPacketDescriptionPropertyMetrics)(
        IInkStrokeDisp *This,
        BSTR propertyName,
        LONG *Minimum,
        LONG *Maximum,
        TabletPropertyMetricUnit *Units,
        single *Resolution);

    HRESULT (STDMETHODCALLTYPE *GetPoints)(
        IInkStrokeDisp *This,
        LONG Index,
        LONG Count,
        VARIANT *Points);

    HRESULT (STDMETHODCALLTYPE *SetPoints)(
        IInkStrokeDisp *This,
        VARIANT Points,
        LONG Index,
        LONG Count,
        LONG *NumberOfPointsSet);

    HRESULT (STDMETHODCALLTYPE *GetPacketData)(
        IInkStrokeDisp *This,
        LONG Index,
        LONG Count,
        VARIANT *PacketData);

    HRESULT (STDMETHODCALLTYPE *GetPacketValuesByProperty)(
        IInkStrokeDisp *This,
        BSTR propertyName,
        LONG Index,
        LONG Count,
        VARIANT *PacketValues);

    HRESULT (STDMETHODCALLTYPE *SetPacketValuesByProperty)(
        IInkStrokeDisp *This,
        BSTR bstrPropertyName,
        VARIANT PacketValues,
        LONG Index,
        LONG Count,
        LONG *NumberOfPacketsSet);

    HRESULT (STDMETHODCALLTYPE *GetFlattenedBezierPoints)(
        IInkStrokeDisp *This,
        LONG FittingError,
        VARIANT *FlattenedBezierPoints);

    HRESULT (STDMETHODCALLTYPE *Transform)(
        IInkStrokeDisp *This,
        IInkTransform *Transform,
        VARIANT_BOOL ApplyOnPenWidth);

    HRESULT (STDMETHODCALLTYPE *ScaleToRectangle)(
        IInkStrokeDisp *This,
        IInkRectangle *Rectangle);

    HRESULT (STDMETHODCALLTYPE *Move)(
        IInkStrokeDisp *This,
        single HorizontalComponent,
        single VerticalComponent);

    HRESULT (STDMETHODCALLTYPE *Rotate)(
        IInkStrokeDisp *This,
        single Degrees,
        single x,
        single y);

    HRESULT (STDMETHODCALLTYPE *Shear)(
        IInkStrokeDisp *This,
        single HorizontalMultiplier,
        single VerticalMultiplier);

    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
        IInkStrokeDisp *This,
        single HorizontalMultiplier,
        single VerticalMultiplier);

    END_INTERFACE
} IInkStrokeDispVtbl;

interface IInkStrokeDisp {
    CONST_VTBL IInkStrokeDispVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkStrokeDisp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkStrokeDisp_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkStrokeDisp_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkStrokeDisp_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkStrokeDisp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkStrokeDisp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkStrokeDisp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkStrokeDisp methods ***/
#define IInkStrokeDisp_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
#define IInkStrokeDisp_get_BezierPoints(This,Points) (This)->lpVtbl->get_BezierPoints(This,Points)
#define IInkStrokeDisp_get_DrawingAttributes(This,DrawAttrs) (This)->lpVtbl->get_DrawingAttributes(This,DrawAttrs)
#define IInkStrokeDisp_putref_DrawingAttributes(This,DrawAttrs) (This)->lpVtbl->putref_DrawingAttributes(This,DrawAttrs)
#define IInkStrokeDisp_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
#define IInkStrokeDisp_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
#define IInkStrokeDisp_get_PolylineCusps(This,Cusps) (This)->lpVtbl->get_PolylineCusps(This,Cusps)
#define IInkStrokeDisp_get_BezierCusps(This,Cusps) (This)->lpVtbl->get_BezierCusps(This,Cusps)
#define IInkStrokeDisp_get_SelfIntersections(This,Intersections) (This)->lpVtbl->get_SelfIntersections(This,Intersections)
#define IInkStrokeDisp_get_PacketCount(This,plCount) (This)->lpVtbl->get_PacketCount(This,plCount)
#define IInkStrokeDisp_get_PacketSize(This,plSize) (This)->lpVtbl->get_PacketSize(This,plSize)
#define IInkStrokeDisp_get_PacketDescription(This,PacketDescription) (This)->lpVtbl->get_PacketDescription(This,PacketDescription)
#define IInkStrokeDisp_get_Deleted(This,Deleted) (This)->lpVtbl->get_Deleted(This,Deleted)
#define IInkStrokeDisp_GetBoundingBox(This,BoundingBoxMode,Rectangle) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle)
#define IInkStrokeDisp_FindIntersections(This,Strokes,Intersections) (This)->lpVtbl->FindIntersections(This,Strokes,Intersections)
#define IInkStrokeDisp_GetRectangleIntersections(This,Rectangle,Intersections) (This)->lpVtbl->GetRectangleIntersections(This,Rectangle,Intersections)
#define IInkStrokeDisp_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
#define IInkStrokeDisp_HitTestCircle(This,x,y,radius,Intersects) (This)->lpVtbl->HitTestCircle(This,x,y,radius,Intersects)
#define IInkStrokeDisp_NearestPoint(This,x,y,Distance,Point) (This)->lpVtbl->NearestPoint(This,x,y,Distance,Point)
#define IInkStrokeDisp_Split(This,SplitAt,NewStroke) (This)->lpVtbl->Split(This,SplitAt,NewStroke)
#define IInkStrokeDisp_GetPacketDescriptionPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution) (This)->lpVtbl->GetPacketDescriptionPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution)
#define IInkStrokeDisp_GetPoints(This,Index,Count,Points) (This)->lpVtbl->GetPoints(This,Index,Count,Points)
#define IInkStrokeDisp_SetPoints(This,Points,Index,Count,NumberOfPointsSet) (This)->lpVtbl->SetPoints(This,Points,Index,Count,NumberOfPointsSet)
#define IInkStrokeDisp_GetPacketData(This,Index,Count,PacketData) (This)->lpVtbl->GetPacketData(This,Index,Count,PacketData)
#define IInkStrokeDisp_GetPacketValuesByProperty(This,propertyName,Index,Count,PacketValues) (This)->lpVtbl->GetPacketValuesByProperty(This,propertyName,Index,Count,PacketValues)
#define IInkStrokeDisp_SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet) (This)->lpVtbl->SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet)
#define IInkStrokeDisp_GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints) (This)->lpVtbl->GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints)
#define IInkStrokeDisp_Transform(This,Transform,ApplyOnPenWidth) (This)->lpVtbl->Transform(This,Transform,ApplyOnPenWidth)
#define IInkStrokeDisp_ScaleToRectangle(This,Rectangle) (This)->lpVtbl->ScaleToRectangle(This,Rectangle)
#define IInkStrokeDisp_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
#define IInkStrokeDisp_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
#define IInkStrokeDisp_Shear(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier)
#define IInkStrokeDisp_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkStrokeDisp_QueryInterface(IInkStrokeDisp* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkStrokeDisp_AddRef(IInkStrokeDisp* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkStrokeDisp_Release(IInkStrokeDisp* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkStrokeDisp_GetTypeInfoCount(IInkStrokeDisp* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetTypeInfo(IInkStrokeDisp* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetIDsOfNames(IInkStrokeDisp* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkStrokeDisp_Invoke(IInkStrokeDisp* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkStrokeDisp methods ***/
static FORCEINLINE HRESULT IInkStrokeDisp_get_Id(IInkStrokeDisp* This,LONG *Id) {
    return This->lpVtbl->get_Id(This,Id);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_BezierPoints(IInkStrokeDisp* This,VARIANT *Points) {
    return This->lpVtbl->get_BezierPoints(This,Points);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_DrawingAttributes(IInkStrokeDisp* This,IInkDrawingAttributes **DrawAttrs) {
    return This->lpVtbl->get_DrawingAttributes(This,DrawAttrs);
}
static FORCEINLINE HRESULT IInkStrokeDisp_putref_DrawingAttributes(IInkStrokeDisp* This,IInkDrawingAttributes *DrawAttrs) {
    return This->lpVtbl->putref_DrawingAttributes(This,DrawAttrs);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_Ink(IInkStrokeDisp* This,IInkDisp **Ink) {
    return This->lpVtbl->get_Ink(This,Ink);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_ExtendedProperties(IInkStrokeDisp* This,IInkExtendedProperties **Properties) {
    return This->lpVtbl->get_ExtendedProperties(This,Properties);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_PolylineCusps(IInkStrokeDisp* This,VARIANT *Cusps) {
    return This->lpVtbl->get_PolylineCusps(This,Cusps);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_BezierCusps(IInkStrokeDisp* This,VARIANT *Cusps) {
    return This->lpVtbl->get_BezierCusps(This,Cusps);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_SelfIntersections(IInkStrokeDisp* This,VARIANT *Intersections) {
    return This->lpVtbl->get_SelfIntersections(This,Intersections);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketCount(IInkStrokeDisp* This,LONG *plCount) {
    return This->lpVtbl->get_PacketCount(This,plCount);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketSize(IInkStrokeDisp* This,LONG *plSize) {
    return This->lpVtbl->get_PacketSize(This,plSize);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_PacketDescription(IInkStrokeDisp* This,VARIANT *PacketDescription) {
    return This->lpVtbl->get_PacketDescription(This,PacketDescription);
}
static FORCEINLINE HRESULT IInkStrokeDisp_get_Deleted(IInkStrokeDisp* This,VARIANT_BOOL *Deleted) {
    return This->lpVtbl->get_Deleted(This,Deleted);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetBoundingBox(IInkStrokeDisp* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **Rectangle) {
    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle);
}
static FORCEINLINE HRESULT IInkStrokeDisp_FindIntersections(IInkStrokeDisp* This,IInkStrokes *Strokes,VARIANT *Intersections) {
    return This->lpVtbl->FindIntersections(This,Strokes,Intersections);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetRectangleIntersections(IInkStrokeDisp* This,IInkRectangle *Rectangle,VARIANT *Intersections) {
    return This->lpVtbl->GetRectangleIntersections(This,Rectangle,Intersections);
}
static FORCEINLINE HRESULT IInkStrokeDisp_Clip(IInkStrokeDisp* This,IInkRectangle *Rectangle) {
    return This->lpVtbl->Clip(This,Rectangle);
}
static FORCEINLINE HRESULT IInkStrokeDisp_HitTestCircle(IInkStrokeDisp* This,LONG x,LONG y,single radius,VARIANT_BOOL *Intersects) {
    return This->lpVtbl->HitTestCircle(This,x,y,radius,Intersects);
}
static FORCEINLINE HRESULT IInkStrokeDisp_NearestPoint(IInkStrokeDisp* This,LONG x,LONG y,single *Distance,single *Point) {
    return This->lpVtbl->NearestPoint(This,x,y,Distance,Point);
}
static FORCEINLINE HRESULT IInkStrokeDisp_Split(IInkStrokeDisp* This,single SplitAt,IInkStrokeDisp **NewStroke) {
    return This->lpVtbl->Split(This,SplitAt,NewStroke);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketDescriptionPropertyMetrics(IInkStrokeDisp* This,BSTR propertyName,LONG *Minimum,LONG *Maximum,TabletPropertyMetricUnit *Units,single *Resolution) {
    return This->lpVtbl->GetPacketDescriptionPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetPoints(IInkStrokeDisp* This,LONG Index,LONG Count,VARIANT *Points) {
    return This->lpVtbl->GetPoints(This,Index,Count,Points);
}
static FORCEINLINE HRESULT IInkStrokeDisp_SetPoints(IInkStrokeDisp* This,VARIANT Points,LONG Index,LONG Count,LONG *NumberOfPointsSet) {
    return This->lpVtbl->SetPoints(This,Points,Index,Count,NumberOfPointsSet);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketData(IInkStrokeDisp* This,LONG Index,LONG Count,VARIANT *PacketData) {
    return This->lpVtbl->GetPacketData(This,Index,Count,PacketData);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetPacketValuesByProperty(IInkStrokeDisp* This,BSTR propertyName,LONG Index,LONG Count,VARIANT *PacketValues) {
    return This->lpVtbl->GetPacketValuesByProperty(This,propertyName,Index,Count,PacketValues);
}
static FORCEINLINE HRESULT IInkStrokeDisp_SetPacketValuesByProperty(IInkStrokeDisp* This,BSTR bstrPropertyName,VARIANT PacketValues,LONG Index,LONG Count,LONG *NumberOfPacketsSet) {
    return This->lpVtbl->SetPacketValuesByProperty(This,bstrPropertyName,PacketValues,Index,Count,NumberOfPacketsSet);
}
static FORCEINLINE HRESULT IInkStrokeDisp_GetFlattenedBezierPoints(IInkStrokeDisp* This,LONG FittingError,VARIANT *FlattenedBezierPoints) {
    return This->lpVtbl->GetFlattenedBezierPoints(This,FittingError,FlattenedBezierPoints);
}
static FORCEINLINE HRESULT IInkStrokeDisp_Transform(IInkStrokeDisp* This,IInkTransform *Transform,VARIANT_BOOL ApplyOnPenWidth) {
    return This->lpVtbl->Transform(This,Transform,ApplyOnPenWidth);
}
static FORCEINLINE HRESULT IInkStrokeDisp_ScaleToRectangle(IInkStrokeDisp* This,IInkRectangle *Rectangle) {
    return This->lpVtbl->ScaleToRectangle(This,Rectangle);
}
static FORCEINLINE HRESULT IInkStrokeDisp_Move(IInkStrokeDisp* This,single HorizontalComponent,single VerticalComponent) {
    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
}
static FORCEINLINE HRESULT IInkStrokeDisp_Rotate(IInkStrokeDisp* This,single Degrees,single x,single y) {
    return This->lpVtbl->Rotate(This,Degrees,x,y);
}
static FORCEINLINE HRESULT IInkStrokeDisp_Shear(IInkStrokeDisp* This,single HorizontalMultiplier,single VerticalMultiplier) {
    return This->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier);
}
static FORCEINLINE HRESULT IInkStrokeDisp_ScaleTransform(IInkStrokeDisp* This,single HorizontalMultiplier,single VerticalMultiplier) {
    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
}
#endif
#endif

#endif


#endif  /* __IInkStrokeDisp_INTERFACE_DEFINED__ */

#ifndef __IInkRecognitionResult_FWD_DEFINED__
#define __IInkRecognitionResult_FWD_DEFINED__
typedef interface IInkRecognitionResult IInkRecognitionResult;
#ifdef __cplusplus
interface IInkRecognitionResult;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IInkStrokes interface
 */
#ifndef __IInkStrokes_INTERFACE_DEFINED__
#define __IInkStrokes_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkStrokes, 0xf1f4c9d8, 0x590a, 0x4963, 0xb3,0xae, 0x19,0x35,0x67,0x1b,0xb6,0xf3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f1f4c9d8-590a-4963-b3ae-1935671bb6f3")
IInkStrokes : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **_NewEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Ink(
        IInkDisp **Ink) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RecognitionResult(
        IInkRecognitionResult **RecognitionResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE ToString(
        BSTR *ToString) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        IInkStrokeDisp **Stroke) = 0;

    virtual HRESULT STDMETHODCALLTYPE Add(
        IInkStrokeDisp *InkStroke) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddStrokes(
        IInkStrokes *InkStrokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE Remove(
        IInkStrokeDisp *InkStroke) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveStrokes(
        IInkStrokes *InkStrokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE ModifyDrawingAttributes(
        IInkDrawingAttributes *DrawAttrs) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
        InkBoundingBoxMode BoundingBoxMode,
        IInkRectangle **BoundingBox) = 0;

    virtual HRESULT STDMETHODCALLTYPE Transform(
        IInkTransform *Transform,
        VARIANT_BOOL ApplyOnPenWidth) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleToRectangle(
        IInkRectangle *Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE Move(
        float HorizontalComponent,
        float VerticalComponent) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rotate(
        float Degrees,
        float x,
        float y) = 0;

    virtual HRESULT STDMETHODCALLTYPE Shear(
        float HorizontalMultiplier,
        float VerticalMultiplier) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
        float HorizontalMultiplier,
        float VerticalMultiplier) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clip(
        IInkRectangle *Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveRecognitionResult(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkStrokes, 0xf1f4c9d8, 0x590a, 0x4963, 0xb3,0xae, 0x19,0x35,0x67,0x1b,0xb6,0xf3)
#endif
#else
typedef struct IInkStrokesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkStrokes *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkStrokes *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkStrokes *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkStrokes *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkStrokes *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkStrokes *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkStrokes *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkStrokes methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IInkStrokes *This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        IInkStrokes *This,
        IUnknown **_NewEnum);

    HRESULT (STDMETHODCALLTYPE *get_Ink)(
        IInkStrokes *This,
        IInkDisp **Ink);

    HRESULT (STDMETHODCALLTYPE *get_RecognitionResult)(
        IInkStrokes *This,
        IInkRecognitionResult **RecognitionResult);

    HRESULT (STDMETHODCALLTYPE *ToString)(
        IInkStrokes *This,
        BSTR *ToString);

    HRESULT (STDMETHODCALLTYPE *Item)(
        IInkStrokes *This,
        LONG Index,
        IInkStrokeDisp **Stroke);

    HRESULT (STDMETHODCALLTYPE *Add)(
        IInkStrokes *This,
        IInkStrokeDisp *InkStroke);

    HRESULT (STDMETHODCALLTYPE *AddStrokes)(
        IInkStrokes *This,
        IInkStrokes *InkStrokes);

    HRESULT (STDMETHODCALLTYPE *Remove)(
        IInkStrokes *This,
        IInkStrokeDisp *InkStroke);

    HRESULT (STDMETHODCALLTYPE *RemoveStrokes)(
        IInkStrokes *This,
        IInkStrokes *InkStrokes);

    HRESULT (STDMETHODCALLTYPE *ModifyDrawingAttributes)(
        IInkStrokes *This,
        IInkDrawingAttributes *DrawAttrs);

    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
        IInkStrokes *This,
        InkBoundingBoxMode BoundingBoxMode,
        IInkRectangle **BoundingBox);

    HRESULT (STDMETHODCALLTYPE *Transform)(
        IInkStrokes *This,
        IInkTransform *Transform,
        VARIANT_BOOL ApplyOnPenWidth);

    HRESULT (STDMETHODCALLTYPE *ScaleToRectangle)(
        IInkStrokes *This,
        IInkRectangle *Rectangle);

    HRESULT (STDMETHODCALLTYPE *Move)(
        IInkStrokes *This,
        float HorizontalComponent,
        float VerticalComponent);

    HRESULT (STDMETHODCALLTYPE *Rotate)(
        IInkStrokes *This,
        float Degrees,
        float x,
        float y);

    HRESULT (STDMETHODCALLTYPE *Shear)(
        IInkStrokes *This,
        float HorizontalMultiplier,
        float VerticalMultiplier);

    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
        IInkStrokes *This,
        float HorizontalMultiplier,
        float VerticalMultiplier);

    HRESULT (STDMETHODCALLTYPE *Clip)(
        IInkStrokes *This,
        IInkRectangle *Rectangle);

    HRESULT (STDMETHODCALLTYPE *RemoveRecognitionResult)(
        IInkStrokes *This);

    END_INTERFACE
} IInkStrokesVtbl;

interface IInkStrokes {
    CONST_VTBL IInkStrokesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkStrokes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkStrokes_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkStrokes_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkStrokes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkStrokes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkStrokes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkStrokes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkStrokes methods ***/
#define IInkStrokes_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define IInkStrokes_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
#define IInkStrokes_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
#define IInkStrokes_get_RecognitionResult(This,RecognitionResult) (This)->lpVtbl->get_RecognitionResult(This,RecognitionResult)
#define IInkStrokes_ToString(This,ToString) (This)->lpVtbl->ToString(This,ToString)
#define IInkStrokes_Item(This,Index,Stroke) (This)->lpVtbl->Item(This,Index,Stroke)
#define IInkStrokes_Add(This,InkStroke) (This)->lpVtbl->Add(This,InkStroke)
#define IInkStrokes_AddStrokes(This,InkStrokes) (This)->lpVtbl->AddStrokes(This,InkStrokes)
#define IInkStrokes_Remove(This,InkStroke) (This)->lpVtbl->Remove(This,InkStroke)
#define IInkStrokes_RemoveStrokes(This,InkStrokes) (This)->lpVtbl->RemoveStrokes(This,InkStrokes)
#define IInkStrokes_ModifyDrawingAttributes(This,DrawAttrs) (This)->lpVtbl->ModifyDrawingAttributes(This,DrawAttrs)
#define IInkStrokes_GetBoundingBox(This,BoundingBoxMode,BoundingBox) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,BoundingBox)
#define IInkStrokes_Transform(This,Transform,ApplyOnPenWidth) (This)->lpVtbl->Transform(This,Transform,ApplyOnPenWidth)
#define IInkStrokes_ScaleToRectangle(This,Rectangle) (This)->lpVtbl->ScaleToRectangle(This,Rectangle)
#define IInkStrokes_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
#define IInkStrokes_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
#define IInkStrokes_Shear(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier)
#define IInkStrokes_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier)
#define IInkStrokes_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
#define IInkStrokes_RemoveRecognitionResult(This) (This)->lpVtbl->RemoveRecognitionResult(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkStrokes_QueryInterface(IInkStrokes* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkStrokes_AddRef(IInkStrokes* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkStrokes_Release(IInkStrokes* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkStrokes_GetTypeInfoCount(IInkStrokes* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkStrokes_GetTypeInfo(IInkStrokes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkStrokes_GetIDsOfNames(IInkStrokes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkStrokes_Invoke(IInkStrokes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkStrokes methods ***/
static FORCEINLINE HRESULT IInkStrokes_get_Count(IInkStrokes* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT IInkStrokes_get__NewEnum(IInkStrokes* This,IUnknown **_NewEnum) {
    return This->lpVtbl->get__NewEnum(This,_NewEnum);
}
static FORCEINLINE HRESULT IInkStrokes_get_Ink(IInkStrokes* This,IInkDisp **Ink) {
    return This->lpVtbl->get_Ink(This,Ink);
}
static FORCEINLINE HRESULT IInkStrokes_get_RecognitionResult(IInkStrokes* This,IInkRecognitionResult **RecognitionResult) {
    return This->lpVtbl->get_RecognitionResult(This,RecognitionResult);
}
static FORCEINLINE HRESULT IInkStrokes_ToString(IInkStrokes* This,BSTR *ToString) {
    return This->lpVtbl->ToString(This,ToString);
}
static FORCEINLINE HRESULT IInkStrokes_Item(IInkStrokes* This,LONG Index,IInkStrokeDisp **Stroke) {
    return This->lpVtbl->Item(This,Index,Stroke);
}
static FORCEINLINE HRESULT IInkStrokes_Add(IInkStrokes* This,IInkStrokeDisp *InkStroke) {
    return This->lpVtbl->Add(This,InkStroke);
}
static FORCEINLINE HRESULT IInkStrokes_AddStrokes(IInkStrokes* This,IInkStrokes *InkStrokes) {
    return This->lpVtbl->AddStrokes(This,InkStrokes);
}
static FORCEINLINE HRESULT IInkStrokes_Remove(IInkStrokes* This,IInkStrokeDisp *InkStroke) {
    return This->lpVtbl->Remove(This,InkStroke);
}
static FORCEINLINE HRESULT IInkStrokes_RemoveStrokes(IInkStrokes* This,IInkStrokes *InkStrokes) {
    return This->lpVtbl->RemoveStrokes(This,InkStrokes);
}
static FORCEINLINE HRESULT IInkStrokes_ModifyDrawingAttributes(IInkStrokes* This,IInkDrawingAttributes *DrawAttrs) {
    return This->lpVtbl->ModifyDrawingAttributes(This,DrawAttrs);
}
static FORCEINLINE HRESULT IInkStrokes_GetBoundingBox(IInkStrokes* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **BoundingBox) {
    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,BoundingBox);
}
static FORCEINLINE HRESULT IInkStrokes_Transform(IInkStrokes* This,IInkTransform *Transform,VARIANT_BOOL ApplyOnPenWidth) {
    return This->lpVtbl->Transform(This,Transform,ApplyOnPenWidth);
}
static FORCEINLINE HRESULT IInkStrokes_ScaleToRectangle(IInkStrokes* This,IInkRectangle *Rectangle) {
    return This->lpVtbl->ScaleToRectangle(This,Rectangle);
}
static FORCEINLINE HRESULT IInkStrokes_Move(IInkStrokes* This,float HorizontalComponent,float VerticalComponent) {
    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
}
static FORCEINLINE HRESULT IInkStrokes_Rotate(IInkStrokes* This,float Degrees,float x,float y) {
    return This->lpVtbl->Rotate(This,Degrees,x,y);
}
static FORCEINLINE HRESULT IInkStrokes_Shear(IInkStrokes* This,float HorizontalMultiplier,float VerticalMultiplier) {
    return This->lpVtbl->Shear(This,HorizontalMultiplier,VerticalMultiplier);
}
static FORCEINLINE HRESULT IInkStrokes_ScaleTransform(IInkStrokes* This,float HorizontalMultiplier,float VerticalMultiplier) {
    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier);
}
static FORCEINLINE HRESULT IInkStrokes_Clip(IInkStrokes* This,IInkRectangle *Rectangle) {
    return This->lpVtbl->Clip(This,Rectangle);
}
static FORCEINLINE HRESULT IInkStrokes_RemoveRecognitionResult(IInkStrokes* This) {
    return This->lpVtbl->RemoveRecognitionResult(This);
}
#endif
#endif

#endif


#endif  /* __IInkStrokes_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkCustomStrokes interface
 */
#ifndef __IInkCustomStrokes_INTERFACE_DEFINED__
#define __IInkCustomStrokes_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkCustomStrokes, 0x7e23a88f, 0xc30e, 0x420f, 0x9b,0xdb, 0x28,0x90,0x25,0x43,0xf0,0xc1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7e23a88f-c30e-420f-9bdb-28902543f0c1")
IInkCustomStrokes : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **_NewEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        VARIANT Identifier,
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE Add(
        BSTR Name,
        IInkStrokes *Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE Remove(
        VARIANT Identifier) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clear(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkCustomStrokes, 0x7e23a88f, 0xc30e, 0x420f, 0x9b,0xdb, 0x28,0x90,0x25,0x43,0xf0,0xc1)
#endif
#else
typedef struct IInkCustomStrokesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkCustomStrokes *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkCustomStrokes *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkCustomStrokes *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkCustomStrokes *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkCustomStrokes *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkCustomStrokes *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkCustomStrokes *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkCustomStrokes methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IInkCustomStrokes *This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        IInkCustomStrokes *This,
        IUnknown **_NewEnum);

    HRESULT (STDMETHODCALLTYPE *Item)(
        IInkCustomStrokes *This,
        VARIANT Identifier,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *Add)(
        IInkCustomStrokes *This,
        BSTR Name,
        IInkStrokes *Strokes);

    HRESULT (STDMETHODCALLTYPE *Remove)(
        IInkCustomStrokes *This,
        VARIANT Identifier);

    HRESULT (STDMETHODCALLTYPE *Clear)(
        IInkCustomStrokes *This);

    END_INTERFACE
} IInkCustomStrokesVtbl;

interface IInkCustomStrokes {
    CONST_VTBL IInkCustomStrokesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkCustomStrokes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkCustomStrokes_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkCustomStrokes_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkCustomStrokes_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkCustomStrokes_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkCustomStrokes_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkCustomStrokes_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkCustomStrokes methods ***/
#define IInkCustomStrokes_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define IInkCustomStrokes_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
#define IInkCustomStrokes_Item(This,Identifier,Strokes) (This)->lpVtbl->Item(This,Identifier,Strokes)
#define IInkCustomStrokes_Add(This,Name,Strokes) (This)->lpVtbl->Add(This,Name,Strokes)
#define IInkCustomStrokes_Remove(This,Identifier) (This)->lpVtbl->Remove(This,Identifier)
#define IInkCustomStrokes_Clear(This) (This)->lpVtbl->Clear(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkCustomStrokes_QueryInterface(IInkCustomStrokes* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkCustomStrokes_AddRef(IInkCustomStrokes* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkCustomStrokes_Release(IInkCustomStrokes* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkCustomStrokes_GetTypeInfoCount(IInkCustomStrokes* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkCustomStrokes_GetTypeInfo(IInkCustomStrokes* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkCustomStrokes_GetIDsOfNames(IInkCustomStrokes* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkCustomStrokes_Invoke(IInkCustomStrokes* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkCustomStrokes methods ***/
static FORCEINLINE HRESULT IInkCustomStrokes_get_Count(IInkCustomStrokes* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT IInkCustomStrokes_get__NewEnum(IInkCustomStrokes* This,IUnknown **_NewEnum) {
    return This->lpVtbl->get__NewEnum(This,_NewEnum);
}
static FORCEINLINE HRESULT IInkCustomStrokes_Item(IInkCustomStrokes* This,VARIANT Identifier,IInkStrokes **Strokes) {
    return This->lpVtbl->Item(This,Identifier,Strokes);
}
static FORCEINLINE HRESULT IInkCustomStrokes_Add(IInkCustomStrokes* This,BSTR Name,IInkStrokes *Strokes) {
    return This->lpVtbl->Add(This,Name,Strokes);
}
static FORCEINLINE HRESULT IInkCustomStrokes_Remove(IInkCustomStrokes* This,VARIANT Identifier) {
    return This->lpVtbl->Remove(This,Identifier);
}
static FORCEINLINE HRESULT IInkCustomStrokes_Clear(IInkCustomStrokes* This) {
    return This->lpVtbl->Clear(This);
}
#endif
#endif

#endif


#endif  /* __IInkCustomStrokes_INTERFACE_DEFINED__ */

#ifndef __IInkRecognitionAlternate_FWD_DEFINED__
#define __IInkRecognitionAlternate_FWD_DEFINED__
typedef interface IInkRecognitionAlternate IInkRecognitionAlternate;
#ifdef __cplusplus
interface IInkRecognitionAlternate;
#endif /* __cplusplus */
#endif

#ifndef __IInkRecognitionAlternates_FWD_DEFINED__
#define __IInkRecognitionAlternates_FWD_DEFINED__
typedef interface IInkRecognitionAlternates IInkRecognitionAlternates;
#ifdef __cplusplus
interface IInkRecognitionAlternates;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IInkRecognitionResult interface
 */
#ifndef __IInkRecognitionResult_INTERFACE_DEFINED__
#define __IInkRecognitionResult_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkRecognitionResult, 0x3bc129a8, 0x86cd, 0x45ad, 0xbd,0xe8, 0xe0,0xd3,0x2d,0x61,0xc1,0x6d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3bc129a8-86cd-45ad-bde8-e0d32d61c16d")
IInkRecognitionResult : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_TopString(
        BSTR *TopString) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TopAlternate(
        IInkRecognitionAlternate **TopAlternate) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TopConfidence(
        InkRecognitionConfidence *TopConfidence) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE AlternatesFromSelection(
        LONG selectionStart,
        LONG selectionLength,
        LONG maximumAlternates,
        IInkRecognitionAlternates **AlternatesFromSelection) = 0;

    virtual HRESULT STDMETHODCALLTYPE ModifyTopAlternate(
        IInkRecognitionAlternate *Alternate) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetResultOnStrokes(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkRecognitionResult, 0x3bc129a8, 0x86cd, 0x45ad, 0xbd,0xe8, 0xe0,0xd3,0x2d,0x61,0xc1,0x6d)
#endif
#else
typedef struct IInkRecognitionResultVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkRecognitionResult *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkRecognitionResult *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkRecognitionResult *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkRecognitionResult *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkRecognitionResult *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkRecognitionResult *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkRecognitionResult *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkRecognitionResult methods ***/
    HRESULT (STDMETHODCALLTYPE *get_TopString)(
        IInkRecognitionResult *This,
        BSTR *TopString);

    HRESULT (STDMETHODCALLTYPE *get_TopAlternate)(
        IInkRecognitionResult *This,
        IInkRecognitionAlternate **TopAlternate);

    HRESULT (STDMETHODCALLTYPE *get_TopConfidence)(
        IInkRecognitionResult *This,
        InkRecognitionConfidence *TopConfidence);

    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
        IInkRecognitionResult *This,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *AlternatesFromSelection)(
        IInkRecognitionResult *This,
        LONG selectionStart,
        LONG selectionLength,
        LONG maximumAlternates,
        IInkRecognitionAlternates **AlternatesFromSelection);

    HRESULT (STDMETHODCALLTYPE *ModifyTopAlternate)(
        IInkRecognitionResult *This,
        IInkRecognitionAlternate *Alternate);

    HRESULT (STDMETHODCALLTYPE *SetResultOnStrokes)(
        IInkRecognitionResult *This);

    END_INTERFACE
} IInkRecognitionResultVtbl;

interface IInkRecognitionResult {
    CONST_VTBL IInkRecognitionResultVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkRecognitionResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkRecognitionResult_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkRecognitionResult_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkRecognitionResult_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkRecognitionResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkRecognitionResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkRecognitionResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkRecognitionResult methods ***/
#define IInkRecognitionResult_get_TopString(This,TopString) (This)->lpVtbl->get_TopString(This,TopString)
#define IInkRecognitionResult_get_TopAlternate(This,TopAlternate) (This)->lpVtbl->get_TopAlternate(This,TopAlternate)
#define IInkRecognitionResult_get_TopConfidence(This,TopConfidence) (This)->lpVtbl->get_TopConfidence(This,TopConfidence)
#define IInkRecognitionResult_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
#define IInkRecognitionResult_AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection) (This)->lpVtbl->AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection)
#define IInkRecognitionResult_ModifyTopAlternate(This,Alternate) (This)->lpVtbl->ModifyTopAlternate(This,Alternate)
#define IInkRecognitionResult_SetResultOnStrokes(This) (This)->lpVtbl->SetResultOnStrokes(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkRecognitionResult_QueryInterface(IInkRecognitionResult* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkRecognitionResult_AddRef(IInkRecognitionResult* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkRecognitionResult_Release(IInkRecognitionResult* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkRecognitionResult_GetTypeInfoCount(IInkRecognitionResult* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkRecognitionResult_GetTypeInfo(IInkRecognitionResult* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkRecognitionResult_GetIDsOfNames(IInkRecognitionResult* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkRecognitionResult_Invoke(IInkRecognitionResult* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkRecognitionResult methods ***/
static FORCEINLINE HRESULT IInkRecognitionResult_get_TopString(IInkRecognitionResult* This,BSTR *TopString) {
    return This->lpVtbl->get_TopString(This,TopString);
}
static FORCEINLINE HRESULT IInkRecognitionResult_get_TopAlternate(IInkRecognitionResult* This,IInkRecognitionAlternate **TopAlternate) {
    return This->lpVtbl->get_TopAlternate(This,TopAlternate);
}
static FORCEINLINE HRESULT IInkRecognitionResult_get_TopConfidence(IInkRecognitionResult* This,InkRecognitionConfidence *TopConfidence) {
    return This->lpVtbl->get_TopConfidence(This,TopConfidence);
}
static FORCEINLINE HRESULT IInkRecognitionResult_get_Strokes(IInkRecognitionResult* This,IInkStrokes **Strokes) {
    return This->lpVtbl->get_Strokes(This,Strokes);
}
static FORCEINLINE HRESULT IInkRecognitionResult_AlternatesFromSelection(IInkRecognitionResult* This,LONG selectionStart,LONG selectionLength,LONG maximumAlternates,IInkRecognitionAlternates **AlternatesFromSelection) {
    return This->lpVtbl->AlternatesFromSelection(This,selectionStart,selectionLength,maximumAlternates,AlternatesFromSelection);
}
static FORCEINLINE HRESULT IInkRecognitionResult_ModifyTopAlternate(IInkRecognitionResult* This,IInkRecognitionAlternate *Alternate) {
    return This->lpVtbl->ModifyTopAlternate(This,Alternate);
}
static FORCEINLINE HRESULT IInkRecognitionResult_SetResultOnStrokes(IInkRecognitionResult* This) {
    return This->lpVtbl->SetResultOnStrokes(This);
}
#endif
#endif

#endif


#endif  /* __IInkRecognitionResult_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkRecognitionAlternate interface
 */
#ifndef __IInkRecognitionAlternate_INTERFACE_DEFINED__
#define __IInkRecognitionAlternate_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkRecognitionAlternate, 0xb7e660ad, 0x77e4, 0x429b, 0xad,0xda, 0x87,0x37,0x80,0xd1,0xfc,0x4a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b7e660ad-77e4-429b-adda-873780d1fc4a")
IInkRecognitionAlternate : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_String(
        BSTR *RecoString) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Confidence(
        InkRecognitionConfidence *Confidence) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Baseline(
        VARIANT *Baseline) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Midline(
        VARIANT *Midline) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Ascender(
        VARIANT *Ascender) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Descender(
        VARIANT *Descender) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LineNumber(
        LONG *LineNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LineAlternates(
        IInkRecognitionAlternates **LineAlternates) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ConfidenceAlternates(
        IInkRecognitionAlternates **ConfidenceAlternates) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStrokesFromStrokeRanges(
        IInkStrokes *Stroke,
        IInkStrokes **GetStrokesFromTextRange) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStrokesFromTextRange(
        LONG *selectionStart,
        LONG *selectionLength,
        IInkStrokes **GetStrokesFromTextRange) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTextRangeFromStrokes(
        IInkStrokes *Strokes,
        LONG *selectionStart,
        LONG *selectionLength) = 0;

    virtual HRESULT STDMETHODCALLTYPE AlternatesWithConstantPropertyValues(
        BSTR PropertyType,
        IInkRecognitionAlternates **AlternatesWithConstantPropertyValues) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyValue(
        BSTR PropertyType,
        VARIANT *PropertyValue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkRecognitionAlternate, 0xb7e660ad, 0x77e4, 0x429b, 0xad,0xda, 0x87,0x37,0x80,0xd1,0xfc,0x4a)
#endif
#else
typedef struct IInkRecognitionAlternateVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkRecognitionAlternate *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkRecognitionAlternate *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkRecognitionAlternate *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkRecognitionAlternate *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkRecognitionAlternate *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkRecognitionAlternate *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkRecognitionAlternate *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkRecognitionAlternate methods ***/
    HRESULT (STDMETHODCALLTYPE *get_String)(
        IInkRecognitionAlternate *This,
        BSTR *RecoString);

    HRESULT (STDMETHODCALLTYPE *get_Confidence)(
        IInkRecognitionAlternate *This,
        InkRecognitionConfidence *Confidence);

    HRESULT (STDMETHODCALLTYPE *get_Baseline)(
        IInkRecognitionAlternate *This,
        VARIANT *Baseline);

    HRESULT (STDMETHODCALLTYPE *get_Midline)(
        IInkRecognitionAlternate *This,
        VARIANT *Midline);

    HRESULT (STDMETHODCALLTYPE *get_Ascender)(
        IInkRecognitionAlternate *This,
        VARIANT *Ascender);

    HRESULT (STDMETHODCALLTYPE *get_Descender)(
        IInkRecognitionAlternate *This,
        VARIANT *Descender);

    HRESULT (STDMETHODCALLTYPE *get_LineNumber)(
        IInkRecognitionAlternate *This,
        LONG *LineNumber);

    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
        IInkRecognitionAlternate *This,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *get_LineAlternates)(
        IInkRecognitionAlternate *This,
        IInkRecognitionAlternates **LineAlternates);

    HRESULT (STDMETHODCALLTYPE *get_ConfidenceAlternates)(
        IInkRecognitionAlternate *This,
        IInkRecognitionAlternates **ConfidenceAlternates);

    HRESULT (STDMETHODCALLTYPE *GetStrokesFromStrokeRanges)(
        IInkRecognitionAlternate *This,
        IInkStrokes *Stroke,
        IInkStrokes **GetStrokesFromTextRange);

    HRESULT (STDMETHODCALLTYPE *GetStrokesFromTextRange)(
        IInkRecognitionAlternate *This,
        LONG *selectionStart,
        LONG *selectionLength,
        IInkStrokes **GetStrokesFromTextRange);

    HRESULT (STDMETHODCALLTYPE *GetTextRangeFromStrokes)(
        IInkRecognitionAlternate *This,
        IInkStrokes *Strokes,
        LONG *selectionStart,
        LONG *selectionLength);

    HRESULT (STDMETHODCALLTYPE *AlternatesWithConstantPropertyValues)(
        IInkRecognitionAlternate *This,
        BSTR PropertyType,
        IInkRecognitionAlternates **AlternatesWithConstantPropertyValues);

    HRESULT (STDMETHODCALLTYPE *GetPropertyValue)(
        IInkRecognitionAlternate *This,
        BSTR PropertyType,
        VARIANT *PropertyValue);

    END_INTERFACE
} IInkRecognitionAlternateVtbl;

interface IInkRecognitionAlternate {
    CONST_VTBL IInkRecognitionAlternateVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkRecognitionAlternate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkRecognitionAlternate_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkRecognitionAlternate_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkRecognitionAlternate_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkRecognitionAlternate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkRecognitionAlternate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkRecognitionAlternate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkRecognitionAlternate methods ***/
#define IInkRecognitionAlternate_get_String(This,RecoString) (This)->lpVtbl->get_String(This,RecoString)
#define IInkRecognitionAlternate_get_Confidence(This,Confidence) (This)->lpVtbl->get_Confidence(This,Confidence)
#define IInkRecognitionAlternate_get_Baseline(This,Baseline) (This)->lpVtbl->get_Baseline(This,Baseline)
#define IInkRecognitionAlternate_get_Midline(This,Midline) (This)->lpVtbl->get_Midline(This,Midline)
#define IInkRecognitionAlternate_get_Ascender(This,Ascender) (This)->lpVtbl->get_Ascender(This,Ascender)
#define IInkRecognitionAlternate_get_Descender(This,Descender) (This)->lpVtbl->get_Descender(This,Descender)
#define IInkRecognitionAlternate_get_LineNumber(This,LineNumber) (This)->lpVtbl->get_LineNumber(This,LineNumber)
#define IInkRecognitionAlternate_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
#define IInkRecognitionAlternate_get_LineAlternates(This,LineAlternates) (This)->lpVtbl->get_LineAlternates(This,LineAlternates)
#define IInkRecognitionAlternate_get_ConfidenceAlternates(This,ConfidenceAlternates) (This)->lpVtbl->get_ConfidenceAlternates(This,ConfidenceAlternates)
#define IInkRecognitionAlternate_GetStrokesFromStrokeRanges(This,Stroke,GetStrokesFromTextRange) (This)->lpVtbl->GetStrokesFromStrokeRanges(This,Stroke,GetStrokesFromTextRange)
#define IInkRecognitionAlternate_GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange) (This)->lpVtbl->GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange)
#define IInkRecognitionAlternate_GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength) (This)->lpVtbl->GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength)
#define IInkRecognitionAlternate_AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues) (This)->lpVtbl->AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues)
#define IInkRecognitionAlternate_GetPropertyValue(This,PropertyType,PropertyValue) (This)->lpVtbl->GetPropertyValue(This,PropertyType,PropertyValue)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkRecognitionAlternate_QueryInterface(IInkRecognitionAlternate* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkRecognitionAlternate_AddRef(IInkRecognitionAlternate* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkRecognitionAlternate_Release(IInkRecognitionAlternate* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTypeInfoCount(IInkRecognitionAlternate* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTypeInfo(IInkRecognitionAlternate* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_GetIDsOfNames(IInkRecognitionAlternate* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_Invoke(IInkRecognitionAlternate* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkRecognitionAlternate methods ***/
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_String(IInkRecognitionAlternate* This,BSTR *RecoString) {
    return This->lpVtbl->get_String(This,RecoString);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Confidence(IInkRecognitionAlternate* This,InkRecognitionConfidence *Confidence) {
    return This->lpVtbl->get_Confidence(This,Confidence);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Baseline(IInkRecognitionAlternate* This,VARIANT *Baseline) {
    return This->lpVtbl->get_Baseline(This,Baseline);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Midline(IInkRecognitionAlternate* This,VARIANT *Midline) {
    return This->lpVtbl->get_Midline(This,Midline);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Ascender(IInkRecognitionAlternate* This,VARIANT *Ascender) {
    return This->lpVtbl->get_Ascender(This,Ascender);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Descender(IInkRecognitionAlternate* This,VARIANT *Descender) {
    return This->lpVtbl->get_Descender(This,Descender);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_LineNumber(IInkRecognitionAlternate* This,LONG *LineNumber) {
    return This->lpVtbl->get_LineNumber(This,LineNumber);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_Strokes(IInkRecognitionAlternate* This,IInkStrokes **Strokes) {
    return This->lpVtbl->get_Strokes(This,Strokes);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_LineAlternates(IInkRecognitionAlternate* This,IInkRecognitionAlternates **LineAlternates) {
    return This->lpVtbl->get_LineAlternates(This,LineAlternates);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_get_ConfidenceAlternates(IInkRecognitionAlternate* This,IInkRecognitionAlternates **ConfidenceAlternates) {
    return This->lpVtbl->get_ConfidenceAlternates(This,ConfidenceAlternates);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_GetStrokesFromStrokeRanges(IInkRecognitionAlternate* This,IInkStrokes *Stroke,IInkStrokes **GetStrokesFromTextRange) {
    return This->lpVtbl->GetStrokesFromStrokeRanges(This,Stroke,GetStrokesFromTextRange);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_GetStrokesFromTextRange(IInkRecognitionAlternate* This,LONG *selectionStart,LONG *selectionLength,IInkStrokes **GetStrokesFromTextRange) {
    return This->lpVtbl->GetStrokesFromTextRange(This,selectionStart,selectionLength,GetStrokesFromTextRange);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_GetTextRangeFromStrokes(IInkRecognitionAlternate* This,IInkStrokes *Strokes,LONG *selectionStart,LONG *selectionLength) {
    return This->lpVtbl->GetTextRangeFromStrokes(This,Strokes,selectionStart,selectionLength);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_AlternatesWithConstantPropertyValues(IInkRecognitionAlternate* This,BSTR PropertyType,IInkRecognitionAlternates **AlternatesWithConstantPropertyValues) {
    return This->lpVtbl->AlternatesWithConstantPropertyValues(This,PropertyType,AlternatesWithConstantPropertyValues);
}
static FORCEINLINE HRESULT IInkRecognitionAlternate_GetPropertyValue(IInkRecognitionAlternate* This,BSTR PropertyType,VARIANT *PropertyValue) {
    return This->lpVtbl->GetPropertyValue(This,PropertyType,PropertyValue);
}
#endif
#endif

#endif


#endif  /* __IInkRecognitionAlternate_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkRecognitionAlternates interface
 */
#ifndef __IInkRecognitionAlternates_INTERFACE_DEFINED__
#define __IInkRecognitionAlternates_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkRecognitionAlternates, 0x286a167f, 0x9f19, 0x4c61, 0x9d,0x53, 0x4f,0x07,0xbe,0x62,0x2b,0x84);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("286a167f-9f19-4c61-9d53-4f07be622b84")
IInkRecognitionAlternates : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **_NewEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        IInkRecognitionAlternate **InkRecoAlternate) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkRecognitionAlternates, 0x286a167f, 0x9f19, 0x4c61, 0x9d,0x53, 0x4f,0x07,0xbe,0x62,0x2b,0x84)
#endif
#else
typedef struct IInkRecognitionAlternatesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkRecognitionAlternates *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkRecognitionAlternates *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkRecognitionAlternates *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkRecognitionAlternates *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkRecognitionAlternates *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkRecognitionAlternates *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkRecognitionAlternates *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkRecognitionAlternates methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IInkRecognitionAlternates *This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        IInkRecognitionAlternates *This,
        IUnknown **_NewEnum);

    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
        IInkRecognitionAlternates *This,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *Item)(
        IInkRecognitionAlternates *This,
        LONG Index,
        IInkRecognitionAlternate **InkRecoAlternate);

    END_INTERFACE
} IInkRecognitionAlternatesVtbl;

interface IInkRecognitionAlternates {
    CONST_VTBL IInkRecognitionAlternatesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkRecognitionAlternates_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkRecognitionAlternates_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkRecognitionAlternates_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkRecognitionAlternates_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkRecognitionAlternates_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkRecognitionAlternates_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkRecognitionAlternates_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkRecognitionAlternates methods ***/
#define IInkRecognitionAlternates_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define IInkRecognitionAlternates_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
#define IInkRecognitionAlternates_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
#define IInkRecognitionAlternates_Item(This,Index,InkRecoAlternate) (This)->lpVtbl->Item(This,Index,InkRecoAlternate)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkRecognitionAlternates_QueryInterface(IInkRecognitionAlternates* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkRecognitionAlternates_AddRef(IInkRecognitionAlternates* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkRecognitionAlternates_Release(IInkRecognitionAlternates* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkRecognitionAlternates_GetTypeInfoCount(IInkRecognitionAlternates* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkRecognitionAlternates_GetTypeInfo(IInkRecognitionAlternates* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkRecognitionAlternates_GetIDsOfNames(IInkRecognitionAlternates* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkRecognitionAlternates_Invoke(IInkRecognitionAlternates* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkRecognitionAlternates methods ***/
static FORCEINLINE HRESULT IInkRecognitionAlternates_get_Count(IInkRecognitionAlternates* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT IInkRecognitionAlternates_get__NewEnum(IInkRecognitionAlternates* This,IUnknown **_NewEnum) {
    return This->lpVtbl->get__NewEnum(This,_NewEnum);
}
static FORCEINLINE HRESULT IInkRecognitionAlternates_get_Strokes(IInkRecognitionAlternates* This,IInkStrokes **Strokes) {
    return This->lpVtbl->get_Strokes(This,Strokes);
}
static FORCEINLINE HRESULT IInkRecognitionAlternates_Item(IInkRecognitionAlternates* This,LONG Index,IInkRecognitionAlternate **InkRecoAlternate) {
    return This->lpVtbl->Item(This,Index,InkRecoAlternate);
}
#endif
#endif

#endif


#endif  /* __IInkRecognitionAlternates_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkDisp interface
 */
#ifndef __IInkDisp_INTERFACE_DEFINED__
#define __IInkDisp_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkDisp, 0x9d398fa0, 0xc4e2, 0x4fcd, 0x99,0x73, 0x97,0x5c,0xaa,0xf4,0x7e,0xa6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9d398fa0-c4e2-4fcd-9973-975caaf47ea6")
IInkDisp : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Strokes(
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ExtendedProperties(
        IInkExtendedProperties **Properties) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Dirty(
        VARIANT_BOOL *Dirty) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Dirty(
        VARIANT_BOOL Dirty) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CustomStrokes(
        IInkCustomStrokes **CustomStrokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBoundingBox(
        InkBoundingBoxMode BoundingBoxMode,
        IInkRectangle **Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteStrokes(
        IInkStrokes *Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteStroke(
        IInkStrokeDisp *Stroke) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExtractStrokes(
        IInkStrokes *Strokes,
        InkExtractFlags ExtractFlags,
        IInkDisp **ExtractedInk) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExtractWithRectangle(
        IInkRectangle *Rectangle,
        InkExtractFlags ExtractFlags,
        IInkDisp **ExtractedInk) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clip(
        IInkRectangle *Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IInkDisp **NewInk) = 0;

    virtual HRESULT STDMETHODCALLTYPE HitTestCircle(
        LONG X,
        LONG Y,
        float radius,
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE HitTestWithRectangle(
        IInkRectangle *SelectionRectangle,
        float IntersectPercent,
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE HitTestWithLasso(
        VARIANT Points,
        float IntersectPercent,
        VARIANT *LassoPoints,
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE NearestPoint(
        LONG X,
        LONG Y,
        float *PointOnStroke,
        float *DistanceFromPacket,
        IInkStrokeDisp **Stroke) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateStrokes(
        VARIANT StrokeIds,
        IInkStrokes **Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddStrokesAtRectangle(
        IInkStrokes *SourceStrokes,
        IInkRectangle *TargetRectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE Save(
        InkPersistenceFormat PersistenceFormat,
        InkPersistenceCompressionMode CompressionMode,
        VARIANT *Data) = 0;

    virtual HRESULT STDMETHODCALLTYPE Load(
        VARIANT Data) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateStroke(
        VARIANT PacketData,
        VARIANT PacketDescription,
        IInkStrokeDisp **Stroke) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClipboardCopyWithRectangle(
        IInkRectangle *Rectangle,
        InkClipboardFormats ClipboardFormats,
        InkClipboardModes ClipboardModes,
        IDataObject **DataObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClipboardCopy(
        IInkStrokes *strokes,
        InkClipboardFormats ClipboardFormats,
        InkClipboardModes ClipboardModes,
        IDataObject **DataObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE CanPaste(
        IDataObject *DataObject,
        VARIANT_BOOL *CanPaste) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClipboardPaste(
        LONG x,
        LONG y,
        IDataObject *DataObject,
        IInkStrokes **Strokes) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkDisp, 0x9d398fa0, 0xc4e2, 0x4fcd, 0x99,0x73, 0x97,0x5c,0xaa,0xf4,0x7e,0xa6)
#endif
#else
typedef struct IInkDispVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkDisp *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkDisp *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkDisp *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkDisp *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkDisp *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkDisp *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkDisp *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkDisp methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Strokes)(
        IInkDisp *This,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *get_ExtendedProperties)(
        IInkDisp *This,
        IInkExtendedProperties **Properties);

    HRESULT (STDMETHODCALLTYPE *get_Dirty)(
        IInkDisp *This,
        VARIANT_BOOL *Dirty);

    HRESULT (STDMETHODCALLTYPE *put_Dirty)(
        IInkDisp *This,
        VARIANT_BOOL Dirty);

    HRESULT (STDMETHODCALLTYPE *get_CustomStrokes)(
        IInkDisp *This,
        IInkCustomStrokes **CustomStrokes);

    HRESULT (STDMETHODCALLTYPE *GetBoundingBox)(
        IInkDisp *This,
        InkBoundingBoxMode BoundingBoxMode,
        IInkRectangle **Rectangle);

    HRESULT (STDMETHODCALLTYPE *DeleteStrokes)(
        IInkDisp *This,
        IInkStrokes *Strokes);

    HRESULT (STDMETHODCALLTYPE *DeleteStroke)(
        IInkDisp *This,
        IInkStrokeDisp *Stroke);

    HRESULT (STDMETHODCALLTYPE *ExtractStrokes)(
        IInkDisp *This,
        IInkStrokes *Strokes,
        InkExtractFlags ExtractFlags,
        IInkDisp **ExtractedInk);

    HRESULT (STDMETHODCALLTYPE *ExtractWithRectangle)(
        IInkDisp *This,
        IInkRectangle *Rectangle,
        InkExtractFlags ExtractFlags,
        IInkDisp **ExtractedInk);

    HRESULT (STDMETHODCALLTYPE *Clip)(
        IInkDisp *This,
        IInkRectangle *Rectangle);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IInkDisp *This,
        IInkDisp **NewInk);

    HRESULT (STDMETHODCALLTYPE *HitTestCircle)(
        IInkDisp *This,
        LONG X,
        LONG Y,
        float radius,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *HitTestWithRectangle)(
        IInkDisp *This,
        IInkRectangle *SelectionRectangle,
        float IntersectPercent,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *HitTestWithLasso)(
        IInkDisp *This,
        VARIANT Points,
        float IntersectPercent,
        VARIANT *LassoPoints,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *NearestPoint)(
        IInkDisp *This,
        LONG X,
        LONG Y,
        float *PointOnStroke,
        float *DistanceFromPacket,
        IInkStrokeDisp **Stroke);

    HRESULT (STDMETHODCALLTYPE *CreateStrokes)(
        IInkDisp *This,
        VARIANT StrokeIds,
        IInkStrokes **Strokes);

    HRESULT (STDMETHODCALLTYPE *AddStrokesAtRectangle)(
        IInkDisp *This,
        IInkStrokes *SourceStrokes,
        IInkRectangle *TargetRectangle);

    HRESULT (STDMETHODCALLTYPE *Save)(
        IInkDisp *This,
        InkPersistenceFormat PersistenceFormat,
        InkPersistenceCompressionMode CompressionMode,
        VARIANT *Data);

    HRESULT (STDMETHODCALLTYPE *Load)(
        IInkDisp *This,
        VARIANT Data);

    HRESULT (STDMETHODCALLTYPE *CreateStroke)(
        IInkDisp *This,
        VARIANT PacketData,
        VARIANT PacketDescription,
        IInkStrokeDisp **Stroke);

    HRESULT (STDMETHODCALLTYPE *ClipboardCopyWithRectangle)(
        IInkDisp *This,
        IInkRectangle *Rectangle,
        InkClipboardFormats ClipboardFormats,
        InkClipboardModes ClipboardModes,
        IDataObject **DataObject);

    HRESULT (STDMETHODCALLTYPE *ClipboardCopy)(
        IInkDisp *This,
        IInkStrokes *strokes,
        InkClipboardFormats ClipboardFormats,
        InkClipboardModes ClipboardModes,
        IDataObject **DataObject);

    HRESULT (STDMETHODCALLTYPE *CanPaste)(
        IInkDisp *This,
        IDataObject *DataObject,
        VARIANT_BOOL *CanPaste);

    HRESULT (STDMETHODCALLTYPE *ClipboardPaste)(
        IInkDisp *This,
        LONG x,
        LONG y,
        IDataObject *DataObject,
        IInkStrokes **Strokes);

    END_INTERFACE
} IInkDispVtbl;

interface IInkDisp {
    CONST_VTBL IInkDispVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkDisp_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkDisp_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkDisp_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkDisp_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkDisp_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkDisp_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkDisp_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkDisp methods ***/
#define IInkDisp_get_Strokes(This,Strokes) (This)->lpVtbl->get_Strokes(This,Strokes)
#define IInkDisp_get_ExtendedProperties(This,Properties) (This)->lpVtbl->get_ExtendedProperties(This,Properties)
#define IInkDisp_get_Dirty(This,Dirty) (This)->lpVtbl->get_Dirty(This,Dirty)
#define IInkDisp_put_Dirty(This,Dirty) (This)->lpVtbl->put_Dirty(This,Dirty)
#define IInkDisp_get_CustomStrokes(This,CustomStrokes) (This)->lpVtbl->get_CustomStrokes(This,CustomStrokes)
#define IInkDisp_GetBoundingBox(This,BoundingBoxMode,Rectangle) (This)->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle)
#define IInkDisp_DeleteStrokes(This,Strokes) (This)->lpVtbl->DeleteStrokes(This,Strokes)
#define IInkDisp_DeleteStroke(This,Stroke) (This)->lpVtbl->DeleteStroke(This,Stroke)
#define IInkDisp_ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk) (This)->lpVtbl->ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk)
#define IInkDisp_ExtractWithRectangle(This,Rectangle,ExtractFlags,ExtractedInk) (This)->lpVtbl->ExtractWithRectangle(This,Rectangle,ExtractFlags,ExtractedInk)
#define IInkDisp_Clip(This,Rectangle) (This)->lpVtbl->Clip(This,Rectangle)
#define IInkDisp_Clone(This,NewInk) (This)->lpVtbl->Clone(This,NewInk)
#define IInkDisp_HitTestCircle(This,X,Y,radius,Strokes) (This)->lpVtbl->HitTestCircle(This,X,Y,radius,Strokes)
#define IInkDisp_HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes) (This)->lpVtbl->HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes)
#define IInkDisp_HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes) (This)->lpVtbl->HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes)
#define IInkDisp_NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke) (This)->lpVtbl->NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke)
#define IInkDisp_CreateStrokes(This,StrokeIds,Strokes) (This)->lpVtbl->CreateStrokes(This,StrokeIds,Strokes)
#define IInkDisp_AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle) (This)->lpVtbl->AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle)
#define IInkDisp_Save(This,PersistenceFormat,CompressionMode,Data) (This)->lpVtbl->Save(This,PersistenceFormat,CompressionMode,Data)
#define IInkDisp_Load(This,Data) (This)->lpVtbl->Load(This,Data)
#define IInkDisp_CreateStroke(This,PacketData,PacketDescription,Stroke) (This)->lpVtbl->CreateStroke(This,PacketData,PacketDescription,Stroke)
#define IInkDisp_ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject) (This)->lpVtbl->ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject)
#define IInkDisp_ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject) (This)->lpVtbl->ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject)
#define IInkDisp_CanPaste(This,DataObject,CanPaste) (This)->lpVtbl->CanPaste(This,DataObject,CanPaste)
#define IInkDisp_ClipboardPaste(This,x,y,DataObject,Strokes) (This)->lpVtbl->ClipboardPaste(This,x,y,DataObject,Strokes)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkDisp_QueryInterface(IInkDisp* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkDisp_AddRef(IInkDisp* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkDisp_Release(IInkDisp* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkDisp_GetTypeInfoCount(IInkDisp* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkDisp_GetTypeInfo(IInkDisp* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkDisp_GetIDsOfNames(IInkDisp* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkDisp_Invoke(IInkDisp* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkDisp methods ***/
static FORCEINLINE HRESULT IInkDisp_get_Strokes(IInkDisp* This,IInkStrokes **Strokes) {
    return This->lpVtbl->get_Strokes(This,Strokes);
}
static FORCEINLINE HRESULT IInkDisp_get_ExtendedProperties(IInkDisp* This,IInkExtendedProperties **Properties) {
    return This->lpVtbl->get_ExtendedProperties(This,Properties);
}
static FORCEINLINE HRESULT IInkDisp_get_Dirty(IInkDisp* This,VARIANT_BOOL *Dirty) {
    return This->lpVtbl->get_Dirty(This,Dirty);
}
static FORCEINLINE HRESULT IInkDisp_put_Dirty(IInkDisp* This,VARIANT_BOOL Dirty) {
    return This->lpVtbl->put_Dirty(This,Dirty);
}
static FORCEINLINE HRESULT IInkDisp_get_CustomStrokes(IInkDisp* This,IInkCustomStrokes **CustomStrokes) {
    return This->lpVtbl->get_CustomStrokes(This,CustomStrokes);
}
static FORCEINLINE HRESULT IInkDisp_GetBoundingBox(IInkDisp* This,InkBoundingBoxMode BoundingBoxMode,IInkRectangle **Rectangle) {
    return This->lpVtbl->GetBoundingBox(This,BoundingBoxMode,Rectangle);
}
static FORCEINLINE HRESULT IInkDisp_DeleteStrokes(IInkDisp* This,IInkStrokes *Strokes) {
    return This->lpVtbl->DeleteStrokes(This,Strokes);
}
static FORCEINLINE HRESULT IInkDisp_DeleteStroke(IInkDisp* This,IInkStrokeDisp *Stroke) {
    return This->lpVtbl->DeleteStroke(This,Stroke);
}
static FORCEINLINE HRESULT IInkDisp_ExtractStrokes(IInkDisp* This,IInkStrokes *Strokes,InkExtractFlags ExtractFlags,IInkDisp **ExtractedInk) {
    return This->lpVtbl->ExtractStrokes(This,Strokes,ExtractFlags,ExtractedInk);
}
static FORCEINLINE HRESULT IInkDisp_ExtractWithRectangle(IInkDisp* This,IInkRectangle *Rectangle,InkExtractFlags ExtractFlags,IInkDisp **ExtractedInk) {
    return This->lpVtbl->ExtractWithRectangle(This,Rectangle,ExtractFlags,ExtractedInk);
}
static FORCEINLINE HRESULT IInkDisp_Clip(IInkDisp* This,IInkRectangle *Rectangle) {
    return This->lpVtbl->Clip(This,Rectangle);
}
static FORCEINLINE HRESULT IInkDisp_Clone(IInkDisp* This,IInkDisp **NewInk) {
    return This->lpVtbl->Clone(This,NewInk);
}
static FORCEINLINE HRESULT IInkDisp_HitTestCircle(IInkDisp* This,LONG X,LONG Y,float radius,IInkStrokes **Strokes) {
    return This->lpVtbl->HitTestCircle(This,X,Y,radius,Strokes);
}
static FORCEINLINE HRESULT IInkDisp_HitTestWithRectangle(IInkDisp* This,IInkRectangle *SelectionRectangle,float IntersectPercent,IInkStrokes **Strokes) {
    return This->lpVtbl->HitTestWithRectangle(This,SelectionRectangle,IntersectPercent,Strokes);
}
static FORCEINLINE HRESULT IInkDisp_HitTestWithLasso(IInkDisp* This,VARIANT Points,float IntersectPercent,VARIANT *LassoPoints,IInkStrokes **Strokes) {
    return This->lpVtbl->HitTestWithLasso(This,Points,IntersectPercent,LassoPoints,Strokes);
}
static FORCEINLINE HRESULT IInkDisp_NearestPoint(IInkDisp* This,LONG X,LONG Y,float *PointOnStroke,float *DistanceFromPacket,IInkStrokeDisp **Stroke) {
    return This->lpVtbl->NearestPoint(This,X,Y,PointOnStroke,DistanceFromPacket,Stroke);
}
static FORCEINLINE HRESULT IInkDisp_CreateStrokes(IInkDisp* This,VARIANT StrokeIds,IInkStrokes **Strokes) {
    return This->lpVtbl->CreateStrokes(This,StrokeIds,Strokes);
}
static FORCEINLINE HRESULT IInkDisp_AddStrokesAtRectangle(IInkDisp* This,IInkStrokes *SourceStrokes,IInkRectangle *TargetRectangle) {
    return This->lpVtbl->AddStrokesAtRectangle(This,SourceStrokes,TargetRectangle);
}
static FORCEINLINE HRESULT IInkDisp_Save(IInkDisp* This,InkPersistenceFormat PersistenceFormat,InkPersistenceCompressionMode CompressionMode,VARIANT *Data) {
    return This->lpVtbl->Save(This,PersistenceFormat,CompressionMode,Data);
}
static FORCEINLINE HRESULT IInkDisp_Load(IInkDisp* This,VARIANT Data) {
    return This->lpVtbl->Load(This,Data);
}
static FORCEINLINE HRESULT IInkDisp_CreateStroke(IInkDisp* This,VARIANT PacketData,VARIANT PacketDescription,IInkStrokeDisp **Stroke) {
    return This->lpVtbl->CreateStroke(This,PacketData,PacketDescription,Stroke);
}
static FORCEINLINE HRESULT IInkDisp_ClipboardCopyWithRectangle(IInkDisp* This,IInkRectangle *Rectangle,InkClipboardFormats ClipboardFormats,InkClipboardModes ClipboardModes,IDataObject **DataObject) {
    return This->lpVtbl->ClipboardCopyWithRectangle(This,Rectangle,ClipboardFormats,ClipboardModes,DataObject);
}
static FORCEINLINE HRESULT IInkDisp_ClipboardCopy(IInkDisp* This,IInkStrokes *strokes,InkClipboardFormats ClipboardFormats,InkClipboardModes ClipboardModes,IDataObject **DataObject) {
    return This->lpVtbl->ClipboardCopy(This,strokes,ClipboardFormats,ClipboardModes,DataObject);
}
static FORCEINLINE HRESULT IInkDisp_CanPaste(IInkDisp* This,IDataObject *DataObject,VARIANT_BOOL *CanPaste) {
    return This->lpVtbl->CanPaste(This,DataObject,CanPaste);
}
static FORCEINLINE HRESULT IInkDisp_ClipboardPaste(IInkDisp* This,LONG x,LONG y,IDataObject *DataObject,IInkStrokes **Strokes) {
    return This->lpVtbl->ClipboardPaste(This,x,y,DataObject,Strokes);
}
#endif
#endif

#endif


#endif  /* __IInkDisp_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkRenderer interface
 */
#ifndef __IInkRenderer_INTERFACE_DEFINED__
#define __IInkRenderer_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkRenderer, 0xe6257a9c, 0xb511, 0x4f4c, 0xa8,0xb0, 0xa7,0xdb,0xc9,0x50,0x6b,0x83);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e6257a9c-b511-4f4c-a8b0-a7dbc9506b83")
IInkRenderer : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE GetViewTransform(
        IInkTransform *ViewTransform) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetViewTransform(
        IInkTransform *ViewTransform) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObjectTransform(
        IInkTransform *ObjectTransform) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetObjectTransform(
        IInkTransform *ObjectTransform) = 0;

    virtual HRESULT STDMETHODCALLTYPE Draw(
        LONG hDC,
        IInkStrokes *Strokes) = 0;

    virtual HRESULT STDMETHODCALLTYPE DrawStroke(
        LONG hDC,
        IInkStrokeDisp *Stroke,
        IInkDrawingAttributes *DrawingAttributes = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE PixelToInkSpace(
        LONG hDC,
        LONG *x,
        LONG *y) = 0;

    virtual HRESULT STDMETHODCALLTYPE InkSpaceToPixel(
        LONG hdcDisplay,
        LONG *x,
        LONG *y) = 0;

    virtual HRESULT STDMETHODCALLTYPE PixelToInkSpaceFromPoints(
        LONG hDC,
        VARIANT *Points) = 0;

    virtual HRESULT STDMETHODCALLTYPE InkSpaceToPixelFromPoints(
        LONG hDC,
        VARIANT *Points) = 0;

    virtual HRESULT STDMETHODCALLTYPE Measure(
        IInkStrokes *Strokes,
        IInkRectangle **Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE MeasureStroke(
        IInkStrokeDisp *Stroke,
        IInkDrawingAttributes *DrawingAttributes,
        IInkRectangle **Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE Move(
        single HorizontalComponent,
        single VerticalComponent) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rotate(
        single Degrees,
        single x = 0,
        single y = 0) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScaleTransform(
        single HorizontalMultiplier,
        single VerticalMultiplier,
        VARIANT_BOOL ApplyOnPenWidth = -1) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkRenderer, 0xe6257a9c, 0xb511, 0x4f4c, 0xa8,0xb0, 0xa7,0xdb,0xc9,0x50,0x6b,0x83)
#endif
#else
typedef struct IInkRendererVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkRenderer *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkRenderer *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkRenderer *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkRenderer *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkRenderer *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkRenderer *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkRenderer *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkRenderer methods ***/
    HRESULT (STDMETHODCALLTYPE *GetViewTransform)(
        IInkRenderer *This,
        IInkTransform *ViewTransform);

    HRESULT (STDMETHODCALLTYPE *SetViewTransform)(
        IInkRenderer *This,
        IInkTransform *ViewTransform);

    HRESULT (STDMETHODCALLTYPE *GetObjectTransform)(
        IInkRenderer *This,
        IInkTransform *ObjectTransform);

    HRESULT (STDMETHODCALLTYPE *SetObjectTransform)(
        IInkRenderer *This,
        IInkTransform *ObjectTransform);

    HRESULT (STDMETHODCALLTYPE *Draw)(
        IInkRenderer *This,
        LONG hDC,
        IInkStrokes *Strokes);

    HRESULT (STDMETHODCALLTYPE *DrawStroke)(
        IInkRenderer *This,
        LONG hDC,
        IInkStrokeDisp *Stroke,
        IInkDrawingAttributes *DrawingAttributes);

    HRESULT (STDMETHODCALLTYPE *PixelToInkSpace)(
        IInkRenderer *This,
        LONG hDC,
        LONG *x,
        LONG *y);

    HRESULT (STDMETHODCALLTYPE *InkSpaceToPixel)(
        IInkRenderer *This,
        LONG hdcDisplay,
        LONG *x,
        LONG *y);

    HRESULT (STDMETHODCALLTYPE *PixelToInkSpaceFromPoints)(
        IInkRenderer *This,
        LONG hDC,
        VARIANT *Points);

    HRESULT (STDMETHODCALLTYPE *InkSpaceToPixelFromPoints)(
        IInkRenderer *This,
        LONG hDC,
        VARIANT *Points);

    HRESULT (STDMETHODCALLTYPE *Measure)(
        IInkRenderer *This,
        IInkStrokes *Strokes,
        IInkRectangle **Rectangle);

    HRESULT (STDMETHODCALLTYPE *MeasureStroke)(
        IInkRenderer *This,
        IInkStrokeDisp *Stroke,
        IInkDrawingAttributes *DrawingAttributes,
        IInkRectangle **Rectangle);

    HRESULT (STDMETHODCALLTYPE *Move)(
        IInkRenderer *This,
        single HorizontalComponent,
        single VerticalComponent);

    HRESULT (STDMETHODCALLTYPE *Rotate)(
        IInkRenderer *This,
        single Degrees,
        single x,
        single y);

    HRESULT (STDMETHODCALLTYPE *ScaleTransform)(
        IInkRenderer *This,
        single HorizontalMultiplier,
        single VerticalMultiplier,
        VARIANT_BOOL ApplyOnPenWidth);

    END_INTERFACE
} IInkRendererVtbl;

interface IInkRenderer {
    CONST_VTBL IInkRendererVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkRenderer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkRenderer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkRenderer_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkRenderer_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkRenderer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkRenderer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkRenderer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkRenderer methods ***/
#define IInkRenderer_GetViewTransform(This,ViewTransform) (This)->lpVtbl->GetViewTransform(This,ViewTransform)
#define IInkRenderer_SetViewTransform(This,ViewTransform) (This)->lpVtbl->SetViewTransform(This,ViewTransform)
#define IInkRenderer_GetObjectTransform(This,ObjectTransform) (This)->lpVtbl->GetObjectTransform(This,ObjectTransform)
#define IInkRenderer_SetObjectTransform(This,ObjectTransform) (This)->lpVtbl->SetObjectTransform(This,ObjectTransform)
#define IInkRenderer_Draw(This,hDC,Strokes) (This)->lpVtbl->Draw(This,hDC,Strokes)
#define IInkRenderer_DrawStroke(This,hDC,Stroke,DrawingAttributes) (This)->lpVtbl->DrawStroke(This,hDC,Stroke,DrawingAttributes)
#define IInkRenderer_PixelToInkSpace(This,hDC,x,y) (This)->lpVtbl->PixelToInkSpace(This,hDC,x,y)
#define IInkRenderer_InkSpaceToPixel(This,hdcDisplay,x,y) (This)->lpVtbl->InkSpaceToPixel(This,hdcDisplay,x,y)
#define IInkRenderer_PixelToInkSpaceFromPoints(This,hDC,Points) (This)->lpVtbl->PixelToInkSpaceFromPoints(This,hDC,Points)
#define IInkRenderer_InkSpaceToPixelFromPoints(This,hDC,Points) (This)->lpVtbl->InkSpaceToPixelFromPoints(This,hDC,Points)
#define IInkRenderer_Measure(This,Strokes,Rectangle) (This)->lpVtbl->Measure(This,Strokes,Rectangle)
#define IInkRenderer_MeasureStroke(This,Stroke,DrawingAttributes,Rectangle) (This)->lpVtbl->MeasureStroke(This,Stroke,DrawingAttributes,Rectangle)
#define IInkRenderer_Move(This,HorizontalComponent,VerticalComponent) (This)->lpVtbl->Move(This,HorizontalComponent,VerticalComponent)
#define IInkRenderer_Rotate(This,Degrees,x,y) (This)->lpVtbl->Rotate(This,Degrees,x,y)
#define IInkRenderer_ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth) (This)->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkRenderer_QueryInterface(IInkRenderer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkRenderer_AddRef(IInkRenderer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkRenderer_Release(IInkRenderer* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkRenderer_GetTypeInfoCount(IInkRenderer* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkRenderer_GetTypeInfo(IInkRenderer* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkRenderer_GetIDsOfNames(IInkRenderer* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkRenderer_Invoke(IInkRenderer* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkRenderer methods ***/
static FORCEINLINE HRESULT IInkRenderer_GetViewTransform(IInkRenderer* This,IInkTransform *ViewTransform) {
    return This->lpVtbl->GetViewTransform(This,ViewTransform);
}
static FORCEINLINE HRESULT IInkRenderer_SetViewTransform(IInkRenderer* This,IInkTransform *ViewTransform) {
    return This->lpVtbl->SetViewTransform(This,ViewTransform);
}
static FORCEINLINE HRESULT IInkRenderer_GetObjectTransform(IInkRenderer* This,IInkTransform *ObjectTransform) {
    return This->lpVtbl->GetObjectTransform(This,ObjectTransform);
}
static FORCEINLINE HRESULT IInkRenderer_SetObjectTransform(IInkRenderer* This,IInkTransform *ObjectTransform) {
    return This->lpVtbl->SetObjectTransform(This,ObjectTransform);
}
static FORCEINLINE HRESULT IInkRenderer_Draw(IInkRenderer* This,LONG hDC,IInkStrokes *Strokes) {
    return This->lpVtbl->Draw(This,hDC,Strokes);
}
static FORCEINLINE HRESULT IInkRenderer_DrawStroke(IInkRenderer* This,LONG hDC,IInkStrokeDisp *Stroke,IInkDrawingAttributes *DrawingAttributes) {
    return This->lpVtbl->DrawStroke(This,hDC,Stroke,DrawingAttributes);
}
static FORCEINLINE HRESULT IInkRenderer_PixelToInkSpace(IInkRenderer* This,LONG hDC,LONG *x,LONG *y) {
    return This->lpVtbl->PixelToInkSpace(This,hDC,x,y);
}
static FORCEINLINE HRESULT IInkRenderer_InkSpaceToPixel(IInkRenderer* This,LONG hdcDisplay,LONG *x,LONG *y) {
    return This->lpVtbl->InkSpaceToPixel(This,hdcDisplay,x,y);
}
static FORCEINLINE HRESULT IInkRenderer_PixelToInkSpaceFromPoints(IInkRenderer* This,LONG hDC,VARIANT *Points) {
    return This->lpVtbl->PixelToInkSpaceFromPoints(This,hDC,Points);
}
static FORCEINLINE HRESULT IInkRenderer_InkSpaceToPixelFromPoints(IInkRenderer* This,LONG hDC,VARIANT *Points) {
    return This->lpVtbl->InkSpaceToPixelFromPoints(This,hDC,Points);
}
static FORCEINLINE HRESULT IInkRenderer_Measure(IInkRenderer* This,IInkStrokes *Strokes,IInkRectangle **Rectangle) {
    return This->lpVtbl->Measure(This,Strokes,Rectangle);
}
static FORCEINLINE HRESULT IInkRenderer_MeasureStroke(IInkRenderer* This,IInkStrokeDisp *Stroke,IInkDrawingAttributes *DrawingAttributes,IInkRectangle **Rectangle) {
    return This->lpVtbl->MeasureStroke(This,Stroke,DrawingAttributes,Rectangle);
}
static FORCEINLINE HRESULT IInkRenderer_Move(IInkRenderer* This,single HorizontalComponent,single VerticalComponent) {
    return This->lpVtbl->Move(This,HorizontalComponent,VerticalComponent);
}
static FORCEINLINE HRESULT IInkRenderer_Rotate(IInkRenderer* This,single Degrees,single x,single y) {
    return This->lpVtbl->Rotate(This,Degrees,x,y);
}
static FORCEINLINE HRESULT IInkRenderer_ScaleTransform(IInkRenderer* This,single HorizontalMultiplier,single VerticalMultiplier,VARIANT_BOOL ApplyOnPenWidth) {
    return This->lpVtbl->ScaleTransform(This,HorizontalMultiplier,VerticalMultiplier,ApplyOnPenWidth);
}
#endif
#endif

#endif


#endif  /* __IInkRenderer_INTERFACE_DEFINED__ */

typedef enum __WIDL_msinkaut_generated_name_0000001E {
    ICM_InkOnly = 0,
    ICM_GestureOnly = 1,
    ICM_InkAndGesture = 2
} InkCollectionMode;
typedef enum __WIDL_msinkaut_generated_name_0000001F {
    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 __WIDL_msinkaut_generated_name_00000020 {
    THWC_Integrated = 1,
    THWC_CursorMustTouch = 2,
    THWC_HardProximity = 4,
    THWC_CursorsHavePhysicalIds = 8
} TabletHardwareCapabilities;
/*****************************************************************************
 * IInkTablet interface
 */
#ifndef __IInkTablet_INTERFACE_DEFINED__
#define __IInkTablet_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkTablet, 0x2de25eaa, 0x6ef8, 0x42d5, 0xae,0xe9, 0x18,0x5b,0xc8,0x1b,0x91,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2de25eaa-6ef8-42d5-aee9-185bc81b912d")
IInkTablet : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *Name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PlugAndPlayId(
        BSTR *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MaximumInputRectangle(
        IInkRectangle **Rectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HardwareCapabilities(
        TabletHardwareCapabilities *Capabilities) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsPacketPropertySupported(
        BSTR packetPropertyName,
        VARIANT_BOOL *Supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyMetrics(
        BSTR propertyName,
        LONG *Minimum,
        LONG *Maximum,
        TabletPropertyMetricUnit *Units,
        single *Resolution) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkTablet, 0x2de25eaa, 0x6ef8, 0x42d5, 0xae,0xe9, 0x18,0x5b,0xc8,0x1b,0x91,0x2d)
#endif
#else
typedef struct IInkTabletVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkTablet *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkTablet *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkTablet *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkTablet *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkTablet *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkTablet *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkTablet *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkTablet methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        IInkTablet *This,
        BSTR *Name);

    HRESULT (STDMETHODCALLTYPE *get_PlugAndPlayId)(
        IInkTablet *This,
        BSTR *Id);

    HRESULT (STDMETHODCALLTYPE *get_MaximumInputRectangle)(
        IInkTablet *This,
        IInkRectangle **Rectangle);

    HRESULT (STDMETHODCALLTYPE *get_HardwareCapabilities)(
        IInkTablet *This,
        TabletHardwareCapabilities *Capabilities);

    HRESULT (STDMETHODCALLTYPE *IsPacketPropertySupported)(
        IInkTablet *This,
        BSTR packetPropertyName,
        VARIANT_BOOL *Supported);

    HRESULT (STDMETHODCALLTYPE *GetPropertyMetrics)(
        IInkTablet *This,
        BSTR propertyName,
        LONG *Minimum,
        LONG *Maximum,
        TabletPropertyMetricUnit *Units,
        single *Resolution);

    END_INTERFACE
} IInkTabletVtbl;

interface IInkTablet {
    CONST_VTBL IInkTabletVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkTablet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkTablet_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkTablet_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkTablet_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkTablet_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkTablet_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkTablet_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkTablet methods ***/
#define IInkTablet_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
#define IInkTablet_get_PlugAndPlayId(This,Id) (This)->lpVtbl->get_PlugAndPlayId(This,Id)
#define IInkTablet_get_MaximumInputRectangle(This,Rectangle) (This)->lpVtbl->get_MaximumInputRectangle(This,Rectangle)
#define IInkTablet_get_HardwareCapabilities(This,Capabilities) (This)->lpVtbl->get_HardwareCapabilities(This,Capabilities)
#define IInkTablet_IsPacketPropertySupported(This,packetPropertyName,Supported) (This)->lpVtbl->IsPacketPropertySupported(This,packetPropertyName,Supported)
#define IInkTablet_GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution) (This)->lpVtbl->GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkTablet_QueryInterface(IInkTablet* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkTablet_AddRef(IInkTablet* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkTablet_Release(IInkTablet* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkTablet_GetTypeInfoCount(IInkTablet* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkTablet_GetTypeInfo(IInkTablet* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkTablet_GetIDsOfNames(IInkTablet* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkTablet_Invoke(IInkTablet* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkTablet methods ***/
static FORCEINLINE HRESULT IInkTablet_get_Name(IInkTablet* This,BSTR *Name) {
    return This->lpVtbl->get_Name(This,Name);
}
static FORCEINLINE HRESULT IInkTablet_get_PlugAndPlayId(IInkTablet* This,BSTR *Id) {
    return This->lpVtbl->get_PlugAndPlayId(This,Id);
}
static FORCEINLINE HRESULT IInkTablet_get_MaximumInputRectangle(IInkTablet* This,IInkRectangle **Rectangle) {
    return This->lpVtbl->get_MaximumInputRectangle(This,Rectangle);
}
static FORCEINLINE HRESULT IInkTablet_get_HardwareCapabilities(IInkTablet* This,TabletHardwareCapabilities *Capabilities) {
    return This->lpVtbl->get_HardwareCapabilities(This,Capabilities);
}
static FORCEINLINE HRESULT IInkTablet_IsPacketPropertySupported(IInkTablet* This,BSTR packetPropertyName,VARIANT_BOOL *Supported) {
    return This->lpVtbl->IsPacketPropertySupported(This,packetPropertyName,Supported);
}
static FORCEINLINE HRESULT IInkTablet_GetPropertyMetrics(IInkTablet* This,BSTR propertyName,LONG *Minimum,LONG *Maximum,TabletPropertyMetricUnit *Units,single *Resolution) {
    return This->lpVtbl->GetPropertyMetrics(This,propertyName,Minimum,Maximum,Units,Resolution);
}
#endif
#endif

#endif


#endif  /* __IInkTablet_INTERFACE_DEFINED__ */

typedef enum __WIDL_msinkaut_generated_name_00000021 {
    ICBS_Unavailable = 0,
    ICBS_Up = 1,
    ICBS_Down = 2
} InkCursorButtonState;
/*****************************************************************************
 * IInkCursorButton interface
 */
#ifndef __IInkCursorButton_INTERFACE_DEFINED__
#define __IInkCursorButton_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkCursorButton, 0x85ef9417, 0x1d59, 0x49b2, 0xa1,0x3c, 0x70,0x2c,0x85,0x43,0x08,0x94);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("85ef9417-1d59-49b2-a13c-702c85430894")
IInkCursorButton : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *Name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Id(
        BSTR *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_State(
        InkCursorButtonState *CurrentState) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkCursorButton, 0x85ef9417, 0x1d59, 0x49b2, 0xa1,0x3c, 0x70,0x2c,0x85,0x43,0x08,0x94)
#endif
#else
typedef struct IInkCursorButtonVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkCursorButton *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkCursorButton *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkCursorButton *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkCursorButton *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkCursorButton *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkCursorButton *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkCursorButton *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkCursorButton methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        IInkCursorButton *This,
        BSTR *Name);

    HRESULT (STDMETHODCALLTYPE *get_Id)(
        IInkCursorButton *This,
        BSTR *Id);

    HRESULT (STDMETHODCALLTYPE *get_State)(
        IInkCursorButton *This,
        InkCursorButtonState *CurrentState);

    END_INTERFACE
} IInkCursorButtonVtbl;

interface IInkCursorButton {
    CONST_VTBL IInkCursorButtonVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkCursorButton_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkCursorButton_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkCursorButton_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkCursorButton_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkCursorButton_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkCursorButton_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkCursorButton_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkCursorButton methods ***/
#define IInkCursorButton_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
#define IInkCursorButton_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
#define IInkCursorButton_get_State(This,CurrentState) (This)->lpVtbl->get_State(This,CurrentState)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkCursorButton_QueryInterface(IInkCursorButton* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkCursorButton_AddRef(IInkCursorButton* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkCursorButton_Release(IInkCursorButton* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkCursorButton_GetTypeInfoCount(IInkCursorButton* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkCursorButton_GetTypeInfo(IInkCursorButton* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkCursorButton_GetIDsOfNames(IInkCursorButton* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkCursorButton_Invoke(IInkCursorButton* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkCursorButton methods ***/
static FORCEINLINE HRESULT IInkCursorButton_get_Name(IInkCursorButton* This,BSTR *Name) {
    return This->lpVtbl->get_Name(This,Name);
}
static FORCEINLINE HRESULT IInkCursorButton_get_Id(IInkCursorButton* This,BSTR *Id) {
    return This->lpVtbl->get_Id(This,Id);
}
static FORCEINLINE HRESULT IInkCursorButton_get_State(IInkCursorButton* This,InkCursorButtonState *CurrentState) {
    return This->lpVtbl->get_State(This,CurrentState);
}
#endif
#endif

#endif


#endif  /* __IInkCursorButton_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkCursorButtons interface
 */
#ifndef __IInkCursorButtons_INTERFACE_DEFINED__
#define __IInkCursorButtons_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkCursorButtons, 0x3671cc40, 0xb624, 0x4671, 0x9f,0xa0, 0xdb,0x11,0x9d,0x95,0x2d,0x54);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3671cc40-b624-4671-9fa0-db119d952d54")
IInkCursorButtons : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **_NewEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        VARIANT Identifier,
        IInkCursorButton **Button) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkCursorButtons, 0x3671cc40, 0xb624, 0x4671, 0x9f,0xa0, 0xdb,0x11,0x9d,0x95,0x2d,0x54)
#endif
#else
typedef struct IInkCursorButtonsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkCursorButtons *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkCursorButtons *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkCursorButtons *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkCursorButtons *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkCursorButtons *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkCursorButtons *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkCursorButtons *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkCursorButtons methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IInkCursorButtons *This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        IInkCursorButtons *This,
        IUnknown **_NewEnum);

    HRESULT (STDMETHODCALLTYPE *Item)(
        IInkCursorButtons *This,
        VARIANT Identifier,
        IInkCursorButton **Button);

    END_INTERFACE
} IInkCursorButtonsVtbl;

interface IInkCursorButtons {
    CONST_VTBL IInkCursorButtonsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkCursorButtons_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkCursorButtons_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkCursorButtons_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkCursorButtons_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkCursorButtons_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkCursorButtons_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkCursorButtons_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkCursorButtons methods ***/
#define IInkCursorButtons_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define IInkCursorButtons_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
#define IInkCursorButtons_Item(This,Identifier,Button) (This)->lpVtbl->Item(This,Identifier,Button)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkCursorButtons_QueryInterface(IInkCursorButtons* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkCursorButtons_AddRef(IInkCursorButtons* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkCursorButtons_Release(IInkCursorButtons* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkCursorButtons_GetTypeInfoCount(IInkCursorButtons* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkCursorButtons_GetTypeInfo(IInkCursorButtons* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkCursorButtons_GetIDsOfNames(IInkCursorButtons* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkCursorButtons_Invoke(IInkCursorButtons* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkCursorButtons methods ***/
static FORCEINLINE HRESULT IInkCursorButtons_get_Count(IInkCursorButtons* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT IInkCursorButtons_get__NewEnum(IInkCursorButtons* This,IUnknown **_NewEnum) {
    return This->lpVtbl->get__NewEnum(This,_NewEnum);
}
static FORCEINLINE HRESULT IInkCursorButtons_Item(IInkCursorButtons* This,VARIANT Identifier,IInkCursorButton **Button) {
    return This->lpVtbl->Item(This,Identifier,Button);
}
#endif
#endif

#endif


#endif  /* __IInkCursorButtons_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkCursor interface
 */
#ifndef __IInkCursor_INTERFACE_DEFINED__
#define __IInkCursor_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkCursor, 0xad30c630, 0x40c5, 0x4350, 0x84,0x05, 0x9c,0x71,0x01,0x2f,0xc5,0x58);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ad30c630-40c5-4350-8405-9c71012fc558")
IInkCursor : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *Name) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Id(
        LONG *Id) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Inverted(
        VARIANT_BOOL *Status) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DrawingAttributes(
        IInkDrawingAttributes **Attributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_DrawingAttributes(
        IInkDrawingAttributes *Attributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Tablet(
        IInkTablet **Tablet) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Buttons(
        IInkCursorButtons **Buttons) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkCursor, 0xad30c630, 0x40c5, 0x4350, 0x84,0x05, 0x9c,0x71,0x01,0x2f,0xc5,0x58)
#endif
#else
typedef struct IInkCursorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkCursor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkCursor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkCursor *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkCursor *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkCursor *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkCursor *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkCursor *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkCursor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        IInkCursor *This,
        BSTR *Name);

    HRESULT (STDMETHODCALLTYPE *get_Id)(
        IInkCursor *This,
        LONG *Id);

    HRESULT (STDMETHODCALLTYPE *get_Inverted)(
        IInkCursor *This,
        VARIANT_BOOL *Status);

    HRESULT (STDMETHODCALLTYPE *get_DrawingAttributes)(
        IInkCursor *This,
        IInkDrawingAttributes **Attributes);

    HRESULT (STDMETHODCALLTYPE *putref_DrawingAttributes)(
        IInkCursor *This,
        IInkDrawingAttributes *Attributes);

    HRESULT (STDMETHODCALLTYPE *get_Tablet)(
        IInkCursor *This,
        IInkTablet **Tablet);

    HRESULT (STDMETHODCALLTYPE *get_Buttons)(
        IInkCursor *This,
        IInkCursorButtons **Buttons);

    END_INTERFACE
} IInkCursorVtbl;

interface IInkCursor {
    CONST_VTBL IInkCursorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkCursor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkCursor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkCursor_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkCursor_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkCursor_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkCursor_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkCursor_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkCursor methods ***/
#define IInkCursor_get_Name(This,Name) (This)->lpVtbl->get_Name(This,Name)
#define IInkCursor_get_Id(This,Id) (This)->lpVtbl->get_Id(This,Id)
#define IInkCursor_get_Inverted(This,Status) (This)->lpVtbl->get_Inverted(This,Status)
#define IInkCursor_get_DrawingAttributes(This,Attributes) (This)->lpVtbl->get_DrawingAttributes(This,Attributes)
#define IInkCursor_putref_DrawingAttributes(This,Attributes) (This)->lpVtbl->putref_DrawingAttributes(This,Attributes)
#define IInkCursor_get_Tablet(This,Tablet) (This)->lpVtbl->get_Tablet(This,Tablet)
#define IInkCursor_get_Buttons(This,Buttons) (This)->lpVtbl->get_Buttons(This,Buttons)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkCursor_QueryInterface(IInkCursor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkCursor_AddRef(IInkCursor* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkCursor_Release(IInkCursor* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkCursor_GetTypeInfoCount(IInkCursor* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkCursor_GetTypeInfo(IInkCursor* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkCursor_GetIDsOfNames(IInkCursor* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkCursor_Invoke(IInkCursor* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkCursor methods ***/
static FORCEINLINE HRESULT IInkCursor_get_Name(IInkCursor* This,BSTR *Name) {
    return This->lpVtbl->get_Name(This,Name);
}
static FORCEINLINE HRESULT IInkCursor_get_Id(IInkCursor* This,LONG *Id) {
    return This->lpVtbl->get_Id(This,Id);
}
static FORCEINLINE HRESULT IInkCursor_get_Inverted(IInkCursor* This,VARIANT_BOOL *Status) {
    return This->lpVtbl->get_Inverted(This,Status);
}
static FORCEINLINE HRESULT IInkCursor_get_DrawingAttributes(IInkCursor* This,IInkDrawingAttributes **Attributes) {
    return This->lpVtbl->get_DrawingAttributes(This,Attributes);
}
static FORCEINLINE HRESULT IInkCursor_putref_DrawingAttributes(IInkCursor* This,IInkDrawingAttributes *Attributes) {
    return This->lpVtbl->putref_DrawingAttributes(This,Attributes);
}
static FORCEINLINE HRESULT IInkCursor_get_Tablet(IInkCursor* This,IInkTablet **Tablet) {
    return This->lpVtbl->get_Tablet(This,Tablet);
}
static FORCEINLINE HRESULT IInkCursor_get_Buttons(IInkCursor* This,IInkCursorButtons **Buttons) {
    return This->lpVtbl->get_Buttons(This,Buttons);
}
#endif
#endif

#endif


#endif  /* __IInkCursor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IInkCursors interface
 */
#ifndef __IInkCursors_INTERFACE_DEFINED__
#define __IInkCursors_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkCursors, 0xa248c1ac, 0xc698, 0x4e06, 0x9e,0x5c, 0xd5,0x7f,0x77,0xc7,0xe6,0x47);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a248c1ac-c698-4e06-9e5c-d57f77c7e647")
IInkCursors : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **_NewEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        LONG Index,
        IInkCursor **Cursor) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkCursors, 0xa248c1ac, 0xc698, 0x4e06, 0x9e,0x5c, 0xd5,0x7f,0x77,0xc7,0xe6,0x47)
#endif
#else
typedef struct IInkCursorsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkCursors *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkCursors *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkCursors *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkCursors *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkCursors *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkCursors *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkCursors *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkCursors methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IInkCursors *This,
        LONG *Count);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        IInkCursors *This,
        IUnknown **_NewEnum);

    HRESULT (STDMETHODCALLTYPE *Item)(
        IInkCursors *This,
        LONG Index,
        IInkCursor **Cursor);

    END_INTERFACE
} IInkCursorsVtbl;

interface IInkCursors {
    CONST_VTBL IInkCursorsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkCursors_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkCursors_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkCursors_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkCursors_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkCursors_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkCursors_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkCursors_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkCursors methods ***/
#define IInkCursors_get_Count(This,Count) (This)->lpVtbl->get_Count(This,Count)
#define IInkCursors_get__NewEnum(This,_NewEnum) (This)->lpVtbl->get__NewEnum(This,_NewEnum)
#define IInkCursors_Item(This,Index,Cursor) (This)->lpVtbl->Item(This,Index,Cursor)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkCursors_QueryInterface(IInkCursors* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkCursors_AddRef(IInkCursors* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkCursors_Release(IInkCursors* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkCursors_GetTypeInfoCount(IInkCursors* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkCursors_GetTypeInfo(IInkCursors* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkCursors_GetIDsOfNames(IInkCursors* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkCursors_Invoke(IInkCursors* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkCursors methods ***/
static FORCEINLINE HRESULT IInkCursors_get_Count(IInkCursors* This,LONG *Count) {
    return This->lpVtbl->get_Count(This,Count);
}
static FORCEINLINE HRESULT IInkCursors_get__NewEnum(IInkCursors* This,IUnknown **_NewEnum) {
    return This->lpVtbl->get__NewEnum(This,_NewEnum);
}
static FORCEINLINE HRESULT IInkCursors_Item(IInkCursors* This,LONG Index,IInkCursor **Cursor) {
    return This->lpVtbl->Item(This,Index,Cursor);
}
#endif
#endif

#endif


#endif  /* __IInkCursors_INTERFACE_DEFINED__ */

typedef enum __WIDL_msinkaut_generated_name_00000022 {
    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 __WIDL_msinkaut_generated_name_00000023 {
    ICEI_DefaultEvents = -1,
    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;
/*****************************************************************************
 * IInkCollector interface
 */
#ifndef __IInkCollector_INTERFACE_DEFINED__
#define __IInkCollector_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInkCollector, 0xf0f060b5, 0x8b1f, 0x4a7c, 0x89,0xec, 0x88,0x06,0x92,0x58,0x8a,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f0f060b5-8b1f-4a7c-89ec-880692588a4f")
IInkCollector : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_hWnd(
        LONG *CurrentWindow) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_hWnd(
        LONG CurrentWindow) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Enabled(
        VARIANT_BOOL *Collecting) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Enabled(
        VARIANT_BOOL Collecting) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DefaultDrawingAttributes(
        IInkDrawingAttributes **CurrentAttributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_DefaultDrawingAttributes(
        IInkDrawingAttributes *CurrentAttributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Renderer(
        IInkRenderer **CurrentInkRenderer) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_Renderer(
        IInkRenderer *CurrentInkRenderer) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Ink(
        IInkDisp **Ink) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_Ink(
        IInkDisp *Ink) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AutoRedraw(
        VARIANT_BOOL *AutoRedraw) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AutoRedraw(
        VARIANT_BOOL AutoRedraw) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CollectingInk(
        VARIANT_BOOL *Collecting) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_CollectionMode(
        InkCollectionMode *Mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CollectionMode(
        InkCollectionMode Mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DynamicRendering(
        VARIANT_BOOL *Enabled) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DynamicRendering(
        VARIANT_BOOL Enabled) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DesiredPacketDescription(
        VARIANT *PacketGuids) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DesiredPacketDescription(
        VARIANT PacketGuids) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MouseIcon(
        IPictureDisp **MouseIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MouseIcon(
        IPictureDisp *MouseIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE putref_MouseIcon(
        IPictureDisp *MouseIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MousePointer(
        InkMousePointer *MousePointer) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MousePointer(
        InkMousePointer MousePointer) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Cursors(
        IInkCursors **Cursors) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MarginX(
        LONG *MarginX) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MarginX(
        LONG MarginX) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MarginY(
        LONG *MarginY) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MarginY(
        LONG MarginY) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Tablet(
        IInkTablet **SingleTablet) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SupportHighContrastInk(
        VARIANT_BOOL *Support) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SupportHighContrastInk(
        VARIANT_BOOL Support) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetGestureStatus(
        InkApplicationGesture Gesture,
        VARIANT_BOOL Listen) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGestureStatus(
        InkApplicationGesture Gesture,
        VARIANT_BOOL *Listening) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWindowInputRectangle(
        IInkRectangle **WindowInputRectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWindowInputRectangle(
        IInkRectangle *WindowInputRectangle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAllTabletsMode(
        VARIANT_BOOL UseMouseForInput = -1) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSingleTabletIntegratedMode(
        IInkTablet *Tablet) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEventInterest(
        InkCollectorEventInterest EventId,
        VARIANT_BOOL *Listen) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetEventInterest(
        InkCollectorEventInterest EventId,
        VARIANT_BOOL Listen) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInkCollector, 0xf0f060b5, 0x8b1f, 0x4a7c, 0x89,0xec, 0x88,0x06,0x92,0x58,0x8a,0x4f)
#endif
#else
typedef struct IInkCollectorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IInkCollector *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IInkCollector *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IInkCollector *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IInkCollector *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IInkCollector *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IInkCollector *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IInkCollector *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IInkCollector methods ***/
    HRESULT (STDMETHODCALLTYPE *get_hWnd)(
        IInkCollector *This,
        LONG *CurrentWindow);

    HRESULT (STDMETHODCALLTYPE *put_hWnd)(
        IInkCollector *This,
        LONG CurrentWindow);

    HRESULT (STDMETHODCALLTYPE *get_Enabled)(
        IInkCollector *This,
        VARIANT_BOOL *Collecting);

    HRESULT (STDMETHODCALLTYPE *put_Enabled)(
        IInkCollector *This,
        VARIANT_BOOL Collecting);

    HRESULT (STDMETHODCALLTYPE *get_DefaultDrawingAttributes)(
        IInkCollector *This,
        IInkDrawingAttributes **CurrentAttributes);

    HRESULT (STDMETHODCALLTYPE *putref_DefaultDrawingAttributes)(
        IInkCollector *This,
        IInkDrawingAttributes *CurrentAttributes);

    HRESULT (STDMETHODCALLTYPE *get_Renderer)(
        IInkCollector *This,
        IInkRenderer **CurrentInkRenderer);

    HRESULT (STDMETHODCALLTYPE *putref_Renderer)(
        IInkCollector *This,
        IInkRenderer *CurrentInkRenderer);

    HRESULT (STDMETHODCALLTYPE *get_Ink)(
        IInkCollector *This,
        IInkDisp **Ink);

    HRESULT (STDMETHODCALLTYPE *putref_Ink)(
        IInkCollector *This,
        IInkDisp *Ink);

    HRESULT (STDMETHODCALLTYPE *get_AutoRedraw)(
        IInkCollector *This,
        VARIANT_BOOL *AutoRedraw);

    HRESULT (STDMETHODCALLTYPE *put_AutoRedraw)(
        IInkCollector *This,
        VARIANT_BOOL AutoRedraw);

    HRESULT (STDMETHODCALLTYPE *get_CollectingInk)(
        IInkCollector *This,
        VARIANT_BOOL *Collecting);

    HRESULT (STDMETHODCALLTYPE *get_CollectionMode)(
        IInkCollector *This,
        InkCollectionMode *Mode);

    HRESULT (STDMETHODCALLTYPE *put_CollectionMode)(
        IInkCollector *This,
        InkCollectionMode Mode);

    HRESULT (STDMETHODCALLTYPE *get_DynamicRendering)(
        IInkCollector *This,
        VARIANT_BOOL *Enabled);

    HRESULT (STDMETHODCALLTYPE *put_DynamicRendering)(
        IInkCollector *This,
        VARIANT_BOOL Enabled);

    HRESULT (STDMETHODCALLTYPE *get_DesiredPacketDescription)(
        IInkCollector *This,
        VARIANT *PacketGuids);

    HRESULT (STDMETHODCALLTYPE *put_DesiredPacketDescription)(
        IInkCollector *This,
        VARIANT PacketGuids);

    HRESULT (STDMETHODCALLTYPE *get_MouseIcon)(
        IInkCollector *This,
        IPictureDisp **MouseIcon);

    HRESULT (STDMETHODCALLTYPE *put_MouseIcon)(
        IInkCollector *This,
        IPictureDisp *MouseIcon);

    HRESULT (STDMETHODCALLTYPE *putref_MouseIcon)(
        IInkCollector *This,
        IPictureDisp *MouseIcon);

    HRESULT (STDMETHODCALLTYPE *get_MousePointer)(
        IInkCollector *This,
        InkMousePointer *MousePointer);

    HRESULT (STDMETHODCALLTYPE *put_MousePointer)(
        IInkCollector *This,
        InkMousePointer MousePointer);

    HRESULT (STDMETHODCALLTYPE *get_Cursors)(
        IInkCollector *This,
        IInkCursors **Cursors);

    HRESULT (STDMETHODCALLTYPE *get_MarginX)(
        IInkCollector *This,
        LONG *MarginX);

    HRESULT (STDMETHODCALLTYPE *put_MarginX)(
        IInkCollector *This,
        LONG MarginX);

    HRESULT (STDMETHODCALLTYPE *get_MarginY)(
        IInkCollector *This,
        LONG *MarginY);

    HRESULT (STDMETHODCALLTYPE *put_MarginY)(
        IInkCollector *This,
        LONG MarginY);

    HRESULT (STDMETHODCALLTYPE *get_Tablet)(
        IInkCollector *This,
        IInkTablet **SingleTablet);

    HRESULT (STDMETHODCALLTYPE *get_SupportHighContrastInk)(
        IInkCollector *This,
        VARIANT_BOOL *Support);

    HRESULT (STDMETHODCALLTYPE *put_SupportHighContrastInk)(
        IInkCollector *This,
        VARIANT_BOOL Support);

    HRESULT (STDMETHODCALLTYPE *SetGestureStatus)(
        IInkCollector *This,
        InkApplicationGesture Gesture,
        VARIANT_BOOL Listen);

    HRESULT (STDMETHODCALLTYPE *GetGestureStatus)(
        IInkCollector *This,
        InkApplicationGesture Gesture,
        VARIANT_BOOL *Listening);

    HRESULT (STDMETHODCALLTYPE *GetWindowInputRectangle)(
        IInkCollector *This,
        IInkRectangle **WindowInputRectangle);

    HRESULT (STDMETHODCALLTYPE *SetWindowInputRectangle)(
        IInkCollector *This,
        IInkRectangle *WindowInputRectangle);

    HRESULT (STDMETHODCALLTYPE *SetAllTabletsMode)(
        IInkCollector *This,
        VARIANT_BOOL UseMouseForInput);

    HRESULT (STDMETHODCALLTYPE *SetSingleTabletIntegratedMode)(
        IInkCollector *This,
        IInkTablet *Tablet);

    HRESULT (STDMETHODCALLTYPE *GetEventInterest)(
        IInkCollector *This,
        InkCollectorEventInterest EventId,
        VARIANT_BOOL *Listen);

    HRESULT (STDMETHODCALLTYPE *SetEventInterest)(
        IInkCollector *This,
        InkCollectorEventInterest EventId,
        VARIANT_BOOL Listen);

    END_INTERFACE
} IInkCollectorVtbl;

interface IInkCollector {
    CONST_VTBL IInkCollectorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInkCollector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInkCollector_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInkCollector_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IInkCollector_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IInkCollector_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IInkCollector_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IInkCollector_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IInkCollector methods ***/
#define IInkCollector_get_hWnd(This,CurrentWindow) (This)->lpVtbl->get_hWnd(This,CurrentWindow)
#define IInkCollector_put_hWnd(This,CurrentWindow) (This)->lpVtbl->put_hWnd(This,CurrentWindow)
#define IInkCollector_get_Enabled(This,Collecting) (This)->lpVtbl->get_Enabled(This,Collecting)
#define IInkCollector_put_Enabled(This,Collecting) (This)->lpVtbl->put_Enabled(This,Collecting)
#define IInkCollector_get_DefaultDrawingAttributes(This,CurrentAttributes) (This)->lpVtbl->get_DefaultDrawingAttributes(This,CurrentAttributes)
#define IInkCollector_putref_DefaultDrawingAttributes(This,CurrentAttributes) (This)->lpVtbl->putref_DefaultDrawingAttributes(This,CurrentAttributes)
#define IInkCollector_get_Renderer(This,CurrentInkRenderer) (This)->lpVtbl->get_Renderer(This,CurrentInkRenderer)
#define IInkCollector_putref_Renderer(This,CurrentInkRenderer) (This)->lpVtbl->putref_Renderer(This,CurrentInkRenderer)
#define IInkCollector_get_Ink(This,Ink) (This)->lpVtbl->get_Ink(This,Ink)
#define IInkCollector_putref_Ink(This,Ink) (This)->lpVtbl->putref_Ink(This,Ink)
#define IInkCollector_get_AutoRedraw(This,AutoRedraw) (This)->lpVtbl->get_AutoRedraw(This,AutoRedraw)
#define IInkCollector_put_AutoRedraw(This,AutoRedraw) (This)->lpVtbl->put_AutoRedraw(This,AutoRedraw)
#define IInkCollector_get_CollectingInk(This,Collecting) (This)->lpVtbl->get_CollectingInk(This,Collecting)
#define IInkCollector_get_CollectionMode(This,Mode) (This)->lpVtbl->get_CollectionMode(This,Mode)
#define IInkCollector_put_CollectionMode(This,Mode) (This)->lpVtbl->put_CollectionMode(This,Mode)
#define IInkCollector_get_DynamicRendering(This,Enabled) (This)->lpVtbl->get_DynamicRendering(This,Enabled)
#define IInkCollector_put_DynamicRendering(This,Enabled) (This)->lpVtbl->put_DynamicRendering(This,Enabled)
#define IInkCollector_get_DesiredPacketDescription(This,PacketGuids) (This)->lpVtbl->get_DesiredPacketDescription(This,PacketGuids)
#define IInkCollector_put_DesiredPacketDescription(This,PacketGuids) (This)->lpVtbl->put_DesiredPacketDescription(This,PacketGuids)
#define IInkCollector_get_MouseIcon(This,MouseIcon) (This)->lpVtbl->get_MouseIcon(This,MouseIcon)
#define IInkCollector_put_MouseIcon(This,MouseIcon) (This)->lpVtbl->put_MouseIcon(This,MouseIcon)
#define IInkCollector_putref_MouseIcon(This,MouseIcon) (This)->lpVtbl->putref_MouseIcon(This,MouseIcon)
#define IInkCollector_get_MousePointer(This,MousePointer) (This)->lpVtbl->get_MousePointer(This,MousePointer)
#define IInkCollector_put_MousePointer(This,MousePointer) (This)->lpVtbl->put_MousePointer(This,MousePointer)
#define IInkCollector_get_Cursors(This,Cursors) (This)->lpVtbl->get_Cursors(This,Cursors)
#define IInkCollector_get_MarginX(This,MarginX) (This)->lpVtbl->get_MarginX(This,MarginX)
#define IInkCollector_put_MarginX(This,MarginX) (This)->lpVtbl->put_MarginX(This,MarginX)
#define IInkCollector_get_MarginY(This,MarginY) (This)->lpVtbl->get_MarginY(This,MarginY)
#define IInkCollector_put_MarginY(This,MarginY) (This)->lpVtbl->put_MarginY(This,MarginY)
#define IInkCollector_get_Tablet(This,SingleTablet) (This)->lpVtbl->get_Tablet(This,SingleTablet)
#define IInkCollector_get_SupportHighContrastInk(This,Support) (This)->lpVtbl->get_SupportHighContrastInk(This,Support)
#define IInkCollector_put_SupportHighContrastInk(This,Support) (This)->lpVtbl->put_SupportHighContrastInk(This,Support)
#define IInkCollector_SetGestureStatus(This,Gesture,Listen) (This)->lpVtbl->SetGestureStatus(This,Gesture,Listen)
#define IInkCollector_GetGestureStatus(This,Gesture,Listening) (This)->lpVtbl->GetGestureStatus(This,Gesture,Listening)
#define IInkCollector_GetWindowInputRectangle(This,WindowInputRectangle) (This)->lpVtbl->GetWindowInputRectangle(This,WindowInputRectangle)
#define IInkCollector_SetWindowInputRectangle(This,WindowInputRectangle) (This)->lpVtbl->SetWindowInputRectangle(This,WindowInputRectangle)
#define IInkCollector_SetAllTabletsMode(This,UseMouseForInput) (This)->lpVtbl->SetAllTabletsMode(This,UseMouseForInput)
#define IInkCollector_SetSingleTabletIntegratedMode(This,Tablet) (This)->lpVtbl->SetSingleTabletIntegratedMode(This,Tablet)
#define IInkCollector_GetEventInterest(This,EventId,Listen) (This)->lpVtbl->GetEventInterest(This,EventId,Listen)
#define IInkCollector_SetEventInterest(This,EventId,Listen) (This)->lpVtbl->SetEventInterest(This,EventId,Listen)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IInkCollector_QueryInterface(IInkCollector* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IInkCollector_AddRef(IInkCollector* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IInkCollector_Release(IInkCollector* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IInkCollector_GetTypeInfoCount(IInkCollector* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IInkCollector_GetTypeInfo(IInkCollector* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IInkCollector_GetIDsOfNames(IInkCollector* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IInkCollector_Invoke(IInkCollector* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IInkCollector methods ***/
static FORCEINLINE HRESULT IInkCollector_get_hWnd(IInkCollector* This,LONG *CurrentWindow) {
    return This->lpVtbl->get_hWnd(This,CurrentWindow);
}
static FORCEINLINE HRESULT IInkCollector_put_hWnd(IInkCollector* This,LONG CurrentWindow) {
    return This->lpVtbl->put_hWnd(This,CurrentWindow);
}
static FORCEINLINE HRESULT IInkCollector_get_Enabled(IInkCollector* This,VARIANT_BOOL *Collecting) {
    return This->lpVtbl->get_Enabled(This,Collecting);
}
static FORCEINLINE HRESULT IInkCollector_put_Enabled(IInkCollector* This,VARIANT_BOOL Collecting) {
    return This->lpVtbl->put_Enabled(This,Collecting);
}
static FORCEINLINE HRESULT IInkCollector_get_DefaultDrawingAttributes(IInkCollector* This,IInkDrawingAttributes **CurrentAttributes) {
    return This->lpVtbl->get_DefaultDrawingAttributes(This,CurrentAttributes);
}
static FORCEINLINE HRESULT IInkCollector_putref_DefaultDrawingAttributes(IInkCollector* This,IInkDrawingAttributes *CurrentAttributes) {
    return This->lpVtbl->putref_DefaultDrawingAttributes(This,CurrentAttributes);
}
static FORCEINLINE HRESULT IInkCollector_get_Renderer(IInkCollector* This,IInkRenderer **CurrentInkRenderer) {
    return This->lpVtbl->get_Renderer(This,CurrentInkRenderer);
}
static FORCEINLINE HRESULT IInkCollector_putref_Renderer(IInkCollector* This,IInkRenderer *CurrentInkRenderer) {
    return This->lpVtbl->putref_Renderer(This,CurrentInkRenderer);
}
static FORCEINLINE HRESULT IInkCollector_get_Ink(IInkCollector* This,IInkDisp **Ink) {
    return This->lpVtbl->get_Ink(This,Ink);
}
static FORCEINLINE HRESULT IInkCollector_putref_Ink(IInkCollector* This,IInkDisp *Ink) {
    return This->lpVtbl->putref_Ink(This,Ink);
}
static FORCEINLINE HRESULT IInkCollector_get_AutoRedraw(IInkCollector* This,VARIANT_BOOL *AutoRedraw) {
    return This->lpVtbl->get_AutoRedraw(This,AutoRedraw);
}
static FORCEINLINE HRESULT IInkCollector_put_AutoRedraw(IInkCollector* This,VARIANT_BOOL AutoRedraw) {
    return This->lpVtbl->put_AutoRedraw(This,AutoRedraw);
}
static FORCEINLINE HRESULT IInkCollector_get_CollectingInk(IInkCollector* This,VARIANT_BOOL *Collecting) {
    return This->lpVtbl->get_CollectingInk(This,Collecting);
}
static FORCEINLINE HRESULT IInkCollector_get_CollectionMode(IInkCollector* This,InkCollectionMode *Mode) {
    return This->lpVtbl->get_CollectionMode(This,Mode);
}
static FORCEINLINE HRESULT IInkCollector_put_CollectionMode(IInkCollector* This,InkCollectionMode Mode) {
    return This->lpVtbl->put_CollectionMode(This,Mode);
}
static FORCEINLINE HRESULT IInkCollector_get_DynamicRendering(IInkCollector* This,VARIANT_BOOL *Enabled) {
    return This->lpVtbl->get_DynamicRendering(This,Enabled);
}
static FORCEINLINE HRESULT IInkCollector_put_DynamicRendering(IInkCollector* This,VARIANT_BOOL Enabled) {
    return This->lpVtbl->put_DynamicRendering(This,Enabled);
}
static FORCEINLINE HRESULT IInkCollector_get_DesiredPacketDescription(IInkCollector* This,VARIANT *PacketGuids) {
    return This->lpVtbl->get_DesiredPacketDescription(This,PacketGuids);
}
static FORCEINLINE HRESULT IInkCollector_put_DesiredPacketDescription(IInkCollector* This,VARIANT PacketGuids) {
    return This->lpVtbl->put_DesiredPacketDescription(This,PacketGuids);
}
static FORCEINLINE HRESULT IInkCollector_get_MouseIcon(IInkCollector* This,IPictureDisp **MouseIcon) {
    return This->lpVtbl->get_MouseIcon(This,MouseIcon);
}
static FORCEINLINE HRESULT IInkCollector_put_MouseIcon(IInkCollector* This,IPictureDisp *MouseIcon) {
    return This->lpVtbl->put_MouseIcon(This,MouseIcon);
}
static FORCEINLINE HRESULT IInkCollector_putref_MouseIcon(IInkCollector* This,IPictureDisp *MouseIcon) {
    return This->lpVtbl->putref_MouseIcon(This,MouseIcon);
}
static FORCEINLINE HRESULT IInkCollector_get_MousePointer(IInkCollector* This,InkMousePointer *MousePointer) {
    return This->lpVtbl->get_MousePointer(This,MousePointer);
}
static FORCEINLINE HRESULT IInkCollector_put_MousePointer(IInkCollector* This,InkMousePointer MousePointer) {
    return This->lpVtbl->put_MousePointer(This,MousePointer);
}
static FORCEINLINE HRESULT IInkCollector_get_Cursors(IInkCollector* This,IInkCursors **Cursors) {
    return This->lpVtbl->get_Cursors(This,Cursors);
}
static FORCEINLINE HRESULT IInkCollector_get_MarginX(IInkCollector* This,LONG *MarginX) {
    return This->lpVtbl->get_MarginX(This,MarginX);
}
static FORCEINLINE HRESULT IInkCollector_put_MarginX(IInkCollector* This,LONG MarginX) {
    return This->lpVtbl->put_MarginX(This,MarginX);
}
static FORCEINLINE HRESULT IInkCollector_get_MarginY(IInkCollector* This,LONG *MarginY) {
    return This->lpVtbl->get_MarginY(This,MarginY);
}
static FORCEINLINE HRESULT IInkCollector_put_MarginY(IInkCollector* This,LONG MarginY) {
    return This->lpVtbl->put_MarginY(This,MarginY);
}
static FORCEINLINE HRESULT IInkCollector_get_Tablet(IInkCollector* This,IInkTablet **SingleTablet) {
    return This->lpVtbl->get_Tablet(This,SingleTablet);
}
static FORCEINLINE HRESULT IInkCollector_get_SupportHighContrastInk(IInkCollector* This,VARIANT_BOOL *Support) {
    return This->lpVtbl->get_SupportHighContrastInk(This,Support);
}
static FORCEINLINE HRESULT IInkCollector_put_SupportHighContrastInk(IInkCollector* This,VARIANT_BOOL Support) {
    return This->lpVtbl->put_SupportHighContrastInk(This,Support);
}
static FORCEINLINE HRESULT IInkCollector_SetGestureStatus(IInkCollector* This,InkApplicationGesture Gesture,VARIANT_BOOL Listen) {
    return This->lpVtbl->SetGestureStatus(This,Gesture,Listen);
}
static FORCEINLINE HRESULT IInkCollector_GetGestureStatus(IInkCollector* This,InkApplicationGesture Gesture,VARIANT_BOOL *Listening) {
    return This->lpVtbl->GetGestureStatus(This,Gesture,Listening);
}
static FORCEINLINE HRESULT IInkCollector_GetWindowInputRectangle(IInkCollector* This,IInkRectangle **WindowInputRectangle) {
    return This->lpVtbl->GetWindowInputRectangle(This,WindowInputRectangle);
}
static FORCEINLINE HRESULT IInkCollector_SetWindowInputRectangle(IInkCollector* This,IInkRectangle *WindowInputRectangle) {
    return This->lpVtbl->SetWindowInputRectangle(This,WindowInputRectangle);
}
static FORCEINLINE HRESULT IInkCollector_SetAllTabletsMode(IInkCollector* This,VARIANT_BOOL UseMouseForInput) {
    return This->lpVtbl->SetAllTabletsMode(This,UseMouseForInput);
}
static FORCEINLINE HRESULT IInkCollector_SetSingleTabletIntegratedMode(IInkCollector* This,IInkTablet *Tablet) {
    return This->lpVtbl->SetSingleTabletIntegratedMode(This,Tablet);
}
static FORCEINLINE HRESULT IInkCollector_GetEventInterest(IInkCollector* This,InkCollectorEventInterest EventId,VARIANT_BOOL *Listen) {
    return This->lpVtbl->GetEventInterest(This,EventId,Listen);
}
static FORCEINLINE HRESULT IInkCollector_SetEventInterest(IInkCollector* This,InkCollectorEventInterest EventId,VARIANT_BOOL Listen) {
    return This->lpVtbl->SetEventInterest(This,EventId,Listen);
}
#endif
#endif

#endif


#endif  /* __IInkCollector_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __msinkaut_h__ */
