Kaydet (Commit) 2e39954a authored tarafından Marco Cecchetti's avatar Marco Cecchetti

svg export: transition on first slide are not run - fixed

A dummy slide has been added to be used as leaving slide for transition
on first slide.

SVGExportTextDecorations unit test - fixed wrong XPath.
The new dummy slide group element caused the xpath to the slide
group to be wrong.

Change-Id: I6c1a0a80f71a79668c309bc0bcb3d5e588ef3a39
üst 56635089
...@@ -1215,6 +1215,9 @@ function MetaDocument() ...@@ -1215,6 +1215,9 @@ function MetaDocument()
this.aSlideAnimationsMap = new Object(); this.aSlideAnimationsMap = new Object();
this.initSlideAnimationsMap(); this.initSlideAnimationsMap();
// We initialize dummy slide - used as leaving slide for transition on the first slide
this.theMetaDummySlide = new MetaSlide( 'ooo:meta_dummy_slide', this );
// We initialize the set of MetaSlide objects that handle the meta // We initialize the set of MetaSlide objects that handle the meta
// information for each slide. // information for each slide.
for( var i = 0; i < this.nNumberOfSlides; ++i ) for( var i = 0; i < this.nNumberOfSlides; ++i )
...@@ -1316,7 +1319,11 @@ function MetaSlide( sMetaSlideId, aMetaDoc ) ...@@ -1316,7 +1319,11 @@ function MetaSlide( sMetaSlideId, aMetaDoc )
this.slideElement = this.theDocument.getElementById( this.slideId ); this.slideElement = this.theDocument.getElementById( this.slideId );
assert( this.slideElement, assert( this.slideElement,
'MetaSlide: slide element <' + this.slideId + '> not found.' ); 'MetaSlide: slide element <' + this.slideId + '> not found.' );
this.nSlideNumber = parseInt( this.slideId.substr(2) );
if( this.slideId !== 'dummy_slide' )
this.nSlideNumber = parseInt( this.slideId.substr(2) );
else
this.nSlideNumber= -1;
// Each slide element is wrapped by a <g> element that is responsible for // Each slide element is wrapped by a <g> element that is responsible for
// the slide element visibility. In fact the visibility attribute has // the slide element visibility. In fact the visibility attribute has
...@@ -12588,11 +12595,22 @@ SlideShow.prototype.displaySlide = function( nNewSlide, bSkipSlideTransition ) ...@@ -12588,11 +12595,22 @@ SlideShow.prototype.displaySlide = function( nNewSlide, bSkipSlideTransition )
if( this.isEnabled() && !bSkipSlideTransition ) if( this.isEnabled() && !bSkipSlideTransition )
{ {
// create slide transition and add to activity queue // create slide transition and add to activity queue
if ( ( nOldSlide !== undefined ) && if ( ( ( nOldSlide !== undefined ) &&
( ( nNewSlide > nOldSlide ) || ( ( nNewSlide > nOldSlide ) ||
( ( nNewSlide == 0) && ( nOldSlide == (aMetaDoc.nNumberOfSlides - 1) ) ) ) ) ( ( nNewSlide == 0) && ( nOldSlide == (aMetaDoc.nNumberOfSlides - 1) ) ) ) ) ||
( ( nOldSlide === undefined ) && ( nNewSlide == 0) ) // for transition on first slide
)
{ {
var aOldMetaSlide = aMetaDoc.aMetaSlideSet[nOldSlide];
var aOldMetaSlide = null;
if( nOldSlide === undefined ) // for transition on first slide
{
aOldMetaSlide = aMetaDoc.theMetaDummySlide;
}
else
{
aOldMetaSlide = aMetaDoc.aMetaSlideSet[nOldSlide];
}
var aNewMetaSlide = aMetaDoc.aMetaSlideSet[nNewSlide]; var aNewMetaSlide = aMetaDoc.aMetaSlideSet[nNewSlide];
var aSlideTransitionHandler = aNewMetaSlide.aTransitionHandler; var aSlideTransitionHandler = aNewMetaSlide.aTransitionHandler;
......
...@@ -1009,6 +1009,18 @@ bool SVGFilter::implGenerateMetaData() ...@@ -1009,6 +1009,18 @@ bool SVGFilter::implGenerateMetaData()
const OUString aElemTextFieldId( aOOOElemTextField ); const OUString aElemTextFieldId( aOOOElemTextField );
std::vector< TextField* > aFieldSet; std::vector< TextField* > aFieldSet;
// dummy slide - used as leaving slide for transition on the first slide
if( mbPresentation )
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "id", NSPREFIX "meta_dummy_slide" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrSlide, "dummy-slide" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrMaster, "dummy-master-page" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrBackgroundVisibility, "hidden" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrMasterObjectsVisibility, "hidden" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrHasTransition, "false" );
SvXMLElementExport aMetaDummySlideElem( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
}
for( sal_Int32 i = 0; i < nCount; ++i ) for( sal_Int32 i = 0; i < nCount; ++i )
{ {
const Reference< XDrawPage > & xDrawPage = mSelectedPages[i]; const Reference< XDrawPage > & xDrawPage = mSelectedPages[i];
...@@ -1487,6 +1499,27 @@ bool SVGFilter::implExportMasterPages( const SVGFilter::XDrawPageSequence & rxPa ...@@ -1487,6 +1499,27 @@ bool SVGFilter::implExportMasterPages( const SVGFilter::XDrawPageSequence & rxPa
OUString aContainerTag = (!mbPresentation) ? OUString( "g" ) : OUString( "defs" ); OUString aContainerTag = (!mbPresentation) ? OUString( "g" ) : OUString( "defs" );
SvXMLElementExport aContainerElement( *mpSVGExport, XML_NAMESPACE_NONE, aContainerTag, true, true ); SvXMLElementExport aContainerElement( *mpSVGExport, XML_NAMESPACE_NONE, aContainerTag, true, true );
// dummy slide - used as leaving slide for transition on the first slide
if( mbPresentation )
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "id", "dummy-master-page" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrName, "dummy-master-page" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", "Master_Slide" );
SvXMLElementExport aMasterSlideElem( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "id", "bg-dummy-master-page" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", "Background" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "visibility", "hidden" );
SvXMLElementExport aBackgroundElem( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
}
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "id", "bo-dummy-master-page" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", "BackgroundObjects" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "visibility", "hidden" );
SvXMLElementExport aBackgroundObjectElem( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
}
}
bool bRet = false; bool bRet = false;
for( sal_Int32 i = nFirstPage; i <= nLastPage; ++i ) for( sal_Int32 i = nFirstPage; i <= nLastPage; ++i )
{ {
...@@ -1515,6 +1548,28 @@ bool SVGFilter::implExportDrawPages( const SVGFilter::XDrawPageSequence & rxPage ...@@ -1515,6 +1548,28 @@ bool SVGFilter::implExportDrawPages( const SVGFilter::XDrawPageSequence & rxPage
DBG_ASSERT( nFirstPage <= nLastPage, DBG_ASSERT( nFirstPage <= nLastPage,
"SVGFilter::implExportDrawPages: nFirstPage > nLastPage" ); "SVGFilter::implExportDrawPages: nFirstPage > nLastPage" );
// dummy slide - used as leaving slide for transition on the first slide
if( mbPresentation )
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", "DummySlide" );
SvXMLElementExport aDummySlideElement( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
{
SvXMLElementExport aGElement( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "id", "dummy-slide" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", "Slide" );
OUString sClipPathAttrValue = "url(#" + msClipPathId + ")";
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "clip-path", sClipPathAttrValue );
SvXMLElementExport aSlideElement( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrName, "dummy-page" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", "Page" );
SvXMLElementExport aPageElement( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
}
}
}
}
// We wrap all slide in a group element with class name "SlideGroup". // We wrap all slide in a group element with class name "SlideGroup".
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", "SlideGroup" ); mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", "SlideGroup" );
SvXMLElementExport aExp( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true ); SvXMLElementExport aExp( *mpSVGExport, XML_NAMESPACE_NONE, "g", true, true );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment