Dmitry Timoshkov : prntvpt: Add support for PageResolution to ticket XML reader.

Alexandre Julliard julliard at winehq.org
Thu Jun 11 15:26:45 CDT 2020


Module: wine
Branch: master
Commit: babcbe8978540515cbe8ddff23985344ab71e9c5
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=babcbe8978540515cbe8ddff23985344ab71e9c5

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Thu Jun 11 13:59:38 2020 +0800

prntvpt: Add support for PageResolution to ticket XML reader.

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/prntvpt/ticket.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/dlls/prntvpt/ticket.c b/dlls/prntvpt/ticket.c
index 74e9041670..df5cd0399a 100644
--- a/dlls/prntvpt/ticket.c
+++ b/dlls/prntvpt/ticket.c
@@ -334,6 +334,39 @@ static void read_PageScaling(IXMLDOMDocument2 *doc, struct ticket *ticket)
     IXMLDOMNode_Release(node);
 }
 
+static void read_PageResolution(IXMLDOMDocument2 *doc, struct ticket *ticket)
+{
+    IXMLDOMNode *node, *option, *child;
+    HRESULT hr;
+
+    hr = IXMLDOMDocument2_selectSingleNode(doc, (BSTR)L"psf:PrintTicket/psf:Feature[@name='psk:PageResolution']", &node);
+    if (hr != S_OK) return;
+
+    hr = IXMLDOMNode_selectSingleNode(node, (BSTR)L"./psf:Option", &option);
+    if (hr == S_OK)
+    {
+        hr = IXMLDOMNode_selectSingleNode(option, (BSTR)L"./psf:ScoredProperty[@name='psk:ResolutionX']", &child);
+        if (hr == S_OK)
+        {
+            if (read_int_value(child, &ticket->page.resolution.x) == S_OK)
+                TRACE("resolution.x: %d\n", ticket->page.resolution.x);
+            IXMLDOMNode_Release(child);
+        }
+
+        hr = IXMLDOMNode_selectSingleNode(option, (BSTR)L"./psf:ScoredProperty[@name='psk:ResolutionY']", &child);
+        if (hr == S_OK)
+        {
+            if (read_int_value(child, &ticket->page.resolution.y) == S_OK)
+                TRACE("resolution.y: %d\n", ticket->page.resolution.y);
+            IXMLDOMNode_Release(child);
+        }
+
+        IXMLDOMNode_Release(option);
+    }
+
+    IXMLDOMNode_Release(node);
+}
+
 static void set_SelectionNamespaces(IXMLDOMDocument2 *doc)
 {
     IStream *stream;
@@ -430,6 +463,7 @@ static HRESULT parse_ticket(IStream *stream, EPrintTicketScope scope, struct tic
     read_PageMediaSize(doc, ticket);
     read_PageOutputColor(doc, ticket);
     read_PageScaling(doc, ticket);
+    read_PageResolution(doc, ticket);
 
 fail:
     IXMLDOMDocument2_Release(doc);




More information about the wine-cvs mailing list