Module: wine Branch: master Commit: a7a977efd9cd7d5bf88625d863d8c376ddaffa77 URL: https://source.winehq.org/git/wine.git/?a=commit;h=a7a977efd9cd7d5bf88625d86...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Thu Jun 11 14:00:11 2020 +0800
prntvpt: Add support for custom scaling to ticket XML reader.
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/prntvpt/ticket.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/dlls/prntvpt/ticket.c b/dlls/prntvpt/ticket.c index 7f65d60352..36e343bbf2 100644 --- a/dlls/prntvpt/ticket.c +++ b/dlls/prntvpt/ticket.c @@ -297,6 +297,7 @@ static void read_PageOutputColor(IXMLDOMDocument2 *doc, struct ticket *ticket) static void read_PageScaling(IXMLDOMDocument2 *doc, struct ticket *ticket) { IXMLDOMNode *node, *option; + int scaling = 0; HRESULT hr;
hr = IXMLDOMDocument2_selectSingleNode(doc, (BSTR)L"psf:PrintTicket/psf:Feature[@name='psk:PageScaling']", &node); @@ -317,13 +318,11 @@ static void read_PageScaling(IXMLDOMDocument2 *doc, struct ticket *ticket) if (hr == S_OK && V_VT(&var) == VT_BSTR) { if (!wcscmp(V_BSTR(&var), L"psk:None")) - ticket->page.scaling = 100; + scaling = 100; + else if (!wcscmp(V_BSTR(&var), L"psk:CustomSquare")) + scaling = 0; /* psk:PageScalingScale */ else - { FIXME("%s\n", wine_dbgstr_w(V_BSTR(&var))); - ticket->page.scaling = 100; - } - TRACE("scaling: %s => %d\n", wine_dbgstr_w(V_BSTR(&var)), ticket->page.scaling); } VariantClear(&var);
@@ -332,6 +331,23 @@ static void read_PageScaling(IXMLDOMDocument2 *doc, struct ticket *ticket) }
IXMLDOMNode_Release(node); + + if (!scaling) + { + hr = IXMLDOMDocument2_selectSingleNode(doc, (BSTR)L"psf:PrintTicket/psf:ParameterInit[@name='psk:PageScalingScale']", &node); + if (hr == S_OK) + { + read_int_value(node, &scaling); + IXMLDOMNode_Release(node); + } + } + + if (scaling) + ticket->page.scaling = scaling; + else + ticket->page.scaling = 100; + + TRACE("page.scaling: %d\n", ticket->page.scaling); }
static void read_PageResolution(IXMLDOMDocument2 *doc, struct ticket *ticket)