[PATCH] Resolved : FILESAVE save as pptx discard crop information

pallavi jadhav (via Code Review) gerrit at gerrit.libreoffice.org
Tue Feb 12 06:06:39 PST 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/2118

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/18/2118/1

Resolved :  FILESAVE save as pptx discard crop information

Change-Id: I8aee13b11406988ab451034f43ee41c662add5fb
---
M oox/inc/oox/export/drawingml.hxx
M oox/source/export/drawingml.cxx
M oox/source/export/shapes.cxx
3 files changed, 53 insertions(+), 0 deletions(-)



diff --git a/oox/inc/oox/export/drawingml.hxx b/oox/inc/oox/export/drawingml.hxx
index 6198ec6..5dc79b0 100644
--- a/oox/inc/oox/export/drawingml.hxx
+++ b/oox/inc/oox/export/drawingml.hxx
@@ -106,6 +106,7 @@
     void WriteGradientFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet );
     void WriteBlipFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, OUString sURLPropName, sal_Int32 nXmlNamespace );
     void WriteBlipFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, OUString sURLPropName );
+    void WriteSrcRect( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >, OUString& );
     void WriteOutline( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet );
     void WriteStretch();
     void WriteLinespacing( ::com::sun::star::style::LineSpacing& rLineSpacing );
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 8389b3a..5230c54 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -69,6 +69,7 @@
 #include <editeng/svxenum.hxx>
 #include <svx/unoapi.hxx>
 #include <svx/svdoashp.hxx>
+#include <com/sun/star/text/GraphicCrop.hpp>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::beans;
@@ -605,6 +606,51 @@
     }
 }
 
+
+void DrawingML::WriteSrcRect( Reference< XPropertySet > rXPropSet, OUString& rURL )
+{
+    
+    Size aOriginalSize;
+    const char aURLBegin[] = "vnd.sun.star.GraphicObject:";
+
+        rtl::OString aURLBS(rtl::OUStringToOString(rURL, RTL_TEXTENCODING_UTF8));
+
+        sal_Int32 index = aURLBS.indexOfL(RTL_CONSTASCII_STRINGPARAM(aURLBegin));
+
+        if ( index != -1 )
+        {
+            DBG(printf ("begin: %ld %s\n", long( sizeof( aURLBegin ) ), USS( rURL ) + RTL_CONSTASCII_LENGTH( aURLBegin ) ));
+            GraphicObject aGraphic = GraphicObject( aURLBS.copy(RTL_CONSTASCII_LENGTH(aURLBegin)) );
+
+            aOriginalSize = aGraphic.GetPrefSize();
+        }
+
+    bool bCrop,IsCropped=true;
+    ::com::sun::star::text::GraphicCrop aGraphicCropStruct;    
+
+    if ( ( bCrop= GetProperty( rXPropSet, "GraphicCrop"  ) ) )
+     {      
+        mAny >>= aGraphicCropStruct; 
+        
+        /* element <a:srcRect> should not be written into an xml file if cropping is NOT performed on an image. 
+           IsCropped=false specifies this condition. */
+        if( (0 == aGraphicCropStruct.Left) && (0 == aGraphicCropStruct.Top) && (0 == aGraphicCropStruct.Right) && (0 == aGraphicCropStruct.Bottom) )
+        {    
+            IsCropped=false;
+        }    
+        else
+        {    
+            mpFS->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);
+        } 
+    }    
+}
+
+
 void DrawingML::WriteStretch()
 {
     mpFS->startElementNS( XML_a, XML_stretch, FSEND );
diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx
index 41d505a..f9e6d8d5 100644
--- a/oox/source/export/shapes.cxx
+++ b/oox/source/export/shapes.cxx
@@ -873,6 +873,12 @@
 
     WriteBlip( xShapeProps, sGraphicURL, pGraphic );
 
+    /*---------------------------------------------------------------------------------------------------*/
+    
+    WriteSrcRect( xShapeProps, sGraphicURL );
+ 
+   /*-----------------------------------------------------------------------------------------------------*/
+
     // now we stretch always when we get pGraphic (when changing that
     // behavior, test n#780830 for regression, where the OLE sheet might get tiled
     bool bStretch = false;

-- 
To view, visit https://gerrit.libreoffice.org/2118
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8aee13b11406988ab451034f43ee41c662add5fb
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: pallavi jadhav <pallavi.jadhav at synerzip.com>


More information about the LibreOffice mailing list