Dmitry Timoshkov : prntvpt: Add support for custom scaling to ticket XML writer.
Alexandre Julliard
julliard at winehq.org
Wed Jun 17 15:54:00 CDT 2020
Module: wine
Branch: master
Commit: 642e82eddf451c43d786ef1e4dbe26ea8af33445
URL: https://source.winehq.org/git/wine.git/?a=commit;h=642e82eddf451c43d786ef1e4dbe26ea8af33445
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Wed Jun 17 13:22:30 2020 +0800
prntvpt: Add support for custom scaling to ticket XML writer.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/prntvpt/ticket.c | 47 +++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 43 insertions(+), 4 deletions(-)
diff --git a/dlls/prntvpt/ticket.c b/dlls/prntvpt/ticket.c
index f012a16f7a..8f1da24af8 100644
--- a/dlls/prntvpt/ticket.c
+++ b/dlls/prntvpt/ticket.c
@@ -825,6 +825,16 @@ static HRESULT create_ParameterInit(IXMLDOMElement *root, const WCHAR *name, IXM
return add_attribute(*child, L"name", name);
}
+static HRESULT create_ParameterRef(IXMLDOMElement *root, const WCHAR *name, IXMLDOMElement **child)
+{
+ HRESULT hr;
+
+ hr = create_element(root, L"psf:ParameterRef", child);
+ if (hr != S_OK) return hr;
+
+ return add_attribute(*child, L"name", name);
+}
+
static HRESULT create_ScoredProperty(IXMLDOMElement *root, const WCHAR *name, IXMLDOMElement **child)
{
HRESULT hr;
@@ -889,12 +899,41 @@ static HRESULT write_PageScaling(IXMLDOMElement *root, const struct ticket *tick
hr = create_Feature(root, L"psk:PageScaling", &feature);
if (hr != S_OK) return hr;
- if (ticket->page.scaling != 100)
- FIXME("page.scaling: %d\n", ticket->page.scaling);
+ if (ticket->page.scaling == 100)
+ {
+ hr = create_Option(feature, L"psk:None", &option);
+ if (hr == S_OK) IXMLDOMElement_Release(option);
+ }
+ else
+ {
+ hr = create_Option(feature, L"psk:CustomSquare", &option);
+ if (hr == S_OK)
+ {
+ IXMLDOMElement *property, *parameter;
+
+ hr = create_ScoredProperty(option, L"psk:Scale", &property);
+ if (hr == S_OK)
+ {
+ hr = create_ParameterRef(property, L"psk:PageScalingScale", ¶meter);
+ if (hr == S_OK)
+ {
+ IXMLDOMElement_Release(parameter);
+
+ hr = create_ParameterInit(root, L"psk:PageScalingScale", ¶meter);
+ if (hr == S_OK)
+ {
+ hr = write_int_value(parameter, ticket->page.scaling);
+ IXMLDOMElement_Release(parameter);
+ }
+ }
+
+ IXMLDOMElement_Release(property);
+ }
- hr = create_Option(feature, L"psk:None", &option);
+ IXMLDOMElement_Release(option);
+ }
+ }
- if (option) IXMLDOMElement_Release(option);
IXMLDOMElement_Release(feature);
return hr;
}
More information about the wine-cvs
mailing list