From 1db193c6c744289139b1df2af0b8defcf974b238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Vajngerl?= Date: Mon, 25 Sep 2023 09:03:54 +0200 Subject: [PATCH] tdf#126084 import svg image from ooxml document that use svgBlip elem. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In an OOXML document the svg image is defined in an svgBlip, which is an OOXML extension. This change checks for the svgBlip element and imports that instead the normal "blip" element that is still provided as a fallback (PNG image). Add roundtrip SVG image test for ODF and OOXML, Impress and Writer. testGraphicBlipXLSX test failed after this change, because some component was missing. Changed to enable use_rdb for all chart2 export tests, so issues like this won't happen anymore. Change-Id: Idf0e754775254d7dcfd0321dfca2ed6d00c42c09 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157238 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl --- chart2/export_setup.mk | 60 +----------------- oox/inc/drawingml/misccontexts.hxx | 4 +- oox/source/core/xmlfilterbase.cxx | 1 + oox/source/drawingml/misccontexts.cxx | 37 ++++++++--- sd/qa/unit/data/odp/SvgImageTest.odp | Bin 0 -> 15922 bytes sd/qa/unit/export-tests.cxx | 31 +++++++++ .../extras/globalfilter/data/SvgImageTest.odt | Bin 0 -> 13608 bytes sw/qa/extras/globalfilter/globalfilter.cxx | 37 +++++++++++ 8 files changed, 100 insertions(+), 70 deletions(-) create mode 100644 sd/qa/unit/data/odp/SvgImageTest.odp create mode 100644 sw/qa/extras/globalfilter/data/SvgImageTest.odt diff --git a/chart2/export_setup.mk b/chart2/export_setup.mk index b2bcf751111e..723df9897c4a 100644 --- a/chart2/export_setup.mk +++ b/chart2/export_setup.mk @@ -71,65 +71,7 @@ $(eval $(call gb_CppunitTest_use_sdk_api,chart2_export$(1))) $(eval $(call gb_CppunitTest_use_ure,chart2_export$(1))) $(eval $(call gb_CppunitTest_use_vcl,chart2_export$(1))) - -$(eval $(call gb_CppunitTest_use_components,chart2_export$(1),\ - basic/util/sb \ - animations/source/animcore/animcore \ - chart2/source/controller/chartcontroller \ - chart2/source/chartcore \ - comphelper/util/comphelp \ - configmgr/source/configmgr \ - dbaccess/util/dba \ - embeddedobj/util/embobj \ - emfio/emfio \ - eventattacher/source/evtatt \ - filter/source/config/cache/filterconfig1 \ - filter/source/odfflatxml/odfflatxml \ - filter/source/storagefilterdetect/storagefd \ - filter/source/xmlfilteradaptor/xmlfa \ - filter/source/xmlfilterdetect/xmlfd \ - forms/util/frm \ - framework/util/fwk \ - i18npool/util/i18npool \ - linguistic/source/lng \ - oox/util/oox \ - package/source/xstor/xstor \ - package/util/package2 \ - sax/source/expatwrap/expwrap \ - sc/util/sc \ - sc/util/scd \ - sc/util/scfilt \ - sw/util/sw \ - sw/util/swd \ - sw/util/msword \ - sd/util/sd \ - sd/util/sdd \ - $(call gb_Helper_optional,SCRIPTING, \ - sc/util/vbaobj) \ - scaddins/source/analysis/analysis \ - scaddins/source/datefunc/date \ - scripting/source/basprov/basprov \ - scripting/util/scriptframe \ - sfx2/util/sfx \ - sot/util/sot \ - svl/source/fsstor/fsstorage \ - svl/util/svl \ - svtools/util/svt \ - svx/util/svx \ - svx/util/svxcore \ - toolkit/util/tk \ - vcl/vcl.common \ - ucb/source/core/ucb1 \ - ucb/source/ucp/file/ucpfile1 \ - ucb/source/ucp/tdoc/ucptdoc1 \ - unotools/util/utl \ - unoxml/source/rdf/unordf \ - unoxml/source/service/unoxml \ - uui/util/uui \ - writerfilter/util/writerfilter \ - xmloff/util/xo \ - xmlscript/util/xmlscript \ -)) +$(eval $(call gb_CppunitTest_use_rdb,chart2_export$(1),services)) $(eval $(call gb_CppunitTest_use_uiconfigs,chart2_export$(1), \ modules/swriter \ diff --git a/oox/inc/drawingml/misccontexts.hxx b/oox/inc/drawingml/misccontexts.hxx index c79816282ae7..1b7f05444ac7 100644 --- a/oox/inc/drawingml/misccontexts.hxx +++ b/oox/inc/drawingml/misccontexts.hxx @@ -102,7 +102,8 @@ class BlipExtensionContext final : public ::oox::core::ContextHandler2 public: explicit BlipExtensionContext( ::oox::core::ContextHandler2Helper const & rParent, - BlipFillProperties& rBlipProps ); + BlipFillProperties& rBlipProps, + model::BlipFill* pBlipFill); virtual ~BlipExtensionContext() override; virtual ::oox::core::ContextHandlerRef @@ -112,6 +113,7 @@ public: private: BlipFillProperties& mrBlipProps; + model::BlipFill* mpBlipFill; }; diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx index d197440133da..93b5816812a1 100644 --- a/oox/source/core/xmlfilterbase.cxx +++ b/oox/source/core/xmlfilterbase.cxx @@ -149,6 +149,7 @@ const Sequence< beans::Pair< OUString, sal_Int32 > >& NamespaceIds() {"http://schemas.microsoft.com/office/spreadsheetml/2015/revision2", NMSP_xr2}, {"http://schemas.microsoft.com/office/drawing/2017/decorative", NMSP_adec}, + {"http://schemas.microsoft.com/office/drawing/2016/SVG/main", NMSP_asvg}, }; return SINGLETON; }; diff --git a/oox/source/drawingml/misccontexts.cxx b/oox/source/drawingml/misccontexts.cxx index 2eef9ab6133a..244d17d9fc62 100644 --- a/oox/source/drawingml/misccontexts.cxx +++ b/oox/source/drawingml/misccontexts.cxx @@ -369,7 +369,7 @@ ContextHandlerRef BlipContext::onCreateContext( return new DuotoneContext( *this, mrBlipProps ); case A_TOKEN( extLst ): - return new BlipExtensionContext( *this, mrBlipProps ); + return new BlipExtensionContext(*this, mrBlipProps, mpBlipFill); case A_TOKEN( lum ): { @@ -598,9 +598,10 @@ SimpleFillPropertiesContext::~SimpleFillPropertiesContext() mrColor = getBestSolidColor(); } -BlipExtensionContext::BlipExtensionContext( ContextHandler2Helper const & rParent, BlipFillProperties& rBlipProps ) : - ContextHandler2( rParent ), - mrBlipProps( rBlipProps ) +BlipExtensionContext::BlipExtensionContext(ContextHandler2Helper const & rParent, BlipFillProperties& rBlipProps, model::BlipFill* pBlipFill) + : ContextHandler2(rParent) + , mrBlipProps(rBlipProps) + , mpBlipFill(pBlipFill) { } @@ -608,16 +609,32 @@ BlipExtensionContext::~BlipExtensionContext() { } -ContextHandlerRef BlipExtensionContext::onCreateContext( - sal_Int32 nElement, const AttributeList& ) +ContextHandlerRef BlipExtensionContext::onCreateContext(sal_Int32 nElement, const AttributeList& rAttribs) { switch( nElement ) { - case A_TOKEN( ext ): - return new BlipExtensionContext( *this, mrBlipProps ); + case A_TOKEN(ext): + return new BlipExtensionContext(*this, mrBlipProps, mpBlipFill); - case OOX_TOKEN( a14, imgProps ): - return new ArtisticEffectContext( *this, mrBlipProps.maEffect ); + case OOX_TOKEN(a14, imgProps): + return new ArtisticEffectContext(*this, mrBlipProps.maEffect); + + case OOX_TOKEN(asvg, svgBlip): + { + if (rAttribs.hasAttribute(R_TOKEN(embed))) + { + // internal picture URL + OUString aFragmentPath = getFragmentPathFromRelId(rAttribs.getStringDefaulted(R_TOKEN(embed))); + if (!aFragmentPath.isEmpty()) + { + auto xGraphic = getFilter().getGraphicHelper().importEmbeddedGraphic(aFragmentPath); + mrBlipProps.mxFillGraphic = xGraphic; + if (mpBlipFill) + mpBlipFill->mxGraphic = xGraphic; + } + } + } + break; } return nullptr; } diff --git a/sd/qa/unit/data/odp/SvgImageTest.odp b/sd/qa/unit/data/odp/SvgImageTest.odp new file mode 100644 index 0000000000000000000000000000000000000000..38b92df808966170359bc12db9096339cb7f741c GIT binary patch literal 15922 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 } +CPPUNIT_TEST_FIXTURE(SdExportTest, testSvgImageSupport) +{ + for (OUString const& rFormat : { u"impress8"_ustr, u"Impress Office Open XML"_ustr }) + { + // Load the original file + createSdImpressDoc("odp/SvgImageTest.odp"); + const OString sFailedMessage = "Failed on filter: " + rFormat.toUtf8(); + saveAndReload(rFormat); + + // Check whether graphic was exported well + uno::Reference xDrawPagesSupplier(mxComponent, + uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT_EQUAL_MESSAGE(sFailedMessage.getStr(), sal_Int32(1), + xDrawPagesSupplier->getDrawPages()->getCount()); + uno::Reference xDrawPage( + xDrawPagesSupplier->getDrawPages()->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), xDrawPage.is()); + uno::Reference xImage(xDrawPage->getByIndex(0), uno::UNO_QUERY); + uno::Reference xPropertySet(xImage, uno::UNO_QUERY_THROW); + + uno::Reference xGraphic; + xPropertySet->getPropertyValue("Graphic") >>= xGraphic; + CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), xGraphic.is()); + Graphic aGraphic(xGraphic); + auto pVectorGraphic = aGraphic.getVectorGraphicData(); + CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), pVectorGraphic); + CPPUNIT_ASSERT_EQUAL_MESSAGE(sFailedMessage.getStr(), VectorGraphicDataType::Svg, + pVectorGraphic->getType()); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/globalfilter/data/SvgImageTest.odt b/sw/qa/extras/globalfilter/data/SvgImageTest.odt new file mode 100644 index 0000000000000000000000000000000000000000..3b37fe7998ef4b6471800597ff52e1eb95b8158b GIT binary patch literal 13608 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 Uo?_t;FCTx@kKcBS{wepr0Ca`o7XSbN literal 0 HcmV?d00001 diff --git a/sw/qa/extras/globalfilter/globalfilter.cxx b/sw/qa/extras/globalfilter/globalfilter.cxx index c12e300ebfaa..3eda6b6354e8 100644 --- a/sw/qa/extras/globalfilter/globalfilter.cxx +++ b/sw/qa/extras/globalfilter/globalfilter.cxx @@ -68,6 +68,7 @@ public: void testDropDownFormField(); void testDateFormField(); void testDateFormFieldCharacterFormatting(); + void testSvgImageSupport(); CPPUNIT_TEST_SUITE(Test); CPPUNIT_TEST(testEmbeddedGraphicRoundtrip); @@ -91,6 +92,7 @@ public: CPPUNIT_TEST(testDropDownFormField); CPPUNIT_TEST(testDateFormField); CPPUNIT_TEST(testDateFormFieldCharacterFormatting); + CPPUNIT_TEST(testSvgImageSupport); CPPUNIT_TEST_SUITE_END(); }; @@ -2214,6 +2216,41 @@ void Test::testDateFormFieldCharacterFormatting() } } +void Test::testSvgImageSupport() +{ + OUString aFilterNames[] = { + "writer8", + "Office Open XML Text", + }; + + for (OUString const & rFilterName : aFilterNames) + { + // Check whether the export code swaps in the image which was swapped out before by auto mechanism + + createSwDoc("SvgImageTest.odt"); + + // Export the document and import again for a check + saveAndReload(rFilterName); + + // Check whether graphic exported well after it was swapped out + const OString sFailedMessage = "Failed on filter: "_ostr + rFilterName.toUtf8(); + + CPPUNIT_ASSERT_EQUAL_MESSAGE(sFailedMessage.getStr(), 1, getShapes()); + + // First image + uno::Reference xImage(getShape(1), uno::UNO_QUERY); + uno::Reference xPropertySet(xImage, uno::UNO_QUERY_THROW); + + uno::Reference xGraphic; + xPropertySet->getPropertyValue("Graphic") >>= xGraphic; + CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), xGraphic.is()); + Graphic aGraphic(xGraphic); + auto pVectorGraphic = aGraphic.getVectorGraphicData(); + CPPUNIT_ASSERT_MESSAGE(sFailedMessage.getStr(), pVectorGraphic); + CPPUNIT_ASSERT_EQUAL_MESSAGE(sFailedMessage.getStr(), VectorGraphicDataType::Svg, pVectorGraphic->getType()); + } +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT();