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
},