[PATCH] include: Add some of the XPS OM interfaces.

Nikolay Sivov nsivov at codeweavers.com
Fri Dec 10 00:09:26 CST 2021


Signed-off-by: Nikolay Sivov <nsivov at 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




More information about the wine-devel mailing list