diff options
author | Armin Le Grand <alg@apache.org> | 2013-09-10 11:48:33 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-09-10 18:48:04 +0100 |
commit | ae8cbeeba09607d34c3e0209bda3ccfdd71f0cbb (patch) | |
tree | 7d8327d47af6b6b98e1cb2a683accb9bd11d2444 /vcl | |
parent | 529f9cf52fd01f140892852584f77572b0e43a29 (diff) |
Resolves: #i123216# No FontScaling by WorldTransform on WMF import
(cherry picked from commit d0ebb70c004761552016b0fa0a259ef35a01f840)
Conflicts:
svtools/source/filter/wmf/enhwmf.cxx
svtools/source/filter/wmf/winmtf.cxx
svtools/source/filter/wmf/winmtf.hxx
svtools/source/filter/wmf/wmf.cxx
Change-Id: I3e85dcc019028b83eb2f650f1527333f2d5cf9dc
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/filter/wmf/enhwmf.cxx | 20 | ||||
-rw-r--r-- | vcl/source/filter/wmf/winmtf.cxx | 13 | ||||
-rw-r--r-- | vcl/source/filter/wmf/winmtf.hxx | 1 | ||||
-rw-r--r-- | vcl/source/filter/wmf/wmf.cxx | 7 |
4 files changed, 29 insertions, 12 deletions
diff --git a/vcl/source/filter/wmf/enhwmf.cxx b/vcl/source/filter/wmf/enhwmf.cxx index c09b317220b6..6ceecc935ffc 100644 --- a/vcl/source/filter/wmf/enhwmf.cxx +++ b/vcl/source/filter/wmf/enhwmf.cxx @@ -1174,14 +1174,18 @@ sal_Bool EnhWMFReader::ReadEnhWMF() } aLogFont.alfFaceName = OUString( lfFaceName ); - // #i121382# Need to apply WorldTransform to FontHeight/Width; this should be completely - // changed to basegfx::B2DHomMatrix instead of 'struct XForm', but not now due to time - // constraints and dangers - 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(); + // #i123216# Not used in the test case of #121382# (always identity in XForm), also + // no hints in ms docu if FontSize should be scaled with WT. Using with the example + // from #i123216# creates errors, so removing. + // + // // #i121382# Need to apply WorldTransform to FontHeight/Width; this should be completely + // // changed to basegfx::B2DHomMatrix instead of 'struct XForm', but not now due to time + // // constraints and dangers + // 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 ) ); } diff --git a/vcl/source/filter/wmf/winmtf.cxx b/vcl/source/filter/wmf/winmtf.cxx index 0972dcdc6f18..e189e0c5866d 100644 --- a/vcl/source/filter/wmf/winmtf.cxx +++ b/vcl/source/filter/wmf/winmtf.cxx @@ -2069,10 +2069,10 @@ void WinMtfOutput::ModifyWorldTransform( const XForm& rXForm, sal_uInt32 nMode ) { case MWT_IDENTITY : { - maXForm.eM11 = maXForm.eM12 = maXForm.eM21 = maXForm.eM22 = 1.0f; - maXForm.eDx = maXForm.eDy = 0.0f; + maXForm.eM11 = maXForm.eM22 = 1.0f; + maXForm.eM12 = maXForm.eM21 = maXForm.eDx = maXForm.eDy = 0.0f; + break; } - break; case MWT_RIGHTMULTIPLY : case MWT_LEFTMULTIPLY : @@ -2131,8 +2131,13 @@ void WinMtfOutput::ModifyWorldTransform( const XForm& rXForm, sal_uInt32 nMode ) maXForm.eM22 = cF[1][1]; maXForm.eDx = cF[2][0]; maXForm.eDy = cF[2][1]; + break; + } + case MWT_SET: + { + SetWorldTransform(rXForm); + break; } - break; } } diff --git a/vcl/source/filter/wmf/winmtf.hxx b/vcl/source/filter/wmf/winmtf.hxx index df64f2ace3c6..3d3ee97525a1 100644 --- a/vcl/source/filter/wmf/winmtf.hxx +++ b/vcl/source/filter/wmf/winmtf.hxx @@ -52,6 +52,7 @@ #define MWT_IDENTITY 1 #define MWT_LEFTMULTIPLY 2 #define MWT_RIGHTMULTIPLY 3 +#define MWT_SET 4 #define ENHMETA_STOCK_OBJECT 0x80000000 diff --git a/vcl/source/filter/wmf/wmf.cxx b/vcl/source/filter/wmf/wmf.cxx index 3c06d554a45d..c0e2f46993c9 100644 --- a/vcl/source/filter/wmf/wmf.cxx +++ b/vcl/source/filter/wmf/wmf.cxx @@ -45,6 +45,13 @@ sal_Bool ConvertWMFToGDIMetaFile( SvStream & rStreamWMF, GDIMetaFile & rGDIMetaF { WMFReader( rStreamWMF, rGDIMetaFile, pConfigItem, pExtHeader ).ReadWMF( ); } + +#ifdef DBG_UTIL + // #i123216# allow a look at CheckSum and ByteSize for debugging + SAL_INFO("vcl.emf", "\t\t\tchecksum: 0x" << std::hex << rGDIMetaFile.GetChecksum() << std::dec); + SAL_INFO("vcl.emf", "\t\t\tsize: " << rGDIMetaFile.GetSizeBytes()); +#endif + rStreamWMF.SetNumberFormatInt( nOrigNumberFormat ); return !rStreamWMF.GetError(); } |