summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.com>2014-07-18 13:36:13 +0200
committerAndras Timar <andras.timar@collabora.com>2014-07-21 18:29:57 +0000
commitf5949d09321e3ac62538df0e70e58284bd1cab32 (patch)
tree1b69ccd46267e10426988356e07167ad8bf44146
parent48242717e3a7a8d4c936bad0b96d75cca70b5e0b (diff)
bnc#881024 Don't world transform font size in WMF/EMF import
Conflicts: vcl/source/filter/wmf/winmtf.cxx Change-Id: Ia865b84ee2b159ff7251ab5a769a2b635dd2a1ea Reviewed-on: https://gerrit.libreoffice.org/10434 Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--vcl/source/filter/wmf/winmtf.cxx18
-rw-r--r--vcl/source/filter/wmf/winmtf.hxx2
2 files changed, 14 insertions, 6 deletions
diff --git a/vcl/source/filter/wmf/winmtf.cxx b/vcl/source/filter/wmf/winmtf.cxx
index 38e79a8696d3..d8c2a67b4d6a 100644
--- a/vcl/source/filter/wmf/winmtf.cxx
+++ b/vcl/source/filter/wmf/winmtf.cxx
@@ -412,14 +412,22 @@ Point WinMtfOutput::ImplMap( const Point& rPt )
return Point();
};
-
-Size WinMtfOutput::ImplMap( const Size& rSz )
+Size WinMtfOutput::ImplMap(const Size& rSz, bool bDoWorldTransform)
{
if ( mnWinExtX && mnWinExtY )
{
// #i121382# apply the whole WorldTransform, else a rotation will be misinterpreted
- double fWidth = rSz.Width() * maXForm.eM11 + rSz.Height() * maXForm.eM21;
- double fHeight = rSz.Width() * maXForm.eM12 + rSz.Height() * maXForm.eM22;
+ double fWidth, fHeight;
+ if (bDoWorldTransform)
+ {
+ fWidth = rSz.Width() * maXForm.eM11 + rSz.Height() * maXForm.eM21;
+ fHeight = rSz.Width() * maXForm.eM12 + rSz.Height() * maXForm.eM22;
+ }
+ else
+ {
+ fWidth = rSz.Width();
+ fHeight = rSz.Height();
+ }
if ( mnGfxMode == GM_COMPATIBLE )
{
@@ -483,7 +491,7 @@ void WinMtfOutput::ImplMap( Font& rFont )
{
// !!! HACK: we now always set the width to zero because the OS width is interpreted differently;
// must later be made portable in SV (KA 1996-02-08)
- Size aFontSize = ImplMap ( rFont.GetSize() );
+ Size aFontSize = ImplMap (rFont.GetSize(), false);
if( aFontSize.Height() < 0 )
aFontSize.Height() *= -1;
diff --git a/vcl/source/filter/wmf/winmtf.hxx b/vcl/source/filter/wmf/winmtf.hxx
index 9db92458cb24..e2c1f1cdb590 100644
--- a/vcl/source/filter/wmf/winmtf.hxx
+++ b/vcl/source/filter/wmf/winmtf.hxx
@@ -632,7 +632,7 @@ class WinMtfOutput
Point ImplMap( const Point& rPt );
Point ImplScale( const Point& rPt );
- Size ImplMap( const Size& rSz );
+ Size ImplMap( const Size& rSize, bool bDoWorldTransform = true);
Rectangle ImplMap( const Rectangle& rRectangle );
void ImplMap( Font& rFont );
Polygon& ImplMap( Polygon& rPolygon );