[Libreoffice-commits] core.git: sw/source

Pallavi Jadhav pallavi.jadhav at synerzip.com
Thu Nov 14 02:43:15 PST 2013


 sw/source/filter/ww8/docxattributeoutput.cxx |   21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

New commits:
commit ddaf39843ff8eac8e71a7d9a8bb74b34935cd399
Author: Pallavi Jadhav <pallavi.jadhav at synerzip.com>
Date:   Thu Oct 31 15:27:00 2013 +0530

    Save Image-Crop information in docx for PNG
    
     Issue:-
      1] When MS Office docx file containing cropped image is
         round tripped with LibreOffice 4.2, image looses
         its cropping effect.
    
     Implementation:-
      1] Function WriteSrcRect() is implemented inside docxattributeoutput.cxx
      2] It writes out xml tag <a:srcRect> which is responsible for storing
         cropping parameters
    
    Change-Id: I8814df40f9907512779b42c9ad2405953c70626b
    Reviewed-on: https://gerrit.libreoffice.org/6507
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 0173869..2760f15 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -2707,13 +2707,20 @@ void DocxAttributeOutput::WriteSrcRect(const SdrObject* pSdrObj )
 
     if ( (0 != aGraphicCropStruct.Left) || (0 != aGraphicCropStruct.Top) || (0 != aGraphicCropStruct.Right) || (0 != aGraphicCropStruct.Bottom) )
     {
-            m_pSerializer->singleElementNS( XML_a, XML_srcRect,
-                          XML_l, I32S(((aGraphicCropStruct.Left) * 100000)/aOriginalSize.Width()),
-                          XML_t, I32S(((aGraphicCropStruct.Top) * 100000)/aOriginalSize.Height()),
-                          XML_r, I32S(((aGraphicCropStruct.Right) * 100000)/aOriginalSize.Width()),
-                          XML_b, I32S(((aGraphicCropStruct.Bottom) * 100000)/aOriginalSize.Height()),
-                          FSEND );
-
+        double  widthMultiplier  = 100000.0/aOriginalSize.Width();
+        double  heightMultiplier = 100000.0/aOriginalSize.Height();
+
+        double left   = aGraphicCropStruct.Left * widthMultiplier;
+        double right  = aGraphicCropStruct.Right * widthMultiplier;
+        double top    = aGraphicCropStruct.Top * heightMultiplier;
+        double bottom = aGraphicCropStruct.Bottom * heightMultiplier;
+
+        m_pSerializer->singleElementNS( XML_a, XML_srcRect,
+             XML_l, I32S(left),
+             XML_t, I32S(top),
+             XML_r, I32S(right),
+             XML_b, I32S(bottom),
+             FSEND );
     }
 }
 


More information about the Libreoffice-commits mailing list