Kaydet (Commit) d0ebb70c authored tarafından Armin Le Grand's avatar Armin Le Grand

i123216 No FontScaling by WorldTransform on WMF import

üst f5c3f1a0
...@@ -1023,14 +1023,18 @@ sal_Bool EnhWMFReader::ReadEnhWMF() ...@@ -1023,14 +1023,18 @@ sal_Bool EnhWMFReader::ReadEnhWMF()
} }
aLogFont.alfFaceName = UniString( lfFaceName ); aLogFont.alfFaceName = UniString( lfFaceName );
// #121382# Need to apply WorldTransform to FontHeight/Width; this should be completely // #123216# Not used in the test case of #121382# (always identity in XForm), also
// chnaged to basegfx::B2DHomMatrix instead of 'struct XForm', but not now due to time // no hints in ms docu if FontSize should be scaled with WT. Using with the example
// constraints and dangers // from #123216# creates errors, so removing.
const XForm& rXF = pOut->GetWorldTransform(); //
const basegfx::B2DHomMatrix aWT(rXF.eM11, rXF.eM21, rXF.eDx, rXF.eM12, rXF.eM22, rXF.eDy); // // #121382# Need to apply WorldTransform to FontHeight/Width; this should be completely
const basegfx::B2DVector aTransVec(aWT * basegfx::B2DVector(aLogFont.lfWidth, aLogFont.lfHeight)); // // chnaged to basegfx::B2DHomMatrix instead of 'struct XForm', but not now due to time
aLogFont.lfWidth = aTransVec.getX(); // // constraints and dangers
aLogFont.lfHeight = aTransVec.getY(); // const XForm& rXF = pOut->GetWorldTransform();
// const basegfx::B2DHomMatrix aWT(rXF.eM11, rXF.eM21, rXF.eDx, rXF.eM12, rXF.eM22, rXF.eDy);
// const basegfx::B2DVector aTransVec(aWT * basegfx::B2DVector(aLogFont.lfWidth, aLogFont.lfHeight));
// aLogFont.lfWidth = aTransVec.getX();
// aLogFont.lfHeight = aTransVec.getY();
pOut->CreateObject( nIndex, GDI_FONT, new WinMtfFontStyle( aLogFont ) ); pOut->CreateObject( nIndex, GDI_FONT, new WinMtfFontStyle( aLogFont ) );
} }
......
...@@ -2055,10 +2055,10 @@ void WinMtfOutput::ModifyWorldTransform( const XForm& rXForm, sal_uInt32 nMode ) ...@@ -2055,10 +2055,10 @@ void WinMtfOutput::ModifyWorldTransform( const XForm& rXForm, sal_uInt32 nMode )
{ {
case MWT_IDENTITY : case MWT_IDENTITY :
{ {
maXForm.eM11 = maXForm.eM12 = maXForm.eM21 = maXForm.eM22 = 1.0f; maXForm.eM11 = maXForm.eM22 = 1.0f;
maXForm.eDx = maXForm.eDy = 0.0f; maXForm.eM12 = maXForm.eM21 = maXForm.eDx = maXForm.eDy = 0.0f;
}
break; break;
}
case MWT_RIGHTMULTIPLY : case MWT_RIGHTMULTIPLY :
case MWT_LEFTMULTIPLY : case MWT_LEFTMULTIPLY :
...@@ -2117,10 +2117,15 @@ void WinMtfOutput::ModifyWorldTransform( const XForm& rXForm, sal_uInt32 nMode ) ...@@ -2117,10 +2117,15 @@ void WinMtfOutput::ModifyWorldTransform( const XForm& rXForm, sal_uInt32 nMode )
maXForm.eM22 = cF[1][1]; maXForm.eM22 = cF[1][1];
maXForm.eDx = cF[2][0]; maXForm.eDx = cF[2][0];
maXForm.eDy = cF[2][1]; maXForm.eDy = cF[2][1];
break;
} }
case MWT_SET:
{
SetWorldTransform(rXForm);
break; break;
} }
} }
}
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
......
...@@ -68,6 +68,7 @@ ...@@ -68,6 +68,7 @@
#define MWT_IDENTITY 1 #define MWT_IDENTITY 1
#define MWT_LEFTMULTIPLY 2 #define MWT_LEFTMULTIPLY 2
#define MWT_RIGHTMULTIPLY 3 #define MWT_RIGHTMULTIPLY 3
#define MWT_SET 4
#define ENHMETA_STOCK_OBJECT 0x80000000 #define ENHMETA_STOCK_OBJECT 0x80000000
......
...@@ -50,6 +50,13 @@ sal_Bool ConvertWMFToGDIMetaFile( SvStream & rStreamWMF, GDIMetaFile & rGDIMetaF ...@@ -50,6 +50,13 @@ sal_Bool ConvertWMFToGDIMetaFile( SvStream & rStreamWMF, GDIMetaFile & rGDIMetaF
{ {
WMFReader( rStreamWMF, rGDIMetaFile, pConfigItem ).ReadWMF(); WMFReader( rStreamWMF, rGDIMetaFile, pConfigItem ).ReadWMF();
} }
#ifdef DBG_UTIL
// #123216# allow a look at CheckSum and ByteSize for debugging
const sal_uLong aC(rGDIMetaFile.GetChecksum());
const sal_uLong aB(rGDIMetaFile.GetSizeBytes());
#endif
rStreamWMF.SetNumberFormatInt( nOrigNumberFormat ); rStreamWMF.SetNumberFormatInt( nOrigNumberFormat );
return !rStreamWMF.GetError(); return !rStreamWMF.GetError();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment