Dmitry Timoshkov : prntvpt: Add support for PageOrientation to ticket XML reader.
Alexandre Julliard
julliard at winehq.org
Thu Jun 11 15:26:45 CDT 2020
Module: wine
Branch: master
Commit: 34d4ade17502d5bb26adcbc3a6de0f06184d895d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=34d4ade17502d5bb26adcbc3a6de0f06184d895d
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Thu Jun 11 13:59:41 2020 +0800
prntvpt: Add support for PageOrientation 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 | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/dlls/prntvpt/ticket.c b/dlls/prntvpt/ticket.c
index df5cd0399a..1354d2e0f1 100644
--- a/dlls/prntvpt/ticket.c
+++ b/dlls/prntvpt/ticket.c
@@ -367,6 +367,48 @@ static void read_PageResolution(IXMLDOMDocument2 *doc, struct ticket *ticket)
IXMLDOMNode_Release(node);
}
+static void read_PageOrientation(IXMLDOMDocument2 *doc, struct ticket *ticket)
+{
+ IXMLDOMNode *node, *option;
+ HRESULT hr;
+
+ hr = IXMLDOMDocument2_selectSingleNode(doc, (BSTR)L"psf:PrintTicket/psf:Feature[@name='psk:PageOrientation']", &node);
+ if (hr != S_OK) return;
+
+ hr = IXMLDOMNode_selectSingleNode(node, (BSTR)L"./psf:Option", &option);
+ if (hr == S_OK)
+ {
+ IXMLDOMElement *element;
+
+ hr = IXMLDOMNode_QueryInterface(option, &IID_IXMLDOMElement, (void **)&element);
+ if (hr == S_OK)
+ {
+ VARIANT var;
+
+ VariantInit(&var);
+ hr = IXMLDOMElement_getAttribute(element, (BSTR)L"name", &var);
+ if (hr == S_OK && V_VT(&var) == VT_BSTR)
+ {
+ if (!wcscmp(V_BSTR(&var), L"psk:Portrait"))
+ ticket->page.orientation = DMORIENT_PORTRAIT;
+ else if (!wcscmp(V_BSTR(&var), L"psk:Landscape"))
+ ticket->page.orientation = DMORIENT_LANDSCAPE;
+ else
+ {
+ FIXME("%s\n", wine_dbgstr_w(V_BSTR(&var)));
+ ticket->page.orientation = DMORIENT_PORTRAIT;
+ }
+ TRACE("orientation: %s => %d\n", wine_dbgstr_w(V_BSTR(&var)), ticket->page.orientation);
+ }
+ VariantClear(&var);
+
+ IXMLDOMElement_Release(element);
+ }
+ }
+
+ IXMLDOMNode_Release(node);
+}
+
static void set_SelectionNamespaces(IXMLDOMDocument2 *doc)
{
IStream *stream;
@@ -464,6 +506,7 @@ static HRESULT parse_ticket(IStream *stream, EPrintTicketScope scope, struct tic
read_PageOutputColor(doc, ticket);
read_PageScaling(doc, ticket);
read_PageResolution(doc, ticket);
+ read_PageOrientation(doc, ticket);
fail:
IXMLDOMDocument2_Release(doc);
More information about the wine-cvs
mailing list