filter/source/msfilter/escherex.cxx          |   11 +++++++----
 filter/source/msfilter/eschesdo.cxx          |   14 +++++++-------
 filter/source/msfilter/eschesdo.hxx          |    4 ++--
 include/filter/msfilter/escherex.hxx         |    8 +++++---
 include/oox/export/vmlexport.hxx             |    2 +-
 oox/source/export/vmlexport.cxx              |    4 ++--
 sw/source/filter/ww8/docxattributeoutput.cxx |    2 +-
 7 files changed, 25 insertions(+), 20 deletions(-)

New commits:
commit 6f87913d843a97963703721506495bd57af36461
Author: Nikhil Walvekar <nikhil.walve...@synerzip.com>
Date:   Fri Nov 29 14:03:46 2013 +0530

    fdo#65836 bnc#621241 Do not compress WMF / EMF file incase of OOXML export
    
    (cherry picked from commit 8fe352be80ff69552f622f3c7a6a6f269912ab71)
    
    Change-Id: Ic498e5703ab48719f998be6da3f245843cc0979d
    Reviewed-on: https://gerrit.libreoffice.org/11426
    Reviewed-by: Nikhil Walvekar <nikhil.walve...@synerzip.com>
    Reviewed-by: Andras Timar <andras.ti...@collabora.com>
    Tested-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/filter/source/msfilter/escherex.cxx 
