/*** Autogenerated by WIDL 1.7.16 from ../../wine/include/d2d1.idl - Do not edit ***/

#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include <rpc.h>
#include <rpcndr.h>

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

#ifndef __d2d1_h__
#define __d2d1_h__

/* Forward declarations */

#ifndef __ID2D1SimplifiedGeometrySink_FWD_DEFINED__
#define __ID2D1SimplifiedGeometrySink_FWD_DEFINED__
typedef interface ID2D1SimplifiedGeometrySink ID2D1SimplifiedGeometrySink;
#endif

/* Headers for imported files */

#include <unknwn.h>
#include <d2dbasetypes.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef D2D_POINT_2F D2D1_POINT_2F;
typedef enum D2D1_DEBUG_LEVEL {
    D2D1_DEBUG_LEVEL_NONE = 0,
    D2D1_DEBUG_LEVEL_ERROR = 1,
    D2D1_DEBUG_LEVEL_WARNING = 2,
    D2D1_DEBUG_LEVEL_INFORMATION = 3,
    D2D1_DEBUG_LEVEL_FORCE_DWORD = 0xffffffff
} D2D1_DEBUG_LEVEL;
typedef enum D2D1_FACTORY_TYPE {
    D2D1_FACTORY_TYPE_SINGLE_THREADED = 0,
    D2D1_FACTORY_TYPE_MULTI_THREADED = 1,
    D2D1_FACTORY_TYPE_FORCE_DWORD = 0xfffffff
} D2D1_FACTORY_TYPE;
typedef enum D2D1_FILL_MODE {
    D2D1_FILL_MODE_ALTERNATE = 0,
    D2D1_FILL_MODE_WINDING = 1,
    D2D1_FILL_MODE_FORCE_DWORD = 0xffffffff
} D2D1_FILL_MODE;
typedef enum D2D1_PATH_SEGMENT {
    D2D1_PATH_SEGMENT_NONE = 0,
    D2D1_PATH_SEGMENT_FORCE_UNSTROKED = 1,
    D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN = 2,
    D2D1_PATH_SEGMENT_FORCE_DWORD = 0xffffffff
} D2D1_PATH_SEGMENT;
typedef enum D2D1_FIGURE_BEGIN {
    D2D1_FIGURE_BEGIN_FILLED = 0,
    D2D1_FIGURE_BEGIN_HOLLOW = 1,
    D2D1_FIGURE_BEGIN_FORCE_DWORD = 0xffffffff
} D2D1_FIGURE_BEGIN;
typedef struct D2D1_BEZIER_SEGMENT {
    D2D1_POINT_2F point1;
    D2D1_POINT_2F point2;
    D2D1_POINT_2F point3;
} D2D1_BEZIER_SEGMENT;
typedef enum D2D1_FIGURE_END {
    D2D1_FIGURE_END_OPEN = 0,
    D2D1_FIGURE_END_CLOSED = 1,
    D2D1_FIGURE_END_FORCE_DWORD = 0xffffffff
} D2D1_FIGURE_END;
typedef struct D2D1_FACTORY_OPTIONS {
    D2D1_DEBUG_LEVEL debugLevel;
} D2D1_FACTORY_OPTIONS;
/*****************************************************************************
 * ID2D1SimplifiedGeometrySink interface
 */
