/*** Autogenerated by WIDL 11.0 from ../wine-11.0/include/xpsobjectmodel.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 __xpsobjectmodel_h__
#define __xpsobjectmodel_h__

/* Forward declarations */

#ifndef __IXpsOMPart_FWD_DEFINED__
#define __IXpsOMPart_FWD_DEFINED__
typedef interface IXpsOMPart IXpsOMPart;
#ifdef __cplusplus
interface IXpsOMPart;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMDocumentCollection_FWD_DEFINED__
#define __IXpsOMDocumentCollection_FWD_DEFINED__
typedef interface IXpsOMDocumentCollection IXpsOMDocumentCollection;
#ifdef __cplusplus
interface IXpsOMDocumentCollection;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMDocumentSequence_FWD_DEFINED__
#define __IXpsOMDocumentSequence_FWD_DEFINED__
typedef interface IXpsOMDocumentSequence IXpsOMDocumentSequence;
#ifdef __cplusplus
interface IXpsOMDocumentSequence;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPackage_FWD_DEFINED__
#define __IXpsOMPackage_FWD_DEFINED__
typedef interface IXpsOMPackage IXpsOMPackage;
#ifdef __cplusplus
interface IXpsOMPackage;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMObjectFactory_FWD_DEFINED__
#define __IXpsOMObjectFactory_FWD_DEFINED__
typedef interface IXpsOMObjectFactory IXpsOMObjectFactory;
#ifdef __cplusplus
interface IXpsOMObjectFactory;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPackageWriter_FWD_DEFINED__
#define __IXpsOMPackageWriter_FWD_DEFINED__
typedef interface IXpsOMPackageWriter IXpsOMPackageWriter;
#ifdef __cplusplus
interface IXpsOMPackageWriter;
#endif /* __cplusplus */
#endif

#ifndef __XpsOMObjectFactory_FWD_DEFINED__
#define __XpsOMObjectFactory_FWD_DEFINED__
#ifdef __cplusplus
typedef class XpsOMObjectFactory XpsOMObjectFactory;
#else
typedef struct XpsOMObjectFactory XpsOMObjectFactory;
#endif /* defined __cplusplus */
#endif /* defined __XpsOMObjectFactory_FWD_DEFINED__ */

/* Headers for imported files */

#include <msopc.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IXpsOMPrintTicketResource_FWD_DEFINED__
#define __IXpsOMPrintTicketResource_FWD_DEFINED__
typedef interface IXpsOMPrintTicketResource IXpsOMPrintTicketResource;
#ifdef __cplusplus
interface IXpsOMPrintTicketResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMDocumentStructureResource_FWD_DEFINED__
#define __IXpsOMDocumentStructureResource_FWD_DEFINED__
typedef interface IXpsOMDocumentStructureResource IXpsOMDocumentStructureResource;
#ifdef __cplusplus
interface IXpsOMDocumentStructureResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMSignatureBlockResourceCollection_FWD_DEFINED__
#define __IXpsOMSignatureBlockResourceCollection_FWD_DEFINED__
typedef interface IXpsOMSignatureBlockResourceCollection IXpsOMSignatureBlockResourceCollection;
#ifdef __cplusplus
interface IXpsOMSignatureBlockResourceCollection;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPartUriCollection_FWD_DEFINED__
#define __IXpsOMPartUriCollection_FWD_DEFINED__
typedef interface IXpsOMPartUriCollection IXpsOMPartUriCollection;
#ifdef __cplusplus
interface IXpsOMPartUriCollection;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPage_FWD_DEFINED__
#define __IXpsOMPage_FWD_DEFINED__
typedef interface IXpsOMPage IXpsOMPage;
#ifdef __cplusplus
interface IXpsOMPage;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMStoryFragmentsResource_FWD_DEFINED__
#define __IXpsOMStoryFragmentsResource_FWD_DEFINED__
typedef interface IXpsOMStoryFragmentsResource IXpsOMStoryFragmentsResource;
#ifdef __cplusplus
interface IXpsOMStoryFragmentsResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMImageResource_FWD_DEFINED__
#define __IXpsOMImageResource_FWD_DEFINED__
typedef interface IXpsOMImageResource IXpsOMImageResource;
#ifdef __cplusplus
interface IXpsOMImageResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMResource_FWD_DEFINED__
#define __IXpsOMResource_FWD_DEFINED__
typedef interface IXpsOMResource IXpsOMResource;
#ifdef __cplusplus
interface IXpsOMResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMObjectFactory_FWD_DEFINED__
#define __IXpsOMObjectFactory_FWD_DEFINED__
typedef interface IXpsOMObjectFactory IXpsOMObjectFactory;
#ifdef __cplusplus
interface IXpsOMObjectFactory;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMSignatureBlockResource_FWD_DEFINED__
#define __IXpsOMSignatureBlockResource_FWD_DEFINED__
typedef interface IXpsOMSignatureBlockResource IXpsOMSignatureBlockResource;
#ifdef __cplusplus
interface IXpsOMSignatureBlockResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMDictionary_FWD_DEFINED__
#define __IXpsOMDictionary_FWD_DEFINED__
typedef interface IXpsOMDictionary IXpsOMDictionary;
#ifdef __cplusplus
interface IXpsOMDictionary;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMRemoteDictionaryResource_FWD_DEFINED__
#define __IXpsOMRemoteDictionaryResource_FWD_DEFINED__
typedef interface IXpsOMRemoteDictionaryResource IXpsOMRemoteDictionaryResource;
#ifdef __cplusplus
interface IXpsOMRemoteDictionaryResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPartResources_FWD_DEFINED__
#define __IXpsOMPartResources_FWD_DEFINED__
typedef interface IXpsOMPartResources IXpsOMPartResources;
#ifdef __cplusplus
interface IXpsOMPartResources;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMDocument_FWD_DEFINED__
#define __IXpsOMDocument_FWD_DEFINED__
typedef interface IXpsOMDocument IXpsOMDocument;
#ifdef __cplusplus
interface IXpsOMDocument;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPageReference_FWD_DEFINED__
#define __IXpsOMPageReference_FWD_DEFINED__
typedef interface IXpsOMPageReference IXpsOMPageReference;
#ifdef __cplusplus
interface IXpsOMPageReference;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMCanvas_FWD_DEFINED__
#define __IXpsOMCanvas_FWD_DEFINED__
typedef interface IXpsOMCanvas IXpsOMCanvas;
#ifdef __cplusplus
interface IXpsOMCanvas;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMFontResource_FWD_DEFINED__
#define __IXpsOMFontResource_FWD_DEFINED__
typedef interface IXpsOMFontResource IXpsOMFontResource;
#ifdef __cplusplus
interface IXpsOMFontResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMGlyphs_FWD_DEFINED__
#define __IXpsOMGlyphs_FWD_DEFINED__
typedef interface IXpsOMGlyphs IXpsOMGlyphs;
#ifdef __cplusplus
interface IXpsOMGlyphs;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPath_FWD_DEFINED__
#define __IXpsOMPath_FWD_DEFINED__
typedef interface IXpsOMPath IXpsOMPath;
#ifdef __cplusplus
interface IXpsOMPath;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMGeometry_FWD_DEFINED__
#define __IXpsOMGeometry_FWD_DEFINED__
typedef interface IXpsOMGeometry IXpsOMGeometry;
#ifdef __cplusplus
interface IXpsOMGeometry;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMGeometryFigure_FWD_DEFINED__
#define __IXpsOMGeometryFigure_FWD_DEFINED__
typedef interface IXpsOMGeometryFigure IXpsOMGeometryFigure;
#ifdef __cplusplus
interface IXpsOMGeometryFigure;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMMatrixTransform_FWD_DEFINED__
#define __IXpsOMMatrixTransform_FWD_DEFINED__
typedef interface IXpsOMMatrixTransform IXpsOMMatrixTransform;
#ifdef __cplusplus
interface IXpsOMMatrixTransform;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMColorProfileResource_FWD_DEFINED__
#define __IXpsOMColorProfileResource_FWD_DEFINED__
typedef interface IXpsOMColorProfileResource IXpsOMColorProfileResource;
#ifdef __cplusplus
interface IXpsOMColorProfileResource;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMSolidColorBrush_FWD_DEFINED__
#define __IXpsOMSolidColorBrush_FWD_DEFINED__
typedef interface IXpsOMSolidColorBrush IXpsOMSolidColorBrush;
#ifdef __cplusplus
interface IXpsOMSolidColorBrush;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMImageBrush_FWD_DEFINED__
#define __IXpsOMImageBrush_FWD_DEFINED__
typedef interface IXpsOMImageBrush IXpsOMImageBrush;
#ifdef __cplusplus
interface IXpsOMImageBrush;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMVisualBrush_FWD_DEFINED__
#define __IXpsOMVisualBrush_FWD_DEFINED__
typedef interface IXpsOMVisualBrush IXpsOMVisualBrush;
#ifdef __cplusplus
interface IXpsOMVisualBrush;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMGradientStop_FWD_DEFINED__
#define __IXpsOMGradientStop_FWD_DEFINED__
typedef interface IXpsOMGradientStop IXpsOMGradientStop;
#ifdef __cplusplus
interface IXpsOMGradientStop;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMLinearGradientBrush_FWD_DEFINED__
#define __IXpsOMLinearGradientBrush_FWD_DEFINED__
typedef interface IXpsOMLinearGradientBrush IXpsOMLinearGradientBrush;
#ifdef __cplusplus
interface IXpsOMLinearGradientBrush;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMRadialGradientBrush_FWD_DEFINED__
#define __IXpsOMRadialGradientBrush_FWD_DEFINED__
typedef interface IXpsOMRadialGradientBrush IXpsOMRadialGradientBrush;
#ifdef __cplusplus
interface IXpsOMRadialGradientBrush;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMCoreProperties_FWD_DEFINED__
#define __IXpsOMCoreProperties_FWD_DEFINED__
typedef interface IXpsOMCoreProperties IXpsOMCoreProperties;
#ifdef __cplusplus
interface IXpsOMCoreProperties;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPackageWriter_FWD_DEFINED__
#define __IXpsOMPackageWriter_FWD_DEFINED__
typedef interface IXpsOMPackageWriter IXpsOMPackageWriter;
#ifdef __cplusplus
interface IXpsOMPackageWriter;
#endif /* __cplusplus */
#endif

