cpp_quote("#include <winapifamily.h>")

#pragma region Application Family
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")

import "oaidl.idl";
import "ocidl.idl";
import "inspectable.idl";

cpp_quote("#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)")

// INK_HIGH_CONTRAST_ADJUSTMENT enum 
// should have have the same values
// that InkHighContrastAdjustment from 
// windows.ui.input.inking.idl
typedef enum
{
    USE_SYSTEM_COLORS_WHEN_NECESSARY = 0,
    USE_SYSTEM_COLORS = 1,
    USE_ORIGINAL_COLORS =2,
} INK_HIGH_CONTRAST_ADJUSTMENT;

// Interfaces 
[object, uuid(407fb1de-f85a-4150-97cf-b7fb274fb4f8)]
interface IInkD2DRenderer : IUnknown
{
    HRESULT Draw([in] IUnknown *pD2D1DeviceContext,
                 [in] IUnknown *pInkStrokeIterable,
                 [in] BOOL fHighContrast);
}

// Interfaces 
[object, uuid(0a95dcd9-4578-4b71-b20b-bf664d4bfeee)]
interface IInkD2DRenderer2 : IUnknown
{
    HRESULT Draw([in] IUnknown *pD2D1DeviceContext,
        [in] IUnknown *pInkStrokeIterable,
        [in] INK_HIGH_CONTRAST_ADJUSTMENT highContrastAdjustment);
}

[uuid(390d0ab0-19e2-46bb-862e-b09f3cdcf8b9)]
library InkD2DRendererLib
{
    [uuid(4044e60c-7b01-4671-a97c-04e0210a07a5)]
    coclass InkD2DRenderer
    {
        [default] interface IInkD2DRenderer;
        interface IInkD2DRenderer2;
    }
};

cpp_quote("#endif // NTDDI_VERSION >= NTDDI_WINTHRESHOLD")

cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */")
#pragma endregion