diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2017-12-08 19:31:02 +0100 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2017-12-09 18:45:39 +0100 |
commit | 7f60fb34eda56c2488f6197a59cb2b35e1e81503 (patch) | |
tree | 90a0d6c27cbc06a8bf5704925eb479db5a15c68a /filter/source/msfilter | |
parent | 0622e5db4e330de000f1318540c85e3223f45b40 (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
Diffstat (limited to 'filter/source/msfilter')
-rw-r--r-- | filter/source/msfilter/msdffimp.cxx | 42 |
1 files changed, 26 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 ); |