#ifndef __IXpsOMPackage_FWD_DEFINED__
#define __IXpsOMPackage_FWD_DEFINED__
typedef interface IXpsOMPackage IXpsOMPackage;
#ifdef __cplusplus
interface IXpsOMPackage;
#endif /* __cplusplus */
#endif

typedef enum __WIDL_xpsobjectmodel_generated_name_00000023 {
    XPS_COLOR_TYPE_SRGB = 1,
    XPS_COLOR_TYPE_SCRGB = 2,
    XPS_COLOR_TYPE_CONTEXT = 3
} XPS_COLOR_TYPE;
typedef enum __WIDL_xpsobjectmodel_generated_name_00000024 {
    XPS_IMAGE_TYPE_JPEG = 1,
    XPS_IMAGE_TYPE_PNG = 2,
    XPS_IMAGE_TYPE_TIFF = 3,
    XPS_IMAGE_TYPE_WDP = 4,
    XPS_IMAGE_TYPE_JXR = 5
} XPS_IMAGE_TYPE;
typedef enum __WIDL_xpsobjectmodel_generated_name_00000025 {
    XPS_FONT_EMBEDDING_NORMAL = 1,
    XPS_FONT_EMBEDDING_OBFUSCATED = 2,
    XPS_FONT_EMBEDDING_RESTRICTED = 3,
    XPS_FONT_EMBEDDING_RESTRICTED_UNOBFUSCATED = 4
} XPS_FONT_EMBEDDING;
typedef enum __WIDL_xpsobjectmodel_generated_name_00000026 {
    XPS_INTERLEAVING_OFF = 1,
    XPS_INTERLEAVING_ON = 2
} XPS_INTERLEAVING;
typedef struct __WIDL_xpsobjectmodel_generated_name_00000027 {
    FLOAT width;
    FLOAT height;
} XPS_SIZE;
typedef struct __WIDL_xpsobjectmodel_generated_name_00000028 {
    FLOAT x;
    FLOAT y;
} XPS_POINT;
typedef struct __WIDL_xpsobjectmodel_generated_name_00000029 {
    FLOAT x;
    FLOAT y;
    FLOAT width;
    FLOAT height;
} XPS_RECT;
typedef struct __WIDL_xpsobjectmodel_generated_name_0000002A {
    FLOAT m11;
    FLOAT m12;
    FLOAT m21;
    FLOAT m22;
    FLOAT m31;
    FLOAT m32;
} XPS_MATRIX;
typedef struct __WIDL_xpsobjectmodel_generated_name_0000002C {
    XPS_COLOR_TYPE colorType;
    union __WIDL_xpsobjectmodel_generated_name_0000002B {
        struct {
            UINT8 alpha;
            UINT8 red;
            UINT8 green;
            UINT8 blue;
        } sRGB;
        struct {
            FLOAT alpha;
            FLOAT red;
            FLOAT green;
            FLOAT blue;
        } scRGB;
        struct {
            UINT8 channelCount;
            FLOAT channels[9];
        } context;
    } value;
} XPS_COLOR;
/*****************************************************************************
 * IXpsOMPart interface
 */
#ifndef __IXpsOMPart_INTERFACE_DEFINED__
#define __IXpsOMPart_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXpsOMPart, 0x74eb2f0b, 0xa91e, 0x4486, 0xaf,0xac, 0x0f,0xab,0xec,0xa3,0xdf,0xc6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("74eb2f0b-a91e-4486-afac-0fabeca3dfc6")
IXpsOMPart : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPartName(
        IOpcPartUri **partUri) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPartName(
        IOpcPartUri *partUri) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXpsOMPart, 0x74eb2f0b, 0xa91e, 0x4486, 0xaf,0xac, 0x0f,0xab,0xec,0xa3,0xdf,0xc6)
#endif
#else
typedef struct IXpsOMPartVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IXpsOMPart methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPartName)(
        IXpsOMPart *This,
        IOpcPartUri **partUri);

    HRESULT (STDMETHODCALLTYPE *SetPartName)(
        IXpsOMPart *This,
        IOpcPartUri *partUri);

    END_INTERFACE
} IXpsOMPartVtbl;