b/filter/source/msfilter/escherex.cxx
index 7318de1..cc865ba 100644
--- a/filter/source/msfilter/escherex.cxx
+++ b/filter/source/msfilter/escherex.cxx
@@ -1428,7 +1428,7 @@ sal_Bool 
EscherPropertyContainer::CreateEmbeddedHatchProperties( const ::com::su
 sal_Bool EscherPropertyContainer::CreateGraphicProperties(
     const ::com::sun::star::uno::Reference< 
::com::sun::star::beans::XPropertySet > & rXPropSet,
         const OUString& rSource, const sal_Bool bCreateFillBitmap, const 
sal_Bool bCreateCroppingAttributes,
-            const sal_Bool bFillBitmapModeAllowed )
+            const sal_Bool bFillBitmapModeAllowed, const sal_Bool bOOxmlExport 
)
 {
     sal_Bool        bRetValue = sal_False;
     sal_Bool        bCreateFillStyles = sal_False;
@@ -1742,7 +1742,7 @@ sal_Bool EscherPropertyContainer::CreateGraphicProperties(
                     SvMemoryStream aMemStrm;
                     Rectangle aRect;
 
-                    if ( aProvider.GetBlibID( aMemStrm, aUniqueId, aRect, 
NULL, pGraphicAttr ) )
+                    if ( aProvider.GetBlibID( aMemStrm, aUniqueId, aRect, 
NULL, pGraphicAttr, bOOxmlExport ) )
                     {
                         // grab BLIP from stream and insert directly as 
complex property
                         // ownership of stream memory goes to complex property
@@ -4217,7 +4217,8 @@ sal_Bool EscherGraphicProvider::GetPrefSize( const 
sal_uInt32 nBlibId, Size& rPr
 }
 
 sal_uInt32 EscherGraphicProvider::GetBlibID( SvStream& rPicOutStrm, const 
OString& rId,
-                                            const Rectangle& /* rBoundRect */, 
const com::sun::star::awt::Rectangle* pVisArea, const GraphicAttr* pGraphicAttr 
)
+                                            const Rectangle& /* rBoundRect */, 
const com::sun::star::awt::Rectangle* pVisArea,
+                                            const GraphicAttr* pGraphicAttr, 
const sal_Bool bOOxmlExport )
 {
     sal_uInt32          nBlibId = 0;
     GraphicObject       aGraphicObject( rId );
@@ -4353,7 +4354,9 @@ sal_uInt32 EscherGraphicProvider::GetBlibID( SvStream& 
rPicOutStrm, const OStrin
                 else if ( eBlibType == PEG )
                     rPicOutStrm << (sal_uInt16)0x0505;
             }
-            if ( ( eBlibType == PEG ) || ( eBlibType == PNG ) )
+            // #69607 do not compress WMF files if we are in OOXML export
+            if ( ( eBlibType == PEG ) || ( eBlibType == PNG ) ||
+                    ( ( ( eBlibType == WMF ) || ( eBlibType == EMF ) ) && 
bOOxmlExport ) )
             {
                 nExtra = 17;
                 p_EscherBlibEntry->mnSizeExtra = nExtra + 8;
diff --git a/filter/source/msfilter/eschesdo.cxx 
b/filter/source/msfilter/eschesdo.cxx
index 0e20dfb..cbf457f 100644
--- a/filter/source/msfilter/eschesdo.cxx
+++ b/filter/source/msfilter/eschesdo.cxx
@@ -173,7 +173,7 @@ void ImplEESdrWriter::MapRect(ImplEESdrObject& /* rObj */ )
 
 sal_uInt32 ImplEESdrWriter::ImplWriteShape( ImplEESdrObject& rObj,
                                 EscherSolverContainer& rSolverContainer,
-                                ImplEESdrPageType ePageType )
+                                ImplEESdrPageType ePageType, const sal_Bool 
bOOxmlExport )
 {
     sal_uInt32 nShapeID = 0;
     sal_uInt16 nShapeType = 0;
@@ -209,7 +209,7 @@ sal_uInt32 ImplEESdrWriter::ImplWriteShape( 
ImplEESdrObject& rObj,
                     ImplEESdrObject aObj( *this, *(Reference< XShape >*)
                                     xXIndexAccess->getByIndex( n ).getValue() 
);
                     if( aObj.IsValid() )
-                        ImplWriteShape( aObj, rSolverContainer, ePageType );
+                        ImplWriteShape( aObj, rSolverContainer, ePageType, 
bOOxmlExport );
                 }
                 mpEscherEx->LeaveGroup();
             }
@@ -551,7 +551,7 @@ sal_uInt32 ImplEESdrWriter::ImplWriteShape( 
ImplEESdrObject& rObj,
                 else
                 {
                     ADD_SHAPE( ESCHER_ShpInst_PictureFrame, 0xa00 );
-                    if ( aPropOpt.CreateGraphicProperties( rObj.mXPropSet, 
"GraphicURL", sal_False, sal_True ) )
+                    if ( aPropOpt.CreateGraphicProperties( rObj.mXPropSet, 
"GraphicURL", sal_False, sal_True, sal_True, bOOxmlExport ) )
                         aPropOpt.AddOpt( ESCHER_Prop_LockAgainstGrouping, 
0x800080 );
                 }
             }
@@ -934,10 +934,10 @@ void ImplEscherExSdr::ImplWriteCurrentPage()
 }
 
 
-sal_uInt32 ImplEscherExSdr::ImplWriteTheShape( ImplEESdrObject& rObj )
+sal_uInt32 ImplEscherExSdr::ImplWriteTheShape( ImplEESdrObject& rObj , bool 
ooxmlExport )
 {
     DBG_ASSERT( mpSolverContainer, "ImplEscherExSdr::ImplWriteShape: no 
SolverContainer" );
-    return ImplWriteShape( rObj, *mpSolverContainer, NORMAL );
+    return ImplWriteShape( rObj, *mpSolverContainer, NORMAL, ooxmlExport );
 }
 
 
@@ -953,11 +953,11 @@ void EscherEx::AddUnoShapes( const Reference< XShapes >& 
rxShapes )
         mpImplEscherExSdr->ImplWriteCurrentPage();
 }
 
-sal_uInt32 EscherEx::AddSdrObject( const SdrObject& rObj )
+sal_uInt32 EscherEx::AddSdrObject( const SdrObject& rObj, bool ooxmlExport )
 {
     ImplEESdrObject aObj( *mpImplEscherExSdr, rObj );
     if( aObj.IsValid() )
-        return mpImplEscherExSdr->ImplWriteTheShape( aObj );
+        return mpImplEscherExSdr->ImplWriteTheShape( aObj, ooxmlExport );
     return 0;
 }
 
diff --git a/filter/source/msfilter/eschesdo.hxx 
b/filter/source/msfilter/eschesdo.hxx
index f011285..8ddc1db 100644
--- a/filter/source/msfilter/eschesdo.hxx
+++ b/filter/source/msfilter/eschesdo.hxx
@@ -150,7 +150,7 @@ protected:
 
             sal_uInt32              ImplWriteShape( ImplEESdrObject& rObj,
                                     EscherSolverContainer& rSolver,
-                                    ImplEESdrPageType ePageType );  // returns 
ShapeID
+                                    ImplEESdrPageType ePageType, const 
sal_Bool bOOxmlExport = false );  // returns ShapeID
 
             void                ImplFlipBoundingBox( ImplEESdrObject& rObj, 
EscherPropertyContainer& rPropOpt );
             sal_Bool                ImplGetText( ImplEESdrObject& rObj );
@@ -189,7 +189,7 @@ public:
             bool                ImplInitUnoShapes( const 
::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& 
rxShapes );
             void                ImplWriteCurrentPage();
 
-            sal_uInt32              ImplWriteTheShape( ImplEESdrObject& rObj );
+            sal_uInt32              ImplWriteTheShape( ImplEESdrObject& rObj, 
bool ooxmlExport = false );
 
             void                ImplExitPage();
             void                ImplFlushSolverContainer();
diff --git a/include/filter/msfilter/escherex.hxx 
b/include/filter/msfilter/escherex.hxx
index 2ee35fc..09c2ad9 100644
--- a/include/filter/msfilter/escherex.hxx
+++ b/include/filter/msfilter/escherex.hxx
@@ -1095,7 +1095,8 @@ public:
                     const OString& rGraphicId,
                     const Rectangle& rBoundRect,
                     const com::sun::star::awt::Rectangle* pVisArea = NULL,
-                    const GraphicAttr* pGrafikAttr = NULL
+                    const GraphicAttr* pGrafikAttr = NULL,
+                    const sal_Bool ooxmlExport = false
                 );
     sal_Bool    HasGraphics() const { return mnBlibEntrys != 0; };
 
