[Libreoffice-commits] core.git: officecfg/registry sd/qa xmloff/source

Serge Krot Serge.Krot at cib.de
Wed Mar 28 06:56:33 UTC 2018


 officecfg/registry/schema/org/openoffice/Office/Common.xcs |    7 +
 sd/qa/unit/data/odp/tdf115005_no_fallback_images.odp       |binary
 sd/qa/unit/export-tests-ooxml2.cxx                         |   54 +++++++++++++
 xmloff/source/draw/shapeexport.cxx                         |    4 
 xmloff/source/text/txtparae.cxx                            |    3 
 5 files changed, 67 insertions(+), 1 deletion(-)

New commits:
commit 1c1160967acf49cffae8921f3ab8361821bbaaaf
Author: Serge Krot <Serge.Krot at cib.de>
Date:   Tue Mar 27 12:25:40 2018 +0200

    tdf#115005: New option to prevent adding fallback images
    
    A new option AddReplacementImages was added to prevent
    addition of fallback images that could increase the file
    size of the package in several times.
    
    Added unit test.
    
    Change-Id: I50eebba51072d3c93bfe6bed59e9f007568810c0
    Reviewed-on: https://gerrit.libreoffice.org/51939
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index 9463ff5b7861..bee6890c2da8 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -2340,6 +2340,13 @@
           </constraints>
           <value>1</value>
         </prop>
+        <prop oor:name="AddReplacementImages" oor:type="xs:boolean" oor:nillable="false">
+          <info>
+            <desc>Export replacement objects as fallback images for vector graphics (True).</desc>
+            <label>Export replacement objects as fallback images for vector graphics</label>
+          </info>
+          <value>true</value>
+        </prop>
       </group>
       <group oor:name="URL">
         <info>
diff --git a/sd/qa/unit/data/odp/tdf115005_no_fallback_images.odp b/sd/qa/unit/data/odp/tdf115005_no_fallback_images.odp
new file mode 100755
index 000000000000..2f88282af5f8
Binary files /dev/null and b/sd/qa/unit/data/odp/tdf115005_no_fallback_images.odp differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index 0cf675be8cf2..4840940274f2 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -134,6 +134,9 @@ public:
     void testTdf115394Zero();
     void testBulletsAsImage();
     void testTdf115005();
+    int testTdf115005_FallBack_Images(bool bAddReplacementImages);
+    void testTdf115005_FallBack_Images_On();
+    void testTdf115005_FallBack_Images_Off();
     void testTdf111789();
     /// SmartArt animated elements
     void testTdf104792();
@@ -199,6 +202,8 @@ public:
     CPPUNIT_TEST(testTdf115394Zero);
     CPPUNIT_TEST(testBulletsAsImage);
     CPPUNIT_TEST(testTdf115005);
+    CPPUNIT_TEST(testTdf115005_FallBack_Images_On);
+    CPPUNIT_TEST(testTdf115005_FallBack_Images_Off);
     CPPUNIT_TEST(testTdf111789);
     CPPUNIT_TEST(testTdf104792);
     CPPUNIT_TEST(testTdf90627);
@@ -1546,6 +1551,55 @@ void SdOOXMLExportTest2::testTdf115005()
     CPPUNIT_ASSERT_EQUAL(3, nSVMFiles);
 }
 
