Slideshow: Add 'Oval' Shape Transition variant
Committer's note: There is no Oval or Ellipse transition in MSO formats, so fallback to circle on export to those. Change-Id: Ibc3d617d3bb94bdd0702bb4d60ce5fbe2eea8e24 Reviewed-on: https://gerrit.libreoffice.org/23661 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: jan iversen <jani@documentfoundation.org> Tested-by: jan iversen <jani@documentfoundation.org>
This commit is contained in:
parent
5cf68b0eac
commit
16ddfa21d6
@ -50,6 +50,11 @@
|
||||
<value xml:lang="en-US">Circle</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="ooo-entrance-oval" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">Oval Vertical</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="ooo-entrance-fly-in-slow" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">Fly in Slow</value>
|
||||
@ -1728,6 +1733,16 @@
|
||||
<value xml:lang="en-US">Circle</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="oval-horizontal" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">Oval Horizontal</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="oval-vertical" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">Oval Vertical</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="diamond" oor:op="replace">
|
||||
<prop oor:name="Label" oor:type="xs:string">
|
||||
<value xml:lang="en-US">Diamond</value>
|
||||
@ -2051,6 +2066,22 @@
|
||||
<value>circle</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="shape-oval-horizontal" oor:op="replace">
|
||||
<prop oor:name="Set" oor:type="xs:string">
|
||||
<value>shape</value>
|
||||
</prop>
|
||||
<prop oor:name="Variant" oor:type="xs:string">
|
||||
<value>oval-horizontal</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="shape-oval-vertical" oor:op="replace">
|
||||
<prop oor:name="Set" oor:type="xs:string">
|
||||
<value>shape</value>
|
||||
</prop>
|
||||
<prop oor:name="Variant" oor:type="xs:string">
|
||||
<value>oval-vertical</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="shape-diamond" oor:op="replace">
|
||||
<prop oor:name="Set" oor:type="xs:string">
|
||||
<value>shape</value>
|
||||
@ -2383,7 +2414,7 @@
|
||||
<value xml:lang="en-US">Basic</value>
|
||||
</prop>
|
||||
<prop oor:name="Effects" oor:type="oor:string-list">
|
||||
<value oor:separator=";">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</value>
|
||||
<value oor:separator=";">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</value>
|
||||
</prop>
|
||||
</node>
|
||||
<node oor:name="special" oor:op="replace">
|
||||
|
Binary file not shown.
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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 :
|
||||
|
@ -91,6 +91,22 @@
|
||||
</anim:par>
|
||||
<anim:par smil:begin="indefinite" smil:fill="hold">
|
||||
<anim:par smil:begin="0" smil:fill="hold">
|
||||
<anim:par pres:preset-property="Direction" smil:begin="0" smil:fill="hold" pres:node-type="on-click" pres:preset-class="entrance" pres:preset-id="ooo-entrance-oval" pres:preset-sub-type="in">
|
||||
<anim:set smil:begin="0" smil:dur="0.001" smil:fill="hold" smil:attributeName="visibility" smil:to="visible"/>
|
||||
<anim:transitionFilter smil:dur="2" smil:type="ellipseWipe" smil:subtype="vertical" smil:direction="reverse"/>
|
||||
</anim:par>
|
||||
</anim:par>
|
||||
</anim:par>
|
||||
<anim:par smil:begin="indefinite" smil:fill="hold">
|
||||
<anim:par smil:begin="0" smil:fill="hold">
|
||||
<anim:par pres:preset-property="Direction" smil:begin="0" smil:fill="hold" pres:node-type="on-click" pres:preset-class="entrance" pres:preset-id="ooo-entrance-oval" pres:preset-sub-type="out">
|
||||
<anim:set smil:begin="0" smil:dur="0.001" smil:fill="hold" smil:attributeName="visibility" smil:to="visible"/>
|
||||
<anim:transitionFilter smil:dur="2" smil:type="ellipseWipe" smil:subtype="vertical"/>
|
||||
</anim:par>
|
||||
</anim:par>
|
||||
</anim:par>
|
||||
<anim:par smil:begin="indefinite" smil:fill="hold">
|
||||
<anim:par smil:begin="0" smil:fill="hold">
|
||||
<anim:par pres:preset-property="Direction" smil:begin="0" smil:fill="hold" pres:node-type="on-click" pres:preset-class="entrance" pres:preset-id="ooo-entrance-fly-in-slow" pres:preset-sub-type="from-bottom">
|
||||
<anim:set smil:begin="0" smil:dur="0.001" smil:fill="hold" smil:attributeName="visibility" smil:to="visible"/>
|
||||
<anim:animate smil:dur="5" smil:fill="hold" smil:attributeName="x" smil:values="x;x" smil:keyTimes="0;1"/>
|
||||
|
@ -107,6 +107,12 @@
|
||||
<anim:par pres:preset-id="shape-circle">
|
||||
<anim:transitionFilter smil:type="ellipseWipe" smil:subtype="circle"/>
|
||||
</anim:par>
|
||||
<anim:par pres:preset-id="shape-oval-horizontal">
|
||||
<anim:transitionFilter smil:type="ellipseWipe" smil:subtype="horizontal"/>
|
||||
</anim:par>
|
||||
<anim:par pres:preset-id="shape-oval-vertical">
|
||||
<anim:transitionFilter smil:type="ellipseWipe" smil:subtype="vertical"/>
|
||||
</anim:par>
|
||||
<!-- <anim:par pres:preset-id="circle-in"> -->
|
||||
<!-- <anim:transitionFilter smil:type="ellipseWipe" smil:subtype="circle" smil:direction="reverse"/> -->
|
||||
<!-- </anim:par> -->
|
||||
|
@ -17,7 +17,7 @@
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
|
||||
#include <com/sun/star/animations/TransitionSubType.hpp>
|
||||
#include <basegfx/numeric/ftools.hxx>
|
||||
#include <basegfx/polygon/b2dpolygontools.hxx>
|
||||
#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 );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
},
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user