summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2017-12-08 19:31:02 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2017-12-09 18:45:39 +0100
commit7f60fb34eda56c2488f6197a59cb2b35e1e81503 (patch)
tree90a0d6c27cbc06a8bf5704925eb479db5a15c68a
parent0622e5db4e330de000f1318540c85e3223f45b40 (diff)
tdf#114308 DOC import correctly watermark without padding
Change-Id: If44eb4d1354386f66c697206db9ab4d7f2be374d Reviewed-on: https://gerrit.libreoffice.org/46110 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/46146
-rw-r--r--filter/source/msfilter/msdffimp.cxx42
-rwxr-xr-xsw/qa/extras/ww8export/data/tdf114308.docbin0 -> 27136 bytes
-rw-r--r--sw/qa/extras/ww8export/ww8export2.cxx8
3 files changed, 34 insertions, 16 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 1c1243f33fb2..50fa3619c65d 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -4424,24 +4424,34 @@ SdrObject* SvxMSDffManager::ImportShape( const DffRecordHeader& rHd, SvStream& r
aSet.Put(makeSdrTextAutoGrowHeightItem(false));
aSet.Put(makeSdrTextAutoGrowWidthItem(false));
- double fRatio = 0;
- VclPtr<VirtualDevice> pDevice = VclPtr<VirtualDevice>::Create();
- vcl::Font aFont = pDevice->GetFont();
- aFont.SetFamilyName( aFontName );
- aFont.SetFontSize( Size( 0, 96 ) );
- pDevice->SetFont( aFont );
-
- auto nTextWidth = pDevice->GetTextWidth( aObjectText );
- OUString aObjName = GetPropertyString( DFF_Prop_wzName, rSt );
- if ( nTextWidth && aObjData.eShapeType == mso_sptTextPlainText
- && aObjName.match( "PowerPlusWaterMarkObject" ) )
+ bool bWithPadding = !( ngtextFStrikethrough & use_gtextFBestFit
+ && ngtextFStrikethrough & use_gtextFShrinkFit
+ && ngtextFStrikethrough & use_gtextFStretch
+ && ngtextFStrikethrough & gtextFBestFit
+ && ngtextFStrikethrough & gtextFShrinkFit
+ && ngtextFStrikethrough & gtextFStretch );
+
+ if ( bWithPadding )
{
- fRatio = (double)pDevice->GetTextHeight() / nTextWidth;
- sal_Int32 nNewHeight = fRatio * aObjData.aBoundRect.getWidth();
- sal_Int32 nPaddingY = aObjData.aBoundRect.getHeight() - nNewHeight;
+ // trim, remove additional space
+ VclPtr<VirtualDevice> pDevice = VclPtr<VirtualDevice>::Create();
+ vcl::Font aFont = pDevice->GetFont();
+ aFont.SetFamilyName( aFontName );
+ aFont.SetFontSize( Size( 0, 96 ) );
+ pDevice->SetFont( aFont );
+
+ auto nTextWidth = pDevice->GetTextWidth( aObjectText );
+ OUString aObjName = GetPropertyString( DFF_Prop_wzName, rSt );
+ if ( nTextWidth && aObjData.eShapeType == mso_sptTextPlainText
+ && aObjName.match( "PowerPlusWaterMarkObject" ) )
+ {
+ double fRatio = (double)pDevice->GetTextHeight() / nTextWidth;
+ sal_Int32 nNewHeight = fRatio * aObjData.aBoundRect.getWidth();
+ sal_Int32 nPaddingY = aObjData.aBoundRect.getHeight() - nNewHeight;
- if ( nPaddingY > 0 )
- aObjData.aBoundRect.setHeight( nNewHeight );
+ if ( nPaddingY > 0 )
+ aObjData.aBoundRect.setHeight( nNewHeight );
+ }
}
}
pRet->SetMergedItemSet( aSet );
diff --git a/sw/qa/extras/ww8export/data/tdf114308.doc b/sw/qa/extras/ww8export/data/tdf114308.doc
new file mode 100755
index 000000000000..36e6c7ec6999
--- /dev/null
+++ b/sw/qa/extras/ww8export/data/tdf114308.doc
Binary files differ
diff --git a/sw/qa/extras/ww8export/ww8export2.cxx b/sw/qa/extras/ww8export/ww8export2.cxx
index 480511334c76..0695c309951b 100644
--- a/sw/qa/extras/ww8export/ww8export2.cxx
+++ b/sw/qa/extras/ww8export/ww8export2.cxx
@@ -274,6 +274,14 @@ DECLARE_WW8EXPORT_TEST(testTdf91687, "tdf91687.doc")
CPPUNIT_ASSERT_EQUAL((sal_Int32)18105, xWatermark->getSize().Width);
}
+DECLARE_WW8EXPORT_TEST(testTdf114308, "tdf114308.doc")
+{
+ // Watermark with no additional padding
+ uno::Reference<drawing::XShape> xWatermark = getShape(1);
+
+ CPPUNIT_ASSERT_EQUAL((sal_Int32)8729, xWatermark->getSize().Height);
+}
+
DECLARE_WW8EXPORT_TEST(testTdf111480, "tdf111480.doc")
{
// Circular text was imported horizontally