xref: /aoo41x/main/oox/source/ppt/slidetransition.cxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #include "oox/ppt/slidetransition.hxx"
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include <com/sun/star/uno/Any.hxx>
31*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp>
32*cdf0e10cSrcweir #include <com/sun/star/presentation/AnimationSpeed.hpp>
33*cdf0e10cSrcweir #include <com/sun/star/animations/TransitionType.hpp>
34*cdf0e10cSrcweir #include <com/sun/star/animations/TransitionSubType.hpp>
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir #include "oox/helper/helper.hxx"
37*cdf0e10cSrcweir #include "oox/helper/propertymap.hxx"
38*cdf0e10cSrcweir #include "oox/token/namespaces.hxx"
39*cdf0e10cSrcweir #include "oox/token/tokens.hxx"
40*cdf0e10cSrcweir #include "pptfilterhelpers.hxx"
41*cdf0e10cSrcweir 
42*cdf0e10cSrcweir using rtl::OUString;
43*cdf0e10cSrcweir using namespace ::com::sun::star::uno;
44*cdf0e10cSrcweir using namespace ::com::sun::star::beans;
45*cdf0e10cSrcweir using namespace ::com::sun::star::animations;
46*cdf0e10cSrcweir using namespace ::com::sun::star::presentation;
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir namespace oox { namespace ppt {
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir 
51*cdf0e10cSrcweir 	SlideTransition::SlideTransition()
52*cdf0e10cSrcweir 		: mnTransitionType( 0 )
53*cdf0e10cSrcweir 		, mnTransitionSubType( 0 )
54*cdf0e10cSrcweir 		, mbTransitionDirectionNormal( true )
55*cdf0e10cSrcweir 		, mnAnimationSpeed( AnimationSpeed_FAST )
56*cdf0e10cSrcweir 		, mnFadeColor( 0 )
57*cdf0e10cSrcweir 		, mbMode( true )
58*cdf0e10cSrcweir 	{
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir 	}
61*cdf0e10cSrcweir 
62*cdf0e10cSrcweir 
63*cdf0e10cSrcweir 	SlideTransition::SlideTransition(const OUString & sFilterName)
64*cdf0e10cSrcweir 		: mnTransitionType( 0 )
65*cdf0e10cSrcweir 		, mnTransitionSubType( 0 )
66*cdf0e10cSrcweir 		, mbTransitionDirectionNormal( true )
67*cdf0e10cSrcweir 		, mnAnimationSpeed( AnimationSpeed_FAST )
68*cdf0e10cSrcweir 		, mnFadeColor( 0 )
69*cdf0e10cSrcweir 		, mbMode( true )
70*cdf0e10cSrcweir 	{
71*cdf0e10cSrcweir 		const transition *p = transition::find( sFilterName );
72*cdf0e10cSrcweir 		if( p )
73*cdf0e10cSrcweir 		{
74*cdf0e10cSrcweir 			mnTransitionType = p->mnType;
75*cdf0e10cSrcweir 			mnTransitionSubType = p->mnSubType;
76*cdf0e10cSrcweir 			mbTransitionDirectionNormal = p->mbDirection;
77*cdf0e10cSrcweir 		}
78*cdf0e10cSrcweir 	}
79*cdf0e10cSrcweir 
80*cdf0e10cSrcweir 
81*cdf0e10cSrcweir     void SlideTransition::setSlideProperties( PropertyMap & aProps )
82*cdf0e10cSrcweir 	{
83*cdf0e10cSrcweir 		try
84*cdf0e10cSrcweir 		{
85*cdf0e10cSrcweir             aProps[ PROP_TransitionType ] <<= mnTransitionType;
86*cdf0e10cSrcweir             aProps[ PROP_TransitionSubtype ] <<= mnTransitionSubType;
87*cdf0e10cSrcweir             aProps[ PROP_TransitionDirection ] <<= mbTransitionDirectionNormal;
88*cdf0e10cSrcweir             aProps[ PROP_Speed ] <<= mnAnimationSpeed;
89*cdf0e10cSrcweir             aProps[ PROP_TransitionFadeColor ] <<= mnFadeColor;
90*cdf0e10cSrcweir 		}
91*cdf0e10cSrcweir 		catch( Exception& )
92*cdf0e10cSrcweir 		{
93*cdf0e10cSrcweir 			// should not happen
94*cdf0e10cSrcweir 			OSL_ENSURE( false, "exception raised" );
95*cdf0e10cSrcweir 		}
96*cdf0e10cSrcweir 	}
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir 	void SlideTransition::setTransitionFilterProperties( const Reference< XTransitionFilter > & xFilter )
99*cdf0e10cSrcweir 	{
100*cdf0e10cSrcweir 		try
101*cdf0e10cSrcweir 		{
102*cdf0e10cSrcweir 			xFilter->setTransition( mnTransitionType );
103*cdf0e10cSrcweir 			xFilter->setSubtype( mnTransitionSubType );
104*cdf0e10cSrcweir 			xFilter->setDirection( mbTransitionDirectionNormal );
105*cdf0e10cSrcweir 			xFilter->setFadeColor( mnFadeColor );
106*cdf0e10cSrcweir 			xFilter->setMode( mbMode );
107*cdf0e10cSrcweir 		}
108*cdf0e10cSrcweir 		catch( Exception& )
109*cdf0e10cSrcweir 		{
110*cdf0e10cSrcweir 			// should not happen
111*cdf0e10cSrcweir 			OSL_ENSURE( false, "exception raised" );
112*cdf0e10cSrcweir 		}
113*cdf0e10cSrcweir 	}
114*cdf0e10cSrcweir 
115*cdf0e10cSrcweir 
116*cdf0e10cSrcweir 	void SlideTransition::setOoxTransitionSpeed( sal_Int32 nToken)
117*cdf0e10cSrcweir 	{
118*cdf0e10cSrcweir 		switch( nToken  )
119*cdf0e10cSrcweir 		{
120*cdf0e10cSrcweir 			/* In case you want to use time values in second,
121*cdf0e10cSrcweir 			 * the speed values are located in the PPT97 importer
122*cdf0e10cSrcweir 			 * sd/source/filter/ppt/ppt97animations.cxx:664
123*cdf0e10cSrcweir 			 * (void Ppt97Animation::UpdateCacheData() const)
124*cdf0e10cSrcweir 			 */
125*cdf0e10cSrcweir 		case XML_fast:
126*cdf0e10cSrcweir 			mnAnimationSpeed = AnimationSpeed_FAST;
127*cdf0e10cSrcweir 			break;
128*cdf0e10cSrcweir 		case XML_med:
129*cdf0e10cSrcweir 			mnAnimationSpeed = AnimationSpeed_MEDIUM;
130*cdf0e10cSrcweir 			break;
131*cdf0e10cSrcweir 		case XML_slow:
132*cdf0e10cSrcweir 			mnAnimationSpeed = AnimationSpeed_SLOW;
133*cdf0e10cSrcweir 			break;
134*cdf0e10cSrcweir 		default:
135*cdf0e10cSrcweir 			// should not happen. just ignore
136*cdf0e10cSrcweir 			break;
137*cdf0e10cSrcweir 		}
138*cdf0e10cSrcweir 	}
139*cdf0e10cSrcweir 
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir 
142*cdf0e10cSrcweir 	sal_Int16 SlideTransition::ooxToOdpEightDirections( ::sal_Int32 nOoxType )
143*cdf0e10cSrcweir 	{
144*cdf0e10cSrcweir     sal_Int16 nOdpDirection;
145*cdf0e10cSrcweir 		nOdpDirection = ooxToOdpBorderDirections( nOoxType );
146*cdf0e10cSrcweir 		if( nOdpDirection == 0 )
147*cdf0e10cSrcweir 		{
148*cdf0e10cSrcweir 			nOdpDirection = ooxToOdpCornerDirections( nOoxType );
149*cdf0e10cSrcweir 		}
150*cdf0e10cSrcweir 		return nOdpDirection;
151*cdf0e10cSrcweir 	}
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir 
154*cdf0e10cSrcweir 	sal_Int16 SlideTransition::ooxToOdpBorderDirections( ::sal_Int32 nOoxType )
155*cdf0e10cSrcweir 	{
156*cdf0e10cSrcweir     sal_Int16 nOdpDirection;
157*cdf0e10cSrcweir 		switch( nOoxType )
158*cdf0e10cSrcweir 		{
159*cdf0e10cSrcweir 		case XML_d:
160*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::FROMTOP;
161*cdf0e10cSrcweir 			break;
162*cdf0e10cSrcweir 		case XML_l:
163*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::FROMLEFT;
164*cdf0e10cSrcweir 			break;
165*cdf0e10cSrcweir 		case XML_r:
166*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::FROMRIGHT;
167*cdf0e10cSrcweir 			break;
168*cdf0e10cSrcweir 		case XML_u:
169*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::FROMBOTTOM;
170*cdf0e10cSrcweir 			break;
171*cdf0e10cSrcweir 		default:
172*cdf0e10cSrcweir 			nOdpDirection= 0;
173*cdf0e10cSrcweir 			break;
174*cdf0e10cSrcweir 		}
175*cdf0e10cSrcweir 		return nOdpDirection;
176*cdf0e10cSrcweir 	}
177*cdf0e10cSrcweir 
178*cdf0e10cSrcweir 	sal_Int16 SlideTransition::ooxToOdpSideDirections( ::sal_Int32 nOoxType )
179*cdf0e10cSrcweir 	{
180*cdf0e10cSrcweir     sal_Int16 nOdpDirection;
181*cdf0e10cSrcweir 		switch( nOoxType )
182*cdf0e10cSrcweir 		{
183*cdf0e10cSrcweir 		case XML_d:
184*cdf0e10cSrcweir 		case XML_u:
185*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::TOPTOBOTTOM;
186*cdf0e10cSrcweir 			break;
187*cdf0e10cSrcweir 		case XML_l:
188*cdf0e10cSrcweir 		case XML_r:
189*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::LEFTTORIGHT;
190*cdf0e10cSrcweir 			break;
191*cdf0e10cSrcweir 		default:
192*cdf0e10cSrcweir 			nOdpDirection= 0;
193*cdf0e10cSrcweir 			break;
194*cdf0e10cSrcweir 		}
195*cdf0e10cSrcweir 		return nOdpDirection;
196*cdf0e10cSrcweir 	}
197*cdf0e10cSrcweir 
198*cdf0e10cSrcweir 	sal_Bool SlideTransition::ooxToOdpSideDirectionsDirectionNormal( ::sal_Int32 nOoxType )
199*cdf0e10cSrcweir 	{
200*cdf0e10cSrcweir     sal_Bool nOdpDirection = true;
201*cdf0e10cSrcweir 		switch( nOoxType )
202*cdf0e10cSrcweir 		{
203*cdf0e10cSrcweir 		case XML_u:
204*cdf0e10cSrcweir 		case XML_l:
205*cdf0e10cSrcweir 			nOdpDirection = false;
206*cdf0e10cSrcweir 			break;
207*cdf0e10cSrcweir 		}
208*cdf0e10cSrcweir 		return nOdpDirection;
209*cdf0e10cSrcweir 	}
210*cdf0e10cSrcweir 
211*cdf0e10cSrcweir 	sal_Int16 SlideTransition::ooxToOdpCornerDirections( ::sal_Int32 nOoxType )
212*cdf0e10cSrcweir 	{
213*cdf0e10cSrcweir     sal_Int16 nOdpDirection;
214*cdf0e10cSrcweir 		switch( nOoxType )
215*cdf0e10cSrcweir 		{
216*cdf0e10cSrcweir 		case XML_lu:
217*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::FROMBOTTOMRIGHT;
218*cdf0e10cSrcweir 			break;
219*cdf0e10cSrcweir 		case XML_ru:
220*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::FROMBOTTOMLEFT;
221*cdf0e10cSrcweir 			break;
222*cdf0e10cSrcweir 		case XML_ld:
223*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::FROMTOPRIGHT;
224*cdf0e10cSrcweir 			break;
225*cdf0e10cSrcweir 		case XML_rd:
226*cdf0e10cSrcweir 			nOdpDirection = TransitionSubType::FROMTOPLEFT;
227*cdf0e10cSrcweir 			break;
228*cdf0e10cSrcweir 		default:
229*cdf0e10cSrcweir 			nOdpDirection = 0;
230*cdf0e10cSrcweir 			break;
231*cdf0e10cSrcweir 		}
232*cdf0e10cSrcweir 		return nOdpDirection;
233*cdf0e10cSrcweir 	}
234*cdf0e10cSrcweir 
235*cdf0e10cSrcweir 
236*cdf0e10cSrcweir 	sal_Int16 SlideTransition::ooxToOdpDirection( ::sal_Int32 nOoxType )
237*cdf0e10cSrcweir 	{
238*cdf0e10cSrcweir     sal_Int16 nOdpDir;
239*cdf0e10cSrcweir 		switch( nOoxType )
240*cdf0e10cSrcweir 		{
241*cdf0e10cSrcweir 		case XML_vert:
242*cdf0e10cSrcweir 			nOdpDir = TransitionSubType::VERTICAL;
243*cdf0e10cSrcweir 			break;
244*cdf0e10cSrcweir 		case XML_horz:
245*cdf0e10cSrcweir 			nOdpDir = TransitionSubType::HORIZONTAL;
246*cdf0e10cSrcweir 			break;
247*cdf0e10cSrcweir 		default:
248*cdf0e10cSrcweir 			nOdpDir = 0;
249*cdf0e10cSrcweir 			break;
250*cdf0e10cSrcweir 		}
251*cdf0e10cSrcweir 		return nOdpDir;
252*cdf0e10cSrcweir 	}
253*cdf0e10cSrcweir 
254*cdf0e10cSrcweir 	void SlideTransition::setOoxTransitionType( ::sal_Int32 OoxType, ::sal_Int32 param1, ::sal_Int32 param2 )
255*cdf0e10cSrcweir 	{
256*cdf0e10cSrcweir 		switch( OoxType )
257*cdf0e10cSrcweir 		{
258*cdf0e10cSrcweir 		case PPT_TOKEN( blinds ):
259*cdf0e10cSrcweir 			mnTransitionType = TransitionType::BLINDSWIPE;
260*cdf0e10cSrcweir 			mnTransitionSubType = ooxToOdpDirection( param1 );
261*cdf0e10cSrcweir 			break;
262*cdf0e10cSrcweir 		case PPT_TOKEN( checker ):
263*cdf0e10cSrcweir 			mnTransitionType = TransitionType::CHECKERBOARDWIPE;
264*cdf0e10cSrcweir 			switch ( param1 )
265*cdf0e10cSrcweir 			{
266*cdf0e10cSrcweir 			case XML_vert:
267*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::DOWN;
268*cdf0e10cSrcweir 				break;
269*cdf0e10cSrcweir 			case XML_horz:
270*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::ACROSS;
271*cdf0e10cSrcweir 				break;
272*cdf0e10cSrcweir 			default:
273*cdf0e10cSrcweir 				break;
274*cdf0e10cSrcweir 			}
275*cdf0e10cSrcweir 			break;
276*cdf0e10cSrcweir 		case PPT_TOKEN( comb ):
277*cdf0e10cSrcweir 			mnTransitionType = TransitionType::PUSHWIPE;
278*cdf0e10cSrcweir 			switch( param1 )
279*cdf0e10cSrcweir 			{
280*cdf0e10cSrcweir 			case XML_vert:
281*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::COMBVERTICAL;
282*cdf0e10cSrcweir 				break;
283*cdf0e10cSrcweir 			case XML_horz:
284*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::COMBHORIZONTAL;
285*cdf0e10cSrcweir 				break;
286*cdf0e10cSrcweir 			default:
287*cdf0e10cSrcweir 				break;
288*cdf0e10cSrcweir 			}
289*cdf0e10cSrcweir 			break;
290*cdf0e10cSrcweir 		case PPT_TOKEN( cover ):
291*cdf0e10cSrcweir 			mnTransitionType = TransitionType::SLIDEWIPE;
292*cdf0e10cSrcweir 			mnTransitionSubType = ooxToOdpEightDirections( param1 );
293*cdf0e10cSrcweir 			break;
294*cdf0e10cSrcweir 		case PPT_TOKEN( pull ): // uncover
295*cdf0e10cSrcweir 			mnTransitionType = TransitionType::SLIDEWIPE;
296*cdf0e10cSrcweir 			mnTransitionSubType = ooxToOdpEightDirections( param1 );
297*cdf0e10cSrcweir 			mbTransitionDirectionNormal = false;
298*cdf0e10cSrcweir 			break;
299*cdf0e10cSrcweir 		case PPT_TOKEN( cut ):
300*cdf0e10cSrcweir 			// The binfilter seems to ignore this transition.
301*cdf0e10cSrcweir 			// Fade to black instead if thrBlk is true.
302*cdf0e10cSrcweir 			if( param1 )
303*cdf0e10cSrcweir 			{
304*cdf0e10cSrcweir 				mnTransitionType = TransitionType::FADE;
305*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::FADEOVERCOLOR;
306*cdf0e10cSrcweir 			}
307*cdf0e10cSrcweir 			OSL_TRACE( "OOX: cut transition fallback." );
308*cdf0e10cSrcweir 			break;
309*cdf0e10cSrcweir 		case PPT_TOKEN( fade ):
310*cdf0e10cSrcweir 			mnTransitionType = TransitionType::FADE;
311*cdf0e10cSrcweir 			if( param1 )
312*cdf0e10cSrcweir 			{
313*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::FADEOVERCOLOR;
314*cdf0e10cSrcweir 			}
315*cdf0e10cSrcweir 			else
316*cdf0e10cSrcweir 			{
317*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::CROSSFADE;
318*cdf0e10cSrcweir 			}
319*cdf0e10cSrcweir 			break;
320*cdf0e10cSrcweir 		case PPT_TOKEN( push ):
321*cdf0e10cSrcweir 			mnTransitionType = TransitionType::PUSHWIPE;
322*cdf0e10cSrcweir 			mnTransitionSubType = ooxToOdpBorderDirections( param1 );
323*cdf0e10cSrcweir 			break;
324*cdf0e10cSrcweir 		case PPT_TOKEN( wipe ):
325*cdf0e10cSrcweir 			mnTransitionType = TransitionType::BARWIPE;
326*cdf0e10cSrcweir 			mnTransitionSubType = ooxToOdpSideDirections( param1 );
327*cdf0e10cSrcweir 			mbTransitionDirectionNormal = ooxToOdpSideDirectionsDirectionNormal( param1 );
328*cdf0e10cSrcweir 			break;
329*cdf0e10cSrcweir 		case PPT_TOKEN( split ):
330*cdf0e10cSrcweir 			mnTransitionType = TransitionType::BARNDOORWIPE;
331*cdf0e10cSrcweir 			mnTransitionSubType = ooxToOdpDirection( param1 );
332*cdf0e10cSrcweir 			if( param2 == XML_in )
333*cdf0e10cSrcweir 			{
334*cdf0e10cSrcweir 				// reverse
335*cdf0e10cSrcweir 				mbTransitionDirectionNormal = false;
336*cdf0e10cSrcweir 			}
337*cdf0e10cSrcweir 			break;
338*cdf0e10cSrcweir 		case PPT_TOKEN( wheel ):
339*cdf0e10cSrcweir 			mnTransitionType = TransitionType::PINWHEELWIPE;
340*cdf0e10cSrcweir 			switch( param1 )
341*cdf0e10cSrcweir 			{
342*cdf0e10cSrcweir 			case 1:
343*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::ONEBLADE;
344*cdf0e10cSrcweir 				break;
345*cdf0e10cSrcweir 			case 2:
346*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::TWOBLADEVERTICAL;
347*cdf0e10cSrcweir 				break;
348*cdf0e10cSrcweir 			case 3:
349*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::THREEBLADE;
350*cdf0e10cSrcweir 				break;
351*cdf0e10cSrcweir 			case 4:
352*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::FOURBLADE;
353*cdf0e10cSrcweir 				break;
354*cdf0e10cSrcweir 			case 8:
355*cdf0e10cSrcweir 				mnTransitionSubType = TransitionSubType::EIGHTBLADE;
356*cdf0e10cSrcweir 				break;
357*cdf0e10cSrcweir 			default:
358*cdf0e10cSrcweir 				OSL_TRACE( "OOX: strange number of blades for thw wheel-wipe %d", param1 );
359*cdf0e10cSrcweir 				if( param1 > 8 )
360*cdf0e10cSrcweir 				{
361*cdf0e10cSrcweir 					mnTransitionSubType = TransitionSubType::EIGHTBLADE;
362*cdf0e10cSrcweir 				}
363*cdf0e10cSrcweir 				else if( param1 > 4 )
364*cdf0e10cSrcweir 				{
365*cdf0e10cSrcweir 					mnTransitionSubType = TransitionSubType::FOURBLADE;
366*cdf0e10cSrcweir 				}
367*cdf0e10cSrcweir 				else if( param1 == 0)
368*cdf0e10cSrcweir 				{
369*cdf0e10cSrcweir 					mnTransitionSubType = TransitionSubType::ONEBLADE;
370*cdf0e10cSrcweir 				}
371*cdf0e10cSrcweir 				break;
372*cdf0e10cSrcweir 			}
373*cdf0e10cSrcweir 			break;
374*cdf0e10cSrcweir 		case PPT_TOKEN( randomBar ):
375*cdf0e10cSrcweir 			mnTransitionType = TransitionType::RANDOMBARWIPE;
376*cdf0e10cSrcweir 			mnTransitionSubType = ooxToOdpDirection( param1 );
377*cdf0e10cSrcweir 			break;
378*cdf0e10cSrcweir 		case PPT_TOKEN( circle ):
379*cdf0e10cSrcweir 			mnTransitionType = TransitionType::ELLIPSEWIPE;
380*cdf0e10cSrcweir 			mnTransitionSubType = TransitionSubType::CIRCLE;
381*cdf0e10cSrcweir 			break;
382*cdf0e10cSrcweir 		case PPT_TOKEN( diamond ):
383*cdf0e10cSrcweir 			mnTransitionType = TransitionType::IRISWIPE;
384*cdf0e10cSrcweir 			mnTransitionSubType = TransitionSubType::DIAMOND;
385*cdf0e10cSrcweir 			break;
386*cdf0e10cSrcweir 		case PPT_TOKEN( dissolve ):
387*cdf0e10cSrcweir 			mnTransitionType = TransitionType::DISSOLVE;
388*cdf0e10cSrcweir 			mnTransitionSubType = TransitionSubType::DEFAULT;
389*cdf0e10cSrcweir 			break;
390*cdf0e10cSrcweir 		case PPT_TOKEN( newsflash ):
391*cdf0e10cSrcweir 			// this is what the PPT binary filter does.... not sure I agree.
392*cdf0e10cSrcweir 			mnTransitionType = TransitionType::FOURBOXWIPE;
393*cdf0e10cSrcweir 			mnTransitionSubType = TransitionSubType::CORNERSOUT;
394*cdf0e10cSrcweir 			break;
395*cdf0e10cSrcweir 		case PPT_TOKEN( plus ):
396*cdf0e10cSrcweir 			mnTransitionType = TransitionType::FOURBOXWIPE;
397*cdf0e10cSrcweir 			mnTransitionSubType = TransitionSubType::CORNERSOUT;
398*cdf0e10cSrcweir 			break;
399*cdf0e10cSrcweir 		case PPT_TOKEN( random ):
400*cdf0e10cSrcweir 			mnTransitionType = TransitionType::RANDOM;
401*cdf0e10cSrcweir 			mnTransitionSubType = TransitionSubType::DEFAULT;
402*cdf0e10cSrcweir 			break;
403*cdf0e10cSrcweir 		case PPT_TOKEN( wedge ):
404*cdf0e10cSrcweir 			mnTransitionType = TransitionType::FANWIPE;
405*cdf0e10cSrcweir 			mnTransitionSubType = TransitionSubType::CENTERTOP;
406*cdf0e10cSrcweir 			break;
407*cdf0e10cSrcweir 		case PPT_TOKEN( zoom ):
408*cdf0e10cSrcweir 			mnTransitionType = TransitionType::ZOOM;
409*cdf0e10cSrcweir 			mnTransitionSubType = TransitionSubType::DEFAULT;
410*cdf0e10cSrcweir 			break;
411*cdf0e10cSrcweir 		default:
412*cdf0e10cSrcweir 			mnTransitionType = 0;
413*cdf0e10cSrcweir 			break;
414*cdf0e10cSrcweir 		}
415*cdf0e10cSrcweir 	}
416*cdf0e10cSrcweir 
417*cdf0e10cSrcweir 
418*cdf0e10cSrcweir } }
419