@@ -1259,7 +1260,8 @@ public:
                     const OUString& rSource,
                     const sal_Bool bCreateFillBitmap,
                     const sal_Bool bCreateCroppingAttributes = sal_False,
-                    const sal_Bool bFillBitmapModeAllowed = sal_True
+                    const sal_Bool bFillBitmapModeAllowed = sal_True,
+                    const sal_Bool bOOxmlExport = false
                 );
 
     sal_Bool   CreateBlipPropertiesforOLEControl( const 
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & 
rXPropSet, const ::com::sun::star::uno::Reference< 
::com::sun::star::drawing::XShape > & rXShape);
@@ -1680,7 +1682,7 @@ public:
     void    AddUnoShapes( const ::com::sun::star::uno::Reference< 
::com::sun::star::drawing::XShapes >& rxShapes );
 
                 /// returns the ShapeID
-    sal_uInt32  AddSdrObject( const SdrObject& rObj );
+    sal_uInt32  AddSdrObject( const SdrObject& rObj, bool ooxmlExport = false 
);
 
                 /// If objects are written through AddSdrObject the
                 /// SolverContainer has to be written, and maybe some
diff --git a/include/oox/export/vmlexport.hxx b/include/oox/export/vmlexport.hxx
index 8121e3b..876ff7b 100644
--- a/include/oox/export/vmlexport.hxx
+++ b/include/oox/export/vmlexport.hxx
@@ -88,7 +88,7 @@ public:
     /// Call this when you need to export the object as VML.
     sal_uInt32 AddSdrObject( const SdrObject& rObj, sal_Int16 eHOri = -1,
             sal_Int16 eVOri = -1, sal_Int16 eHRel = -1,
-            sal_Int16 eVRel = -1, const Point* pNdTopLeft = 0 );
+            sal_Int16 eVRel = -1, const Point* pNdTopLeft = 0, const sal_Bool 
bOOxmlExport = false );
 
 protected:
     /// Add an attribute to the generated <v:shape/> element.
diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx
index f87e773..2cf4606 100644
--- a/oox/source/export/vmlexport.cxx
+++ b/oox/source/export/vmlexport.cxx
@@ -1048,7 +1048,7 @@ void VMLExport::EndShape( sal_Int32 nShapeElement )
     }
 }
 
-sal_uInt32 VMLExport::AddSdrObject( const SdrObject& rObj, sal_Int16 eHOri, 
sal_Int16 eVOri, sal_Int16 eHRel, sal_Int16 eVRel, const Point* pNdTopLeft )
+sal_uInt32 VMLExport::AddSdrObject( const SdrObject& rObj, sal_Int16 eHOri, 
sal_Int16 eVOri, sal_Int16 eHRel, sal_Int16 eVRel, const Point* pNdTopLeft, 
const sal_Bool bOOxmlExport )
 {
     m_pSdrObject = &rObj;
     m_eHOri = eHOri;
@@ -1056,7 +1056,7 @@ sal_uInt32 VMLExport::AddSdrObject( const SdrObject& 
rObj, sal_Int16 eHOri, sal_
     m_eHRel = eHRel;
     m_eVRel = eVRel;
     m_pNdTopLeft = pNdTopLeft;
-    return EscherEx::AddSdrObject(rObj);
+    return EscherEx::AddSdrObject(rObj, bOOxmlExport);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx 
b/sw/source/filter/ww8/docxattributeoutput.cxx
index 22612f5..1d9479a 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -3329,7 +3329,7 @@ void DocxAttributeOutput::WriteVMLDrawing( const 
SdrObject* sdrObj, const SwFrmF
    m_rExport.VMLExporter().AddSdrObject( *(sdrObj),
         rHoriOri.GetHoriOrient(), rVertOri.GetVertOrient(),
         rHoriOri.GetRelationOrient(),
-        rVertOri.GetRelationOrient(), (&rNdTopLeft) );
+        rVertOri.GetRelationOrient(), (&rNdTopLeft), true );
    m_pSerializer->endElementNS( XML_w, XML_pict );
 
    if ( bSwapInPage )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to