Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
include/Makefile.in | 2 +
include/xpsobjectmodel.idl | 546 +++++++++++++++++++++++++++++++++++
include/xpsobjectmodel_1.idl | 49 ++++
3 files changed, 597 insertions(+)
create mode 100644 include/xpsobjectmodel.idl
create mode 100644 include/xpsobjectmodel_1.idl
diff --git a/include/Makefile.in b/include/Makefile.in
index 302e0bb2a73..e5ae8429ed0 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -879,4 +879,6 @@ SOURCES = \
xmldso.idl \
xmldsodid.h \
xmllite.idl \
+ xpsobjectmodel.idl \
+ xpsobjectmodel_1.idl \
zmouse.h
diff --git a/include/xpsobjectmodel.idl b/include/xpsobjectmodel.idl
new file mode 100644
index 00000000000..8f8a8313bd1
--- /dev/null
+++ b/include/xpsobjectmodel.idl
@@ -0,0 +1,546 @@
+/*
+ * Copyright 2021 Nikolay Sivov for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "msopc.idl";
+
+interface IXpsOMPrintTicketResource;
+interface IXpsOMDocumentStructureResource;
+interface IXpsOMSignatureBlockResourceCollection;
+interface IXpsOMPartUriCollection;
+interface IXpsOMPage;
+interface IXpsOMStoryFragmentsResource;
+interface IXpsOMImageResource;
+interface IXpsOMResource;
+interface IXpsOMObjectFactory;
+interface IXpsOMSignatureBlockResource;
+interface IXpsOMDictionary;
+interface IXpsOMRemoteDictionaryResource;
+interface IXpsOMPartResources;
+interface IXpsOMDocument;
+interface IXpsOMPageReference;
+interface IXpsOMCanvas;
+interface IXpsOMFontResource;
+interface IXpsOMGlyphs;
+interface IXpsOMPath;
+interface IXpsOMGeometry;
+interface IXpsOMGeometryFigure;
+interface IXpsOMMatrixTransform;
+interface IXpsOMColorProfileResource;
+interface IXpsOMSolidColorBrush;
+interface IXpsOMImageBrush;
+interface IXpsOMVisualBrush;
+interface IXpsOMGradientStop;
+interface IXpsOMLinearGradientBrush;
+interface IXpsOMRadialGradientBrush;
+interface IXpsOMCoreProperties;
+interface IXpsOMPackageWriter;
+interface IXpsOMPackage;
+
+typedef [v1_enum] enum
+{
+ XPS_COLOR_TYPE_SRGB = 1,
+ XPS_COLOR_TYPE_SCRGB,
+ XPS_COLOR_TYPE_CONTEXT
+} XPS_COLOR_TYPE;
+
+typedef [v1_enum] enum
+{
+ XPS_IMAGE_TYPE_JPEG = 1,
+ XPS_IMAGE_TYPE_PNG,
+ XPS_IMAGE_TYPE_TIFF,
+ XPS_IMAGE_TYPE_WDP,
+ XPS_IMAGE_TYPE_JXR
+} XPS_IMAGE_TYPE;
+
+typedef [v1_enum] enum
+{
+ XPS_FONT_EMBEDDING_NORMAL = 1,
+ XPS_FONT_EMBEDDING_OBFUSCATED,
+ XPS_FONT_EMBEDDING_RESTRICTED,
+ XPS_FONT_EMBEDDING_RESTRICTED_UNOBFUSCATED
+} XPS_FONT_EMBEDDING;
+
+typedef [v1_enum] enum
+{
+ XPS_INTERLEAVING_OFF = 1,
+ XPS_INTERLEAVING_ON,
+} XPS_INTERLEAVING;
+
+typedef struct
+{
+ FLOAT width;
+ FLOAT height;
+} XPS_SIZE;
+
+typedef struct
+{
+ FLOAT x;
+ FLOAT y;
+} XPS_POINT;
+
+typedef struct
+{
+ FLOAT x;
+ FLOAT y;
+ FLOAT width;
+ FLOAT height;
+} XPS_RECT;
+
+typedef struct
+{
+ FLOAT m11;
+ FLOAT m12;
+ FLOAT m21;
+ FLOAT m22;
+ FLOAT m31;
+ FLOAT m32;
+} XPS_MATRIX;
+
+typedef union switch (XPS_COLOR_TYPE colorType) value
+{
+ case XPS_COLOR_TYPE_SRGB:
+ struct
+ {
+ UINT8 alpha, red, green, blue;
+ } sRGB;
+ case XPS_COLOR_TYPE_SCRGB:
+ struct
+ {
+ FLOAT alpha, red, green, blue;
+ } scRGB;
+ case XPS_COLOR_TYPE_CONTEXT:
+ struct
+ {
+ UINT8 channelCount;
+ FLOAT channels[9];
+ } context;
+} XPS_COLOR;
+
+[
+ object,
+ uuid(74eb2f0b-a91e-4486-afac-0fabeca3dfc6)
+]
+interface IXpsOMPart : IUnknown
+{
+ HRESULT GetPartName(
+ [out, retval] IOpcPartUri **partUri
+ );
+
+ HRESULT SetPartName(
+ [in] IOpcPartUri *partUri
+ );
+}
+
+[
+ object,
+ pointer_default(ref),
+ uuid(d1c87f0d-e947-4754-8a25-971478f7e83e)
+]
+interface IXpsOMDocumentCollection : IUnknown
+{
+ HRESULT GetCount(
+ [out, retval] UINT32 *count
+ );
+
+ HRESULT GetAt(
+ [in] UINT32 index,
+ [out, retval] IXpsOMDocument **document
+ );
+
+ HRESULT InsertAt(
+ [in] UINT32 index,
+ [in] IXpsOMDocument *document
+ );
+
+ HRESULT RemoveAt(
+ [in] UINT32 index
+ );
+
+ HRESULT SetAt(
+ [in] UINT32 index,
+ [in] IXpsOMDocument *document
+ );
+
+ HRESULT Append(
+ [in] IXpsOMDocument *document
+ );
+}
+
+[
+ object,
+ pointer_default(ref),
+ uuid(56492eb4-d8d5-425e-8256-4c2b64ad0264)
+]
+interface IXpsOMDocumentSequence : IXpsOMPart
+{
+ HRESULT GetOwner(
+ [out, retval] IXpsOMPackage **package
+ );
+
+ HRESULT GetDocuments(
+ [out, retval] IXpsOMDocumentCollection **documents
+ );
+
+ HRESULT GetPrintTicketResource(
+ [out, retval] IXpsOMPrintTicketResource **printTicketResource
+ );
+
+ HRESULT SetPrintTicketResource(
+ [in] IXpsOMPrintTicketResource *printTicketResource
+ );
+}
+
+[
+ object,
+ local,
+ pointer_default(ref),
+ uuid(18c3df65-81e1-4674-91dc-fc452f5a416f)
+]
+interface IXpsOMPackage : IUnknown
+{
+ HRESULT GetDocumentSequence(
+ [out, retval] IXpsOMDocumentSequence **documentSequence
+ );
+
+ HRESULT SetDocumentSequence(
+ [in] IXpsOMDocumentSequence *documentSequence
+ );
+
+ HRESULT GetCoreProperties(
+ [out, retval] IXpsOMCoreProperties **coreProperties
+ );
+
+ HRESULT SetCoreProperties(
+ [in] IXpsOMCoreProperties *coreProperties
+ );
+
+ HRESULT GetDiscardControlPartName(
+ [out, retval] IOpcPartUri **discardControlPartUri
+ );
+
+ HRESULT SetDiscardControlPartName(
+ [in] IOpcPartUri *discardControlPartUri
+ );
+
+ HRESULT GetThumbnailResource(
+ [out, retval] IXpsOMImageResource **imageResource
+ );
+
+ HRESULT SetThumbnailResource(
+ [in] IXpsOMImageResource *imageResource
+ );
+
+ HRESULT WriteToFile(
+ [in, string] LPCWSTR fileName,
+ [in, unique] LPSECURITY_ATTRIBUTES securityAttributes,
+ [in] DWORD flagsAndAttributes,
+ [in] BOOL optimizeMarkupSize
+ );
+
+ HRESULT WriteToStream(
+ [in] ISequentialStream *stream,
+ [in] BOOL optimizeMarkupSize
+ );
+}
+
+[
+ object,
+ local,
+ pointer_default(ref),
+ uuid(f9b2a685-a50d-4fc2-b764-b56e093ea0ca),
+]
+interface IXpsOMObjectFactory : IUnknown
+{
+ HRESULT CreatePackage(
+ [out, retval] IXpsOMPackage **package
+ );
+
+ HRESULT CreatePackageFromFile(
+ [in, string] LPCWSTR filename,
+ [in] BOOL reuseObjects,
+ [out, retval] IXpsOMPackage **package
+ );
+
+ HRESULT CreatePackageFromStream(
+ [in] IStream *stream,
+ [in] BOOL reuseObjects,
+ [out, retval] IXpsOMPackage **package
+ );
+
+ HRESULT CreateStoryFragmentsResource(
+ [in] IStream *acquiredStream,
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMStoryFragmentsResource **storyFragmentsResource
+ );
+
+ HRESULT CreateDocumentStructureResource(
+ [in] IStream *acquiredStream,
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMDocumentStructureResource **documentStructureResource
+ );
+
+ HRESULT CreateSignatureBlockResource(
+ [in] IStream *acquiredStream,
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMSignatureBlockResource **signatureBlockResource
+ );
+
+ HRESULT CreateRemoteDictionaryResource(
+ [in] IXpsOMDictionary *dictionary,
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMRemoteDictionaryResource **remoteDictionaryResource
+ );
+
+ HRESULT CreateRemoteDictionaryResourceFromStream(
+ [in] IStream *dictionaryMarkupStream,
+ [in] IOpcPartUri *dictionaryPartUri,
+ [in] IXpsOMPartResources *resources,
+ [out, retval] IXpsOMRemoteDictionaryResource **dictionaryResource
+ );
+
+ HRESULT CreatePartResources(
+ [out, retval] IXpsOMPartResources **partResources
+ );
+
+ HRESULT CreateDocumentSequence(
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMDocumentSequence **documentSequence
+ );
+
+ HRESULT CreateDocument(
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMDocument **document
+ );
+
+ HRESULT CreatePageReference(
+ [in] const XPS_SIZE *advisoryPageDimensions,
+ [out, retval] IXpsOMPageReference **pageReference
+ );
+
+ HRESULT CreatePage(
+ [in] const XPS_SIZE *pageDimensions,
+ [in, string] LPCWSTR language,
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMPage **page
+ );
+
+ HRESULT CreatePageFromStream(
+ [in] IStream *pageMarkupStream,
+ [in] IOpcPartUri *partUri,
+ [in] IXpsOMPartResources *resources,
+ [in] BOOL reuseObjects,
+ [out, retval] IXpsOMPage **page
+ );
+
+ HRESULT CreateCanvas(
+ [out, retval] IXpsOMCanvas **canvas
+ );
+
+ HRESULT CreateGlyphs(
+ [in] IXpsOMFontResource *fontResource,
+ [out, retval] IXpsOMGlyphs **glyphs
+ );
+
+ HRESULT CreatePath(
+ [out, retval] IXpsOMPath **path
+ );
+
+ HRESULT CreateGeometry(
+ [out, retval] IXpsOMGeometry **geometry
+ );
+
+ HRESULT CreateGeometryFigure(
+ [in] const XPS_POINT *startPoint,
+ [out, retval] IXpsOMGeometryFigure **figure
+ );
+
+ HRESULT CreateMatrixTransform(
+ [in] const XPS_MATRIX *matrix,
+ [out, retval] IXpsOMMatrixTransform **transform
+ );
+
+ HRESULT CreateSolidColorBrush(
+ [in] const XPS_COLOR *color,
+ [in] IXpsOMColorProfileResource *colorProfile,
+ [out, retval] IXpsOMSolidColorBrush **solidColorBrush
+ );
+
+ HRESULT CreateColorProfileResource(
+ [in] IStream *acquiredStream,
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMColorProfileResource **colorProfileResource
+ );
+
+ HRESULT CreateImageBrush(
+ [in] IXpsOMImageResource *image,
+ [in] const XPS_RECT *viewBox,
+ [in] const XPS_RECT *viewPort,
+ [out, retval] IXpsOMImageBrush **imageBrush
+ );
+
+ HRESULT CreateVisualBrush(
+ [in] const XPS_RECT *viewBox,
+ [in] const XPS_RECT *viewPort,
+ [out, retval] IXpsOMVisualBrush **visualBrush
+ );
+
+ HRESULT CreateImageResource(
+ [in] IStream *acquiredStream,
+ [in] XPS_IMAGE_TYPE contentType,
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMImageResource **imageResource
+ );
+
+ HRESULT CreatePrintTicketResource(
+ [in] IStream *acquiredStream,
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMPrintTicketResource **printTicketResource
+ );
+
+ HRESULT CreateFontResource(
+ [in] IStream *acquiredStream,
+ [in] XPS_FONT_EMBEDDING fontEmbedding,
+ [in] IOpcPartUri *partUri,
+ [in] BOOL isObfSourceStream,
+ [out, retval] IXpsOMFontResource **fontResource
+ );
+
+ HRESULT CreateGradientStop(
+ [in] const XPS_COLOR *color,
+ [in] IXpsOMColorProfileResource *colorProfile,
+ [in] FLOAT offset,
+ [out, retval] IXpsOMGradientStop **gradientStop
+ );
+
+ HRESULT CreateLinearGradientBrush(
+ [in] IXpsOMGradientStop *gradStop1,
+ [in] IXpsOMGradientStop *gradStop2,
+ [in] const XPS_POINT *startPoint,
+ [in] const XPS_POINT *endPoint,
+ [out, retval] IXpsOMLinearGradientBrush **linearGradientBrush
+ );
+
+ HRESULT CreateRadialGradientBrush
+ (
+ [in] IXpsOMGradientStop *gradStop1,
+ [in] IXpsOMGradientStop *gradStop2,
+ [in] const XPS_POINT *centerPoint,
+ [in] const XPS_POINT *gradientOrigin,
+ [in] const XPS_SIZE *radiiSizes,
+ [out, retval] IXpsOMRadialGradientBrush **radialGradientBrush
+ );
+
+ HRESULT CreateCoreProperties(
+ [in] IOpcPartUri *partUri,
+ [out, retval] IXpsOMCoreProperties **coreProperties
+ );
+
+ HRESULT CreateDictionary(
+ [out, retval] IXpsOMDictionary **dictionary
+ );
+
+ HRESULT CreatePartUriCollection(
+ [out, retval] IXpsOMPartUriCollection **partUriCollection
+ );
+
+ HRESULT CreatePackageWriterOnFile(
+ [in, string] LPCWSTR fileName,
+ [in, unique] LPSECURITY_ATTRIBUTES securityAttributes,
+ [in] DWORD flagsAndAttributes,
+ [in] BOOL optimizeMarkupSize,
+ [in] XPS_INTERLEAVING interleaving,
+ [in] IOpcPartUri *documentSequencePartName,
+ [in] IXpsOMCoreProperties *coreProperties,
+ [in] IXpsOMImageResource *packageThumbnail,
+ [in] IXpsOMPrintTicketResource *documentSequencePrintTicket,
+ [in] IOpcPartUri *discardControlPartName,
+ [out, retval] IXpsOMPackageWriter **packageWriter
+ );
+
+ HRESULT CreatePackageWriterOnStream
+ (
+ [in] ISequentialStream *outputStream,
+ [in] BOOL optimizeMarkupSize,
+ [in] XPS_INTERLEAVING interleaving,
+ [in] IOpcPartUri *documentSequencePartName,
+ [in] IXpsOMCoreProperties *coreProperties,
+ [in] IXpsOMImageResource *packageThumbnail,
+ [in] IXpsOMPrintTicketResource *documentSequencePrintTicket,
+ [in] IOpcPartUri *discardControlPartName,
+ [out, retval] IXpsOMPackageWriter **packageWriter
+ );
+
+ HRESULT CreatePartUri(
+ [in, string] LPCWSTR uri,
+ [out, retval] IOpcPartUri **partUri
+ );
+
+ HRESULT CreateReadOnlyStreamOnFile(
+ [in, string] LPCWSTR filename,
+ [out, retval] IStream **stream
+ );
+}
+
+[
+ object,
+ uuid(4e2aa182-a443-42c6-b41b-4f8e9de73ff9)
+]
+interface IXpsOMPackageWriter : IUnknown
+{
+ HRESULT StartNewDocument(
+ [in] IOpcPartUri *documentPartName,
+ [in] IXpsOMPrintTicketResource *documentPrintTicket,
+ [in] IXpsOMDocumentStructureResource *documentStructure,
+ [in] IXpsOMSignatureBlockResourceCollection *signatureBlockResources,
+ [in] IXpsOMPartUriCollection *restrictedFonts
+ );
+
+ HRESULT AddPage(
+ [in] IXpsOMPage *page,
+ [in] const XPS_SIZE *advisoryPageDimensions,
+ [in] IXpsOMPartUriCollection *discardableResourceParts,
+ [in] IXpsOMStoryFragmentsResource *storyFragments,
+ [in] IXpsOMPrintTicketResource *pagePrintTicket,
+ [in] IXpsOMImageResource *pageThumbnail
+ );
+
+ HRESULT AddResource(
+ [in] IXpsOMResource *resource
+ );
+
+ HRESULT Close();
+
+ HRESULT IsClosed(
+ [out, retval] BOOL *isClosed
+ );
+}
+
+[
+ uuid(b47491a0-cf33-4fe4-9a48-b0acdae207e8)
+]
+library MSXPS
+{
+[
+ uuid(e974d26d-3d9b-4d47-88cc-3872f2dc3585)
+]
+coclass XpsOMObjectFactory
+{
+ interface IXpsOMObjectFactory;
+}
+
+}
diff --git a/include/xpsobjectmodel_1.idl b/include/xpsobjectmodel_1.idl
new file mode 100644
index 00000000000..f10ffeb81a0
--- /dev/null
+++ b/include/xpsobjectmodel_1.idl
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2021 Nikolay Sivov for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "xpsobjectmodel.idl";
+
+typedef [v1_enum] enum
+{
+ XPS_DOCUMENT_TYPE_UNSPECIFIED = 1,
+ XPS_DOCUMENT_TYPE_XPS,
+ XPS_DOCUMENT_TYPE_OPENXPS
+} XPS_DOCUMENT_TYPE;
+
+[
+ object,
+ local,
+ pointer_default(ref),
+ uuid(3b0b6d38-53ad-41da-b212-d37637a6714e),
+]
+interface IXpsDocumentPackageTarget : IUnknown
+{
+ HRESULT GetXpsOMPackageWriter(
+ [in] IOpcPartUri *documentpart,
+ [in] IOpcPartUri *controlpart,
+ [out, retval] IXpsOMPackageWriter **writer
+ );
+
+ HRESULT GetXpsOMFactory(
+ [out, retval] IXpsOMObjectFactory **factory
+ );
+
+ HRESULT GetXpsType(
+ [out, retval] XPS_DOCUMENT_TYPE *document_type
+ );
+}
--
2.33.0