1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_xmloff.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
28*b1cdbd2cSJim Jagielski #include "unointerfacetouniqueidentifiermapper.hxx"
29*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/AnimationEffect.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/presentation/AnimationSpeed.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/sax/XAttributeList.hpp>
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski #include <list>
36*b1cdbd2cSJim Jagielski #include <tools/color.hxx>
37*b1cdbd2cSJim Jagielski #include <comphelper/extract.hxx>
38*b1cdbd2cSJim Jagielski #include <xmloff/xmltoken.hxx>
39*b1cdbd2cSJim Jagielski #include <xmloff/xmlimp.hxx>
40*b1cdbd2cSJim Jagielski #include "xmloff/xmlnmspe.hxx"
41*b1cdbd2cSJim Jagielski #include <xmloff/xmluconv.hxx>
42*b1cdbd2cSJim Jagielski /*
43*b1cdbd2cSJim Jagielski #include <xmloff/xmlement.hxx>
44*b1cdbd2cSJim Jagielski */
45*b1cdbd2cSJim Jagielski #include <xmloff/nmspmap.hxx>
46*b1cdbd2cSJim Jagielski #include "anim.hxx"
47*b1cdbd2cSJim Jagielski #include "animimp.hxx"
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski using ::rtl::OUString;
50*b1cdbd2cSJim Jagielski using ::rtl::OUStringBuffer;
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski using namespace ::std;
53*b1cdbd2cSJim Jagielski using namespace ::cppu;
54*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
55*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::xml;
56*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::xml::sax;
57*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
58*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::drawing;
59*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
60*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
61*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::presentation;
62*b1cdbd2cSJim Jagielski using namespace ::xmloff::token;
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry aXML_AnimationEffect_EnumMap[] =
65*b1cdbd2cSJim Jagielski {
66*b1cdbd2cSJim Jagielski { XML_NONE, EK_none },
67*b1cdbd2cSJim Jagielski { XML_FADE, EK_fade },
68*b1cdbd2cSJim Jagielski { XML_MOVE, EK_move },
69*b1cdbd2cSJim Jagielski { XML_STRIPES, EK_stripes },
70*b1cdbd2cSJim Jagielski { XML_OPEN, EK_open },
71*b1cdbd2cSJim Jagielski { XML_CLOSE, EK_close },
72*b1cdbd2cSJim Jagielski { XML_DISSOLVE, EK_dissolve },
73*b1cdbd2cSJim Jagielski { XML_WAVYLINE, EK_wavyline },
74*b1cdbd2cSJim Jagielski { XML_RANDOM, EK_random },
75*b1cdbd2cSJim Jagielski { XML_LINES, EK_lines },
76*b1cdbd2cSJim Jagielski { XML_LASER, EK_laser },
77*b1cdbd2cSJim Jagielski { XML_APPEAR, EK_appear },
78*b1cdbd2cSJim Jagielski { XML_HIDE, EK_hide },
79*b1cdbd2cSJim Jagielski { XML_MOVE_SHORT, EK_move_short },
80*b1cdbd2cSJim Jagielski { XML_CHECKERBOARD, EK_checkerboard },
81*b1cdbd2cSJim Jagielski { XML_ROTATE, EK_rotate },
82*b1cdbd2cSJim Jagielski { XML_STRETCH, EK_stretch },
83*b1cdbd2cSJim Jagielski { XML_TOKEN_INVALID, 0 }
84*b1cdbd2cSJim Jagielski };
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry aXML_AnimationDirection_EnumMap[] =
87*b1cdbd2cSJim Jagielski {
88*b1cdbd2cSJim Jagielski { XML_NONE, ED_none },
89*b1cdbd2cSJim Jagielski { XML_FROM_LEFT, ED_from_left },
90*b1cdbd2cSJim Jagielski { XML_FROM_TOP, ED_from_top },
91*b1cdbd2cSJim Jagielski { XML_FROM_RIGHT, ED_from_right },
92*b1cdbd2cSJim Jagielski { XML_FROM_BOTTOM, ED_from_bottom },
93*b1cdbd2cSJim Jagielski { XML_FROM_CENTER, ED_from_center },
94*b1cdbd2cSJim Jagielski { XML_FROM_UPPER_LEFT, ED_from_upperleft },
95*b1cdbd2cSJim Jagielski { XML_FROM_UPPER_RIGHT, ED_from_upperright },
96*b1cdbd2cSJim Jagielski { XML_FROM_LOWER_LEFT, ED_from_lowerleft },
97*b1cdbd2cSJim Jagielski { XML_FROM_LOWER_RIGHT, ED_from_lowerright },
98*b1cdbd2cSJim Jagielski { XML_TO_LEFT, ED_to_left },
99*b1cdbd2cSJim Jagielski { XML_TO_TOP, ED_to_top },
100*b1cdbd2cSJim Jagielski { XML_TO_RIGHT, ED_to_right },
101*b1cdbd2cSJim Jagielski { XML_TO_BOTTOM, ED_to_bottom },
102*b1cdbd2cSJim Jagielski { XML_TO_UPPER_LEFT, ED_to_upperleft },
103*b1cdbd2cSJim Jagielski { XML_TO_UPPER_RIGHT, ED_to_upperright },
104*b1cdbd2cSJim Jagielski { XML_TO_LOWER_RIGHT, ED_to_lowerright },
105*b1cdbd2cSJim Jagielski { XML_TO_LOWER_LEFT, ED_to_lowerleft },
106*b1cdbd2cSJim Jagielski { XML_PATH, ED_path },
107*b1cdbd2cSJim Jagielski { XML_SPIRAL_INWARD_LEFT, ED_spiral_inward_left },
108*b1cdbd2cSJim Jagielski { XML_SPIRAL_INWARD_RIGHT,ED_spiral_inward_right },
109*b1cdbd2cSJim Jagielski { XML_SPIRAL_OUTWARD_LEFT, ED_spiral_outward_left },
110*b1cdbd2cSJim Jagielski { XML_SPIRAL_OUTWARD_RIGHT, ED_spiral_outward_right },
111*b1cdbd2cSJim Jagielski { XML_VERTICAL, ED_vertical },
112*b1cdbd2cSJim Jagielski { XML_HORIZONTAL, ED_horizontal },
113*b1cdbd2cSJim Jagielski { XML_TO_CENTER, ED_to_center },
114*b1cdbd2cSJim Jagielski { XML_CLOCKWISE, ED_clockwise },
115*b1cdbd2cSJim Jagielski { XML_COUNTER_CLOCKWISE,ED_cclockwise },
116*b1cdbd2cSJim Jagielski { XML_TOKEN_INVALID, 0 }
117*b1cdbd2cSJim Jagielski };
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry aXML_AnimationSpeed_EnumMap[] =
120*b1cdbd2cSJim Jagielski {
121*b1cdbd2cSJim Jagielski { XML_SLOW, AnimationSpeed_SLOW },
122*b1cdbd2cSJim Jagielski { XML_MEDIUM, AnimationSpeed_MEDIUM },
123*b1cdbd2cSJim Jagielski { XML_FAST, AnimationSpeed_FAST },
124*b1cdbd2cSJim Jagielski { XML_TOKEN_INVALID, 0 }
125*b1cdbd2cSJim Jagielski };
126*b1cdbd2cSJim Jagielski
ImplSdXMLgetEffect(XMLEffect eKind,XMLEffectDirection eDirection,sal_Int16 nStartScale,sal_Bool)127*b1cdbd2cSJim Jagielski AnimationEffect ImplSdXMLgetEffect( XMLEffect eKind, XMLEffectDirection eDirection, sal_Int16 nStartScale, sal_Bool /*bIn*/ )
128*b1cdbd2cSJim Jagielski {
129*b1cdbd2cSJim Jagielski switch( eKind )
130*b1cdbd2cSJim Jagielski {
131*b1cdbd2cSJim Jagielski case EK_fade:
132*b1cdbd2cSJim Jagielski switch( eDirection )
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski case ED_from_left: return AnimationEffect_FADE_FROM_LEFT;
135*b1cdbd2cSJim Jagielski case ED_from_top: return AnimationEffect_FADE_FROM_TOP;
136*b1cdbd2cSJim Jagielski case ED_from_right: return AnimationEffect_FADE_FROM_RIGHT;
137*b1cdbd2cSJim Jagielski case ED_from_bottom: return AnimationEffect_FADE_FROM_BOTTOM;
138*b1cdbd2cSJim Jagielski case ED_from_center: return AnimationEffect_FADE_FROM_CENTER;
139*b1cdbd2cSJim Jagielski case ED_from_upperleft: return AnimationEffect_FADE_FROM_UPPERLEFT;
140*b1cdbd2cSJim Jagielski case ED_from_upperright: return AnimationEffect_FADE_FROM_UPPERRIGHT;
141*b1cdbd2cSJim Jagielski case ED_from_lowerleft: return AnimationEffect_FADE_FROM_LOWERLEFT;
142*b1cdbd2cSJim Jagielski case ED_from_lowerright: return AnimationEffect_FADE_FROM_LOWERRIGHT;
143*b1cdbd2cSJim Jagielski case ED_to_center: return AnimationEffect_FADE_TO_CENTER;
144*b1cdbd2cSJim Jagielski case ED_clockwise: return AnimationEffect_CLOCKWISE;
145*b1cdbd2cSJim Jagielski case ED_cclockwise: return AnimationEffect_COUNTERCLOCKWISE;
146*b1cdbd2cSJim Jagielski case ED_spiral_inward_left: return AnimationEffect_SPIRALIN_LEFT;
147*b1cdbd2cSJim Jagielski case ED_spiral_inward_right:return AnimationEffect_SPIRALIN_RIGHT;
148*b1cdbd2cSJim Jagielski case ED_spiral_outward_left:return AnimationEffect_SPIRALOUT_LEFT;
149*b1cdbd2cSJim Jagielski case ED_spiral_outward_right:return AnimationEffect_SPIRALOUT_RIGHT;
150*b1cdbd2cSJim Jagielski default: return AnimationEffect_FADE_FROM_LEFT;
151*b1cdbd2cSJim Jagielski }
152*b1cdbd2cSJim Jagielski case EK_move:
153*b1cdbd2cSJim Jagielski if( nStartScale == 200 )
154*b1cdbd2cSJim Jagielski {
155*b1cdbd2cSJim Jagielski return AnimationEffect_ZOOM_OUT_SMALL;
156*b1cdbd2cSJim Jagielski }
157*b1cdbd2cSJim Jagielski else if( nStartScale == 50 )
158*b1cdbd2cSJim Jagielski {
159*b1cdbd2cSJim Jagielski return AnimationEffect_ZOOM_IN_SMALL;
160*b1cdbd2cSJim Jagielski }
161*b1cdbd2cSJim Jagielski else if( nStartScale < 100 )
162*b1cdbd2cSJim Jagielski {
163*b1cdbd2cSJim Jagielski switch( eDirection )
164*b1cdbd2cSJim Jagielski {
165*b1cdbd2cSJim Jagielski case ED_from_left: return AnimationEffect_ZOOM_IN_FROM_LEFT;
166*b1cdbd2cSJim Jagielski case ED_from_top: return AnimationEffect_ZOOM_IN_FROM_TOP;
167*b1cdbd2cSJim Jagielski case ED_from_right: return AnimationEffect_ZOOM_IN_FROM_RIGHT;
168*b1cdbd2cSJim Jagielski case ED_from_bottom: return AnimationEffect_ZOOM_IN_FROM_BOTTOM;
169*b1cdbd2cSJim Jagielski case ED_from_upperleft: return AnimationEffect_ZOOM_IN_FROM_UPPERLEFT;
170*b1cdbd2cSJim Jagielski case ED_from_upperright: return AnimationEffect_ZOOM_IN_FROM_UPPERRIGHT;
171*b1cdbd2cSJim Jagielski case ED_from_lowerleft: return AnimationEffect_ZOOM_IN_FROM_LOWERLEFT;
172*b1cdbd2cSJim Jagielski case ED_from_lowerright: return AnimationEffect_ZOOM_IN_FROM_LOWERRIGHT;
173*b1cdbd2cSJim Jagielski case ED_from_center: return AnimationEffect_ZOOM_IN_FROM_CENTER;
174*b1cdbd2cSJim Jagielski case ED_spiral_inward_left: return AnimationEffect_ZOOM_IN_SPIRAL;
175*b1cdbd2cSJim Jagielski case ED_to_left: return AnimationEffect_MOVE_TO_LEFT;
176*b1cdbd2cSJim Jagielski case ED_to_top: return AnimationEffect_MOVE_TO_TOP;
177*b1cdbd2cSJim Jagielski case ED_to_right: return AnimationEffect_MOVE_TO_RIGHT;
178*b1cdbd2cSJim Jagielski case ED_to_bottom: return AnimationEffect_MOVE_TO_BOTTOM;
179*b1cdbd2cSJim Jagielski case ED_to_upperleft: return AnimationEffect_MOVE_TO_UPPERLEFT;
180*b1cdbd2cSJim Jagielski case ED_to_upperright: return AnimationEffect_MOVE_TO_UPPERRIGHT;
181*b1cdbd2cSJim Jagielski case ED_to_lowerright: return AnimationEffect_MOVE_TO_LOWERRIGHT;
182*b1cdbd2cSJim Jagielski case ED_to_lowerleft: return AnimationEffect_MOVE_TO_LOWERLEFT;
183*b1cdbd2cSJim Jagielski default: return AnimationEffect_ZOOM_IN;
184*b1cdbd2cSJim Jagielski }
185*b1cdbd2cSJim Jagielski }
186*b1cdbd2cSJim Jagielski else if( nStartScale > 100 )
187*b1cdbd2cSJim Jagielski {
188*b1cdbd2cSJim Jagielski switch( eDirection )
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski case ED_from_left: return AnimationEffect_ZOOM_OUT_FROM_LEFT;
191*b1cdbd2cSJim Jagielski case ED_from_top: return AnimationEffect_ZOOM_OUT_FROM_TOP;
192*b1cdbd2cSJim Jagielski case ED_from_right: return AnimationEffect_ZOOM_OUT_FROM_RIGHT;
193*b1cdbd2cSJim Jagielski case ED_from_bottom: return AnimationEffect_ZOOM_OUT_FROM_BOTTOM;
194*b1cdbd2cSJim Jagielski case ED_from_upperleft: return AnimationEffect_ZOOM_OUT_FROM_UPPERLEFT;
195*b1cdbd2cSJim Jagielski case ED_from_upperright: return AnimationEffect_ZOOM_OUT_FROM_UPPERRIGHT;
196*b1cdbd2cSJim Jagielski case ED_from_lowerleft: return AnimationEffect_ZOOM_OUT_FROM_LOWERLEFT;
197*b1cdbd2cSJim Jagielski case ED_from_lowerright: return AnimationEffect_ZOOM_OUT_FROM_LOWERRIGHT;
198*b1cdbd2cSJim Jagielski case ED_from_center: return AnimationEffect_ZOOM_OUT_FROM_CENTER;
199*b1cdbd2cSJim Jagielski case ED_spiral_inward_left: return AnimationEffect_ZOOM_OUT_SPIRAL;
200*b1cdbd2cSJim Jagielski default: return AnimationEffect_ZOOM_OUT;
201*b1cdbd2cSJim Jagielski }
202*b1cdbd2cSJim Jagielski }
203*b1cdbd2cSJim Jagielski else
204*b1cdbd2cSJim Jagielski {
205*b1cdbd2cSJim Jagielski switch( eDirection )
206*b1cdbd2cSJim Jagielski {
207*b1cdbd2cSJim Jagielski case ED_from_left: return AnimationEffect_MOVE_FROM_LEFT;
208*b1cdbd2cSJim Jagielski case ED_from_top: return AnimationEffect_MOVE_FROM_TOP;
209*b1cdbd2cSJim Jagielski case ED_from_right: return AnimationEffect_MOVE_FROM_RIGHT;
210*b1cdbd2cSJim Jagielski case ED_from_bottom: return AnimationEffect_MOVE_FROM_BOTTOM;
211*b1cdbd2cSJim Jagielski case ED_from_upperleft: return AnimationEffect_MOVE_FROM_UPPERLEFT;
212*b1cdbd2cSJim Jagielski case ED_from_upperright: return AnimationEffect_MOVE_FROM_UPPERRIGHT;
213*b1cdbd2cSJim Jagielski case ED_from_lowerleft: return AnimationEffect_MOVE_FROM_LOWERLEFT;
214*b1cdbd2cSJim Jagielski case ED_from_lowerright: return AnimationEffect_MOVE_FROM_LOWERRIGHT;
215*b1cdbd2cSJim Jagielski case ED_path: return AnimationEffect_PATH;
216*b1cdbd2cSJim Jagielski case ED_to_top: return AnimationEffect_MOVE_TO_TOP;
217*b1cdbd2cSJim Jagielski case ED_to_right: return AnimationEffect_MOVE_TO_RIGHT;
218*b1cdbd2cSJim Jagielski case ED_to_bottom: return AnimationEffect_MOVE_TO_BOTTOM;
219*b1cdbd2cSJim Jagielski case ED_to_upperleft: return AnimationEffect_MOVE_TO_UPPERLEFT;
220*b1cdbd2cSJim Jagielski case ED_to_upperright: return AnimationEffect_MOVE_TO_UPPERRIGHT;
221*b1cdbd2cSJim Jagielski case ED_to_lowerright: return AnimationEffect_MOVE_TO_LOWERRIGHT;
222*b1cdbd2cSJim Jagielski case ED_to_lowerleft: return AnimationEffect_MOVE_TO_LOWERLEFT;
223*b1cdbd2cSJim Jagielski default:
224*b1cdbd2cSJim Jagielski break;
225*b1cdbd2cSJim Jagielski }
226*b1cdbd2cSJim Jagielski }
227*b1cdbd2cSJim Jagielski return AnimationEffect_MOVE_FROM_LEFT;
228*b1cdbd2cSJim Jagielski case EK_stripes:
229*b1cdbd2cSJim Jagielski if( eDirection == ED_vertical )
230*b1cdbd2cSJim Jagielski return AnimationEffect_VERTICAL_STRIPES;
231*b1cdbd2cSJim Jagielski else
232*b1cdbd2cSJim Jagielski return AnimationEffect_HORIZONTAL_STRIPES;
233*b1cdbd2cSJim Jagielski case EK_open:
234*b1cdbd2cSJim Jagielski if( eDirection == ED_vertical )
235*b1cdbd2cSJim Jagielski return AnimationEffect_OPEN_VERTICAL;
236*b1cdbd2cSJim Jagielski else
237*b1cdbd2cSJim Jagielski return AnimationEffect_OPEN_HORIZONTAL;
238*b1cdbd2cSJim Jagielski case EK_close:
239*b1cdbd2cSJim Jagielski if( eDirection == ED_vertical )
240*b1cdbd2cSJim Jagielski return AnimationEffect_CLOSE_VERTICAL;
241*b1cdbd2cSJim Jagielski else
242*b1cdbd2cSJim Jagielski return AnimationEffect_CLOSE_HORIZONTAL;
243*b1cdbd2cSJim Jagielski case EK_dissolve:
244*b1cdbd2cSJim Jagielski return AnimationEffect_DISSOLVE;
245*b1cdbd2cSJim Jagielski case EK_wavyline:
246*b1cdbd2cSJim Jagielski switch( eDirection )
247*b1cdbd2cSJim Jagielski {
248*b1cdbd2cSJim Jagielski case ED_from_left: return AnimationEffect_WAVYLINE_FROM_LEFT;
249*b1cdbd2cSJim Jagielski case ED_from_top: return AnimationEffect_WAVYLINE_FROM_TOP;
250*b1cdbd2cSJim Jagielski case ED_from_right: return AnimationEffect_WAVYLINE_FROM_RIGHT;
251*b1cdbd2cSJim Jagielski case ED_from_bottom: return AnimationEffect_WAVYLINE_FROM_BOTTOM;
252*b1cdbd2cSJim Jagielski default: return AnimationEffect_WAVYLINE_FROM_LEFT;
253*b1cdbd2cSJim Jagielski }
254*b1cdbd2cSJim Jagielski case EK_random:
255*b1cdbd2cSJim Jagielski return AnimationEffect_RANDOM;
256*b1cdbd2cSJim Jagielski case EK_lines:
257*b1cdbd2cSJim Jagielski if( eDirection == ED_vertical )
258*b1cdbd2cSJim Jagielski return AnimationEffect_VERTICAL_LINES;
259*b1cdbd2cSJim Jagielski else
260*b1cdbd2cSJim Jagielski return AnimationEffect_HORIZONTAL_LINES;
261*b1cdbd2cSJim Jagielski case EK_laser:
262*b1cdbd2cSJim Jagielski switch( eDirection )
263*b1cdbd2cSJim Jagielski {
264*b1cdbd2cSJim Jagielski case ED_from_left: return AnimationEffect_LASER_FROM_LEFT;
265*b1cdbd2cSJim Jagielski case ED_from_top: return AnimationEffect_LASER_FROM_TOP;
266*b1cdbd2cSJim Jagielski case ED_from_right: return AnimationEffect_LASER_FROM_RIGHT;
267*b1cdbd2cSJim Jagielski case ED_from_bottom: return AnimationEffect_LASER_FROM_BOTTOM;
268*b1cdbd2cSJim Jagielski case ED_from_upperleft: return AnimationEffect_LASER_FROM_UPPERLEFT;
269*b1cdbd2cSJim Jagielski case ED_from_upperright: return AnimationEffect_LASER_FROM_UPPERRIGHT;
270*b1cdbd2cSJim Jagielski case ED_from_lowerleft: return AnimationEffect_LASER_FROM_LOWERLEFT;
271*b1cdbd2cSJim Jagielski case ED_from_lowerright: return AnimationEffect_LASER_FROM_LOWERRIGHT;
272*b1cdbd2cSJim Jagielski default: return AnimationEffect_LASER_FROM_LEFT;
273*b1cdbd2cSJim Jagielski }
274*b1cdbd2cSJim Jagielski case EK_appear:
275*b1cdbd2cSJim Jagielski return AnimationEffect_APPEAR;
276*b1cdbd2cSJim Jagielski case EK_hide:
277*b1cdbd2cSJim Jagielski return AnimationEffect_HIDE;
278*b1cdbd2cSJim Jagielski case EK_move_short:
279*b1cdbd2cSJim Jagielski switch( eDirection )
280*b1cdbd2cSJim Jagielski {
281*b1cdbd2cSJim Jagielski case ED_from_left: return AnimationEffect_MOVE_SHORT_FROM_LEFT;
282*b1cdbd2cSJim Jagielski case ED_from_top: return AnimationEffect_MOVE_SHORT_FROM_TOP;
283*b1cdbd2cSJim Jagielski case ED_from_right: return AnimationEffect_MOVE_SHORT_FROM_RIGHT;
284*b1cdbd2cSJim Jagielski case ED_from_bottom: return AnimationEffect_MOVE_SHORT_FROM_BOTTOM;
285*b1cdbd2cSJim Jagielski case ED_from_upperleft: return AnimationEffect_MOVE_SHORT_FROM_UPPERLEFT;
286*b1cdbd2cSJim Jagielski case ED_from_upperright: return AnimationEffect_MOVE_SHORT_FROM_UPPERRIGHT;
287*b1cdbd2cSJim Jagielski case ED_from_lowerleft: return AnimationEffect_MOVE_SHORT_FROM_LOWERLEFT;
288*b1cdbd2cSJim Jagielski case ED_from_lowerright: return AnimationEffect_MOVE_SHORT_FROM_LOWERRIGHT;
289*b1cdbd2cSJim Jagielski case ED_to_left: return AnimationEffect_MOVE_SHORT_TO_LEFT;
290*b1cdbd2cSJim Jagielski case ED_to_upperleft: return AnimationEffect_MOVE_SHORT_TO_UPPERLEFT;
291*b1cdbd2cSJim Jagielski case ED_to_top: return AnimationEffect_MOVE_SHORT_TO_TOP;
292*b1cdbd2cSJim Jagielski case ED_to_upperright: return AnimationEffect_MOVE_SHORT_TO_UPPERRIGHT;
293*b1cdbd2cSJim Jagielski case ED_to_right: return AnimationEffect_MOVE_SHORT_TO_RIGHT;
294*b1cdbd2cSJim Jagielski case ED_to_lowerright: return AnimationEffect_MOVE_SHORT_TO_LOWERRIGHT;
295*b1cdbd2cSJim Jagielski case ED_to_bottom: return AnimationEffect_MOVE_SHORT_TO_BOTTOM;
296*b1cdbd2cSJim Jagielski case ED_to_lowerleft: return AnimationEffect_MOVE_SHORT_TO_LOWERLEFT;
297*b1cdbd2cSJim Jagielski default: return AnimationEffect_MOVE_SHORT_FROM_LEFT;
298*b1cdbd2cSJim Jagielski }
299*b1cdbd2cSJim Jagielski case EK_checkerboard:
300*b1cdbd2cSJim Jagielski if( eDirection == ED_vertical )
301*b1cdbd2cSJim Jagielski return AnimationEffect_VERTICAL_CHECKERBOARD;
302*b1cdbd2cSJim Jagielski else
303*b1cdbd2cSJim Jagielski return AnimationEffect_HORIZONTAL_CHECKERBOARD;
304*b1cdbd2cSJim Jagielski case EK_rotate:
305*b1cdbd2cSJim Jagielski if( eDirection == ED_vertical )
306*b1cdbd2cSJim Jagielski return AnimationEffect_VERTICAL_ROTATE;
307*b1cdbd2cSJim Jagielski else
308*b1cdbd2cSJim Jagielski return AnimationEffect_HORIZONTAL_ROTATE;
309*b1cdbd2cSJim Jagielski case EK_stretch:
310*b1cdbd2cSJim Jagielski switch( eDirection )
311*b1cdbd2cSJim Jagielski {
312*b1cdbd2cSJim Jagielski case ED_from_left: return AnimationEffect_STRETCH_FROM_LEFT;
313*b1cdbd2cSJim Jagielski case ED_from_top: return AnimationEffect_STRETCH_FROM_TOP;
314*b1cdbd2cSJim Jagielski case ED_from_right: return AnimationEffect_STRETCH_FROM_RIGHT;
315*b1cdbd2cSJim Jagielski case ED_from_bottom: return AnimationEffect_STRETCH_FROM_BOTTOM;
316*b1cdbd2cSJim Jagielski case ED_from_upperleft: return AnimationEffect_STRETCH_FROM_UPPERLEFT;
317*b1cdbd2cSJim Jagielski case ED_from_upperright: return AnimationEffect_STRETCH_FROM_UPPERRIGHT;
318*b1cdbd2cSJim Jagielski case ED_from_lowerleft: return AnimationEffect_STRETCH_FROM_LOWERLEFT;
319*b1cdbd2cSJim Jagielski case ED_from_lowerright: return AnimationEffect_STRETCH_FROM_LOWERRIGHT;
320*b1cdbd2cSJim Jagielski case ED_vertical: return AnimationEffect_VERTICAL_STRETCH;
321*b1cdbd2cSJim Jagielski case ED_horizontal: return AnimationEffect_HORIZONTAL_STRETCH;
322*b1cdbd2cSJim Jagielski default:
323*b1cdbd2cSJim Jagielski break;
324*b1cdbd2cSJim Jagielski }
325*b1cdbd2cSJim Jagielski return AnimationEffect_STRETCH_FROM_LEFT;
326*b1cdbd2cSJim Jagielski default:
327*b1cdbd2cSJim Jagielski return AnimationEffect_NONE;
328*b1cdbd2cSJim Jagielski }
329*b1cdbd2cSJim Jagielski }
330*b1cdbd2cSJim Jagielski
331*b1cdbd2cSJim Jagielski ///////////////////////////////////////////////////////////////////////
332*b1cdbd2cSJim Jagielski
333*b1cdbd2cSJim Jagielski class AnimImpImpl
334*b1cdbd2cSJim Jagielski {
335*b1cdbd2cSJim Jagielski public:
336*b1cdbd2cSJim Jagielski Reference< XPropertySet > mxLastShape;
337*b1cdbd2cSJim Jagielski OUString maLastShapeId;
338*b1cdbd2cSJim Jagielski
339*b1cdbd2cSJim Jagielski OUString msDimColor;
340*b1cdbd2cSJim Jagielski OUString msDimHide;
341*b1cdbd2cSJim Jagielski OUString msDimPrev;
342*b1cdbd2cSJim Jagielski OUString msEffect;
343*b1cdbd2cSJim Jagielski OUString msPlayFull;
344*b1cdbd2cSJim Jagielski OUString msPresOrder;
345*b1cdbd2cSJim Jagielski OUString msSound;
346*b1cdbd2cSJim Jagielski OUString msSoundOn;
347*b1cdbd2cSJim Jagielski OUString msSpeed;
348*b1cdbd2cSJim Jagielski OUString msTextEffect;
349*b1cdbd2cSJim Jagielski OUString msPresShapeService;
350*b1cdbd2cSJim Jagielski OUString msAnimPath;
351*b1cdbd2cSJim Jagielski OUString msIsAnimation;
352*b1cdbd2cSJim Jagielski
AnimImpImpl()353*b1cdbd2cSJim Jagielski AnimImpImpl()
354*b1cdbd2cSJim Jagielski : msDimColor( RTL_CONSTASCII_USTRINGPARAM( "DimColor" ) ),
355*b1cdbd2cSJim Jagielski msDimHide( RTL_CONSTASCII_USTRINGPARAM( "DimHide" ) ),
356*b1cdbd2cSJim Jagielski msDimPrev( RTL_CONSTASCII_USTRINGPARAM( "DimPrevious" ) ),
357*b1cdbd2cSJim Jagielski msEffect( RTL_CONSTASCII_USTRINGPARAM( "Effect" ) ),
358*b1cdbd2cSJim Jagielski msPlayFull( RTL_CONSTASCII_USTRINGPARAM( "PlayFull" ) ),
359*b1cdbd2cSJim Jagielski msPresOrder( RTL_CONSTASCII_USTRINGPARAM( "PresentationOrder" ) ),
360*b1cdbd2cSJim Jagielski msSound( RTL_CONSTASCII_USTRINGPARAM( "Sound" ) ),
361*b1cdbd2cSJim Jagielski msSoundOn( RTL_CONSTASCII_USTRINGPARAM( "SoundOn" ) ),
362*b1cdbd2cSJim Jagielski msSpeed( RTL_CONSTASCII_USTRINGPARAM( "Speed" ) ),
363*b1cdbd2cSJim Jagielski msTextEffect( RTL_CONSTASCII_USTRINGPARAM( "TextEffect" ) ),
364*b1cdbd2cSJim Jagielski msPresShapeService( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.presentation.Shape" ) ),
365*b1cdbd2cSJim Jagielski msAnimPath( RTL_CONSTASCII_USTRINGPARAM( "AnimationPath" ) ),
366*b1cdbd2cSJim Jagielski msIsAnimation( RTL_CONSTASCII_USTRINGPARAM( "IsAnimation" ) )
367*b1cdbd2cSJim Jagielski {}
368*b1cdbd2cSJim Jagielski };
369*b1cdbd2cSJim Jagielski
370*b1cdbd2cSJim Jagielski ///////////////////////////////////////////////////////////////////////
371*b1cdbd2cSJim Jagielski
372*b1cdbd2cSJim Jagielski enum XMLActionKind
373*b1cdbd2cSJim Jagielski {
374*b1cdbd2cSJim Jagielski XMLE_SHOW,
375*b1cdbd2cSJim Jagielski XMLE_HIDE,
376*b1cdbd2cSJim Jagielski XMLE_DIM,
377*b1cdbd2cSJim Jagielski XMLE_PLAY
378*b1cdbd2cSJim Jagielski };
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim Jagielski class XMLAnimationsEffectContext : public SvXMLImportContext
381*b1cdbd2cSJim Jagielski {
382*b1cdbd2cSJim Jagielski public:
383*b1cdbd2cSJim Jagielski AnimImpImpl* mpImpl;
384*b1cdbd2cSJim Jagielski
385*b1cdbd2cSJim Jagielski XMLActionKind meKind;
386*b1cdbd2cSJim Jagielski sal_Bool mbTextEffect;
387*b1cdbd2cSJim Jagielski OUString maShapeId;
388*b1cdbd2cSJim Jagielski
389*b1cdbd2cSJim Jagielski XMLEffect meEffect;
390*b1cdbd2cSJim Jagielski XMLEffectDirection meDirection;
391*b1cdbd2cSJim Jagielski sal_Int16 mnStartScale;
392*b1cdbd2cSJim Jagielski
393*b1cdbd2cSJim Jagielski AnimationSpeed meSpeed;
394*b1cdbd2cSJim Jagielski Color maDimColor;
395*b1cdbd2cSJim Jagielski OUString maSoundURL;
396*b1cdbd2cSJim Jagielski sal_Bool mbPlayFull;
397*b1cdbd2cSJim Jagielski OUString maPathShapeId;
398*b1cdbd2cSJim Jagielski
399*b1cdbd2cSJim Jagielski public:
400*b1cdbd2cSJim Jagielski TYPEINFO();
401*b1cdbd2cSJim Jagielski
402*b1cdbd2cSJim Jagielski XMLAnimationsEffectContext( SvXMLImport& rImport,
403*b1cdbd2cSJim Jagielski sal_uInt16 nPrfx,
404*b1cdbd2cSJim Jagielski const OUString& rLocalName,
405*b1cdbd2cSJim Jagielski const Reference< XAttributeList >& xAttrList,
406*b1cdbd2cSJim Jagielski AnimImpImpl* pImpl);
407*b1cdbd2cSJim Jagielski virtual ~XMLAnimationsEffectContext();
408*b1cdbd2cSJim Jagielski
409*b1cdbd2cSJim Jagielski virtual void EndElement();
410*b1cdbd2cSJim Jagielski
411*b1cdbd2cSJim Jagielski virtual SvXMLImportContext * CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
412*b1cdbd2cSJim Jagielski const Reference< XAttributeList >& xAttrList );
413*b1cdbd2cSJim Jagielski };
414*b1cdbd2cSJim Jagielski
415*b1cdbd2cSJim Jagielski class XMLAnimationsSoundContext : public SvXMLImportContext
416*b1cdbd2cSJim Jagielski {
417*b1cdbd2cSJim Jagielski XMLAnimationsEffectContext* mpParent;
418*b1cdbd2cSJim Jagielski
419*b1cdbd2cSJim Jagielski public:
420*b1cdbd2cSJim Jagielski TYPEINFO();
421*b1cdbd2cSJim Jagielski
422*b1cdbd2cSJim Jagielski XMLAnimationsSoundContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLocalName, const Reference< XAttributeList >& xAttrList, XMLAnimationsEffectContext* pParent );
423*b1cdbd2cSJim Jagielski virtual ~XMLAnimationsSoundContext();
424*b1cdbd2cSJim Jagielski };
425*b1cdbd2cSJim Jagielski
426*b1cdbd2cSJim Jagielski TYPEINIT1( XMLAnimationsSoundContext, SvXMLImportContext );
427*b1cdbd2cSJim Jagielski
XMLAnimationsSoundContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList,XMLAnimationsEffectContext * pParent)428*b1cdbd2cSJim Jagielski XMLAnimationsSoundContext::XMLAnimationsSoundContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLocalName, const Reference< XAttributeList >& xAttrList, XMLAnimationsEffectContext* pParent )
429*b1cdbd2cSJim Jagielski : SvXMLImportContext( rImport, nPrfx, rLocalName ), mpParent( pParent )
430*b1cdbd2cSJim Jagielski {
431*b1cdbd2cSJim Jagielski if( mpParent && nPrfx == XML_NAMESPACE_PRESENTATION && IsXMLToken( rLocalName, XML_SOUND ) )
432*b1cdbd2cSJim Jagielski {
433*b1cdbd2cSJim Jagielski const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
434*b1cdbd2cSJim Jagielski for(sal_Int16 i=0; i < nAttrCount; i++)
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski OUString sAttrName = xAttrList->getNameByIndex( i );
437*b1cdbd2cSJim Jagielski OUString aLocalName;
438*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
439*b1cdbd2cSJim Jagielski OUString sValue = xAttrList->getValueByIndex( i );
440*b1cdbd2cSJim Jagielski
441*b1cdbd2cSJim Jagielski switch( nPrefix )
442*b1cdbd2cSJim Jagielski {
443*b1cdbd2cSJim Jagielski case XML_NAMESPACE_XLINK:
444*b1cdbd2cSJim Jagielski if( IsXMLToken( aLocalName, XML_HREF ) )
445*b1cdbd2cSJim Jagielski {
446*b1cdbd2cSJim Jagielski mpParent->maSoundURL = rImport.GetAbsoluteReference(sValue);
447*b1cdbd2cSJim Jagielski }
448*b1cdbd2cSJim Jagielski break;
449*b1cdbd2cSJim Jagielski case XML_NAMESPACE_PRESENTATION:
450*b1cdbd2cSJim Jagielski if( IsXMLToken( aLocalName, XML_PLAY_FULL ) )
451*b1cdbd2cSJim Jagielski {
452*b1cdbd2cSJim Jagielski mpParent->mbPlayFull = IsXMLToken( sValue, XML_TRUE );
453*b1cdbd2cSJim Jagielski }
454*b1cdbd2cSJim Jagielski }
455*b1cdbd2cSJim Jagielski }
456*b1cdbd2cSJim Jagielski }
457*b1cdbd2cSJim Jagielski }
458*b1cdbd2cSJim Jagielski
~XMLAnimationsSoundContext()459*b1cdbd2cSJim Jagielski XMLAnimationsSoundContext::~XMLAnimationsSoundContext()
460*b1cdbd2cSJim Jagielski {
461*b1cdbd2cSJim Jagielski }
462*b1cdbd2cSJim Jagielski
463*b1cdbd2cSJim Jagielski
464*b1cdbd2cSJim Jagielski TYPEINIT1( XMLAnimationsEffectContext, SvXMLImportContext );
465*b1cdbd2cSJim Jagielski
XMLAnimationsEffectContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList,AnimImpImpl * pImpl)466*b1cdbd2cSJim Jagielski XMLAnimationsEffectContext::XMLAnimationsEffectContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& rLocalName, const Reference< XAttributeList >& xAttrList, AnimImpImpl* pImpl )
467*b1cdbd2cSJim Jagielski : SvXMLImportContext(rImport, nPrfx, rLocalName),
468*b1cdbd2cSJim Jagielski mpImpl( pImpl ),
469*b1cdbd2cSJim Jagielski meKind( XMLE_SHOW ), mbTextEffect( sal_False ),
470*b1cdbd2cSJim Jagielski meEffect( EK_none ), meDirection( ED_none ), mnStartScale( 100 ),
471*b1cdbd2cSJim Jagielski meSpeed( AnimationSpeed_MEDIUM ), maDimColor(0), mbPlayFull( sal_False )
472*b1cdbd2cSJim Jagielski {
473*b1cdbd2cSJim Jagielski if( IsXMLToken( rLocalName, XML_SHOW_SHAPE ) )
474*b1cdbd2cSJim Jagielski {
475*b1cdbd2cSJim Jagielski meKind = XMLE_SHOW;
476*b1cdbd2cSJim Jagielski }
477*b1cdbd2cSJim Jagielski else if( IsXMLToken( rLocalName, XML_SHOW_TEXT ) )
478*b1cdbd2cSJim Jagielski {
479*b1cdbd2cSJim Jagielski meKind = XMLE_SHOW;
480*b1cdbd2cSJim Jagielski mbTextEffect = sal_True;
481*b1cdbd2cSJim Jagielski }
482*b1cdbd2cSJim Jagielski else if( IsXMLToken( rLocalName, XML_HIDE_SHAPE ) )
483*b1cdbd2cSJim Jagielski {
484*b1cdbd2cSJim Jagielski meKind = XMLE_HIDE;
485*b1cdbd2cSJim Jagielski }
486*b1cdbd2cSJim Jagielski else if( IsXMLToken( rLocalName, XML_HIDE_TEXT ) )
487*b1cdbd2cSJim Jagielski {
488*b1cdbd2cSJim Jagielski meKind = XMLE_HIDE;
489*b1cdbd2cSJim Jagielski mbTextEffect = sal_True;
490*b1cdbd2cSJim Jagielski }
491*b1cdbd2cSJim Jagielski else if( IsXMLToken( rLocalName, XML_DIM ) )
492*b1cdbd2cSJim Jagielski {
493*b1cdbd2cSJim Jagielski meKind = XMLE_DIM;
494*b1cdbd2cSJim Jagielski }
495*b1cdbd2cSJim Jagielski else if( IsXMLToken( rLocalName, XML_PLAY ) )
496*b1cdbd2cSJim Jagielski {
497*b1cdbd2cSJim Jagielski meKind = XMLE_PLAY;
498*b1cdbd2cSJim Jagielski }
499*b1cdbd2cSJim Jagielski else
500*b1cdbd2cSJim Jagielski {
501*b1cdbd2cSJim Jagielski // unknown action, overread
502*b1cdbd2cSJim Jagielski return;
503*b1cdbd2cSJim Jagielski }
504*b1cdbd2cSJim Jagielski
505*b1cdbd2cSJim Jagielski // read attributes
506*b1cdbd2cSJim Jagielski const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
507*b1cdbd2cSJim Jagielski for(sal_Int16 i=0; i < nAttrCount; i++)
508*b1cdbd2cSJim Jagielski {
509*b1cdbd2cSJim Jagielski OUString sAttrName = xAttrList->getNameByIndex( i );
510*b1cdbd2cSJim Jagielski OUString aLocalName;
511*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
512*b1cdbd2cSJim Jagielski OUString sValue = xAttrList->getValueByIndex( i );
513*b1cdbd2cSJim Jagielski
514*b1cdbd2cSJim Jagielski switch( nPrefix )
515*b1cdbd2cSJim Jagielski {
516*b1cdbd2cSJim Jagielski case XML_NAMESPACE_DRAW:
517*b1cdbd2cSJim Jagielski if( IsXMLToken( aLocalName, XML_SHAPE_ID ) )
518*b1cdbd2cSJim Jagielski {
519*b1cdbd2cSJim Jagielski maShapeId = sValue;
520*b1cdbd2cSJim Jagielski }
521*b1cdbd2cSJim Jagielski else if( IsXMLToken( aLocalName, XML_COLOR ) )
522*b1cdbd2cSJim Jagielski {
523*b1cdbd2cSJim Jagielski SvXMLUnitConverter::convertColor(maDimColor, sValue);
524*b1cdbd2cSJim Jagielski }
525*b1cdbd2cSJim Jagielski break;
526*b1cdbd2cSJim Jagielski
527*b1cdbd2cSJim Jagielski case XML_NAMESPACE_PRESENTATION:
528*b1cdbd2cSJim Jagielski if( IsXMLToken( aLocalName, XML_EFFECT ) )
529*b1cdbd2cSJim Jagielski {
530*b1cdbd2cSJim Jagielski sal_uInt16 eEnum;
531*b1cdbd2cSJim Jagielski if( SvXMLUnitConverter::convertEnum( eEnum, sValue, aXML_AnimationEffect_EnumMap ) )
532*b1cdbd2cSJim Jagielski meEffect = (XMLEffect)eEnum;
533*b1cdbd2cSJim Jagielski }
534*b1cdbd2cSJim Jagielski else if( IsXMLToken(aLocalName, XML_DIRECTION ) )
535*b1cdbd2cSJim Jagielski {
536*b1cdbd2cSJim Jagielski sal_uInt16 eEnum;
537*b1cdbd2cSJim Jagielski if( SvXMLUnitConverter::convertEnum( eEnum, sValue, aXML_AnimationDirection_EnumMap ) )
538*b1cdbd2cSJim Jagielski meDirection = (XMLEffectDirection)eEnum;
539*b1cdbd2cSJim Jagielski }
540*b1cdbd2cSJim Jagielski else if( IsXMLToken( aLocalName, XML_START_SCALE ) )
541*b1cdbd2cSJim Jagielski {
542*b1cdbd2cSJim Jagielski sal_Int32 nScale;
543*b1cdbd2cSJim Jagielski if( SvXMLUnitConverter::convertPercent( nScale, sValue ) )
544*b1cdbd2cSJim Jagielski mnStartScale = (sal_Int16)nScale;
545*b1cdbd2cSJim Jagielski }
546*b1cdbd2cSJim Jagielski else if( IsXMLToken( aLocalName, XML_SPEED ) )
547*b1cdbd2cSJim Jagielski {
548*b1cdbd2cSJim Jagielski sal_uInt16 eEnum;
549*b1cdbd2cSJim Jagielski if( SvXMLUnitConverter::convertEnum( eEnum, sValue, aXML_AnimationSpeed_EnumMap ) )
550*b1cdbd2cSJim Jagielski meSpeed = (AnimationSpeed)eEnum;
551*b1cdbd2cSJim Jagielski }
552*b1cdbd2cSJim Jagielski else if( IsXMLToken( aLocalName, XML_PATH_ID ) )
553*b1cdbd2cSJim Jagielski {
554*b1cdbd2cSJim Jagielski maPathShapeId = sValue;
555*b1cdbd2cSJim Jagielski }
556*b1cdbd2cSJim Jagielski break;
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski }
559*b1cdbd2cSJim Jagielski }
560*b1cdbd2cSJim Jagielski
~XMLAnimationsEffectContext()561*b1cdbd2cSJim Jagielski XMLAnimationsEffectContext::~XMLAnimationsEffectContext()
562*b1cdbd2cSJim Jagielski {
563*b1cdbd2cSJim Jagielski }
564*b1cdbd2cSJim Jagielski
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList)565*b1cdbd2cSJim Jagielski SvXMLImportContext * XMLAnimationsEffectContext::CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const Reference< XAttributeList>& xAttrList )
566*b1cdbd2cSJim Jagielski {
567*b1cdbd2cSJim Jagielski return new XMLAnimationsSoundContext( GetImport(), nPrefix, rLocalName, xAttrList, this );
568*b1cdbd2cSJim Jagielski }
569*b1cdbd2cSJim Jagielski
EndElement()570*b1cdbd2cSJim Jagielski void XMLAnimationsEffectContext::EndElement()
571*b1cdbd2cSJim Jagielski {
572*b1cdbd2cSJim Jagielski // set effect on shape
573*b1cdbd2cSJim Jagielski
574*b1cdbd2cSJim Jagielski try
575*b1cdbd2cSJim Jagielski {
576*b1cdbd2cSJim Jagielski UniReference< XMLShapeImportHelper > xShapeImport( GetImport().GetShapeImport() );
577*b1cdbd2cSJim Jagielski Any aAny;
578*b1cdbd2cSJim Jagielski
579*b1cdbd2cSJim Jagielski if( maShapeId.getLength() )
580*b1cdbd2cSJim Jagielski {
581*b1cdbd2cSJim Jagielski Reference< XPropertySet > xSet;
582*b1cdbd2cSJim Jagielski if( mpImpl->maLastShapeId != maShapeId )
583*b1cdbd2cSJim Jagielski {
584*b1cdbd2cSJim Jagielski xSet = Reference< XPropertySet >::query( GetImport().getInterfaceToIdentifierMapper().getReference( maShapeId ) );
585*b1cdbd2cSJim Jagielski if( xSet.is() )
586*b1cdbd2cSJim Jagielski {
587*b1cdbd2cSJim Jagielski // check for presentation shape service
588*b1cdbd2cSJim Jagielski {
589*b1cdbd2cSJim Jagielski Reference< XServiceInfo > xServiceInfo( xSet, UNO_QUERY );
590*b1cdbd2cSJim Jagielski if( !xServiceInfo.is() || !xServiceInfo->supportsService( mpImpl->msPresShapeService ) )
591*b1cdbd2cSJim Jagielski return;
592*b1cdbd2cSJim Jagielski }
593*b1cdbd2cSJim Jagielski
594*b1cdbd2cSJim Jagielski mpImpl->maLastShapeId = maShapeId;
595*b1cdbd2cSJim Jagielski mpImpl->mxLastShape = xSet;
596*b1cdbd2cSJim Jagielski }
597*b1cdbd2cSJim Jagielski }
598*b1cdbd2cSJim Jagielski else
599*b1cdbd2cSJim Jagielski {
600*b1cdbd2cSJim Jagielski xSet = mpImpl->mxLastShape;
601*b1cdbd2cSJim Jagielski }
602*b1cdbd2cSJim Jagielski
603*b1cdbd2cSJim Jagielski if( xSet.is() )
604*b1cdbd2cSJim Jagielski {
605*b1cdbd2cSJim Jagielski if( meKind == XMLE_DIM )
606*b1cdbd2cSJim Jagielski {
607*b1cdbd2cSJim Jagielski aAny <<= (sal_Bool)sal_True;
608*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msDimPrev, aAny );
609*b1cdbd2cSJim Jagielski
610*b1cdbd2cSJim Jagielski aAny <<= (sal_Int32)maDimColor.GetColor();
611*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msDimColor, aAny );
612*b1cdbd2cSJim Jagielski }
613*b1cdbd2cSJim Jagielski else if( meKind == XMLE_PLAY )
614*b1cdbd2cSJim Jagielski {
615*b1cdbd2cSJim Jagielski aAny <<= (sal_Bool)sal_True;
616*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msIsAnimation, aAny );
617*b1cdbd2cSJim Jagielski
618*b1cdbd2cSJim Jagielski // #42894# speed is not supported for the old group animation fallback, so no need to set it
619*b1cdbd2cSJim Jagielski // aAny <<= meSpeed;
620*b1cdbd2cSJim Jagielski // xSet->setPropertyValue( mpImpl->msSpeed, aAny );
621*b1cdbd2cSJim Jagielski }
622*b1cdbd2cSJim Jagielski else
623*b1cdbd2cSJim Jagielski {
624*b1cdbd2cSJim Jagielski if( meKind == XMLE_HIDE && !mbTextEffect && meEffect == EK_none )
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski aAny = bool2any( sal_True );
627*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msDimHide, aAny );
628*b1cdbd2cSJim Jagielski }
629*b1cdbd2cSJim Jagielski else
630*b1cdbd2cSJim Jagielski {
631*b1cdbd2cSJim Jagielski const AnimationEffect eEffect = ImplSdXMLgetEffect( meEffect, meDirection, mnStartScale, meKind == XMLE_SHOW );
632*b1cdbd2cSJim Jagielski
633*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mbTextEffect ? mpImpl->msTextEffect : mpImpl->msEffect, makeAny( eEffect ) );
634*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msSpeed, makeAny( meSpeed ) );
635*b1cdbd2cSJim Jagielski
636*b1cdbd2cSJim Jagielski if( eEffect == AnimationEffect_PATH && maPathShapeId.getLength() )
637*b1cdbd2cSJim Jagielski {
638*b1cdbd2cSJim Jagielski Reference< XShape > xPath( GetImport().getInterfaceToIdentifierMapper().getReference( maPathShapeId ), UNO_QUERY );
639*b1cdbd2cSJim Jagielski if( xPath.is() )
640*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msAnimPath, makeAny( xPath ) );
641*b1cdbd2cSJim Jagielski }
642*b1cdbd2cSJim Jagielski }
643*b1cdbd2cSJim Jagielski }
644*b1cdbd2cSJim Jagielski }
645*b1cdbd2cSJim Jagielski if( maSoundURL.getLength() != 0 )
646*b1cdbd2cSJim Jagielski {
647*b1cdbd2cSJim Jagielski if( xSet.is() )
648*b1cdbd2cSJim Jagielski {
649*b1cdbd2cSJim Jagielski aAny <<= maSoundURL;
650*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msSound, aAny );
651*b1cdbd2cSJim Jagielski
652*b1cdbd2cSJim Jagielski aAny <<= bool2any( mbPlayFull );
653*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msPlayFull, aAny );
654*b1cdbd2cSJim Jagielski
655*b1cdbd2cSJim Jagielski aAny <<= bool2any( sal_True );
656*b1cdbd2cSJim Jagielski xSet->setPropertyValue( mpImpl->msSoundOn, aAny );
657*b1cdbd2cSJim Jagielski }
658*b1cdbd2cSJim Jagielski else
659*b1cdbd2cSJim Jagielski {
660*b1cdbd2cSJim Jagielski DBG_ERROR("XMLAnimationsEffectContext::EndElement - Sound URL without a XPropertySet!");
661*b1cdbd2cSJim Jagielski }
662*b1cdbd2cSJim Jagielski }
663*b1cdbd2cSJim Jagielski }
664*b1cdbd2cSJim Jagielski }
665*b1cdbd2cSJim Jagielski catch( Exception e )
666*b1cdbd2cSJim Jagielski {
667*b1cdbd2cSJim Jagielski DBG_ERROR( "exception catched while importing animation information!" );
668*b1cdbd2cSJim Jagielski }
669*b1cdbd2cSJim Jagielski }
670*b1cdbd2cSJim Jagielski
671*b1cdbd2cSJim Jagielski ///////////////////////////////////////////////////////////////////////
672*b1cdbd2cSJim Jagielski
673*b1cdbd2cSJim Jagielski TYPEINIT1( XMLAnimationsContext, SvXMLImportContext );
674*b1cdbd2cSJim Jagielski
XMLAnimationsContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const rtl::OUString & rLocalName,const com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList> &)675*b1cdbd2cSJim Jagielski XMLAnimationsContext::XMLAnimationsContext( SvXMLImport& rImport, sal_uInt16 nPrfx, const rtl::OUString& rLocalName,
676*b1cdbd2cSJim Jagielski const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& )
677*b1cdbd2cSJim Jagielski : SvXMLImportContext(rImport, nPrfx, rLocalName)
678*b1cdbd2cSJim Jagielski {
679*b1cdbd2cSJim Jagielski mpImpl = new AnimImpImpl();
680*b1cdbd2cSJim Jagielski }
681*b1cdbd2cSJim Jagielski
~XMLAnimationsContext()682*b1cdbd2cSJim Jagielski XMLAnimationsContext::~XMLAnimationsContext()
683*b1cdbd2cSJim Jagielski {
684*b1cdbd2cSJim Jagielski delete mpImpl;
685*b1cdbd2cSJim Jagielski }
686*b1cdbd2cSJim Jagielski
CreateChildContext(sal_uInt16 nPrefix,const::rtl::OUString & rLocalName,const com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList> & xAttrList)687*b1cdbd2cSJim Jagielski SvXMLImportContext * XMLAnimationsContext::CreateChildContext( sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
688*b1cdbd2cSJim Jagielski const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList>& xAttrList )
689*b1cdbd2cSJim Jagielski {
690*b1cdbd2cSJim Jagielski return new XMLAnimationsEffectContext( GetImport(), nPrefix, rLocalName, xAttrList, mpImpl );
691*b1cdbd2cSJim Jagielski }
692