From 02140554ee1d70b219a42546191e2219d58be4b0 Mon Sep 17 00:00:00 2001 From: "Armin Le Grand (Allotropia)" Date: Fri, 30 Apr 2021 17:26:41 +0200 Subject: WASM --enable-wasm-strip now skips lots of LO code ... resulting in a stripped-down, Writer-only build to decrease the resulting WASM bytecode size. It removes the following code from the build: * All other major modules: Base, Calc, Chart, Draw, Impress and Math and related writerperfect filters * The premultiply tables * The (auto-)recovery functionality * All accessibility (but not the accessibility document checker) * The LanguageGuess component * EPUB support * The start center / BackingWindow * The TipOfTheDay functionality * The splash screen communication Currently crashs with anything different then soffice --writer. Closing the document also still crashes. FYI: many of these features are now behind ENABLE_WASM_STRIP_* defines, but they normally don't work on their own, globally! That's because we started with stripping the main components. Change-Id: Ib9c0f9452815910c0a2aceaf142ba1ad4a9cb0d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126182 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski --- oox/Library_oox.mk | 50 ++++++++++++++++++++---------------- oox/source/drawingml/shape.cxx | 12 +++++++++ oox/source/export/shapes.cxx | 9 ++++++- oox/source/ppt/pptimport.cxx | 8 +++++- oox/source/shape/ShapeFilterBase.cxx | 7 +++++ 5 files changed, 62 insertions(+), 24 deletions(-) (limited to 'oox') diff --git a/oox/Library_oox.mk b/oox/Library_oox.mk index f9a059b30147..979635a2f213 100644 --- a/oox/Library_oox.mk +++ b/oox/Library_oox.mk @@ -83,28 +83,10 @@ endif $(eval $(call gb_Library_set_componentfile,oox,oox/util/oox,services)) +# WASM_CHART change +ifeq (,$(ENABLE_WASM_STRIP_CHART)) $(eval $(call gb_Library_add_exception_objects,oox,\ - oox/source/core/binarycodec \ - oox/source/core/contexthandler2 \ - oox/source/core/contexthandler \ - oox/source/core/fastparser \ - oox/source/core/fasttokenhandler \ - oox/source/core/filterbase \ - oox/source/core/filterdetect \ - oox/source/core/fragmenthandler2 \ - oox/source/core/fragmenthandler \ - oox/source/core/recordparser \ - oox/source/core/relations \ - oox/source/core/relationshandler \ - oox/source/core/xmlfilterbase \ - oox/source/crypto/AgileEngine \ - oox/source/crypto/CryptTools \ - oox/source/crypto/DocumentEncryption \ - oox/source/crypto/DocumentDecryption \ - oox/source/crypto/Standard2007Engine \ - oox/source/crypto/StrongEncryptionDataSpace \ - oox/source/docprop/docprophandler \ - oox/source/docprop/ooxmldocpropimport \ + oox/source/export/chartexport \ oox/source/drawingml/chart/axiscontext \ oox/source/drawingml/chart/axisconverter \ oox/source/drawingml/chart/axismodel \ @@ -132,6 +114,31 @@ $(eval $(call gb_Library_add_exception_objects,oox,\ oox/source/drawingml/chart/typegroupcontext \ oox/source/drawingml/chart/typegroupconverter \ oox/source/drawingml/chart/typegroupmodel \ +)) +endif + +$(eval $(call gb_Library_add_exception_objects,oox,\ + oox/source/core/binarycodec \ + oox/source/core/contexthandler2 \ + oox/source/core/contexthandler \ + oox/source/core/fastparser \ + oox/source/core/fasttokenhandler \ + oox/source/core/filterbase \ + oox/source/core/filterdetect \ + oox/source/core/fragmenthandler2 \ + oox/source/core/fragmenthandler \ + oox/source/core/recordparser \ + oox/source/core/relations \ + oox/source/core/relationshandler \ + oox/source/core/xmlfilterbase \ + oox/source/crypto/AgileEngine \ + oox/source/crypto/CryptTools \ + oox/source/crypto/DocumentEncryption \ + oox/source/crypto/DocumentDecryption \ + oox/source/crypto/Standard2007Engine \ + oox/source/crypto/StrongEncryptionDataSpace \ + oox/source/docprop/docprophandler \ + oox/source/docprop/ooxmldocpropimport \ oox/source/drawingml/clrschemecontext \ oox/source/drawingml/clrscheme \ oox/source/drawingml/colorchoicecontext \ @@ -214,7 +221,6 @@ $(eval $(call gb_Library_add_exception_objects,oox,\ oox/source/dump/dumperbase \ oox/source/dump/oledumper \ oox/source/dump/pptxdumper \ - oox/source/export/chartexport \ oox/source/export/ColorPropertySet \ oox/source/export/drawingml \ oox/source/export/DMLPresetShapeExport \ diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index d0502558670e..6b0eb8c7102f 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include + #include #include #include @@ -1943,6 +1945,15 @@ void Shape::finalizeXShape( XmlFilterBase& rFilter, const Reference< XShapes >& Reference< chart2::XChartDocument > xChartDoc( xDocModel, UNO_QUERY_THROW ); // load the chart data from the XML fragment +#if ENABLE_WASM_STRIP_CHART + (void) rFilter; + (void) rxShapes; +#else + // WASM_CHART change + // TODO: Instead of using convertFromModel an alternative may be + // added to convert not to Chart/OLE SdrObejct, but to GraphicObject + // with the Chart visualization. There should be a preiew available + // in the imported chart data bool bMSO2007Doc = rFilter.isMSO2007Document(); chart::ChartSpaceModel aModel(bMSO2007Doc); rtl::Reference pChartSpaceFragment = new chart::ChartSpaceFragment( @@ -1997,6 +2008,7 @@ void Shape::finalizeXShape( XmlFilterBase& rFilter, const Reference< XShapes >& // Restore the original theme. pPowerPointImport->getActualSlidePersist()->setTheme(pTheme); } +#endif } catch( Exception& ) { diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 1bc728854edd..54c6a58299e9 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -17,9 +17,11 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include +#include +#include #include + #include #include #include @@ -2176,9 +2178,14 @@ ShapeExport& ShapeExport::WriteOLE2Shape( const Reference< XShape >& xShape ) xPropSet->getPropertyValue("Model") >>= xChartDoc; assert(xChartDoc.is()); //export the chart +#if !ENABLE_WASM_STRIP_CHART + // WASM_CHART change + // TODO: With Chart extracted this cannot really happen since + // no Chart could've been added at all ChartExport aChartExport( mnXmlNamespace, GetFS(), xChartDoc, GetFB(), GetDocumentType() ); static sal_Int32 nChartCount = 0; aChartExport.WriteChartObj( xShape, GetNewShapeID( xShape ), ++nChartCount ); +#endif return *this; } diff --git a/oox/source/ppt/pptimport.cxx b/oox/source/ppt/pptimport.cxx index 1f569d099876..8e35217ea590 100644 --- a/oox/source/ppt/pptimport.cxx +++ b/oox/source/ppt/pptimport.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include + #include #include @@ -60,8 +62,12 @@ XmlFilterBase* PowerPointImport::mpDebugFilterBase = nullptr; PowerPointImport::PowerPointImport( const Reference< XComponentContext >& rxContext ) : XmlFilterBase( rxContext ), +#if ENABLE_WASM_STRIP_CHART + // WASM_CHART change + mxChartConv( ) +#else mxChartConv( std::make_shared<::oox::drawingml::chart::ChartConverter>() ) - +#endif { #if OSL_DEBUG_LEVEL > 0 mpDebugFilterBase = this; diff --git a/oox/source/shape/ShapeFilterBase.cxx b/oox/source/shape/ShapeFilterBase.cxx index f5bb1af03955..38c310b47663 100644 --- a/oox/source/shape/ShapeFilterBase.cxx +++ b/oox/source/shape/ShapeFilterBase.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include + #include #include #include @@ -34,7 +36,12 @@ using namespace ::com::sun::star; ShapeFilterBase::ShapeFilterBase( const uno::Reference< uno::XComponentContext >& rxContext ) : XmlFilterBase( rxContext ), +#if ENABLE_WASM_STRIP_CHART + // WASM_CHART change + mxChartConv( ) +#else mxChartConv( std::make_shared<::oox::drawingml::chart::ChartConverter>() ) +#endif { } -- cgit