diff options
author | László Németh <nemeth@numbertext.org> | 2018-12-12 12:58:07 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2019-01-21 10:35:30 +0100 |
commit | 5db1b9e519e1af16d3faf98465b5a901c6bdbb36 (patch) | |
tree | 90de71f0eacba766c34c405995f8b4d5d1ee8e96 /writerfilter | |
parent | cc0d47524002aa97675a32206d1d3b9aa056229d (diff) |
tdf#99631 DOCX: keep zoom of embedded XLSX
and other OLE objects by handling their VisibleArea settings.
(Cherry-picked from the following commits:
5c1a6c9adb5ccfbb869a0a7ac730d8860a1bf405
"DOCX import: set 1:1 scale in embedded XLSX"
69ce3374f90847f357249a41118314508da6bb98
"DOCX import: keep zoom of embedded XLSX"
fc50869a818f5411bf2bbd34db398078308f2ba3
"DOCX export: keep zoom of embedded XLSX")
Change-Id: I3f246b779afd145fe260af83173c1944df21fb1a
Reviewed-on: https://gerrit.libreoffice.org/65271
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 8 | ||||
-rw-r--r-- | writerfilter/source/dmapper/OLEHandler.cxx | 12 | ||||
-rw-r--r-- | writerfilter/source/dmapper/OLEHandler.hxx | 4 |
3 files changed, 24 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index f2a14ceb8f7a..46ff7984ad35 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -1762,6 +1762,14 @@ void DomainMapper_Impl::appendOLE( const OUString& rStreamName, const std::share xOLEProperties->setPropertyValue(getPropertyName( PROP_HEIGHT ), uno::makeAny(aSize.Height)); + OUString aVisAreaWidth = pOLEHandler->GetVisAreaWidth(); + if(!aVisAreaWidth.isEmpty()) + xOLEProperties->setPropertyValue("VisibleAreaWidth", uno::makeAny(aVisAreaWidth)); + + OUString aVisAreaHeight = pOLEHandler->GetVisAreaHeight(); + if(!aVisAreaHeight.isEmpty()) + xOLEProperties->setPropertyValue("VisibleAreaHeight", uno::makeAny(aVisAreaHeight)); + uno::Reference< graphic::XGraphic > xGraphic = pOLEHandler->getReplacement(); xOLEProperties->setPropertyValue(getPropertyName( PROP_GRAPHIC ), uno::makeAny(xGraphic)); diff --git a/writerfilter/source/dmapper/OLEHandler.cxx b/writerfilter/source/dmapper/OLEHandler.cxx index dee9ceb22ae1..fad449489e3c 100644 --- a/writerfilter/source/dmapper/OLEHandler.cxx +++ b/writerfilter/source/dmapper/OLEHandler.cxx @@ -95,8 +95,10 @@ void OLEHandler::lcl_attribute(Id rName, Value & rVal) rVal.getAny() >>= m_xInputStream; break; case NS_ooxml::LN_CT_Object_dxaOrig: + m_sVisAreaWidth = sStringValue; break; case NS_ooxml::LN_CT_Object_dyaOrig: + m_sVisAreaHeight = sStringValue; break; case NS_ooxml::LN_shape: { @@ -262,6 +264,16 @@ OUString const & OLEHandler::GetDrawAspect() const return m_sDrawAspect; } +OUString const & OLEHandler::GetVisAreaWidth() const +{ + return m_sVisAreaWidth; +} + +OUString const & OLEHandler::GetVisAreaHeight() const +{ + return m_sVisAreaHeight; +} + OUString OLEHandler::copyOLEOStream( uno::Reference<text::XTextDocument> const& xTextDocument) { diff --git a/writerfilter/source/dmapper/OLEHandler.hxx b/writerfilter/source/dmapper/OLEHandler.hxx index 6ba2fb34ae1a..b0aae530f37a 100644 --- a/writerfilter/source/dmapper/OLEHandler.hxx +++ b/writerfilter/source/dmapper/OLEHandler.hxx @@ -52,6 +52,8 @@ class OLEHandler : public LoggedProperties OUString m_sProgId; OUString m_sShapeId; OUString m_sDrawAspect; + OUString m_sVisAreaWidth; + OUString m_sVisAreaHeight; OUString m_sObjectId; OUString m_sr_id; /// The stream URL right after the import of the raw data. @@ -90,6 +92,8 @@ public: OUString getCLSID(const css::uno::Reference<css::uno::XComponentContext>& xComponentContext) const; OUString const & GetDrawAspect() const; + OUString const & GetVisAreaWidth() const; + OUString const & GetVisAreaHeight() const; OUString copyOLEOStream(css::uno::Reference<css::text::XTextDocument> const& xTextDocument); |