#ifndef __ID2D1SimplifiedGeometrySink_INTERFACE_DEFINED__
#define __ID2D1SimplifiedGeometrySink_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID2D1SimplifiedGeometrySink, 0x2cd9069e, 0x12e2, 0x11dc, 0x9f,0xed, 0x00,0x11,0x43,0xa0,0x55,0xf9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2cd9069e-12e2-11dc-9fed-001143a055f9")
ID2D1SimplifiedGeometrySink : public IUnknown
{
    virtual void STDMETHODCALLTYPE SetFillMode(
        D2D1_FILL_MODE mode) = 0;

    virtual void STDMETHODCALLTYPE SetSegmentFlags(
        D2D1_PATH_SEGMENT vertexFlags) = 0;

    virtual void STDMETHODCALLTYPE BeginFigure(
        D2D1_POINT_2F startPoint,
        D2D1_FIGURE_BEGIN figureBegin) = 0;

    virtual void STDMETHODCALLTYPE AddLines(
        const D2D1_POINT_2F *points,
        UINT32 count) = 0;

    virtual void STDMETHODCALLTYPE AddBeziers(
        const D2D1_BEZIER_SEGMENT *beziers,
        UINT32 count) = 0;

    virtual void STDMETHODCALLTYPE EndFigure(
        D2D1_FIGURE_END figureEnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID2D1SimplifiedGeometrySink, 0x2cd9069e, 0x12e2, 0x11dc, 0x9f,0xed, 0x00,0x11,0x43,0xa0,0x55,0xf9)
#endif
#else
typedef struct ID2D1SimplifiedGeometrySinkVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ID2D1SimplifiedGeometrySink methods ***/
    void (STDMETHODCALLTYPE *SetFillMode)(
        ID2D1SimplifiedGeometrySink* This,
        D2D1_FILL_MODE mode);

    void (STDMETHODCALLTYPE *SetSegmentFlags)(
        ID2D1SimplifiedGeometrySink* This,
        D2D1_PATH_SEGMENT vertexFlags);

    void (STDMETHODCALLTYPE *BeginFigure)(
        ID2D1SimplifiedGeometrySink* This,
        D2D1_POINT_2F startPoint,
        D2D1_FIGURE_BEGIN figureBegin);

    void (STDMETHODCALLTYPE *AddLines)(
        ID2D1SimplifiedGeometrySink* This,
        const D2D1_POINT_2F *points,
        UINT32 count);

    void (STDMETHODCALLTYPE *AddBeziers)(
        ID2D1SimplifiedGeometrySink* This,
        const D2D1_BEZIER_SEGMENT *beziers,
        UINT32 count);

    void (STDMETHODCALLTYPE *EndFigure)(
        ID2D1SimplifiedGeometrySink* This,
        D2D1_FIGURE_END figureEnd);

    HRESULT (STDMETHODCALLTYPE *Close)(
        ID2D1SimplifiedGeometrySink* This);

    END_INTERFACE
} ID2D1SimplifiedGeometrySinkVtbl;
interface ID2D1SimplifiedGeometrySink {
    CONST_VTBL ID2D1SimplifiedGeometrySinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID2D1SimplifiedGeometrySink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ID2D1SimplifiedGeometrySink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID2D1SimplifiedGeometrySink_Release(This) (This)->lpVtbl->Release(This)
/*** ID2D1SimplifiedGeometrySink methods ***/
#define ID2D1SimplifiedGeometrySink_SetFillMode(This,mode) (This)->lpVtbl->SetFillMode(This,mode)
#define ID2D1SimplifiedGeometrySink_SetSegmentFlags(This,vertexFlags) (This)->lpVtbl->SetSegmentFlags(This,vertexFlags)
#define ID2D1SimplifiedGeometrySink_BeginFigure(This,startPoint,figureBegin) (This)->lpVtbl->BeginFigure(This,startPoint,figureBegin)
#define ID2D1SimplifiedGeometrySink_AddLines(This,points,count) (This)->lpVtbl->AddLines(This,points,count)
#define ID2D1SimplifiedGeometrySink_AddBeziers(This,beziers,count) (This)->lpVtbl->AddBeziers(This,beziers,count)
#define ID2D1SimplifiedGeometrySink_EndFigure(This,figureEnd) (This)->lpVtbl->EndFigure(This,figureEnd)
#define ID2D1SimplifiedGeometrySink_Close(This) (This)->lpVtbl->Close(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ID2D1SimplifiedGeometrySink_QueryInterface(ID2D1SimplifiedGeometrySink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ID2D1SimplifiedGeometrySink_AddRef(ID2D1SimplifiedGeometrySink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ID2D1SimplifiedGeometrySink_Release(ID2D1SimplifiedGeometrySink* This) {
    return This->lpVtbl->Release(This);
}
/*** ID2D1SimplifiedGeometrySink methods ***/
static FORCEINLINE void ID2D1SimplifiedGeometrySink_SetFillMode(ID2D1SimplifiedGeometrySink* This,D2D1_FILL_MODE mode) {
    This->lpVtbl->SetFillMode(This,mode);
}
static FORCEINLINE void ID2D1SimplifiedGeometrySink_SetSegmentFlags(ID2D1SimplifiedGeometrySink* This,D2D1_PATH_SEGMENT vertexFlags) {
    This->lpVtbl->SetSegmentFlags(This,vertexFlags);
}
static FORCEINLINE void ID2D1SimplifiedGeometrySink_BeginFigure(ID2D1SimplifiedGeometrySink* This,D2D1_POINT_2F startPoint,D2D1_FIGURE_BEGIN figureBegin) {
    This->lpVtbl->BeginFigure(This,startPoint,figureBegin);
}
static FORCEINLINE void ID2D1SimplifiedGeometrySink_AddLines(ID2D1SimplifiedGeometrySink* This,const D2D1_POINT_2F *points,UINT32 count) {
    This->lpVtbl->AddLines(This,points,count);
}
static FORCEINLINE void ID2D1SimplifiedGeometrySink_AddBeziers(ID2D1SimplifiedGeometrySink* This,const D2D1_BEZIER_SEGMENT *beziers,UINT32 count) {
    This->lpVtbl->AddBeziers(This,beziers,count);
}
static FORCEINLINE void ID2D1SimplifiedGeometrySink_EndFigure(ID2D1SimplifiedGeometrySink* This,D2D1_FIGURE_END figureEnd) {
    This->lpVtbl->EndFigure(This,figureEnd);
}
static FORCEINLINE HRESULT ID2D1SimplifiedGeometrySink_Close(ID2D1SimplifiedGeometrySink* This) {
    return This->lpVtbl->Close(This);
}
#endif
#endif

