[Libreoffice-commits] core.git: Branch 'aoo/trunk' - svtools/source
Armin Le Grand
alg at apache.org
Tue Sep 10 05:08:28 PDT 2013
svtools/source/filter/wmf/enhwmf.cxx | 20 ++++++++++++--------
svtools/source/filter/wmf/winmtf.cxx | 13 +++++++++----
svtools/source/filter/wmf/winmtf.hxx | 1 +
svtools/source/filter/wmf/wmf.cxx | 7 +++++++
4 files changed, 29 insertions(+), 12 deletions(-)
New commits:
commit d0ebb70c004761552016b0fa0a259ef35a01f840
Author: Armin Le Grand <alg at apache.org>
Date: Tue Sep 10 11:48:33 2013 +0000
i123216 No FontScaling by WorldTransform on WMF import
diff --git a/svtools/source/filter/wmf/enhwmf.cxx b/svtools/source/filter/wmf/enhwmf.cxx
index dc6472f..e03137a 100644
--- a/svtools/source/filter/wmf/enhwmf.cxx
+++ b/svtools/source/filter/wmf/enhwmf.cxx
@@ -1023,14 +1023,18 @@ sal_Bool EnhWMFReader::ReadEnhWMF()
}
aLogFont.alfFaceName = UniString( lfFaceName );
- // #121382# Need to apply WorldTransform to FontHeight/Width; this should be completely
- // chnaged 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();
+ // #123216# 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 #123216# creates errors, so removing.
+ //
+ // // #121382# Need to apply WorldTransform to FontHeight/Width; this should be completely
+ // // chnaged 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/svtools/source/filter/wmf/winmtf.cxx b/svtools/source/filter/wmf/winmtf.cxx
index 5be172e..bdfaf85 100644
--- a/svtools/source/filter/wmf/winmtf.cxx
+++ b/svtools/source/filter/wmf/winmtf.cxx
@@ -2055,10 +2055,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 :
@@ -2117,8 +2117,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/svtools/source/filter/wmf/winmtf.hxx b/svtools/source/filter/wmf/winmtf.hxx
index d850aef..499244a 100644
--- a/svtools/source/filter/wmf/winmtf.hxx
+++ b/svtools/source/filter/wmf/winmtf.hxx
@@ -68,6 +68,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/svtools/source/filter/wmf/wmf.cxx b/svtools/source/filter/wmf/wmf.cxx
index a5906dc..1a16173 100644
--- a/svtools/source/filter/wmf/wmf.cxx
+++ b/svtools/source/filter/wmf/wmf.cxx
@@ -50,6 +50,13 @@ sal_Bool ConvertWMFToGDIMetaFile( SvStream & rStreamWMF, GDIMetaFile & rGDIMetaF
{
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 );
return !rStreamWMF.GetError();
}
More information about the Libreoffice-commits
mailing list