interface IXpsOMPart {
    CONST_VTBL IXpsOMPartVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXpsOMPart_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXpsOMPart_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXpsOMPart_Release(This) (This)->lpVtbl->Release(This)
/*** IXpsOMPart methods ***/
#define IXpsOMPart_GetPartName(This,partUri) (This)->lpVtbl->GetPartName(This,partUri)
#define IXpsOMPart_SetPartName(This,partUri) (This)->lpVtbl->SetPartName(This,partUri)
#else
/*** IUnknown methods ***/
static inline HRESULT IXpsOMPart_QueryInterface(IXpsOMPart* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IXpsOMPart_AddRef(IXpsOMPart* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IXpsOMPart_Release(IXpsOMPart* This) {
    return This->lpVtbl->Release(This);
}
/*** IXpsOMPart methods ***/
static inline HRESULT IXpsOMPart_GetPartName(IXpsOMPart* This,IOpcPartUri **partUri) {
    return This->lpVtbl->GetPartName(This,partUri);
}
static inline HRESULT IXpsOMPart_SetPartName(IXpsOMPart* This,IOpcPartUri *partUri) {
    return This->lpVtbl->SetPartName(This,partUri);
}
#endif
#endif

#endif


#endif  /* __IXpsOMPart_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IXpsOMDocumentCollection interface
 */
#ifndef __IXpsOMDocumentCollection_INTERFACE_DEFINED__
#define __IXpsOMDocumentCollection_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXpsOMDocumentCollection, 0xd1c87f0d, 0xe947, 0x4754, 0x8a,0x25, 0x97,0x14,0x78,0xf7,0xe8,0x3e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d1c87f0d-e947-4754-8a25-971478f7e83e")
IXpsOMDocumentCollection : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCount(
        UINT32 *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAt(
        UINT32 index,
        IXpsOMDocument **document) = 0;

    virtual HRESULT STDMETHODCALLTYPE InsertAt(
        UINT32 index,
        IXpsOMDocument *document) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAt(
        UINT32 index) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAt(
        UINT32 index,
        IXpsOMDocument *document) = 0;

    virtual HRESULT STDMETHODCALLTYPE Append(
        IXpsOMDocument *document) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXpsOMDocumentCollection, 0xd1c87f0d, 0xe947, 0x4754, 0x8a,0x25, 0x97,0x14,0x78,0xf7,0xe8,0x3e)
#endif
#else
typedef struct IXpsOMDocumentCollectionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IXpsOMDocumentCollection methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IXpsOMDocumentCollection *This,
        UINT32 *count);

    HRESULT (STDMETHODCALLTYPE *GetAt)(
        IXpsOMDocumentCollection *This,
        UINT32 index,
        IXpsOMDocument **document);

    HRESULT (STDMETHODCALLTYPE *InsertAt)(
        IXpsOMDocumentCollection *This,
        UINT32 index,
        IXpsOMDocument *document);

    HRESULT (STDMETHODCALLTYPE *RemoveAt)(
        IXpsOMDocumentCollection *This,
        UINT32 index);

    HRESULT (STDMETHODCALLTYPE *SetAt)(
        IXpsOMDocumentCollection *This,
        UINT32 index,
        IXpsOMDocument *document);

    HRESULT (STDMETHODCALLTYPE *Append)(
        IXpsOMDocumentCollection *This,
        IXpsOMDocument *document);

    END_INTERFACE
} IXpsOMDocumentCollectionVtbl;

interface IXpsOMDocumentCollection {
    CONST_VTBL IXpsOMDocumentCollectionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXpsOMDocumentCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXpsOMDocumentCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXpsOMDocumentCollection_Release(This) (This)->lpVtbl->Release(This)
/*** IXpsOMDocumentCollection methods ***/
#define IXpsOMDocumentCollection_GetCount(This,count) (This)->lpVtbl->GetCount(This,count)
#define IXpsOMDocumentCollection_GetAt(This,index,document) (This)->lpVtbl->GetAt(This,index,document)
#define IXpsOMDocumentCollection_InsertAt(This,index,document) (This)->lpVtbl->InsertAt(This,index,document)
#define IXpsOMDocumentCollection_RemoveAt(This,index) (This)->lpVtbl->RemoveAt(This,index)
#define IXpsOMDocumentCollection_SetAt(This,index,document) (This)->lpVtbl->SetAt(This,index,document)
#define IXpsOMDocumentCollection_Append(This,document) (This)->lpVtbl->Append(This,document)
#else
/*** IUnknown methods ***/
static inline HRESULT IXpsOMDocumentCollection_QueryInterface(IXpsOMDocumentCollection* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IXpsOMDocumentCollection_AddRef(IXpsOMDocumentCollection* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IXpsOMDocumentCollection_Release(IXpsOMDocumentCollection* This) {
    return This->lpVtbl->Release(This);
}
/*** IXpsOMDocumentCollection methods ***/
static inline HRESULT IXpsOMDocumentCollection_GetCount(IXpsOMDocumentCollection* This,UINT32 *count) {
    return This->lpVtbl->GetCount(This,count);
}
static inline HRESULT IXpsOMDocumentCollection_GetAt(IXpsOMDocumentCollection* This,UINT32 index,IXpsOMDocument **document) {
    return This->lpVtbl->GetAt(This,index,document);
}
static inline HRESULT IXpsOMDocumentCollection_InsertAt(IXpsOMDocumentCollection* This,UINT32 index,IXpsOMDocument *document) {
    return This->lpVtbl->InsertAt(This,index,document);
}
static inline HRESULT IXpsOMDocumentCollection_RemoveAt(IXpsOMDocumentCollection* This,UINT32 index) {
    return This->lpVtbl->RemoveAt(This,index);
}
static inline HRESULT IXpsOMDocumentCollection_SetAt(IXpsOMDocumentCollection* This,UINT32 index,IXpsOMDocument *document) {
    return This->lpVtbl->SetAt(This,index,document);
}
static inline HRESULT IXpsOMDocumentCollection_Append(IXpsOMDocumentCollection* This,IXpsOMDocument *document) {
    return This->lpVtbl->Append(This,document);
}
#endif
#endif

#endif


#endif  /* __IXpsOMDocumentCollection_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IXpsOMDocumentSequence interface
 */
#ifndef __IXpsOMDocumentSequence_INTERFACE_DEFINED__
#define __IXpsOMDocumentSequence_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXpsOMDocumentSequence, 0x56492eb4, 0xd8d5, 0x425e, 0x82,0x56, 0x4c,0x2b,0x64,0xad,0x02,0x64);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("56492eb4-d8d5-425e-8256-4c2b64ad0264")
IXpsOMDocumentSequence : public IXpsOMPart
{
    virtual HRESULT STDMETHODCALLTYPE GetOwner(
        IXpsOMPackage **package) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDocuments(
        IXpsOMDocumentCollection **documents) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPrintTicketResource(
        IXpsOMPrintTicketResource **printTicketResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPrintTicketResource(
        IXpsOMPrintTicketResource *printTicketResource) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXpsOMDocumentSequence, 0x56492eb4, 0xd8d5, 0x425e, 0x82,0x56, 0x4c,0x2b,0x64,0xad,0x02,0x64)
#endif
#else
typedef struct IXpsOMDocumentSequenceVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IXpsOMPart methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPartName)(
        IXpsOMDocumentSequence *This,
        IOpcPartUri **partUri);

    HRESULT (STDMETHODCALLTYPE *SetPartName)(
        IXpsOMDocumentSequence *This,
        IOpcPartUri *partUri);

    /*** IXpsOMDocumentSequence methods ***/
    HRESULT (STDMETHODCALLTYPE *GetOwner)(
        IXpsOMDocumentSequence *This,
        IXpsOMPackage **package);

    HRESULT (STDMETHODCALLTYPE *GetDocuments)(
        IXpsOMDocumentSequence *This,
        IXpsOMDocumentCollection **documents);

    HRESULT (STDMETHODCALLTYPE *GetPrintTicketResource)(
        IXpsOMDocumentSequence *This,
        IXpsOMPrintTicketResource **printTicketResource);

    HRESULT (STDMETHODCALLTYPE *SetPrintTicketResource)(
        IXpsOMDocumentSequence *This,
        IXpsOMPrintTicketResource *printTicketResource);

    END_INTERFACE
} IXpsOMDocumentSequenceVtbl;

interface IXpsOMDocumentSequence {
    CONST_VTBL IXpsOMDocumentSequenceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXpsOMDocumentSequence_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXpsOMDocumentSequence_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXpsOMDocumentSequence_Release(This) (This)->lpVtbl->Release(This)
/*** IXpsOMPart methods ***/
#define IXpsOMDocumentSequence_GetPartName(This,partUri) (This)->lpVtbl->GetPartName(This,partUri)
#define IXpsOMDocumentSequence_SetPartName(This,partUri) (This)->lpVtbl->SetPartName(This,partUri)
/*** IXpsOMDocumentSequence methods ***/
#define IXpsOMDocumentSequence_GetOwner(This,package) (This)->lpVtbl->GetOwner(This,package)
#define IXpsOMDocumentSequence_GetDocuments(This,documents) (This)->lpVtbl->GetDocuments(This,documents)
#define IXpsOMDocumentSequence_GetPrintTicketResource(This,printTicketResource) (This)->lpVtbl->GetPrintTicketResource(This,printTicketResource)
#define IXpsOMDocumentSequence_SetPrintTicketResource(This,printTicketResource) (This)->lpVtbl->SetPrintTicketResource(This,printTicketResource)
#else
/*** IUnknown methods ***/
static inline HRESULT IXpsOMDocumentSequence_QueryInterface(IXpsOMDocumentSequence* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IXpsOMDocumentSequence_AddRef(IXpsOMDocumentSequence* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IXpsOMDocumentSequence_Release(IXpsOMDocumentSequence* This) {
    return This->lpVtbl->Release(This);
}
/*** IXpsOMPart methods ***/
static inline HRESULT IXpsOMDocumentSequence_GetPartName(IXpsOMDocumentSequence* This,IOpcPartUri **partUri) {
    return This->lpVtbl->GetPartName(This,partUri);
}
static inline HRESULT IXpsOMDocumentSequence_SetPartName(IXpsOMDocumentSequence* This,IOpcPartUri *partUri) {
    return This->lpVtbl->SetPartName(This,partUri);
}
/*** IXpsOMDocumentSequence methods ***/
static inline HRESULT IXpsOMDocumentSequence_GetOwner(IXpsOMDocumentSequence* This,IXpsOMPackage **package) {
    return This->lpVtbl->GetOwner(This,package);
}
static inline HRESULT IXpsOMDocumentSequence_GetDocuments(IXpsOMDocumentSequence* This,IXpsOMDocumentCollection **documents) {
    return This->lpVtbl->GetDocuments(This,documents);
}
static inline HRESULT IXpsOMDocumentSequence_GetPrintTicketResource(IXpsOMDocumentSequence* This,IXpsOMPrintTicketResource **printTicketResource) {
    return This->lpVtbl->GetPrintTicketResource(This,printTicketResource);
}
static inline HRESULT IXpsOMDocumentSequence_SetPrintTicketResource(IXpsOMDocumentSequence* This,IXpsOMPrintTicketResource *printTicketResource) {
    return This->lpVtbl->SetPrintTicketResource(This,printTicketResource);
}
#endif
#endif

#endif


#endif  /* __IXpsOMDocumentSequence_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IXpsOMPackage interface
 */
#ifndef __IXpsOMPackage_INTERFACE_DEFINED__
#define __IXpsOMPackage_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXpsOMPackage, 0x18c3df65, 0x81e1, 0x4674, 0x91,0xdc, 0xfc,0x45,0x2f,0x5a,0x41,0x6f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("18c3df65-81e1-4674-91dc-fc452f5a416f")
IXpsOMPackage : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDocumentSequence(
        IXpsOMDocumentSequence **documentSequence) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDocumentSequence(
        IXpsOMDocumentSequence *documentSequence) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCoreProperties(
        IXpsOMCoreProperties **coreProperties) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCoreProperties(
        IXpsOMCoreProperties *coreProperties) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDiscardControlPartName(
        IOpcPartUri **discardControlPartUri) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDiscardControlPartName(
        IOpcPartUri *discardControlPartUri) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetThumbnailResource(
        IXpsOMImageResource **imageResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetThumbnailResource(
        IXpsOMImageResource *imageResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteToFile(
        LPCWSTR fileName,
        LPSECURITY_ATTRIBUTES securityAttributes,
        DWORD flagsAndAttributes,
        BOOL optimizeMarkupSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteToStream(
        ISequentialStream *stream,
        BOOL optimizeMarkupSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXpsOMPackage, 0x18c3df65, 0x81e1, 0x4674, 0x91,0xdc, 0xfc,0x45,0x2f,0x5a,0x41,0x6f)
#endif
#else
typedef struct IXpsOMPackageVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IXpsOMPackage methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDocumentSequence)(
        IXpsOMPackage *This,
        IXpsOMDocumentSequence **documentSequence);

    HRESULT (STDMETHODCALLTYPE *SetDocumentSequence)(
        IXpsOMPackage *This,
        IXpsOMDocumentSequence *documentSequence);

    HRESULT (STDMETHODCALLTYPE *GetCoreProperties)(
        IXpsOMPackage *This,
        IXpsOMCoreProperties **coreProperties);

    HRESULT (STDMETHODCALLTYPE *SetCoreProperties)(
        IXpsOMPackage *This,
        IXpsOMCoreProperties *coreProperties);

    HRESULT (STDMETHODCALLTYPE *GetDiscardControlPartName)(
        IXpsOMPackage *This,
        IOpcPartUri **discardControlPartUri);

    HRESULT (STDMETHODCALLTYPE *SetDiscardControlPartName)(
        IXpsOMPackage *This,
        IOpcPartUri *discardControlPartUri);

    HRESULT (STDMETHODCALLTYPE *GetThumbnailResource)(
        IXpsOMPackage *This,
        IXpsOMImageResource **imageResource);

    HRESULT (STDMETHODCALLTYPE *SetThumbnailResource)(
        IXpsOMPackage *This,
        IXpsOMImageResource *imageResource);

    HRESULT (STDMETHODCALLTYPE *WriteToFile)(
        IXpsOMPackage *This,
        LPCWSTR fileName,
        LPSECURITY_ATTRIBUTES securityAttributes,
        DWORD flagsAndAttributes,
        BOOL optimizeMarkupSize);

    HRESULT (STDMETHODCALLTYPE *WriteToStream)(
        IXpsOMPackage *This,
        ISequentialStream *stream,
        BOOL optimizeMarkupSize);

    END_INTERFACE
} IXpsOMPackageVtbl;

interface IXpsOMPackage {
    CONST_VTBL IXpsOMPackageVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXpsOMPackage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXpsOMPackage_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXpsOMPackage_Release(This) (This)->lpVtbl->Release(This)
/*** IXpsOMPackage methods ***/
#define IXpsOMPackage_GetDocumentSequence(This,documentSequence) (This)->lpVtbl->GetDocumentSequence(This,documentSequence)
#define IXpsOMPackage_SetDocumentSequence(This,documentSequence) (This)->lpVtbl->SetDocumentSequence(This,documentSequence)
#define IXpsOMPackage_GetCoreProperties(This,coreProperties) (This)->lpVtbl->GetCoreProperties(This,coreProperties)
#define IXpsOMPackage_SetCoreProperties(This,coreProperties) (This)->lpVtbl->SetCoreProperties(This,coreProperties)
#define IXpsOMPackage_GetDiscardControlPartName(This,discardControlPartUri) (This)->lpVtbl->GetDiscardControlPartName(This,discardControlPartUri)
#define IXpsOMPackage_SetDiscardControlPartName(This,discardControlPartUri) (This)->lpVtbl->SetDiscardControlPartName(This,discardControlPartUri)
#define IXpsOMPackage_GetThumbnailResource(This,imageResource) (This)->lpVtbl->GetThumbnailResource(This,imageResource)
#define IXpsOMPackage_SetThumbnailResource(This,imageResource) (This)->lpVtbl->SetThumbnailResource(This,imageResource)
#define IXpsOMPackage_WriteToFile(This,fileName,securityAttributes,flagsAndAttributes,optimizeMarkupSize) (This)->lpVtbl->WriteToFile(This,fileName,securityAttributes,flagsAndAttributes,optimizeMarkupSize)
#define IXpsOMPackage_WriteToStream(This,stream,optimizeMarkupSize) (This)->lpVtbl->WriteToStream(This,stream,optimizeMarkupSize)
#else
/*** IUnknown methods ***/
static inline HRESULT IXpsOMPackage_QueryInterface(IXpsOMPackage* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IXpsOMPackage_AddRef(IXpsOMPackage* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IXpsOMPackage_Release(IXpsOMPackage* This) {
    return This->lpVtbl->Release(This);
}
/*** IXpsOMPackage methods ***/
static inline HRESULT IXpsOMPackage_GetDocumentSequence(IXpsOMPackage* This,IXpsOMDocumentSequence **documentSequence) {
    return This->lpVtbl->GetDocumentSequence(This,documentSequence);
}
static inline HRESULT IXpsOMPackage_SetDocumentSequence(IXpsOMPackage* This,IXpsOMDocumentSequence *documentSequence) {
    return This->lpVtbl->SetDocumentSequence(This,documentSequence);
}
static inline HRESULT IXpsOMPackage_GetCoreProperties(IXpsOMPackage* This,IXpsOMCoreProperties **coreProperties) {
    return This->lpVtbl->GetCoreProperties(This,coreProperties);
}
static inline HRESULT IXpsOMPackage_SetCoreProperties(IXpsOMPackage* This,IXpsOMCoreProperties *coreProperties) {
    return This->lpVtbl->SetCoreProperties(This,coreProperties);
}
static inline HRESULT IXpsOMPackage_GetDiscardControlPartName(IXpsOMPackage* This,IOpcPartUri **discardControlPartUri) {
    return This->lpVtbl->GetDiscardControlPartName(This,discardControlPartUri);
}
static inline HRESULT IXpsOMPackage_SetDiscardControlPartName(IXpsOMPackage* This,IOpcPartUri *discardControlPartUri) {
    return This->lpVtbl->SetDiscardControlPartName(This,discardControlPartUri);
}
static inline HRESULT IXpsOMPackage_GetThumbnailResource(IXpsOMPackage* This,IXpsOMImageResource **imageResource) {
    return This->lpVtbl->GetThumbnailResource(This,imageResource);
}
static inline HRESULT IXpsOMPackage_SetThumbnailResource(IXpsOMPackage* This,IXpsOMImageResource *imageResource) {
    return This->lpVtbl->SetThumbnailResource(This,imageResource);
}
static inline HRESULT IXpsOMPackage_WriteToFile(IXpsOMPackage* This,LPCWSTR fileName,LPSECURITY_ATTRIBUTES securityAttributes,DWORD flagsAndAttributes,BOOL optimizeMarkupSize) {
    return This->lpVtbl->WriteToFile(This,fileName,securityAttributes,flagsAndAttributes,optimizeMarkupSize);
}
static inline HRESULT IXpsOMPackage_WriteToStream(IXpsOMPackage* This,ISequentialStream *stream,BOOL optimizeMarkupSize) {
    return This->lpVtbl->WriteToStream(This,stream,optimizeMarkupSize);
}
#endif
#endif

#endif


#endif  /* __IXpsOMPackage_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IXpsOMObjectFactory interface
 */
#ifndef __IXpsOMObjectFactory_INTERFACE_DEFINED__
#define __IXpsOMObjectFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXpsOMObjectFactory, 0xf9b2a685, 0xa50d, 0x4fc2, 0xb7,0x64, 0xb5,0x6e,0x09,0x3e,0xa0,0xca);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f9b2a685-a50d-4fc2-b764-b56e093ea0ca")
IXpsOMObjectFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreatePackage(
        IXpsOMPackage **package) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePackageFromFile(
        LPCWSTR filename,
        BOOL reuseObjects,
        IXpsOMPackage **package) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePackageFromStream(
        IStream *stream,
        BOOL reuseObjects,
        IXpsOMPackage **package) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateStoryFragmentsResource(
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMStoryFragmentsResource **storyFragmentsResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDocumentStructureResource(
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMDocumentStructureResource **documentStructureResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSignatureBlockResource(
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMSignatureBlockResource **signatureBlockResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRemoteDictionaryResource(
        IXpsOMDictionary *dictionary,
        IOpcPartUri *partUri,
        IXpsOMRemoteDictionaryResource **remoteDictionaryResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRemoteDictionaryResourceFromStream(
        IStream *dictionaryMarkupStream,
        IOpcPartUri *dictionaryPartUri,
        IXpsOMPartResources *resources,
        IXpsOMRemoteDictionaryResource **dictionaryResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePartResources(
        IXpsOMPartResources **partResources) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDocumentSequence(
        IOpcPartUri *partUri,
        IXpsOMDocumentSequence **documentSequence) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDocument(
        IOpcPartUri *partUri,
        IXpsOMDocument **document) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePageReference(
        const XPS_SIZE *advisoryPageDimensions,
        IXpsOMPageReference **pageReference) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePage(
        const XPS_SIZE *pageDimensions,
        LPCWSTR language,
        IOpcPartUri *partUri,
        IXpsOMPage **page) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePageFromStream(
        IStream *pageMarkupStream,
        IOpcPartUri *partUri,
        IXpsOMPartResources *resources,
        BOOL reuseObjects,
        IXpsOMPage **page) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateCanvas(
        IXpsOMCanvas **canvas) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateGlyphs(
        IXpsOMFontResource *fontResource,
        IXpsOMGlyphs **glyphs) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePath(
        IXpsOMPath **path) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateGeometry(
        IXpsOMGeometry **geometry) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateGeometryFigure(
        const XPS_POINT *startPoint,
        IXpsOMGeometryFigure **figure) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMatrixTransform(
        const XPS_MATRIX *matrix,
        IXpsOMMatrixTransform **transform) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateSolidColorBrush(
        const XPS_COLOR *color,
        IXpsOMColorProfileResource *colorProfile,
        IXpsOMSolidColorBrush **solidColorBrush) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateColorProfileResource(
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMColorProfileResource **colorProfileResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateImageBrush(
        IXpsOMImageResource *image,
        const XPS_RECT *viewBox,
        const XPS_RECT *viewPort,
        IXpsOMImageBrush **imageBrush) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVisualBrush(
        const XPS_RECT *viewBox,
        const XPS_RECT *viewPort,
        IXpsOMVisualBrush **visualBrush) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateImageResource(
        IStream *acquiredStream,
        XPS_IMAGE_TYPE contentType,
        IOpcPartUri *partUri,
        IXpsOMImageResource **imageResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePrintTicketResource(
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMPrintTicketResource **printTicketResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateFontResource(
        IStream *acquiredStream,
        XPS_FONT_EMBEDDING fontEmbedding,
        IOpcPartUri *partUri,
        BOOL isObfSourceStream,
        IXpsOMFontResource **fontResource) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateGradientStop(
        const XPS_COLOR *color,
        IXpsOMColorProfileResource *colorProfile,
        FLOAT offset,
        IXpsOMGradientStop **gradientStop) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateLinearGradientBrush(
        IXpsOMGradientStop *gradStop1,
        IXpsOMGradientStop *gradStop2,
        const XPS_POINT *startPoint,
        const XPS_POINT *endPoint,
        IXpsOMLinearGradientBrush **linearGradientBrush) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateRadialGradientBrush(
        IXpsOMGradientStop *gradStop1,
        IXpsOMGradientStop *gradStop2,
        const XPS_POINT *centerPoint,
        const XPS_POINT *gradientOrigin,
        const XPS_SIZE *radiiSizes,
        IXpsOMRadialGradientBrush **radialGradientBrush) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateCoreProperties(
        IOpcPartUri *partUri,
        IXpsOMCoreProperties **coreProperties) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDictionary(
        IXpsOMDictionary **dictionary) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePartUriCollection(
        IXpsOMPartUriCollection **partUriCollection) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePackageWriterOnFile(
        LPCWSTR fileName,
        LPSECURITY_ATTRIBUTES securityAttributes,
        DWORD flagsAndAttributes,
        BOOL optimizeMarkupSize,
        XPS_INTERLEAVING interleaving,
        IOpcPartUri *documentSequencePartName,
        IXpsOMCoreProperties *coreProperties,
        IXpsOMImageResource *packageThumbnail,
        IXpsOMPrintTicketResource *documentSequencePrintTicket,
        IOpcPartUri *discardControlPartName,
        IXpsOMPackageWriter **packageWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePackageWriterOnStream(
        ISequentialStream *outputStream,
        BOOL optimizeMarkupSize,
        XPS_INTERLEAVING interleaving,
        IOpcPartUri *documentSequencePartName,
        IXpsOMCoreProperties *coreProperties,
        IXpsOMImageResource *packageThumbnail,
        IXpsOMPrintTicketResource *documentSequencePrintTicket,
        IOpcPartUri *discardControlPartName,
        IXpsOMPackageWriter **packageWriter) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreatePartUri(
        LPCWSTR uri,
        IOpcPartUri **partUri) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateReadOnlyStreamOnFile(
        LPCWSTR filename,
        IStream **stream) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXpsOMObjectFactory, 0xf9b2a685, 0xa50d, 0x4fc2, 0xb7,0x64, 0xb5,0x6e,0x09,0x3e,0xa0,0xca)
#endif
#else
typedef struct IXpsOMObjectFactoryVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IXpsOMObjectFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *CreatePackage)(
        IXpsOMObjectFactory *This,
        IXpsOMPackage **package);

    HRESULT (STDMETHODCALLTYPE *CreatePackageFromFile)(
        IXpsOMObjectFactory *This,
        LPCWSTR filename,
        BOOL reuseObjects,
        IXpsOMPackage **package);

    HRESULT (STDMETHODCALLTYPE *CreatePackageFromStream)(
        IXpsOMObjectFactory *This,
        IStream *stream,
        BOOL reuseObjects,
        IXpsOMPackage **package);

    HRESULT (STDMETHODCALLTYPE *CreateStoryFragmentsResource)(
        IXpsOMObjectFactory *This,
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMStoryFragmentsResource **storyFragmentsResource);

    HRESULT (STDMETHODCALLTYPE *CreateDocumentStructureResource)(
        IXpsOMObjectFactory *This,
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMDocumentStructureResource **documentStructureResource);

    HRESULT (STDMETHODCALLTYPE *CreateSignatureBlockResource)(
        IXpsOMObjectFactory *This,
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMSignatureBlockResource **signatureBlockResource);

    HRESULT (STDMETHODCALLTYPE *CreateRemoteDictionaryResource)(
        IXpsOMObjectFactory *This,
        IXpsOMDictionary *dictionary,
        IOpcPartUri *partUri,
        IXpsOMRemoteDictionaryResource **remoteDictionaryResource);

    HRESULT (STDMETHODCALLTYPE *CreateRemoteDictionaryResourceFromStream)(
        IXpsOMObjectFactory *This,
        IStream *dictionaryMarkupStream,
        IOpcPartUri *dictionaryPartUri,
        IXpsOMPartResources *resources,
        IXpsOMRemoteDictionaryResource **dictionaryResource);

    HRESULT (STDMETHODCALLTYPE *CreatePartResources)(
        IXpsOMObjectFactory *This,
        IXpsOMPartResources **partResources);

    HRESULT (STDMETHODCALLTYPE *CreateDocumentSequence)(
        IXpsOMObjectFactory *This,
        IOpcPartUri *partUri,
        IXpsOMDocumentSequence **documentSequence);

    HRESULT (STDMETHODCALLTYPE *CreateDocument)(
        IXpsOMObjectFactory *This,
        IOpcPartUri *partUri,
        IXpsOMDocument **document);

    HRESULT (STDMETHODCALLTYPE *CreatePageReference)(
        IXpsOMObjectFactory *This,
        const XPS_SIZE *advisoryPageDimensions,
        IXpsOMPageReference **pageReference);

    HRESULT (STDMETHODCALLTYPE *CreatePage)(
        IXpsOMObjectFactory *This,
        const XPS_SIZE *pageDimensions,
        LPCWSTR language,
        IOpcPartUri *partUri,
        IXpsOMPage **page);

    HRESULT (STDMETHODCALLTYPE *CreatePageFromStream)(
        IXpsOMObjectFactory *This,
        IStream *pageMarkupStream,
        IOpcPartUri *partUri,
        IXpsOMPartResources *resources,
        BOOL reuseObjects,
        IXpsOMPage **page);

    HRESULT (STDMETHODCALLTYPE *CreateCanvas)(
        IXpsOMObjectFactory *This,
        IXpsOMCanvas **canvas);

    HRESULT (STDMETHODCALLTYPE *CreateGlyphs)(
        IXpsOMObjectFactory *This,
        IXpsOMFontResource *fontResource,
        IXpsOMGlyphs **glyphs);

    HRESULT (STDMETHODCALLTYPE *CreatePath)(
        IXpsOMObjectFactory *This,
        IXpsOMPath **path);

    HRESULT (STDMETHODCALLTYPE *CreateGeometry)(
        IXpsOMObjectFactory *This,
        IXpsOMGeometry **geometry);

    HRESULT (STDMETHODCALLTYPE *CreateGeometryFigure)(
        IXpsOMObjectFactory *This,
        const XPS_POINT *startPoint,
        IXpsOMGeometryFigure **figure);

    HRESULT (STDMETHODCALLTYPE *CreateMatrixTransform)(
        IXpsOMObjectFactory *This,
        const XPS_MATRIX *matrix,
        IXpsOMMatrixTransform **transform);

    HRESULT (STDMETHODCALLTYPE *CreateSolidColorBrush)(
        IXpsOMObjectFactory *This,
        const XPS_COLOR *color,
        IXpsOMColorProfileResource *colorProfile,
        IXpsOMSolidColorBrush **solidColorBrush);

    HRESULT (STDMETHODCALLTYPE *CreateColorProfileResource)(
        IXpsOMObjectFactory *This,
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMColorProfileResource **colorProfileResource);

    HRESULT (STDMETHODCALLTYPE *CreateImageBrush)(
        IXpsOMObjectFactory *This,
        IXpsOMImageResource *image,
        const XPS_RECT *viewBox,
        const XPS_RECT *viewPort,
        IXpsOMImageBrush **imageBrush);

    HRESULT (STDMETHODCALLTYPE *CreateVisualBrush)(
        IXpsOMObjectFactory *This,
        const XPS_RECT *viewBox,
        const XPS_RECT *viewPort,
        IXpsOMVisualBrush **visualBrush);

    HRESULT (STDMETHODCALLTYPE *CreateImageResource)(
        IXpsOMObjectFactory *This,
        IStream *acquiredStream,
        XPS_IMAGE_TYPE contentType,
        IOpcPartUri *partUri,
        IXpsOMImageResource **imageResource);

    HRESULT (STDMETHODCALLTYPE *CreatePrintTicketResource)(
        IXpsOMObjectFactory *This,
        IStream *acquiredStream,
        IOpcPartUri *partUri,
        IXpsOMPrintTicketResource **printTicketResource);

    HRESULT (STDMETHODCALLTYPE *CreateFontResource)(
        IXpsOMObjectFactory *This,
        IStream *acquiredStream,
        XPS_FONT_EMBEDDING fontEmbedding,
        IOpcPartUri *partUri,
        BOOL isObfSourceStream,
        IXpsOMFontResource **fontResource);

    HRESULT (STDMETHODCALLTYPE *CreateGradientStop)(
        IXpsOMObjectFactory *This,
        const XPS_COLOR *color,
        IXpsOMColorProfileResource *colorProfile,
        FLOAT offset,
        IXpsOMGradientStop **gradientStop);

    HRESULT (STDMETHODCALLTYPE *CreateLinearGradientBrush)(
        IXpsOMObjectFactory *This,
        IXpsOMGradientStop *gradStop1,
        IXpsOMGradientStop *gradStop2,
        const XPS_POINT *startPoint,
        const XPS_POINT *endPoint,
        IXpsOMLinearGradientBrush **linearGradientBrush);

    HRESULT (STDMETHODCALLTYPE *CreateRadialGradientBrush)(
        IXpsOMObjectFactory *This,
        IXpsOMGradientStop *gradStop1,
        IXpsOMGradientStop *gradStop2,
        const XPS_POINT *centerPoint,
        const XPS_POINT *gradientOrigin,
        const XPS_SIZE *radiiSizes,
        IXpsOMRadialGradientBrush **radialGradientBrush);

    HRESULT (STDMETHODCALLTYPE *CreateCoreProperties)(
        IXpsOMObjectFactory *This,
        IOpcPartUri *partUri,
        IXpsOMCoreProperties **coreProperties);

    HRESULT (STDMETHODCALLTYPE *CreateDictionary)(
        IXpsOMObjectFactory *This,
        IXpsOMDictionary **dictionary);

    HRESULT (STDMETHODCALLTYPE *CreatePartUriCollection)(
        IXpsOMObjectFactory *This,
        IXpsOMPartUriCollection **partUriCollection);

    HRESULT (STDMETHODCALLTYPE *CreatePackageWriterOnFile)(
        IXpsOMObjectFactory *This,
        LPCWSTR fileName,
        LPSECURITY_ATTRIBUTES securityAttributes,
        DWORD flagsAndAttributes,
        BOOL optimizeMarkupSize,
        XPS_INTERLEAVING interleaving,
        IOpcPartUri *documentSequencePartName,
        IXpsOMCoreProperties *coreProperties,
        IXpsOMImageResource *packageThumbnail,
        IXpsOMPrintTicketResource *documentSequencePrintTicket,
        IOpcPartUri *discardControlPartName,
        IXpsOMPackageWriter **packageWriter);

    HRESULT (STDMETHODCALLTYPE *CreatePackageWriterOnStream)(
        IXpsOMObjectFactory *This,
        ISequentialStream *outputStream,
        BOOL optimizeMarkupSize,
        XPS_INTERLEAVING interleaving,
        IOpcPartUri *documentSequencePartName,
        IXpsOMCoreProperties *coreProperties,
        IXpsOMImageResource *packageThumbnail,
        IXpsOMPrintTicketResource *documentSequencePrintTicket,
        IOpcPartUri *discardControlPartName,
        IXpsOMPackageWriter **packageWriter);

    HRESULT (STDMETHODCALLTYPE *CreatePartUri)(
        IXpsOMObjectFactory *This,
        LPCWSTR uri,
        IOpcPartUri **partUri);

    HRESULT (STDMETHODCALLTYPE *CreateReadOnlyStreamOnFile)(
        IXpsOMObjectFactory *This,
        LPCWSTR filename,
        IStream **stream);

    END_INTERFACE
} IXpsOMObjectFactoryVtbl;

interface IXpsOMObjectFactory {
    CONST_VTBL IXpsOMObjectFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXpsOMObjectFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXpsOMObjectFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXpsOMObjectFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IXpsOMObjectFactory methods ***/
#define IXpsOMObjectFactory_CreatePackage(This,package) (This)->lpVtbl->CreatePackage(This,package)
#define IXpsOMObjectFactory_CreatePackageFromFile(This,filename,reuseObjects,package) (This)->lpVtbl->CreatePackageFromFile(This,filename,reuseObjects,package)
#define IXpsOMObjectFactory_CreatePackageFromStream(This,stream,reuseObjects,package) (This)->lpVtbl->CreatePackageFromStream(This,stream,reuseObjects,package)
#define IXpsOMObjectFactory_CreateStoryFragmentsResource(This,acquiredStream,partUri,storyFragmentsResource) (This)->lpVtbl->CreateStoryFragmentsResource(This,acquiredStream,partUri,storyFragmentsResource)
#define IXpsOMObjectFactory_CreateDocumentStructureResource(This,acquiredStream,partUri,documentStructureResource) (This)->lpVtbl->CreateDocumentStructureResource(This,acquiredStream,partUri,documentStructureResource)
#define IXpsOMObjectFactory_CreateSignatureBlockResource(This,acquiredStream,partUri,signatureBlockResource) (This)->lpVtbl->CreateSignatureBlockResource(This,acquiredStream,partUri,signatureBlockResource)
#define IXpsOMObjectFactory_CreateRemoteDictionaryResource(This,dictionary,partUri,remoteDictionaryResource) (This)->lpVtbl->CreateRemoteDictionaryResource(This,dictionary,partUri,remoteDictionaryResource)
#define IXpsOMObjectFactory_CreateRemoteDictionaryResourceFromStream(This,dictionaryMarkupStream,dictionaryPartUri,resources,dictionaryResource) (This)->lpVtbl->CreateRemoteDictionaryResourceFromStream(This,dictionaryMarkupStream,dictionaryPartUri,resources,dictionaryResource)
#define IXpsOMObjectFactory_CreatePartResources(This,partResources) (This)->lpVtbl->CreatePartResources(This,partResources)
#define IXpsOMObjectFactory_CreateDocumentSequence(This,partUri,documentSequence) (This)->lpVtbl->CreateDocumentSequence(This,partUri,documentSequence)
#define IXpsOMObjectFactory_CreateDocument(This,partUri,document) (This)->lpVtbl->CreateDocument(This,partUri,document)
#define IXpsOMObjectFactory_CreatePageReference(This,advisoryPageDimensions,pageReference) (This)->lpVtbl->CreatePageReference(This,advisoryPageDimensions,pageReference)
#define IXpsOMObjectFactory_CreatePage(This,pageDimensions,language,partUri,page) (This)->lpVtbl->CreatePage(This,pageDimensions,language,partUri,page)
#define IXpsOMObjectFactory_CreatePageFromStream(This,pageMarkupStream,partUri,resources,reuseObjects,page) (This)->lpVtbl->CreatePageFromStream(This,pageMarkupStream,partUri,resources,reuseObjects,page)
#define IXpsOMObjectFactory_CreateCanvas(This,canvas) (This)->lpVtbl->CreateCanvas(This,canvas)
#define IXpsOMObjectFactory_CreateGlyphs(This,fontResource,glyphs) (This)->lpVtbl->CreateGlyphs(This,fontResource,glyphs)
#define IXpsOMObjectFactory_CreatePath(This,path) (This)->lpVtbl->CreatePath(This,path)
#define IXpsOMObjectFactory_CreateGeometry(This,geometry) (This)->lpVtbl->CreateGeometry(This,geometry)
#define IXpsOMObjectFactory_CreateGeometryFigure(This,startPoint,figure) (This)->lpVtbl->CreateGeometryFigure(This,startPoint,figure)
#define IXpsOMObjectFactory_CreateMatrixTransform(This,matrix,transform) (This)->lpVtbl->CreateMatrixTransform(This,matrix,transform)
#define IXpsOMObjectFactory_CreateSolidColorBrush(This,color,colorProfile,solidColorBrush) (This)->lpVtbl->CreateSolidColorBrush(This,color,colorProfile,solidColorBrush)
#define IXpsOMObjectFactory_CreateColorProfileResource(This,acquiredStream,partUri,colorProfileResource) (This)->lpVtbl->CreateColorProfileResource(This,acquiredStream,partUri,colorProfileResource)
#define IXpsOMObjectFactory_CreateImageBrush(This,image,viewBox,viewPort,imageBrush) (This)->lpVtbl->CreateImageBrush(This,image,viewBox,viewPort,imageBrush)
#define IXpsOMObjectFactory_CreateVisualBrush(This,viewBox,viewPort,visualBrush) (This)->lpVtbl->CreateVisualBrush(This,viewBox,viewPort,visualBrush)
#define IXpsOMObjectFactory_CreateImageResource(This,acquiredStream,contentType,partUri,imageResource) (This)->lpVtbl->CreateImageResource(This,acquiredStream,contentType,partUri,imageResource)
#define IXpsOMObjectFactory_CreatePrintTicketResource(This,acquiredStream,partUri,printTicketResource) (This)->lpVtbl->CreatePrintTicketResource(This,acquiredStream,partUri,printTicketResource)
#define IXpsOMObjectFactory_CreateFontResource(This,acquiredStream,fontEmbedding,partUri,isObfSourceStream,fontResource) (This)->lpVtbl->CreateFontResource(This,acquiredStream,fontEmbedding,partUri,isObfSourceStream,fontResource)
#define IXpsOMObjectFactory_CreateGradientStop(This,color,colorProfile,offset,gradientStop) (This)->lpVtbl->CreateGradientStop(This,color,colorProfile,offset,gradientStop)
#define IXpsOMObjectFactory_CreateLinearGradientBrush(This,gradStop1,gradStop2,startPoint,endPoint,linearGradientBrush) (This)->lpVtbl->CreateLinearGradientBrush(This,gradStop1,gradStop2,startPoint,endPoint,linearGradientBrush)
#define IXpsOMObjectFactory_CreateRadialGradientBrush(This,gradStop1,gradStop2,centerPoint,gradientOrigin,radiiSizes,radialGradientBrush) (This)->lpVtbl->CreateRadialGradientBrush(This,gradStop1,gradStop2,centerPoint,gradientOrigin,radiiSizes,radialGradientBrush)
#define IXpsOMObjectFactory_CreateCoreProperties(This,partUri,coreProperties) (This)->lpVtbl->CreateCoreProperties(This,partUri,coreProperties)
#define IXpsOMObjectFactory_CreateDictionary(This,dictionary) (This)->lpVtbl->CreateDictionary(This,dictionary)
#define IXpsOMObjectFactory_CreatePartUriCollection(This,partUriCollection) (This)->lpVtbl->CreatePartUriCollection(This,partUriCollection)
#define IXpsOMObjectFactory_CreatePackageWriterOnFile(This,fileName,securityAttributes,flagsAndAttributes,optimizeMarkupSize,interleaving,documentSequencePartName,coreProperties,packageThumbnail,documentSequencePrintTicket,discardControlPartName,packageWriter) (This)->lpVtbl->CreatePackageWriterOnFile(This,fileName,securityAttributes,flagsAndAttributes,optimizeMarkupSize,interleaving,documentSequencePartName,coreProperties,packageThumbnail,documentSequencePrintTicket,discardControlPartName,packageWriter)
#define IXpsOMObjectFactory_CreatePackageWriterOnStream(This,outputStream,optimizeMarkupSize,interleaving,documentSequencePartName,coreProperties,packageThumbnail,documentSequencePrintTicket,discardControlPartName,packageWriter) (This)->lpVtbl->CreatePackageWriterOnStream(This,outputStream,optimizeMarkupSize,interleaving,documentSequencePartName,coreProperties,packageThumbnail,documentSequencePrintTicket,discardControlPartName,packageWriter)
#define IXpsOMObjectFactory_CreatePartUri(This,uri,partUri) (This)->lpVtbl->CreatePartUri(This,uri,partUri)
#define IXpsOMObjectFactory_CreateReadOnlyStreamOnFile(This,filename,stream) (This)->lpVtbl->CreateReadOnlyStreamOnFile(This,filename,stream)
#else
/*** IUnknown methods ***/
static inline HRESULT IXpsOMObjectFactory_QueryInterface(IXpsOMObjectFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IXpsOMObjectFactory_AddRef(IXpsOMObjectFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IXpsOMObjectFactory_Release(IXpsOMObjectFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IXpsOMObjectFactory methods ***/
static inline HRESULT IXpsOMObjectFactory_CreatePackage(IXpsOMObjectFactory* This,IXpsOMPackage **package) {
    return This->lpVtbl->CreatePackage(This,package);
}
static inline HRESULT IXpsOMObjectFactory_CreatePackageFromFile(IXpsOMObjectFactory* This,LPCWSTR filename,BOOL reuseObjects,IXpsOMPackage **package) {
    return This->lpVtbl->CreatePackageFromFile(This,filename,reuseObjects,package);
}
static inline HRESULT IXpsOMObjectFactory_CreatePackageFromStream(IXpsOMObjectFactory* This,IStream *stream,BOOL reuseObjects,IXpsOMPackage **package) {
    return This->lpVtbl->CreatePackageFromStream(This,stream,reuseObjects,package);
}
static inline HRESULT IXpsOMObjectFactory_CreateStoryFragmentsResource(IXpsOMObjectFactory* This,IStream *acquiredStream,IOpcPartUri *partUri,IXpsOMStoryFragmentsResource **storyFragmentsResource) {
    return This->lpVtbl->CreateStoryFragmentsResource(This,acquiredStream,partUri,storyFragmentsResource);
}
static inline HRESULT IXpsOMObjectFactory_CreateDocumentStructureResource(IXpsOMObjectFactory* This,IStream *acquiredStream,IOpcPartUri *partUri,IXpsOMDocumentStructureResource **documentStructureResource) {
    return This->lpVtbl->CreateDocumentStructureResource(This,acquiredStream,partUri,documentStructureResource);
}
static inline HRESULT IXpsOMObjectFactory_CreateSignatureBlockResource(IXpsOMObjectFactory* This,IStream *acquiredStream,IOpcPartUri *partUri,IXpsOMSignatureBlockResource **signatureBlockResource) {
    return This->lpVtbl->CreateSignatureBlockResource(This,acquiredStream,partUri,signatureBlockResource);
}
static inline HRESULT IXpsOMObjectFactory_CreateRemoteDictionaryResource(IXpsOMObjectFactory* This,IXpsOMDictionary *dictionary,IOpcPartUri *partUri,IXpsOMRemoteDictionaryResource **remoteDictionaryResource) {
    return This->lpVtbl->CreateRemoteDictionaryResource(This,dictionary,partUri,remoteDictionaryResource);
}
static inline HRESULT IXpsOMObjectFactory_CreateRemoteDictionaryResourceFromStream(IXpsOMObjectFactory* This,IStream *dictionaryMarkupStream,IOpcPartUri *dictionaryPartUri,IXpsOMPartResources *resources,IXpsOMRemoteDictionaryResource **dictionaryResource) {
    return This->lpVtbl->CreateRemoteDictionaryResourceFromStream(This,dictionaryMarkupStream,dictionaryPartUri,resources,dictionaryResource);
}
static inline HRESULT IXpsOMObjectFactory_CreatePartResources(IXpsOMObjectFactory* This,IXpsOMPartResources **partResources) {
    return This->lpVtbl->CreatePartResources(This,partResources);
}
static inline HRESULT IXpsOMObjectFactory_CreateDocumentSequence(IXpsOMObjectFactory* This,IOpcPartUri *partUri,IXpsOMDocumentSequence **documentSequence) {
    return This->lpVtbl->CreateDocumentSequence(This,partUri,documentSequence);
}
static inline HRESULT IXpsOMObjectFactory_CreateDocument(IXpsOMObjectFactory* This,IOpcPartUri *partUri,IXpsOMDocument **document) {
    return This->lpVtbl->CreateDocument(This,partUri,document);
}
static inline HRESULT IXpsOMObjectFactory_CreatePageReference(IXpsOMObjectFactory* This,const XPS_SIZE *advisoryPageDimensions,IXpsOMPageReference **pageReference) {
    return This->lpVtbl->CreatePageReference(This,advisoryPageDimensions,pageReference);
}
static inline HRESULT IXpsOMObjectFactory_CreatePage(IXpsOMObjectFactory* This,const XPS_SIZE *pageDimensions,LPCWSTR language,IOpcPartUri *partUri,IXpsOMPage **page) {
    return This->lpVtbl->CreatePage(This,pageDimensions,language,partUri,page);
}
static inline HRESULT IXpsOMObjectFactory_CreatePageFromStream(IXpsOMObjectFactory* This,IStream *pageMarkupStream,IOpcPartUri *partUri,IXpsOMPartResources *resources,BOOL reuseObjects,IXpsOMPage **page) {
    return This->lpVtbl->CreatePageFromStream(This,pageMarkupStream,partUri,resources,reuseObjects,page);
}
static inline HRESULT IXpsOMObjectFactory_CreateCanvas(IXpsOMObjectFactory* This,IXpsOMCanvas **canvas) {
    return This->lpVtbl->CreateCanvas(This,canvas);
}
static inline HRESULT IXpsOMObjectFactory_CreateGlyphs(IXpsOMObjectFactory* This,IXpsOMFontResource *fontResource,IXpsOMGlyphs **glyphs) {
    return This->lpVtbl->CreateGlyphs(This,fontResource,glyphs);
}
static inline HRESULT IXpsOMObjectFactory_CreatePath(IXpsOMObjectFactory* This,IXpsOMPath **path) {
    return This->lpVtbl->CreatePath(This,path);
}
static inline HRESULT IXpsOMObjectFactory_CreateGeometry(IXpsOMObjectFactory* This,IXpsOMGeometry **geometry) {
    return This->lpVtbl->CreateGeometry(This,geometry);
}
static inline HRESULT IXpsOMObjectFactory_CreateGeometryFigure(IXpsOMObjectFactory* This,const XPS_POINT *startPoint,IXpsOMGeometryFigure **figure) {
    return This->lpVtbl->CreateGeometryFigure(This,startPoint,figure);
}
static inline HRESULT IXpsOMObjectFactory_CreateMatrixTransform(IXpsOMObjectFactory* This,const XPS_MATRIX *matrix,IXpsOMMatrixTransform **transform) {
    return This->lpVtbl->CreateMatrixTransform(This,matrix,transform);
}
static inline HRESULT IXpsOMObjectFactory_CreateSolidColorBrush(IXpsOMObjectFactory* This,const XPS_COLOR *color,IXpsOMColorProfileResource *colorProfile,IXpsOMSolidColorBrush **solidColorBrush) {
    return This->lpVtbl->CreateSolidColorBrush(This,color,colorProfile,solidColorBrush);
}
static inline HRESULT IXpsOMObjectFactory_CreateColorProfileResource(IXpsOMObjectFactory* This,IStream *acquiredStream,IOpcPartUri *partUri,IXpsOMColorProfileResource **colorProfileResource) {
    return This->lpVtbl->CreateColorProfileResource(This,acquiredStream,partUri,colorProfileResource);
}
static inline HRESULT IXpsOMObjectFactory_CreateImageBrush(IXpsOMObjectFactory* This,IXpsOMImageResource *image,const XPS_RECT *viewBox,const XPS_RECT *viewPort,IXpsOMImageBrush **imageBrush) {
    return This->lpVtbl->CreateImageBrush(This,image,viewBox,viewPort,imageBrush);
}
static inline HRESULT IXpsOMObjectFactory_CreateVisualBrush(IXpsOMObjectFactory* This,const XPS_RECT *viewBox,const XPS_RECT *viewPort,IXpsOMVisualBrush **visualBrush) {
    return This->lpVtbl->CreateVisualBrush(This,viewBox,viewPort,visualBrush);
}
static inline HRESULT IXpsOMObjectFactory_CreateImageResource(IXpsOMObjectFactory* This,IStream *acquiredStream,XPS_IMAGE_TYPE contentType,IOpcPartUri *partUri,IXpsOMImageResource **imageResource) {
    return This->lpVtbl->CreateImageResource(This,acquiredStream,contentType,partUri,imageResource);
}
static inline HRESULT IXpsOMObjectFactory_CreatePrintTicketResource(IXpsOMObjectFactory* This,IStream *acquiredStream,IOpcPartUri *partUri,IXpsOMPrintTicketResource **printTicketResource) {
    return This->lpVtbl->CreatePrintTicketResource(This,acquiredStream,partUri,printTicketResource);
}
static inline HRESULT IXpsOMObjectFactory_CreateFontResource(IXpsOMObjectFactory* This,IStream *acquiredStream,XPS_FONT_EMBEDDING fontEmbedding,IOpcPartUri *partUri,BOOL isObfSourceStream,IXpsOMFontResource **fontResource) {
    return This->lpVtbl->CreateFontResource(This,acquiredStream,fontEmbedding,partUri,isObfSourceStream,fontResource);
}
static inline HRESULT IXpsOMObjectFactory_CreateGradientStop(IXpsOMObjectFactory* This,const XPS_COLOR *color,IXpsOMColorProfileResource *colorProfile,FLOAT offset,IXpsOMGradientStop **gradientStop) {
    return This->lpVtbl->CreateGradientStop(This,color,colorProfile,offset,gradientStop);
}
static inline HRESULT IXpsOMObjectFactory_CreateLinearGradientBrush(IXpsOMObjectFactory* This,IXpsOMGradientStop *gradStop1,IXpsOMGradientStop *gradStop2,const XPS_POINT *startPoint,const XPS_POINT *endPoint,IXpsOMLinearGradientBrush **linearGradientBrush) {
    return This->lpVtbl->CreateLinearGradientBrush(This,gradStop1,gradStop2,startPoint,endPoint,linearGradientBrush);
}
static inline HRESULT IXpsOMObjectFactory_CreateRadialGradientBrush(IXpsOMObjectFactory* This,IXpsOMGradientStop *gradStop1,IXpsOMGradientStop *gradStop2,const XPS_POINT *centerPoint,const XPS_POINT *gradientOrigin,const XPS_SIZE *radiiSizes,IXpsOMRadialGradientBrush **radialGradientBrush) {
    return This->lpVtbl->CreateRadialGradientBrush(This,gradStop1,gradStop2,centerPoint,gradientOrigin,radiiSizes,radialGradientBrush);
}
static inline HRESULT IXpsOMObjectFactory_CreateCoreProperties(IXpsOMObjectFactory* This,IOpcPartUri *partUri,IXpsOMCoreProperties **coreProperties) {
    return This->lpVtbl->CreateCoreProperties(This,partUri,coreProperties);
}
static inline HRESULT IXpsOMObjectFactory_CreateDictionary(IXpsOMObjectFactory* This,IXpsOMDictionary **dictionary) {
    return This->lpVtbl->CreateDictionary(This,dictionary);
}
static inline HRESULT IXpsOMObjectFactory_CreatePartUriCollection(IXpsOMObjectFactory* This,IXpsOMPartUriCollection **partUriCollection) {
    return This->lpVtbl->CreatePartUriCollection(This,partUriCollection);
}
static inline HRESULT IXpsOMObjectFactory_CreatePackageWriterOnFile(IXpsOMObjectFactory* This,LPCWSTR fileName,LPSECURITY_ATTRIBUTES securityAttributes,DWORD flagsAndAttributes,BOOL optimizeMarkupSize,XPS_INTERLEAVING interleaving,IOpcPartUri *documentSequencePartName,IXpsOMCoreProperties *coreProperties,IXpsOMImageResource *packageThumbnail,IXpsOMPrintTicketResource *documentSequencePrintTicket,IOpcPartUri *discardControlPartName,IXpsOMPackageWriter **packageWriter) {
    return This->lpVtbl->CreatePackageWriterOnFile(This,fileName,securityAttributes,flagsAndAttributes,optimizeMarkupSize,interleaving,documentSequencePartName,coreProperties,packageThumbnail,documentSequencePrintTicket,discardControlPartName,packageWriter);
}
static inline HRESULT IXpsOMObjectFactory_CreatePackageWriterOnStream(IXpsOMObjectFactory* This,ISequentialStream *outputStream,BOOL optimizeMarkupSize,XPS_INTERLEAVING interleaving,IOpcPartUri *documentSequencePartName,IXpsOMCoreProperties *coreProperties,IXpsOMImageResource *packageThumbnail,IXpsOMPrintTicketResource *documentSequencePrintTicket,IOpcPartUri *discardControlPartName,IXpsOMPackageWriter **packageWriter) {
    return This->lpVtbl->CreatePackageWriterOnStream(This,outputStream,optimizeMarkupSize,interleaving,documentSequencePartName,coreProperties,packageThumbnail,documentSequencePrintTicket,discardControlPartName,packageWriter);
}
static inline HRESULT IXpsOMObjectFactory_CreatePartUri(IXpsOMObjectFactory* This,LPCWSTR uri,IOpcPartUri **partUri) {
    return This->lpVtbl->CreatePartUri(This,uri,partUri);
}
static inline HRESULT IXpsOMObjectFactory_CreateReadOnlyStreamOnFile(IXpsOMObjectFactory* This,LPCWSTR filename,IStream **stream) {
    return This->lpVtbl->CreateReadOnlyStreamOnFile(This,filename,stream);
}
#endif
#endif

#endif


#endif  /* __IXpsOMObjectFactory_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IXpsOMPackageWriter interface
 */
#ifndef __IXpsOMPackageWriter_INTERFACE_DEFINED__
#define __IXpsOMPackageWriter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IXpsOMPackageWriter, 0x4e2aa182, 0xa443, 0x42c6, 0xb4,0x1b, 0x4f,0x8e,0x9d,0xe7,0x3f,0xf9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4e2aa182-a443-42c6-b41b-4f8e9de73ff9")
IXpsOMPackageWriter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE StartNewDocument(
        IOpcPartUri *documentPartName,
        IXpsOMPrintTicketResource *documentPrintTicket,
        IXpsOMDocumentStructureResource *documentStructure,
        IXpsOMSignatureBlockResourceCollection *signatureBlockResources,
        IXpsOMPartUriCollection *restrictedFonts) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPage(
        IXpsOMPage *page,
        const XPS_SIZE *advisoryPageDimensions,
        IXpsOMPartUriCollection *discardableResourceParts,
        IXpsOMStoryFragmentsResource *storyFragments,
        IXpsOMPrintTicketResource *pagePrintTicket,
        IXpsOMImageResource *pageThumbnail) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddResource(
        IXpsOMResource *resource) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsClosed(
        BOOL *isClosed) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IXpsOMPackageWriter, 0x4e2aa182, 0xa443, 0x42c6, 0xb4,0x1b, 0x4f,0x8e,0x9d,0xe7,0x3f,0xf9)
#endif
#else
typedef struct IXpsOMPackageWriterVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IXpsOMPackageWriter methods ***/
    HRESULT (STDMETHODCALLTYPE *StartNewDocument)(
        IXpsOMPackageWriter *This,
        IOpcPartUri *documentPartName,
        IXpsOMPrintTicketResource *documentPrintTicket,
        IXpsOMDocumentStructureResource *documentStructure,
        IXpsOMSignatureBlockResourceCollection *signatureBlockResources,
        IXpsOMPartUriCollection *restrictedFonts);

    HRESULT (STDMETHODCALLTYPE *AddPage)(
        IXpsOMPackageWriter *This,
        IXpsOMPage *page,
        const XPS_SIZE *advisoryPageDimensions,
        IXpsOMPartUriCollection *discardableResourceParts,
        IXpsOMStoryFragmentsResource *storyFragments,
        IXpsOMPrintTicketResource *pagePrintTicket,
        IXpsOMImageResource *pageThumbnail);

    HRESULT (STDMETHODCALLTYPE *AddResource)(
        IXpsOMPackageWriter *This,
        IXpsOMResource *resource);

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

    HRESULT (STDMETHODCALLTYPE *IsClosed)(
        IXpsOMPackageWriter *This,
        BOOL *isClosed);

    END_INTERFACE
} IXpsOMPackageWriterVtbl;

interface IXpsOMPackageWriter {
    CONST_VTBL IXpsOMPackageWriterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IXpsOMPackageWriter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IXpsOMPackageWriter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IXpsOMPackageWriter_Release(This) (This)->lpVtbl->Release(This)
/*** IXpsOMPackageWriter methods ***/
#define IXpsOMPackageWriter_StartNewDocument(This,documentPartName,documentPrintTicket,documentStructure,signatureBlockResources,restrictedFonts) (This)->lpVtbl->StartNewDocument(This,documentPartName,documentPrintTicket,documentStructure,signatureBlockResources,restrictedFonts)
#define IXpsOMPackageWriter_AddPage(This,page,advisoryPageDimensions,discardableResourceParts,storyFragments,pagePrintTicket,pageThumbnail) (This)->lpVtbl->AddPage(This,page,advisoryPageDimensions,discardableResourceParts,storyFragments,pagePrintTicket,pageThumbnail)
#define IXpsOMPackageWriter_AddResource(This,resource) (This)->lpVtbl->AddResource(This,resource)
#define IXpsOMPackageWriter_Close(This) (This)->lpVtbl->Close(This)
#define IXpsOMPackageWriter_IsClosed(This,isClosed) (This)->lpVtbl->IsClosed(This,isClosed)
#else
/*** IUnknown methods ***/
static inline HRESULT IXpsOMPackageWriter_QueryInterface(IXpsOMPackageWriter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IXpsOMPackageWriter_AddRef(IXpsOMPackageWriter* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IXpsOMPackageWriter_Release(IXpsOMPackageWriter* This) {
    return This->lpVtbl->Release(This);
}
/*** IXpsOMPackageWriter methods ***/
static inline HRESULT IXpsOMPackageWriter_StartNewDocument(IXpsOMPackageWriter* This,IOpcPartUri *documentPartName,IXpsOMPrintTicketResource *documentPrintTicket,IXpsOMDocumentStructureResource *documentStructure,IXpsOMSignatureBlockResourceCollection *signatureBlockResources,IXpsOMPartUriCollection *restrictedFonts) {
    return This->lpVtbl->StartNewDocument(This,documentPartName,documentPrintTicket,documentStructure,signatureBlockResources,restrictedFonts);
}
static inline HRESULT IXpsOMPackageWriter_AddPage(IXpsOMPackageWriter* This,IXpsOMPage *page,const XPS_SIZE *advisoryPageDimensions,IXpsOMPartUriCollection *discardableResourceParts,IXpsOMStoryFragmentsResource *storyFragments,IXpsOMPrintTicketResource *pagePrintTicket,IXpsOMImageResource *pageThumbnail) {
    return This->lpVtbl->AddPage(This,page,advisoryPageDimensions,discardableResourceParts,storyFragments,pagePrintTicket,pageThumbnail);
}
static inline HRESULT IXpsOMPackageWriter_AddResource(IXpsOMPackageWriter* This,IXpsOMResource *resource) {
    return This->lpVtbl->AddResource(This,resource);
}
static inline HRESULT IXpsOMPackageWriter_Close(IXpsOMPackageWriter* This) {
    return This->lpVtbl->Close(This);
}
static inline HRESULT IXpsOMPackageWriter_IsClosed(IXpsOMPackageWriter* This,BOOL *isClosed) {
    return This->lpVtbl->IsClosed(This,isClosed);
}
#endif
#endif

#endif


#endif  /* __IXpsOMPackageWriter_INTERFACE_DEFINED__ */

#ifndef __MSXPS_LIBRARY_DEFINED__
#define __MSXPS_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_MSXPS, 0xb47491a0, 0xcf33, 0x4fe4, 0x9a,0x48, 0xb0,0xac,0xda,0xe2,0x07,0xe8);

/*****************************************************************************
 * XpsOMObjectFactory coclass
 */

DEFINE_GUID(CLSID_XpsOMObjectFactory, 0xe974d26d, 0x3d9b, 0x4d47, 0x88,0xcc, 0x38,0x72,0xf2,0xdc,0x35,0x85);

#ifdef __cplusplus
class DECLSPEC_UUID("e974d26d-3d9b-4d47-88cc-3872f2dc3585") XpsOMObjectFactory;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(XpsOMObjectFactory, 0xe974d26d, 0x3d9b, 0x4d47, 0x88,0xcc, 0x38,0x72,0xf2,0xdc,0x35,0x85)
#endif
#endif

#endif /* __MSXPS_LIBRARY_DEFINED__ */
/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __xpsobjectmodel_h__ */
