[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