From aa142a7ec1cf3275f6e65ce93a59e1a9c9277f09 Mon Sep 17 00:00:00 2001 From: Marco Cecchetti Date: Sun, 17 Jan 2021 23:38:57 +0100 Subject: filter: svg: js engine: further improving text fields handling Added support for slide name text field on master page Change-Id: I969bd3b2d030cf117f4c7022716b55152538f846 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109497 Tested-by: Jenkins CollaboraOffice Reviewed-by: Marco Cecchetti --- filter/source/svg/presentation_engine.js | 68 +++++++++++++++++++++----------- filter/source/svg/svgexport.cxx | 7 ++++ filter/source/svg/svgwriter.cxx | 3 +- 3 files changed, 55 insertions(+), 23 deletions(-) (limited to 'filter') diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js index d0d0a0b60db7..f6a42c4c0223 100644 --- a/filter/source/svg/presentation_engine.js +++ b/filter/source/svg/presentation_engine.js @@ -4434,6 +4434,7 @@ var aOOOAttrUsePositionedChars = 'use-positioned-chars'; var aOOOAttrSlide = 'slide'; var aOOOAttrMaster = 'master'; +var aOOOAttrDisplayName = 'display-name'; var aOOOAttrSlideDuration = 'slide-duration'; var aOOOAttrHasTransition = 'has-transition'; var aOOOAttrHasCustomBackground = 'has-custom-background'; @@ -4460,6 +4461,7 @@ var aFooterClassName = 'Footer'; var aHeaderClassName = 'Header'; var aDateClassName = 'Date'; var aTimeClassName = 'Time'; +var aSlideNameClassName='SlideName'; // Creating a namespace dictionary. var NSS = {}; @@ -5016,6 +5018,8 @@ function MetaSlide( sMetaSlideId, aMetaDoc ) else this.nSlideNumber= -1; + this.slideName = this.element.getAttributeNS( NSS['ooo'], aOOOAttrDisplayName ); + // Each slide element is double wrapped by elements. // The outer element is responsible for // the slide element visibility. In fact the visibility attribute has @@ -5085,6 +5089,7 @@ function MetaSlide( sMetaSlideId, aMetaDoc ) this.aTextFieldContentProviderSet[aHeaderClassName] = this.initFixedTextFieldContentProvider( aOOOAttrHeaderField ); this.aTextFieldContentProviderSet[aDateClassName] = this.theMetaDoc.aCurrentDateProvider; this.aTextFieldContentProviderSet[aTimeClassName] = this.theMetaDoc.aCurrentTimeProvider; + this.aTextFieldContentProviderSet[aSlideNameClassName] = new FixedTextProvider( this.slideName ); // We init the slide duration when automatic slide transition is enabled this.fDuration = this.initSlideDuration(); @@ -5240,7 +5245,7 @@ initDateTimeFieldContentProvider : function( aOOOAttrDateTimeField ) var sClassName = getClassAttribute( aTextFieldElem ); if( sClassName == 'FixedDateTimeField' ) { - aTextField = new FixedTextProvider( aTextFieldElem ); + aTextField = new FixedTextByElementProvider( aTextFieldElem ); this.bIsDateTimeVariable = false; } else if( sClassName == 'VariableDateTimeField' ) @@ -5270,7 +5275,7 @@ initFixedTextFieldContentProvider : function( aOOOAttribute ) { var aTextFieldElem = document.getElementById( sTextFieldId ); this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] - = new FixedTextProvider( aTextFieldElem ); + = new FixedTextByElementProvider( aTextFieldElem ); } return this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ]; }, @@ -5364,6 +5369,8 @@ function getTextFieldType ( elem ) sFieldType = aDateClassName; else if (sContent === '