+int SdOOXMLExportTest2::testTdf115005_FallBack_Images(bool bAddReplacementImages)
+{
+    sd::DrawDocShellRef xDocShRefOriginal = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/odp/tdf115005_no_fallback_images.odp"), ODP);
+
+    // check if fallback images were not created if AddReplacementImages=true/false
+    // set AddReplacementImages
+    {
+        std::shared_ptr<comphelper::ConfigurationChanges> batch( comphelper::ConfigurationChanges::create() );
+        if ( !officecfg::Office::Common::Save::Graphic::AddReplacementImages::isReadOnly() )
+            officecfg::Office::Common::Save::Graphic::AddReplacementImages::set(bAddReplacementImages, batch);
+        batch->commit();
+    }
+
+    // save the file with already set options
+    utl::TempFile tempFile;
+    sd::DrawDocShellRef xDocShRefResaved = saveAndReload(xDocShRefOriginal.get(), ODP, &tempFile);
+
+    // additional checks of the output file
+    uno::Reference<packages::zip::XZipFileAccess2> xNameAccess = packages::zip::ZipFileAccess::createWithURL(comphelper::getComponentContext(m_xSFactory), tempFile.GetURL());
+
+    // check that the document contains original vector images
+    const uno::Sequence<OUString> names = xNameAccess->getElementNames();
+    int nSVMFiles = 0;
+    int nPNGFiles = 0;
+    for (int i=0; i<names.getLength(); i++)
+    {
+        if(names[i].endsWith(".svm"))
+            nSVMFiles++;
+        if(names[i].endsWith(".png"))
+            nPNGFiles++;
+    }
+
+    // check results
+    CPPUNIT_ASSERT_EQUAL(1, nSVMFiles);
+    return nPNGFiles;
+}
+
+void SdOOXMLExportTest2::testTdf115005_FallBack_Images_On()
+{
+    const int nPNGFiles = testTdf115005_FallBack_Images(true);
+    CPPUNIT_ASSERT_EQUAL(1, nPNGFiles);
+}
+
+void SdOOXMLExportTest2::testTdf115005_FallBack_Images_Off()
+{
+    const int nPNGFiles = testTdf115005_FallBack_Images(false);
+    CPPUNIT_ASSERT_EQUAL(0, nPNGFiles);
+}
+
 void SdOOXMLExportTest2::testTdf111789()
 {
     // Shadow properties were not exported for text shapes.
diff --git a/xmloff/source/draw/shapeexport.cxx b/xmloff/source/draw/shapeexport.cxx
index a670d6dad8ec..b0422e8fde8b 100644
--- a/xmloff/source/draw/shapeexport.cxx
+++ b/xmloff/source/draw/shapeexport.cxx
@@ -85,6 +85,7 @@
 #include <comphelper/graphicmimetype.hxx>
 #include <comphelper/processfactory.hxx>
 #include <comphelper/storagehelper.hxx>
+#include <officecfg/Office/Common.hxx>
 
 #include <o3tl/any.hxx>
 #include <o3tl/make_unique.hxx>
@@ -2438,7 +2439,8 @@ void XMLShapeExport::ImpExportGraphicObjectShape(
 
         //Resolves: fdo#62461 put preferred image first above, followed by
         //fallback here
-        if( !bIsEmptyPresObj )
+        const bool bAddReplacementImages = officecfg::Office::Common::Save::Graphic::AddReplacementImages::get();
+        if( !bIsEmptyPresObj && bAddReplacementImages)
         {
             uno::Reference<graphic::XGraphic> xReplacementGraphic;
             xPropSet->getPropertyValue("ReplacementGraphic") >>= xReplacementGraphic;
diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx
index c23ddb2bfa98..a9c5c35d56f2 100644
--- a/xmloff/source/text/txtparae.cxx
+++ b/xmloff/source/text/txtparae.cxx
@@ -117,6 +117,7 @@
 #include <algorithm>
 #include <iterator>
 #include <comphelper/graphicmimetype.hxx>
+#include <officecfg/Office/Common.hxx>
 
 using namespace ::std;
 using namespace ::com::sun::star;
@@ -3153,6 +3154,8 @@ void XMLTextParagraphExport::_exportTextGraphic(
         }
     }
 
+    const bool bAddReplacementImages = officecfg::Office::Common::Save::Graphic::AddReplacementImages::get();
+    if (bAddReplacementImages)
     {
         // replacement graphic for backwards compatibility, but
         // only for SVG and metafiles currently


More information about the Libreoffice-commits mailing list