bnc#881024 Don't world transform font size in WMF/EMF import

Change-Id: Ia865b84ee2b159ff7251ab5a769a2b635dd2a1ea
This commit is contained in:
Tomaž Vajngerl
2014-07-18 13:36:13 +02:00
parent 88d1d90fb7
commit 8f705df122
2 changed files with 14 additions and 5 deletions

View File

@@ -389,13 +389,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 )
{
@@ -457,7 +466,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;

View File

@@ -635,7 +635,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 );