summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorLászló Németh <nemeth@numbertext.org>2018-12-12 12:58:07 +0100
committerMiklos Vajna <vmiklos@collabora.com>2019-01-21 10:35:30 +0100
commit5db1b9e519e1af16d3faf98465b5a901c6bdbb36 (patch)
tree90de71f0eacba766c34c405995f8b4d5d1ee8e96 /writerfilter
parentcc0d47524002aa97675a32206d1d3b9aa056229d (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.cxx8
-rw-r--r--writerfilter/source/dmapper/OLEHandler.cxx12
-rw-r--r--writerfilter/source/dmapper/OLEHandler.hxx4
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);