#endif

void STDMETHODCALLTYPE ID2D1SimplifiedGeometrySink_SetFillMode_Proxy(
    ID2D1SimplifiedGeometrySink* This,
    D2D1_FILL_MODE mode);
void __RPC_STUB ID2D1SimplifiedGeometrySink_SetFillMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
void STDMETHODCALLTYPE ID2D1SimplifiedGeometrySink_SetSegmentFlags_Proxy(
    ID2D1SimplifiedGeometrySink* This,
    D2D1_PATH_SEGMENT vertexFlags);
void __RPC_STUB ID2D1SimplifiedGeometrySink_SetSegmentFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
void STDMETHODCALLTYPE ID2D1SimplifiedGeometrySink_BeginFigure_Proxy(
    ID2D1SimplifiedGeometrySink* This,
    D2D1_POINT_2F startPoint,
    D2D1_FIGURE_BEGIN figureBegin);
void __RPC_STUB ID2D1SimplifiedGeometrySink_BeginFigure_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
void STDMETHODCALLTYPE ID2D1SimplifiedGeometrySink_AddLines_Proxy(
    ID2D1SimplifiedGeometrySink* This,
    const D2D1_POINT_2F *points,
    UINT32 count);
void __RPC_STUB ID2D1SimplifiedGeometrySink_AddLines_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
void STDMETHODCALLTYPE ID2D1SimplifiedGeometrySink_AddBeziers_Proxy(
    ID2D1SimplifiedGeometrySink* This,
    const D2D1_BEZIER_SEGMENT *beziers,
    UINT32 count);
void __RPC_STUB ID2D1SimplifiedGeometrySink_AddBeziers_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
void STDMETHODCALLTYPE ID2D1SimplifiedGeometrySink_EndFigure_Proxy(
    ID2D1SimplifiedGeometrySink* This,
    D2D1_FIGURE_END figureEnd);
void __RPC_STUB ID2D1SimplifiedGeometrySink_EndFigure_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ID2D1SimplifiedGeometrySink_Close_Proxy(
    ID2D1SimplifiedGeometrySink* This);
void __RPC_STUB ID2D1SimplifiedGeometrySink_Close_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ID2D1SimplifiedGeometrySink_INTERFACE_DEFINED__ */

HRESULT __stdcall  D2D1CreateFactory(D2D1_FACTORY_TYPE factory_type,REFIID iid,const D2D1_FACTORY_OPTIONS *factory_options,void **factory);

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __d2d1_h__ */
