summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2019-02-04 21:35:53 +0100
committerMiklos Vajna <vmiklos@collabora.com>2019-02-05 09:12:09 +0100
commit209f2fe0304114409434a3bf5f1e08c6613d83c0 (patch)
treeb00d6a753d57719b013900a76b2d6b68cf879b86 /writerfilter
parentc394e6a5c850f750a98244291bfd0b00e72481d7 (diff)
tdf#121867 DOCX filter: handle page width zoom
And other non-fixed zoom types, similar to how DOC does it. Change-Id: Ie84340b4e662d2329b5d3918900adfd0c3e9b8e9 Reviewed-on: https://gerrit.libreoffice.org/67378 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx4
-rw-r--r--writerfilter/source/dmapper/SettingsTable.cxx25
-rw-r--r--writerfilter/source/dmapper/SettingsTable.hxx3
3 files changed, 31 insertions, 1 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 1361782d9002..5cb18fed76b0 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -5802,7 +5802,9 @@ void DomainMapper_Impl::ApplySettingsTable()
{
aViewProps.emplace_back("ZoomFactor", -1, uno::makeAny(m_pSettingsTable->GetZoomFactor()), beans::PropertyState_DIRECT_VALUE);
aViewProps.emplace_back("VisibleBottom", -1, uno::makeAny(sal_Int32(0)), beans::PropertyState_DIRECT_VALUE);
- aViewProps.emplace_back("ZoomType", -1, uno::makeAny(sal_Int16(0)), beans::PropertyState_DIRECT_VALUE);
+ aViewProps.emplace_back("ZoomType", -1,
+ uno::makeAny(m_pSettingsTable->GetZoomType()),
+ beans::PropertyState_DIRECT_VALUE);
}
uno::Reference<container::XIndexContainer> xBox = document::IndexedPropertyValues::create(m_xComponentContext);
xBox->insertByIndex(sal_Int32(0), uno::makeAny(comphelper::containerToSequence(aViewProps)));
diff --git a/writerfilter/source/dmapper/SettingsTable.cxx b/writerfilter/source/dmapper/SettingsTable.cxx
index 12c26049b139..2216e69b78ba 100644
--- a/writerfilter/source/dmapper/SettingsTable.cxx
+++ b/writerfilter/source/dmapper/SettingsTable.cxx
@@ -22,6 +22,7 @@
#include <vector>
#include <rtl/ustring.hxx>
+#include <sfx2/zoomitem.hxx>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/beans/XPropertyState.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
@@ -36,6 +37,24 @@
using namespace com::sun::star;
namespace writerfilter {
+namespace
+{
+/// Maps OOXML <w:zoom w:val="..."> to SvxZoomType.
+sal_Int16 lcl_GetZoomType(Id nType)
+{
+ switch (nType)
+ {
+ case NS_ooxml::LN_Value_doc_ST_Zoom_fullPage:
+ return sal_Int16(SvxZoomType::WHOLEPAGE);
+ case NS_ooxml::LN_Value_doc_ST_Zoom_bestFit:
+ return sal_Int16(SvxZoomType::PAGEWIDTH);
+ case NS_ooxml::LN_Value_doc_ST_Zoom_textFit:
+ return sal_Int16(SvxZoomType::OPTIMAL);
+ }
+
+ return sal_Int16(SvxZoomType::PERCENT);
+}
+}
namespace dmapper
{
@@ -221,6 +240,7 @@ struct SettingsTable_Impl
bool m_bRecordChanges;
bool m_bLinkStyles;
sal_Int16 m_nZoomFactor;
+ sal_Int16 m_nZoomType = 0;
Id m_nView;
bool m_bEvenAndOddHeaders;
bool m_bUsePrinterMetrics;
@@ -292,6 +312,9 @@ void SettingsTable::lcl_attribute(Id nName, Value & val)
case NS_ooxml::LN_CT_Zoom_percent:
m_pImpl->m_nZoomFactor = nIntValue;
break;
+ case NS_ooxml::LN_CT_Zoom_val:
+ m_pImpl->m_nZoomType = lcl_GetZoomType(nIntValue);
+ break;
case NS_ooxml::LN_CT_Language_val:
m_pImpl->m_pThemeFontLangProps[0].Name = "val";
m_pImpl->m_pThemeFontLangProps[0].Value <<= sStringValue;
@@ -503,6 +526,8 @@ sal_Int16 SettingsTable::GetZoomFactor() const
return m_pImpl->m_nZoomFactor;
}
+sal_Int16 SettingsTable::GetZoomType() const { return m_pImpl->m_nZoomType; }
+
Id SettingsTable::GetView() const
{
return m_pImpl->m_nView;
diff --git a/writerfilter/source/dmapper/SettingsTable.hxx b/writerfilter/source/dmapper/SettingsTable.hxx
index edffff67cfeb..7d539336f78e 100644
--- a/writerfilter/source/dmapper/SettingsTable.hxx
+++ b/writerfilter/source/dmapper/SettingsTable.hxx
@@ -57,6 +57,9 @@ class SettingsTable : public LoggedProperties, public LoggedTable
/// What's the zoom factor set in percents?
sal_Int16 GetZoomFactor() const;
+ /// Gets the type of the zoom.
+ sal_Int16 GetZoomType() const;
+
/// What's the requested view? E.g. "web".
Id GetView() const;