diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu index 765a0d51d3c9..23824c1fd56a 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Effects.xcu @@ -50,6 +50,11 @@ Circle + + + Oval Vertical + + Fly in Slow @@ -1728,6 +1733,16 @@ Circle + + + Oval Horizontal + + + + + Oval Vertical + + Diamond @@ -2051,6 +2066,22 @@ circle + + + shape + + + oval-horizontal + + + + + shape + + + oval-vertical + + shape @@ -2383,7 +2414,7 @@ Basic - ooo-entrance-appear;ooo-entrance-fly-in;ooo-entrance-venetian-blinds;ooo-entrance-box;ooo-entrance-checkerboard;ooo-entrance-circle;ooo-entrance-fly-in-slow;ooo-entrance-diamond;ooo-entrance-dissolve-in;ooo-entrance-flash-once;ooo-entrance-peek-in;ooo-entrance-plus;ooo-entrance-random-bars;ooo-entrance-split;ooo-entrance-diagonal-squares;ooo-entrance-wedge;ooo-entrance-wheel;ooo-entrance-wipe;ooo-entrance-random + ooo-entrance-appear;ooo-entrance-fly-in;ooo-entrance-venetian-blinds;ooo-entrance-box;ooo-entrance-checkerboard;ooo-entrance-circle;ooo-entrance-oval;ooo-entrance-fly-in-slow;ooo-entrance-diamond;ooo-entrance-dissolve-in;ooo-entrance-flash-once;ooo-entrance-peek-in;ooo-entrance-plus;ooo-entrance-random-bars;ooo-entrance-split;ooo-entrance-diagonal-squares;ooo-entrance-wedge;ooo-entrance-wheel;ooo-entrance-wipe;ooo-entrance-random diff --git a/sd/qa/unit/data/AllTransitions.odp b/sd/qa/unit/data/AllTransitions.odp index dfb8d2ace8e6..8922a0756d4b 100644 Binary files a/sd/qa/unit/data/AllTransitions.odp and b/sd/qa/unit/data/AllTransitions.odp differ diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index 150e0b524fc0..0dd47e5c4ff3 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -1502,6 +1502,10 @@ void SdExportTest::testExportTransitionsPPTX() // NEWSFLASH CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 74, TransitionType::ZOOM, TransitionSubType::ROTATEIN)); + // OVAL VERTICAL - cannot be exported to PPTX so fallback to circle + //CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 76, TransitionType::ELLIPSEWIPE, TransitionSubType::VERTICAL)); + CPPUNIT_ASSERT(checkTransitionOnPage(xDoc, 76, TransitionType::ELLIPSEWIPE, TransitionSubType::CIRCLE)); + xDocShRef->DoClose(); } diff --git a/sd/source/filter/eppt/pptx-epptbase.cxx b/sd/source/filter/eppt/pptx-epptbase.cxx index 7bd4b658cc3d..85db3a1e2c99 100644 --- a/sd/source/filter/eppt/pptx-epptbase.cxx +++ b/sd/source/filter/eppt/pptx-epptbase.cxx @@ -798,7 +798,13 @@ sal_Int8 PPTWriterBase::GetTransition( sal_Int16 nTransitionType, sal_Int16 nTra break; case TransitionType::ELLIPSEWIPE : { - nPPTTransitionType = PPT_TRANSITION_TYPE_CIRCLE; + switch( nTransitionSubtype ) { + case TransitionSubType::VERTICAL: + case TransitionSubType::HORIZONTAL: + // no ellipse or oval in PPT or OOXML, fallback to circle + default: + nPPTTransitionType = PPT_TRANSITION_TYPE_CIRCLE; + } } break; case TransitionType::FOURBOXWIPE : diff --git a/sd/xml/effects.xml b/sd/xml/effects.xml index bef5e0580b94..b7789383ed27 100644 --- a/sd/xml/effects.xml +++ b/sd/xml/effects.xml @@ -91,6 +91,22 @@ + + + + + + + + + + + + + + + + diff --git a/sd/xml/transitions.xml b/sd/xml/transitions.xml index 8b96d7959e0e..cefcab31cf36 100644 --- a/sd/xml/transitions.xml +++ b/sd/xml/transitions.xml @@ -107,6 +107,12 @@ + + + + + + diff --git a/slideshow/source/engine/transitions/ellipsewipe.cxx b/slideshow/source/engine/transitions/ellipsewipe.cxx index 35aa9ec69a99..d6f968fc1ffc 100644 --- a/slideshow/source/engine/transitions/ellipsewipe.cxx +++ b/slideshow/source/engine/transitions/ellipsewipe.cxx @@ -17,7 +17,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ - +#include #include #include #include "ellipsewipe.hxx" @@ -29,12 +29,23 @@ namespace internal { ::basegfx::B2DPolyPolygon EllipseWipe::operator () ( double t ) { - // currently only circle: - ::basegfx::B2DPolygon poly( - ::basegfx::tools::createPolygonFromCircle( - ::basegfx::B2DPoint( 0.5, 0.5 ), - ::basegfx::pruneScaleValue( t * M_SQRT2 / 2.0 ) ) ); - return ::basegfx::B2DPolyPolygon( poly ); + ::basegfx::B2DPoint rCenter(0.5,0.5); + double fRadius = ::basegfx::pruneScaleValue( t * M_SQRT2 / 2.0 ); + + if( mnSubType == com::sun::star::animations::TransitionSubType::VERTICAL ) + { + // oval: + ::basegfx::B2DPolygon poly ( + ::basegfx::tools::createPolygonFromEllipse( rCenter, fRadius*2, fRadius ) ); //Horizontal Ellipse is rotated by 90 degress + return ::basegfx::B2DPolyPolygon( poly ); + } + else + { + // circle: + ::basegfx::B2DPolygon poly( + ::basegfx::tools::createPolygonFromCircle( rCenter, fRadius ) ); + return ::basegfx::B2DPolyPolygon( poly ); + } } } diff --git a/slideshow/source/engine/transitions/ellipsewipe.hxx b/slideshow/source/engine/transitions/ellipsewipe.hxx index d710cba27794..c8d991b509f8 100644 --- a/slideshow/source/engine/transitions/ellipsewipe.hxx +++ b/slideshow/source/engine/transitions/ellipsewipe.hxx @@ -30,8 +30,10 @@ namespace internal { class EllipseWipe : public ParametricPolyPolygon { public: - explicit EllipseWipe( sal_Int32 /*nTransitionSubType xxx todo */ ) {} + explicit EllipseWipe( sal_Int32 nSubType ): mnSubType( nSubType ) {} virtual ::basegfx::B2DPolyPolygon operator () ( double x ) override; +private: + sal_Int32 mnSubType; }; } diff --git a/slideshow/source/engine/transitions/transitionfactorytab.cxx b/slideshow/source/engine/transitions/transitionfactorytab.cxx index 8f10a551d219..021c3592ab61 100644 --- a/slideshow/source/engine/transitions/transitionfactorytab.cxx +++ b/slideshow/source/engine/transitions/transitionfactorytab.cxx @@ -699,7 +699,7 @@ static const TransitionInfo lcl_transitionInfo[] = 1.0, // no scaling TransitionInfo::REVERSEMETHOD_SUBTRACT_AND_INVERT, true, // 'out' by parameter sweep inversion - false // scale isotrophically to target size + true // scale isotrophically to target size },