Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <com/sun/star/util/XCloneable.hpp>
21 : #include <com/sun/star/uno/XComponentContext.hpp>
22 : #include <com/sun/star/lang/XServiceInfo.hpp>
23 : #include <com/sun/star/lang/XTypeProvider.hpp>
24 : #include <com/sun/star/animations/XAnimateColor.hpp>
25 : #include <com/sun/star/animations/XAnimateSet.hpp>
26 : #include <com/sun/star/animations/XAnimateMotion.hpp>
27 : #include <com/sun/star/animations/XAnimateTransform.hpp>
28 : #include <com/sun/star/animations/XParallelTimeContainer.hpp>
29 : #include <com/sun/star/animations/XTransitionFilter.hpp>
30 : #include <com/sun/star/animations/XTimeContainer.hpp>
31 : #include <com/sun/star/animations/XIterateContainer.hpp>
32 : #include <com/sun/star/animations/XAudio.hpp>
33 : #include <com/sun/star/animations/XCommand.hpp>
34 : #include <com/sun/star/animations/AnimationNodeType.hpp>
35 : #include <com/sun/star/animations/AnimationCalcMode.hpp>
36 : #include <com/sun/star/animations/AnimationFill.hpp>
37 : #include <com/sun/star/animations/AnimationRestart.hpp>
38 : #include <com/sun/star/animations/AnimationColorSpace.hpp>
39 : #include <com/sun/star/animations/AnimationAdditiveMode.hpp>
40 : #include <com/sun/star/animations/AnimationTransformType.hpp>
41 : #include <com/sun/star/animations/TransitionType.hpp>
42 : #include <com/sun/star/animations/TransitionSubType.hpp>
43 : #include <com/sun/star/presentation/ShapeAnimationSubType.hpp>
44 : #include <com/sun/star/container/XEnumerationAccess.hpp>
45 : #include <com/sun/star/beans/NamedValue.hpp>
46 : #include <com/sun/star/util/XChangesNotifier.hpp>
47 : #include <com/sun/star/lang/XUnoTunnel.hpp>
48 : #include <comphelper/servicehelper.hxx>
49 : #include <cppuhelper/queryinterface.hxx>
50 : #include <cppuhelper/interfacecontainer.hxx>
51 : #include <cppuhelper/supportsservice.hxx>
52 : #include <cppuhelper/weakref.hxx>
53 :
54 : #include <cppuhelper/implbase1.hxx>
55 :
56 : #include <osl/mutex.hxx>
57 : #include <list>
58 : #include <algorithm>
59 : #include <string.h>
60 :
61 : using ::osl::Mutex;
62 : using ::osl::Guard;
63 : using ::cppu::OInterfaceContainerHelper;
64 : using ::cppu::OInterfaceIteratorHelper;
65 : using ::com::sun::star::uno::Any;
66 : using ::com::sun::star::uno::UNO_QUERY;
67 : using ::com::sun::star::uno::XInterface;
68 : using ::com::sun::star::uno::RuntimeException;
69 : using ::com::sun::star::uno::Sequence;
70 : using ::com::sun::star::uno::Reference;
71 : using ::com::sun::star::uno::WeakReference;
72 : using ::com::sun::star::uno::XComponentContext;
73 : using ::com::sun::star::uno::Exception;
74 : using ::com::sun::star::uno::XWeak;
75 : using ::com::sun::star::uno::Type;
76 : using ::com::sun::star::uno::makeAny;
77 : using ::com::sun::star::lang::NoSupportException;
78 : using ::com::sun::star::lang::IllegalArgumentException;
79 : using ::com::sun::star::lang::WrappedTargetException;
80 : using ::com::sun::star::lang::XServiceInfo;
81 : using ::com::sun::star::lang::XTypeProvider;
82 : using ::com::sun::star::container::NoSuchElementException;
83 : using ::com::sun::star::container::ElementExistException;
84 : using ::com::sun::star::container::XEnumeration;
85 : using ::com::sun::star::container::XEnumerationAccess;
86 : using ::com::sun::star::beans::NamedValue;
87 : using ::com::sun::star::util::XCloneable;
88 : using ::com::sun::star::lang::XUnoTunnel;
89 : using ::com::sun::star::util::XChangesNotifier;
90 : using ::com::sun::star::util::XChangesListener;
91 : using ::com::sun::star::util::ElementChange;
92 : using ::com::sun::star::util::ChangesEvent;
93 :
94 : using ::cppu::OWeakObject;
95 :
96 : using namespace ::com::sun::star::animations;
97 : using namespace ::com::sun::star::animations::AnimationNodeType;
98 :
99 : namespace animcore
100 : {
101 :
102 :
103 :
104 : typedef ::std::list< Reference< XAnimationNode > > ChildList_t;
105 :
106 :
107 :
108 2378 : class AnimationNodeBase : public XAnimateMotion,
109 : public XAnimateColor,
110 : public XTransitionFilter,
111 : public XAnimateSet,
112 : public XAnimateTransform,
113 : public XParallelTimeContainer,
114 : public XIterateContainer,
115 : public XServiceInfo,
116 : public XTypeProvider,
117 : public XAudio,
118 : public XCommand,
119 : public XCloneable,
120 : public XChangesNotifier,
121 : public XUnoTunnel,
122 : public OWeakObject
123 : {
124 : public:
125 : // our first, last and only protection from mutli-threads!
126 : Mutex maMutex;
127 : };
128 :
129 : class AnimationNode : public AnimationNodeBase
130 : {
131 : public:
132 : explicit AnimationNode(sal_Int16 nNodeType);
133 : explicit AnimationNode(const AnimationNode& rNode);
134 : virtual ~AnimationNode();
135 :
136 : // XInterface
137 : virtual Any SAL_CALL queryInterface( const Type& aType ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
138 : virtual void SAL_CALL acquire() throw () SAL_OVERRIDE;
139 : virtual void SAL_CALL release() throw () SAL_OVERRIDE;
140 :
141 : // XTypeProvider
142 : virtual Sequence< Type > SAL_CALL getTypes() throw (RuntimeException, std::exception) SAL_OVERRIDE;
143 : virtual Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (RuntimeException, std::exception) SAL_OVERRIDE;
144 :
145 : // XServiceInfo
146 : OUString SAL_CALL getImplementationName() throw(std::exception) SAL_OVERRIDE;
147 : Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(std::exception) SAL_OVERRIDE;
148 : sal_Bool SAL_CALL supportsService(const OUString& ServiceName) throw(std::exception) SAL_OVERRIDE;
149 :
150 : // XChild
151 : virtual Reference< XInterface > SAL_CALL getParent() throw (RuntimeException, std::exception) SAL_OVERRIDE;
152 : virtual void SAL_CALL setParent( const Reference< XInterface >& Parent ) throw (NoSupportException, RuntimeException, std::exception) SAL_OVERRIDE;
153 :
154 : // XCloneable
155 : virtual Reference< XCloneable > SAL_CALL createClone() throw (RuntimeException, std::exception) SAL_OVERRIDE;
156 :
157 : // XAnimationNode
158 : virtual sal_Int16 SAL_CALL getType() throw (RuntimeException, std::exception) SAL_OVERRIDE;
159 : virtual Any SAL_CALL getBegin() throw (RuntimeException, std::exception) SAL_OVERRIDE;
160 : virtual void SAL_CALL setBegin( const Any& _begin ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
161 : virtual Any SAL_CALL getDuration() throw (RuntimeException, std::exception) SAL_OVERRIDE;
162 : virtual void SAL_CALL setDuration( const Any& _duration ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
163 : virtual Any SAL_CALL getEnd() throw (RuntimeException, std::exception) SAL_OVERRIDE;
164 : virtual void SAL_CALL setEnd( const Any& _end ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
165 : virtual Any SAL_CALL getEndSync() throw (RuntimeException, std::exception) SAL_OVERRIDE;
166 : virtual void SAL_CALL setEndSync( const Any& _endsync ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
167 : virtual Any SAL_CALL getRepeatCount() throw (RuntimeException, std::exception) SAL_OVERRIDE;
168 : virtual void SAL_CALL setRepeatCount( const Any& _repeatcount ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
169 : virtual Any SAL_CALL getRepeatDuration() throw (RuntimeException, std::exception) SAL_OVERRIDE;
170 : virtual void SAL_CALL setRepeatDuration( const Any& _repeatduration ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
171 : virtual sal_Int16 SAL_CALL getFill() throw (RuntimeException, std::exception) SAL_OVERRIDE;
172 : virtual void SAL_CALL setFill( sal_Int16 _fill ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
173 : virtual sal_Int16 SAL_CALL getFillDefault() throw (RuntimeException, std::exception) SAL_OVERRIDE;
174 : virtual void SAL_CALL setFillDefault( sal_Int16 _filldefault ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
175 : virtual sal_Int16 SAL_CALL getRestart() throw (RuntimeException, std::exception) SAL_OVERRIDE;
176 : virtual void SAL_CALL setRestart( sal_Int16 _restart ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
177 : virtual sal_Int16 SAL_CALL getRestartDefault() throw (RuntimeException, std::exception) SAL_OVERRIDE;
178 : virtual void SAL_CALL setRestartDefault( sal_Int16 _restartdefault ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
179 : virtual double SAL_CALL getAcceleration() throw (RuntimeException, std::exception) SAL_OVERRIDE;
180 : virtual void SAL_CALL setAcceleration( double _acceleration ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
181 : virtual double SAL_CALL getDecelerate() throw (RuntimeException, std::exception) SAL_OVERRIDE;
182 : virtual void SAL_CALL setDecelerate( double _decelerate ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
183 : virtual sal_Bool SAL_CALL getAutoReverse() throw (RuntimeException, std::exception) SAL_OVERRIDE;
184 : virtual void SAL_CALL setAutoReverse( sal_Bool _autoreverse ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
185 : virtual Sequence< NamedValue > SAL_CALL getUserData() throw (RuntimeException, std::exception) SAL_OVERRIDE;
186 : virtual void SAL_CALL setUserData( const Sequence< NamedValue >& _userdata ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
187 :
188 : // XAnimate
189 : virtual Any SAL_CALL getTarget() throw (RuntimeException, std::exception) SAL_OVERRIDE;
190 : virtual void SAL_CALL setTarget( const Any& _target ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
191 : virtual sal_Int16 SAL_CALL getSubItem() throw (RuntimeException, std::exception) SAL_OVERRIDE;
192 : virtual void SAL_CALL setSubItem( sal_Int16 _subitem ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
193 : virtual OUString SAL_CALL getAttributeName() throw (RuntimeException, std::exception) SAL_OVERRIDE;
194 : virtual void SAL_CALL setAttributeName( const OUString& _attribute ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
195 : virtual Sequence< Any > SAL_CALL getValues() throw (RuntimeException, std::exception) SAL_OVERRIDE;
196 : virtual void SAL_CALL setValues( const Sequence< Any >& _values ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
197 : virtual Sequence< double > SAL_CALL getKeyTimes() throw (RuntimeException, std::exception) SAL_OVERRIDE;
198 : virtual void SAL_CALL setKeyTimes( const Sequence< double >& _keytimes ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
199 : virtual sal_Int16 SAL_CALL getValueType() throw (RuntimeException, std::exception) SAL_OVERRIDE;
200 : virtual void SAL_CALL setValueType( sal_Int16 _valuetype ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
201 : virtual sal_Int16 SAL_CALL getCalcMode() throw (RuntimeException, std::exception) SAL_OVERRIDE;
202 : virtual void SAL_CALL setCalcMode( sal_Int16 _calcmode ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
203 : virtual sal_Bool SAL_CALL getAccumulate() throw (RuntimeException, std::exception) SAL_OVERRIDE;
204 : virtual void SAL_CALL setAccumulate( sal_Bool _accumulate ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
205 : virtual sal_Int16 SAL_CALL getAdditive() throw (RuntimeException, std::exception) SAL_OVERRIDE;
206 : virtual void SAL_CALL setAdditive( sal_Int16 _additive ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
207 : virtual Any SAL_CALL getFrom() throw (RuntimeException, std::exception) SAL_OVERRIDE;
208 : virtual void SAL_CALL setFrom( const Any& _from ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
209 : virtual Any SAL_CALL getTo() throw (RuntimeException, std::exception) SAL_OVERRIDE;
210 : virtual void SAL_CALL setTo( const Any& _to ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
211 : virtual Any SAL_CALL getBy() throw (RuntimeException, std::exception) SAL_OVERRIDE;
212 : virtual void SAL_CALL setBy( const Any& _by ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
213 : virtual Sequence< TimeFilterPair > SAL_CALL getTimeFilter() throw (RuntimeException, std::exception) SAL_OVERRIDE;
214 : virtual void SAL_CALL setTimeFilter( const Sequence< TimeFilterPair >& _timefilter ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
215 : virtual OUString SAL_CALL getFormula() throw (RuntimeException, std::exception) SAL_OVERRIDE;
216 : virtual void SAL_CALL setFormula( const OUString& _formula ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
217 :
218 : // XAnimateColor
219 : virtual sal_Int16 SAL_CALL getColorInterpolation() throw (RuntimeException, std::exception) SAL_OVERRIDE;
220 : virtual void SAL_CALL setColorInterpolation( sal_Int16 _colorspace ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
221 : virtual sal_Bool SAL_CALL getDirection() throw (RuntimeException, std::exception) SAL_OVERRIDE;
222 : virtual void SAL_CALL setDirection( sal_Bool _direction ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
223 :
224 : // XAnimateMotion
225 : virtual Any SAL_CALL getPath() throw (RuntimeException, std::exception) SAL_OVERRIDE;
226 : virtual void SAL_CALL setPath( const Any& _path ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
227 : virtual Any SAL_CALL getOrigin() throw (RuntimeException, std::exception) SAL_OVERRIDE;
228 : virtual void SAL_CALL setOrigin( const Any& _origin ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
229 :
230 : // XAnimateTransform
231 : virtual sal_Int16 SAL_CALL getTransformType() throw (RuntimeException, std::exception) SAL_OVERRIDE;
232 : virtual void SAL_CALL setTransformType( sal_Int16 _transformtype ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
233 :
234 : // XTransitionFilter
235 : virtual sal_Int16 SAL_CALL getTransition() throw (RuntimeException, std::exception) SAL_OVERRIDE;
236 : virtual void SAL_CALL setTransition( sal_Int16 _transition ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
237 : virtual sal_Int16 SAL_CALL getSubtype() throw (RuntimeException, std::exception) SAL_OVERRIDE;
238 : virtual void SAL_CALL setSubtype( sal_Int16 _subtype ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
239 : virtual sal_Bool SAL_CALL getMode() throw (RuntimeException, std::exception) SAL_OVERRIDE;
240 : virtual void SAL_CALL setMode( sal_Bool _mode ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
241 : virtual sal_Int32 SAL_CALL getFadeColor() throw (RuntimeException, std::exception) SAL_OVERRIDE;
242 : virtual void SAL_CALL setFadeColor( sal_Int32 _fadecolor ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
243 :
244 : // XAudio
245 : virtual Any SAL_CALL getSource() throw (RuntimeException, std::exception) SAL_OVERRIDE;
246 : virtual void SAL_CALL setSource( const Any& _source ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
247 : virtual double SAL_CALL getVolume() throw (RuntimeException, std::exception) SAL_OVERRIDE;
248 : virtual void SAL_CALL setVolume( double _volume ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
249 :
250 :
251 : // XCommand - the following two shadowed by animate, unfortunately
252 : // virtual Any SAL_CALL getTarget() throw (RuntimeException);
253 : // virtual void SAL_CALL setTarget( const Any& _target ) throw (RuntimeException);
254 : virtual sal_Int16 SAL_CALL getCommand() throw (RuntimeException, std::exception) SAL_OVERRIDE;
255 : virtual void SAL_CALL setCommand( sal_Int16 _command ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
256 : virtual Any SAL_CALL getParameter() throw (RuntimeException, std::exception) SAL_OVERRIDE;
257 : virtual void SAL_CALL setParameter( const Any& _parameter ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
258 :
259 : // XElementAccess
260 : virtual Type SAL_CALL getElementType() throw (RuntimeException, std::exception) SAL_OVERRIDE;
261 : virtual sal_Bool SAL_CALL hasElements() throw (RuntimeException, std::exception) SAL_OVERRIDE;
262 :
263 : // XEnumerationAccess
264 : virtual Reference< XEnumeration > SAL_CALL createEnumeration() throw (RuntimeException, std::exception) SAL_OVERRIDE;
265 :
266 : // XTimeContainer
267 : virtual Reference< XAnimationNode > SAL_CALL insertBefore( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException, std::exception) SAL_OVERRIDE;
268 : virtual Reference< XAnimationNode > SAL_CALL insertAfter( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException, std::exception) SAL_OVERRIDE;
269 : virtual Reference< XAnimationNode > SAL_CALL replaceChild( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& oldChild ) throw( IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException, std::exception) SAL_OVERRIDE;
270 : virtual Reference< XAnimationNode > SAL_CALL removeChild( const Reference< XAnimationNode >& oldChild ) throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException, std::exception) SAL_OVERRIDE;
271 : virtual Reference< XAnimationNode > SAL_CALL appendChild( const Reference< XAnimationNode >& newChild ) throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException, std::exception) SAL_OVERRIDE;
272 :
273 : // XIterateContainer
274 : virtual sal_Int16 SAL_CALL getIterateType() throw (RuntimeException, std::exception) SAL_OVERRIDE;
275 : virtual void SAL_CALL setIterateType( sal_Int16 _iteratetype ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
276 : virtual double SAL_CALL getIterateInterval() throw (RuntimeException, std::exception) SAL_OVERRIDE;
277 : virtual void SAL_CALL setIterateInterval( double _iterateinterval ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
278 :
279 : // XChangesNotifier
280 : virtual void SAL_CALL addChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
281 : virtual void SAL_CALL removeChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
282 :
283 : // XUnoTunnel
284 : virtual ::sal_Int64 SAL_CALL getSomething( const Sequence< ::sal_Int8 >& aIdentifier ) throw (RuntimeException, std::exception) SAL_OVERRIDE;
285 :
286 : static const Sequence< sal_Int8 > & getUnoTunnelId();
287 : void fireChangeListener();
288 :
289 : private:
290 : OInterfaceContainerHelper maChangeListener;
291 :
292 : static void initTypeProvider( sal_Int16 nNodeType ) throw();
293 :
294 : const sal_Int16 mnNodeType;
295 :
296 : // for XTypeProvider
297 : static Sequence< Type >* mpTypes[12];
298 :
299 : // attributes for the XAnimationNode interface implementation
300 : Any maBegin, maDuration, maEnd, maEndSync, maRepeatCount, maRepeatDuration;
301 : sal_Int16 mnFill, mnFillDefault, mnRestart, mnRestartDefault;
302 : double mfAcceleration, mfDecelerate;
303 : bool mbAutoReverse;
304 : Sequence< NamedValue > maUserData;
305 :
306 : // parent interface for XChild interface implementation
307 : WeakReference<XInterface> mxParent;
308 : AnimationNode* mpParent;
309 :
310 : // attributes for XAnimate
311 : Any maTarget;
312 : OUString maAttributeName, maFormula;
313 : Sequence< Any > maValues;
314 : Sequence< double > maKeyTimes;
315 : sal_Int16 mnValueType, mnSubItem;
316 : sal_Int16 mnCalcMode, mnAdditive;
317 : bool mbAccumulate;
318 : Any maFrom, maTo, maBy;
319 : Sequence< TimeFilterPair > maTimeFilter;
320 :
321 : // attributes for XAnimateColor
322 : sal_Int16 mnColorSpace;
323 : bool mbDirection;
324 :
325 : // attributes for XAnimateMotion
326 : Any maPath, maOrigin;
327 :
328 : // attributes for XAnimateTransform
329 : sal_Int16 mnTransformType;
330 :
331 : // attributes for XTransitionFilter
332 : sal_Int16 mnTransition;
333 : sal_Int16 mnSubtype;
334 : bool mbMode;
335 : sal_Int32 mnFadeColor;
336 :
337 : // XAudio
338 : double mfVolume;
339 :
340 : // XCommand
341 : sal_Int16 mnCommand;
342 : Any maParameter;
343 :
344 : // XIterateContainer
345 : sal_Int16 mnIterateType;
346 : double mfIterateInterval;
347 :
348 : /** sorted list of child nodes for XTimeContainer*/
349 : ChildList_t maChildren;
350 : };
351 :
352 :
353 :
354 : class TimeContainerEnumeration : public ::cppu::WeakImplHelper1< XEnumeration >
355 : {
356 : public:
357 : explicit TimeContainerEnumeration( const ChildList_t &rChildren );
358 : virtual ~TimeContainerEnumeration();
359 :
360 : // Methods
361 : virtual sal_Bool SAL_CALL hasMoreElements() throw (RuntimeException, std::exception) SAL_OVERRIDE;
362 : virtual Any SAL_CALL nextElement( ) throw (NoSuchElementException, WrappedTargetException, RuntimeException, std::exception) SAL_OVERRIDE;
363 :
364 : private:
365 : /** sorted list of child nodes */
366 : ChildList_t maChildren;
367 :
368 : /** current iteration position */
369 : ChildList_t::iterator maIter;
370 :
371 : /** our first, last and only protection from mutli-threads! */
372 : Mutex maMutex;
373 : };
374 :
375 475 : TimeContainerEnumeration::TimeContainerEnumeration( const ChildList_t &rChildren )
376 475 : : maChildren( rChildren )
377 : {
378 475 : maIter = maChildren.begin();
379 475 : }
380 :
381 950 : TimeContainerEnumeration::~TimeContainerEnumeration()
382 : {
383 950 : }
384 :
385 : // Methods
386 523 : sal_Bool SAL_CALL TimeContainerEnumeration::hasMoreElements() throw (RuntimeException, std::exception)
387 : {
388 523 : Guard< Mutex > aGuard( maMutex );
389 :
390 523 : return maIter != maChildren.end();
391 : }
392 :
393 565 : Any SAL_CALL TimeContainerEnumeration::nextElement()
394 : throw (NoSuchElementException, WrappedTargetException, RuntimeException, std::exception)
395 : {
396 565 : Guard< Mutex > aGuard( maMutex );
397 :
398 565 : if( maIter == maChildren.end() )
399 0 : throw NoSuchElementException();
400 :
401 565 : return makeAny( (*maIter++) );
402 : }
403 :
404 :
405 :
406 : Sequence< Type >* AnimationNode::mpTypes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
407 :
408 1195 : AnimationNode::AnimationNode( sal_Int16 nNodeType )
409 : : maChangeListener(maMutex),
410 : mnNodeType( nNodeType ),
411 : mnFill( AnimationFill::DEFAULT ),
412 : mnFillDefault( AnimationFill::INHERIT ),
413 : mnRestart( AnimationRestart:: DEFAULT ),
414 : mnRestartDefault( AnimationRestart:: INHERIT ),
415 : mfAcceleration( 0.0 ),
416 : mfDecelerate( 0.0 ),
417 : mbAutoReverse( false ),
418 : mpParent(0),
419 : mnValueType( 0 ),
420 : mnSubItem( 0 ),
421 : mnCalcMode( (nNodeType == AnimationNodeType::ANIMATEMOTION) ? AnimationCalcMode::PACED : AnimationCalcMode::LINEAR),
422 : mnAdditive(AnimationAdditiveMode::REPLACE),
423 : mbAccumulate(false),
424 : mnColorSpace( AnimationColorSpace::RGB ),
425 : mbDirection( true ),
426 : mnTransformType( AnimationTransformType::TRANSLATE ),
427 : mnTransition(TransitionType::BARWIPE),
428 : mnSubtype(TransitionSubType::DEFAULT),
429 : mbMode(true),
430 : mnFadeColor(0),
431 : mfVolume(1.0),
432 : mnCommand(0),
433 : mnIterateType( ::com::sun::star::presentation::ShapeAnimationSubType::AS_WHOLE ),
434 1195 : mfIterateInterval(0.0)
435 : {
436 : OSL_ENSURE((sal_uInt32)nNodeType < sizeof(mpTypes)/sizeof(Sequence<Type>*), "NodeType out of range");
437 1195 : }
438 :
439 0 : AnimationNode::AnimationNode( const AnimationNode& rNode )
440 : : AnimationNodeBase(),
441 : maChangeListener(maMutex),
442 : mnNodeType( rNode.mnNodeType ),
443 :
444 : // attributes for the XAnimationNode interface implementation
445 : maBegin( rNode.maBegin ),
446 : maDuration( rNode.maDuration ),
447 : maEnd( rNode.maEnd ),
448 : maEndSync( rNode.maEndSync ),
449 : maRepeatCount( rNode.maRepeatCount ),
450 : maRepeatDuration( rNode.maRepeatDuration ),
451 : mnFill( rNode.mnFill ),
452 : mnFillDefault( rNode.mnFillDefault ),
453 : mnRestart( rNode.mnRestart ),
454 : mnRestartDefault( rNode.mnRestartDefault ),
455 : mfAcceleration( rNode.mfAcceleration ),
456 : mfDecelerate( rNode.mfDecelerate ),
457 : mbAutoReverse( rNode.mbAutoReverse ),
458 : maUserData( rNode.maUserData ),
459 : mpParent(0),
460 :
461 : // attributes for XAnimate
462 : maTarget( rNode.maTarget ),
463 : maAttributeName( rNode.maAttributeName ),
464 : maFormula( rNode.maFormula ),
465 : maValues( rNode.maValues ),
466 : maKeyTimes( rNode.maKeyTimes ),
467 : mnValueType( rNode.mnValueType ),
468 : mnSubItem( rNode.mnSubItem ),
469 : mnCalcMode( rNode.mnCalcMode ),
470 : mnAdditive( rNode.mnAdditive ),
471 : mbAccumulate( rNode.mbAccumulate ),
472 : maFrom( rNode.maFrom ),
473 : maTo( rNode.maTo ),
474 : maBy( rNode.maBy ),
475 : maTimeFilter( rNode.maTimeFilter ),
476 :
477 : // attributes for XAnimateColor
478 : mnColorSpace( rNode.mnColorSpace ),
479 : mbDirection( rNode.mbDirection ),
480 :
481 : // attributes for XAnimateMotion
482 : maPath( rNode.maPath ),
483 : maOrigin( rNode.maOrigin ),
484 :
485 : // attributes for XAnimateTransform
486 : mnTransformType( rNode.mnTransformType ),
487 :
488 : // attributes for XTransitionFilter
489 : mnTransition( rNode.mnTransition ),
490 : mnSubtype( rNode.mnSubtype ),
491 : mbMode( rNode.mbMode ),
492 : mnFadeColor( rNode.mnFadeColor ),
493 :
494 : // XAudio
495 : mfVolume( rNode.mfVolume ),
496 :
497 : // XCommand
498 : mnCommand( rNode.mnCommand ),
499 : maParameter( rNode.maParameter ),
500 :
501 : // XIterateContainer
502 : mnIterateType( rNode.mnIterateType ),
503 0 : mfIterateInterval( rNode.mfIterateInterval )
504 : {
505 0 : }
506 :
507 2366 : AnimationNode::~AnimationNode()
508 : {
509 2366 : }
510 :
511 1 : Sequence<OUString> getSupportedServiceNames_PAR()
512 : {
513 1 : Sequence<OUString> aRet(1);
514 1 : aRet.getArray()[0] = "com.sun.star.animations.ParallelTimeContainer";
515 1 : return aRet;
516 : }
517 :
518 1 : OUString getImplementationName_PAR()
519 : {
520 1 : return OUString( "animcore::ParallelTimeContainer" );
521 : }
522 :
523 1 : Sequence<OUString> getSupportedServiceNames_SEQ()
524 : {
525 1 : Sequence<OUString> aRet(1);
526 1 : aRet.getArray()[0] = "com.sun.star.animations.SequenceTimeContainer";
527 1 : return aRet;
528 : }
529 :
530 1 : OUString getImplementationName_SEQ()
531 : {
532 1 : return OUString( "animcore::SequenceTimeContainer" );
533 : }
534 :
535 1 : Sequence<OUString> getSupportedServiceNames_ITERATE()
536 : {
537 1 : Sequence<OUString> aRet(1);
538 1 : aRet.getArray()[0] = "com.sun.star.animations.IterateContainer";
539 1 : return aRet;
540 : }
541 :
542 1 : OUString getImplementationName_ITERATE()
543 : {
544 1 : return OUString( "animcore::IterateContainer" );
545 : }
546 :
547 0 : Sequence<OUString> getSupportedServiceNames_ANIMATE()
548 : {
549 0 : Sequence<OUString> aRet(1);
550 0 : aRet.getArray()[0] = "com.sun.star.animations.Animate";
551 0 : return aRet;
552 : }
553 :
554 0 : OUString getImplementationName_ANIMATE()
555 : {
556 0 : return OUString( "animcore::Animate" );
557 : }
558 :
559 1 : Sequence<OUString> getSupportedServiceNames_SET()
560 : {
561 1 : Sequence<OUString> aRet(1);
562 1 : aRet.getArray()[0] = "com.sun.star.animations.AnimateSet";
563 1 : return aRet;
564 : }
565 :
566 1 : OUString getImplementationName_SET()
567 : {
568 1 : return OUString( "animcore::AnimateSet" );
569 : }
570 :
571 1 : Sequence<OUString> getSupportedServiceNames_ANIMATECOLOR()
572 : {
573 1 : Sequence<OUString> aRet(1);
574 1 : aRet.getArray()[0] = "com.sun.star.animations.AnimateColor";
575 1 : return aRet;
576 : }
577 :
578 1 : OUString getImplementationName_ANIMATECOLOR()
579 : {
580 1 : return OUString( "animcore::AnimateColor" );
581 : }
582 :
583 1 : Sequence<OUString> getSupportedServiceNames_ANIMATEMOTION()
584 : {
585 1 : Sequence<OUString> aRet(1);
586 1 : aRet.getArray()[0] = "com.sun.star.animations.AnimateMotion";
587 1 : return aRet;
588 : }
589 :
590 1 : OUString getImplementationName_ANIMATEMOTION()
591 : {
592 1 : return OUString( "animcore::AnimateMotion" );
593 : }
594 :
595 0 : Sequence<OUString> getSupportedServiceNames_ANIMATETRANSFORM()
596 : {
597 0 : Sequence<OUString> aRet(1);
598 0 : aRet.getArray()[0] = "com.sun.star.animations.AnimateTransform";
599 0 : return aRet;
600 : }
601 :
602 0 : OUString getImplementationName_ANIMATETRANSFORM()
603 : {
604 0 : return OUString( "animcore::AnimateTransform" );
605 : }
606 :
607 0 : Sequence<OUString> getSupportedServiceNames_TRANSITIONFILTER()
608 : {
609 0 : Sequence<OUString> aRet(1);
610 0 : aRet.getArray()[0] = "com.sun.star.animations.TransitionFilter";
611 0 : return aRet;
612 : }
613 :
614 0 : OUString getImplementationName_TRANSITIONFILTER()
615 : {
616 0 : return OUString( "animcore::TransitionFilter" );
617 : }
618 :
619 1 : Sequence<OUString> getSupportedServiceNames_AUDIO()
620 : {
621 1 : Sequence<OUString> aRet(1);
622 1 : aRet.getArray()[0] = "com.sun.star.animations.Audio";
623 1 : return aRet;
624 : }
625 :
626 1 : OUString getImplementationName_AUDIO()
627 : {
628 1 : return OUString( "animcore::Audio" );
629 : }
630 :
631 1 : Sequence<OUString> getSupportedServiceNames_COMMAND()
632 : {
633 1 : Sequence<OUString> aRet(1);
634 1 : aRet.getArray()[0] = "com.sun.star.animations.Command";
635 1 : return aRet;
636 : }
637 :
638 1 : OUString getImplementationName_COMMAND()
639 : {
640 1 : return OUString( "animcore::Command" );
641 : }
642 :
643 : // XInterface
644 27816 : Any SAL_CALL AnimationNode::queryInterface( const Type& aType ) throw (RuntimeException, std::exception)
645 : {
646 : Any aRet( ::cppu::queryInterface(
647 : aType,
648 : static_cast< XServiceInfo * >( this ),
649 : static_cast< XTypeProvider * >( this ),
650 : static_cast< XChild * >( static_cast< XTimeContainer * >( static_cast< XIterateContainer * >(this) ) ),
651 : static_cast< XCloneable* >( this ),
652 : static_cast< XAnimationNode* >( static_cast< XTimeContainer * >( static_cast< XIterateContainer * >(this) ) ),
653 : static_cast< XInterface* >(static_cast< OWeakObject * >(this)),
654 : static_cast< XWeak* >(static_cast< OWeakObject * >(this)),
655 : static_cast< XChangesNotifier* >( this ),
656 27816 : static_cast< XUnoTunnel* >( this ) ) );
657 :
658 27816 : if(!aRet.hasValue())
659 : {
660 5550 : switch( mnNodeType )
661 : {
662 : case AnimationNodeType::PAR:
663 5950 : aRet = ::cppu::queryInterface(
664 : aType,
665 : static_cast< XParallelTimeContainer * >( this ),
666 : static_cast< XTimeContainer * >( static_cast< XIterateContainer * >(this) ),
667 : static_cast< XEnumerationAccess * >( this ),
668 2975 : static_cast< XElementAccess * >( this ) );
669 2975 : break;
670 : case AnimationNodeType::SEQ:
671 1008 : aRet = ::cppu::queryInterface(
672 : aType,
673 : static_cast< XTimeContainer * >( static_cast< XIterateContainer * >(this) ),
674 : static_cast< XEnumerationAccess * >( this ),
675 504 : static_cast< XElementAccess * >( this ) );
676 504 : break;
677 : case AnimationNodeType::ITERATE:
678 2 : aRet = ::cppu::queryInterface(
679 : aType,
680 : static_cast< XTimeContainer * >( static_cast< XIterateContainer * >(this) ),
681 : static_cast< XIterateContainer * >( this ),
682 : static_cast< XEnumerationAccess * >( this ),
683 1 : static_cast< XElementAccess * >( this ) );
684 1 : break;
685 : case AnimationNodeType::ANIMATE:
686 1042 : aRet = ::cppu::queryInterface(
687 : aType,
688 521 : static_cast< XAnimate * >( static_cast< XAnimateMotion * >(this) ) );
689 521 : break;
690 : case AnimationNodeType::ANIMATEMOTION:
691 2 : aRet = ::cppu::queryInterface(
692 : aType,
693 : static_cast< XAnimate * >( static_cast< XAnimateMotion * >(this) ),
694 1 : static_cast< XAnimateMotion * >( this ) );
695 1 : break;
696 : case AnimationNodeType::ANIMATECOLOR:
697 2 : aRet = ::cppu::queryInterface(
698 : aType,
699 : static_cast< XAnimate * >( static_cast< XAnimateColor * >(this) ),
700 1 : static_cast< XAnimateColor * >( this ) );
701 1 : break;
702 : case AnimationNodeType::SET:
703 512 : aRet = ::cppu::queryInterface(
704 : aType,
705 : static_cast< XAnimate * >( static_cast< XAnimateSet * >(this) ),
706 256 : static_cast< XAnimateSet * >( this ) );
707 256 : break;
708 : case AnimationNodeType::ANIMATETRANSFORM:
709 0 : aRet = ::cppu::queryInterface(
710 : aType,
711 : static_cast< XAnimate * >( static_cast< XAnimateTransform * >(this) ),
712 0 : static_cast< XAnimateTransform * >( this ) );
713 0 : break;
714 : case AnimationNodeType::AUDIO:
715 26 : aRet = ::cppu::queryInterface(
716 : aType,
717 13 : static_cast< XAudio * >( static_cast< XAudio * >(this) ) );
718 13 : break;
719 : case AnimationNodeType::COMMAND:
720 62 : aRet = ::cppu::queryInterface(
721 : aType,
722 31 : static_cast< XCommand * >( static_cast< XCommand * >(this) ) );
723 31 : break;
724 : case AnimationNodeType::TRANSITIONFILTER:
725 2494 : aRet = ::cppu::queryInterface(
726 : aType,
727 : static_cast< XAnimate * >( static_cast< XTransitionFilter * >(this) ),
728 1247 : static_cast< XTransitionFilter * >( this ) );
729 1247 : break;
730 : }
731 : }
732 :
733 27816 : return aRet.hasValue() ? aRet : OWeakObject::queryInterface( aType );
734 : }
735 :
736 :
737 :
738 0 : void AnimationNode::initTypeProvider( sal_Int16 nNodeType ) throw()
739 : {
740 0 : ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
741 :
742 0 : if(! mpTypes[nNodeType] )
743 : {
744 : static const sal_Int32 type_numbers[] =
745 : {
746 : 7, // CUSTOM
747 : 9, // PAR
748 : 9, // SEQ
749 : 9, // ITERATE
750 : 8, // ANIMATE
751 : 8, // SET
752 : 8, // ANIMATEMOTION
753 : 8, // ANIMATECOLOR
754 : 8, // ANIMATETRANSFORM
755 : 8, // TRANSITIONFILTER
756 : 8, // AUDIO
757 : 8, // COMMAND
758 : };
759 :
760 : // collect types
761 0 : Sequence< Type > * types = new Sequence< Type >( type_numbers[nNodeType] );
762 0 : Type * pTypeAr = types->getArray();
763 0 : sal_Int32 nPos = 0;
764 :
765 0 : pTypeAr[nPos++] = cppu::UnoType<XWeak>::get();
766 0 : pTypeAr[nPos++] = cppu::UnoType<XChild>::get();
767 0 : pTypeAr[nPos++] = cppu::UnoType<XCloneable>::get();
768 0 : pTypeAr[nPos++] = cppu::UnoType<XTypeProvider>::get();
769 0 : pTypeAr[nPos++] = cppu::UnoType<XServiceInfo>::get();
770 0 : pTypeAr[nPos++] = cppu::UnoType<XUnoTunnel>::get();
771 0 : pTypeAr[nPos++] = cppu::UnoType<XChangesNotifier>::get();
772 :
773 0 : switch( nNodeType )
774 : {
775 : case AnimationNodeType::PAR:
776 : case AnimationNodeType::SEQ:
777 0 : pTypeAr[nPos++] = cppu::UnoType<XTimeContainer>::get();
778 0 : pTypeAr[nPos++] = cppu::UnoType<XEnumerationAccess>::get();
779 0 : break;
780 : case AnimationNodeType::ITERATE:
781 0 : pTypeAr[nPos++] = cppu::UnoType<XIterateContainer>::get();
782 0 : pTypeAr[nPos++] = cppu::UnoType<XEnumerationAccess>::get();
783 0 : break;
784 : case AnimationNodeType::ANIMATE:
785 0 : pTypeAr[nPos++] = cppu::UnoType<XAnimate>::get();
786 0 : break;
787 : case AnimationNodeType::ANIMATEMOTION:
788 0 : pTypeAr[nPos++] = cppu::UnoType<XAnimateMotion>::get();
789 0 : break;
790 : case AnimationNodeType::ANIMATECOLOR:
791 0 : pTypeAr[nPos++] = cppu::UnoType<XAnimateColor>::get();
792 0 : break;
793 : case AnimationNodeType::ANIMATETRANSFORM:
794 0 : pTypeAr[nPos++] = cppu::UnoType<XAnimateTransform>::get();
795 0 : break;
796 : case AnimationNodeType::SET:
797 0 : pTypeAr[nPos++] = cppu::UnoType<XAnimateSet>::get();
798 0 : break;
799 : case AnimationNodeType::TRANSITIONFILTER:
800 0 : pTypeAr[nPos++] = cppu::UnoType<XTransitionFilter>::get();
801 0 : break;
802 : case AnimationNodeType::AUDIO:
803 0 : pTypeAr[nPos++] = cppu::UnoType<XAudio>::get();
804 0 : break;
805 : case AnimationNodeType::COMMAND:
806 0 : pTypeAr[nPos++] = cppu::UnoType<XCommand>::get();
807 0 : break;
808 : }
809 0 : mpTypes[nNodeType] = types;
810 0 : }
811 0 : }
812 :
813 :
814 :
815 0 : Sequence< Type > AnimationNode::getTypes() throw (RuntimeException, std::exception)
816 : {
817 0 : if (! mpTypes[mnNodeType])
818 0 : initTypeProvider(mnNodeType);
819 0 : return *mpTypes[mnNodeType];
820 : }
821 :
822 :
823 0 : Sequence< sal_Int8 > AnimationNode::getImplementationId() throw (RuntimeException, std::exception)
824 : {
825 0 : return css::uno::Sequence<sal_Int8>();
826 : }
827 :
828 :
829 :
830 : // XInterface
831 67396 : void SAL_CALL AnimationNode::acquire( ) throw ()
832 : {
833 67396 : OWeakObject::acquire();
834 67396 : }
835 :
836 :
837 :
838 : // XInterface
839 67376 : void SAL_CALL AnimationNode::release( ) throw ()
840 : {
841 67376 : OWeakObject::release();
842 67376 : }
843 :
844 :
845 :
846 : // XServiceInfo
847 8 : OUString AnimationNode::getImplementationName() throw(std::exception)
848 : {
849 8 : switch( mnNodeType )
850 : {
851 : case AnimationNodeType::PAR:
852 1 : return getImplementationName_PAR();
853 : case AnimationNodeType::SEQ:
854 1 : return getImplementationName_SEQ();
855 : case AnimationNodeType::ITERATE:
856 1 : return getImplementationName_ITERATE();
857 : case AnimationNodeType::SET:
858 1 : return getImplementationName_SET();
859 : case AnimationNodeType::ANIMATECOLOR:
860 1 : return getImplementationName_ANIMATECOLOR();
861 : case AnimationNodeType::ANIMATEMOTION:
862 1 : return getImplementationName_ANIMATEMOTION();
863 : case AnimationNodeType::TRANSITIONFILTER:
864 0 : return getImplementationName_TRANSITIONFILTER();
865 : case AnimationNodeType::ANIMATETRANSFORM:
866 0 : return getImplementationName_ANIMATETRANSFORM();
867 : case AnimationNodeType::AUDIO:
868 1 : return getImplementationName_AUDIO();
869 : case AnimationNodeType::COMMAND:
870 1 : return getImplementationName_COMMAND();
871 : case AnimationNodeType::ANIMATE:
872 : default:
873 0 : return getImplementationName_ANIMATE();
874 : }
875 : }
876 :
877 : // XServiceInfo
878 0 : sal_Bool AnimationNode::supportsService(const OUString& ServiceName) throw(std::exception)
879 : {
880 0 : return cppu::supportsService(this, ServiceName);
881 : }
882 :
883 : // XServiceInfo
884 8 : Sequence< OUString > AnimationNode::getSupportedServiceNames() throw(std::exception)
885 : {
886 8 : switch( mnNodeType )
887 : {
888 : case AnimationNodeType::PAR:
889 1 : return getSupportedServiceNames_PAR();
890 : case AnimationNodeType::SEQ:
891 1 : return getSupportedServiceNames_SEQ();
892 : case AnimationNodeType::ITERATE:
893 1 : return getSupportedServiceNames_ITERATE();
894 : case AnimationNodeType::SET:
895 1 : return getSupportedServiceNames_SET();
896 : case AnimationNodeType::ANIMATECOLOR:
897 1 : return getSupportedServiceNames_ANIMATECOLOR();
898 : case AnimationNodeType::ANIMATEMOTION:
899 1 : return getSupportedServiceNames_ANIMATEMOTION();
900 : case AnimationNodeType::TRANSITIONFILTER:
901 0 : return getSupportedServiceNames_TRANSITIONFILTER();
902 : case AnimationNodeType::ANIMATETRANSFORM:
903 0 : return getSupportedServiceNames_ANIMATETRANSFORM();
904 : case AnimationNodeType::AUDIO:
905 1 : return getSupportedServiceNames_AUDIO();
906 : case AnimationNodeType::COMMAND:
907 1 : return getSupportedServiceNames_COMMAND();
908 : case AnimationNodeType::ANIMATE:
909 : default:
910 0 : return getSupportedServiceNames_ANIMATE();
911 : }
912 : }
913 :
914 :
915 :
916 : // XAnimationNode
917 967 : sal_Int16 SAL_CALL AnimationNode::getType() throw (RuntimeException, std::exception)
918 : {
919 967 : Guard< Mutex > aGuard( maMutex );
920 967 : return mnNodeType;
921 : }
922 :
923 :
924 :
925 : // XAnimationNode
926 22 : Any SAL_CALL AnimationNode::getBegin() throw (RuntimeException, std::exception)
927 : {
928 22 : Guard< Mutex > aGuard( maMutex );
929 22 : return maBegin;
930 : }
931 :
932 :
933 :
934 : // XAnimationNode
935 399 : void SAL_CALL AnimationNode::setBegin( const Any& _begin ) throw (RuntimeException, std::exception)
936 : {
937 399 : Guard< Mutex > aGuard( maMutex );
938 399 : if( _begin != maBegin )
939 : {
940 232 : maBegin = _begin;
941 232 : fireChangeListener();
942 399 : }
943 399 : }
944 :
945 :
946 :
947 : // XAnimationNode
948 27 : Any SAL_CALL AnimationNode::getDuration() throw (RuntimeException, std::exception)
949 : {
950 27 : Guard< Mutex > aGuard( maMutex );
951 27 : return maDuration;
952 : }
953 :
954 :
955 :
956 : // XAnimationNode
957 356 : void SAL_CALL AnimationNode::setDuration( const Any& _duration ) throw (RuntimeException, std::exception)
958 : {
959 356 : Guard< Mutex > aGuard( maMutex );
960 356 : if( _duration != maDuration )
961 : {
962 356 : maDuration = _duration;
963 356 : fireChangeListener();
964 356 : }
965 356 : }
966 :
967 :
968 :
969 : // XAnimationNode
970 26 : Any SAL_CALL AnimationNode::getEnd() throw (RuntimeException, std::exception)
971 : {
972 26 : Guard< Mutex > aGuard( maMutex );
973 26 : return maEnd;
974 : }
975 :
976 :
977 :
978 : // XAnimationNode
979 322 : void SAL_CALL AnimationNode::setEnd( const Any& _end ) throw (RuntimeException, std::exception)
980 : {
981 322 : Guard< Mutex > aGuard( maMutex );
982 322 : if( _end != maEnd )
983 : {
984 0 : maEnd = _end;
985 0 : fireChangeListener();
986 322 : }
987 322 : }
988 :
989 :
990 :
991 : // XAnimationNode
992 5 : Any SAL_CALL AnimationNode::getEndSync() throw (RuntimeException, std::exception)
993 : {
994 5 : Guard< Mutex > aGuard( maMutex );
995 5 : return maEndSync;
996 : }
997 :
998 :
999 :
1000 : // XAnimationNode
1001 1 : void SAL_CALL AnimationNode::setEndSync( const Any& _endsync ) throw (RuntimeException, std::exception)
1002 : {
1003 1 : Guard< Mutex > aGuard( maMutex );
1004 1 : if( _endsync != maEndSync )
1005 : {
1006 1 : maEndSync = _endsync;
1007 1 : fireChangeListener();
1008 1 : }
1009 1 : }
1010 :
1011 :
1012 :
1013 : // XAnimationNode
1014 15 : Any SAL_CALL AnimationNode::getRepeatCount() throw (RuntimeException, std::exception)
1015 : {
1016 15 : Guard< Mutex > aGuard( maMutex );
1017 15 : return maRepeatCount;
1018 : }
1019 :
1020 :
1021 :
1022 : // XAnimationNode
1023 0 : void SAL_CALL AnimationNode::setRepeatCount( const Any& _repeatcount ) throw (RuntimeException, std::exception)
1024 : {
1025 0 : Guard< Mutex > aGuard( maMutex );
1026 0 : if( _repeatcount != maRepeatCount )
1027 : {
1028 0 : maRepeatCount = _repeatcount;
1029 0 : fireChangeListener();
1030 0 : }
1031 0 : }
1032 :
1033 :
1034 :
1035 : // XAnimationNode
1036 5 : Any SAL_CALL AnimationNode::getRepeatDuration() throw (RuntimeException, std::exception)
1037 : {
1038 5 : Guard< Mutex > aGuard( maMutex );
1039 5 : return maRepeatDuration;
1040 : }
1041 :
1042 :
1043 :
1044 : // XAnimationNode
1045 0 : void SAL_CALL AnimationNode::setRepeatDuration( const Any& _repeatduration ) throw (RuntimeException, std::exception)
1046 : {
1047 0 : Guard< Mutex > aGuard( maMutex );
1048 0 : if( _repeatduration != maRepeatDuration )
1049 : {
1050 0 : maRepeatDuration = _repeatduration;
1051 0 : fireChangeListener();
1052 0 : }
1053 0 : }
1054 :
1055 :
1056 :
1057 : // XAnimationNode
1058 10 : sal_Int16 SAL_CALL AnimationNode::getFill() throw (RuntimeException, std::exception)
1059 : {
1060 10 : Guard< Mutex > aGuard( maMutex );
1061 10 : return mnFill;
1062 : }
1063 :
1064 :
1065 :
1066 : // XAnimationNode
1067 319 : void SAL_CALL AnimationNode::setFill( sal_Int16 _fill ) throw (RuntimeException, std::exception)
1068 : {
1069 319 : Guard< Mutex > aGuard( maMutex );
1070 319 : if( _fill != mnFill )
1071 : {
1072 319 : mnFill = _fill;
1073 319 : fireChangeListener();
1074 319 : }
1075 319 : }
1076 :
1077 :
1078 :
1079 : // XAnimationNode
1080 0 : sal_Int16 SAL_CALL AnimationNode::getFillDefault() throw (RuntimeException, std::exception)
1081 : {
1082 0 : Guard< Mutex > aGuard( maMutex );
1083 0 : return mnFillDefault;
1084 : }
1085 :
1086 :
1087 :
1088 : // XAnimationNode
1089 0 : void SAL_CALL AnimationNode::setFillDefault( sal_Int16 _filldefault ) throw (RuntimeException, std::exception)
1090 : {
1091 0 : Guard< Mutex > aGuard( maMutex );
1092 0 : if( _filldefault != mnFillDefault )
1093 : {
1094 0 : mnFillDefault = _filldefault;
1095 0 : fireChangeListener();
1096 0 : }
1097 0 : }
1098 :
1099 :
1100 :
1101 : // XAnimationNode
1102 12 : sal_Int16 SAL_CALL AnimationNode::getRestart() throw (RuntimeException, std::exception)
1103 : {
1104 12 : Guard< Mutex > aGuard( maMutex );
1105 12 : return mnRestart;
1106 : }
1107 :
1108 :
1109 :
1110 : // XAnimationNode
1111 65 : void SAL_CALL AnimationNode::setRestart( sal_Int16 _restart ) throw (RuntimeException, std::exception)
1112 : {
1113 65 : Guard< Mutex > aGuard( maMutex );
1114 65 : if( _restart != mnRestart )
1115 : {
1116 65 : mnRestart = _restart;
1117 65 : fireChangeListener();
1118 65 : }
1119 65 : }
1120 :
1121 :
1122 :
1123 : // XAnimationNode
1124 0 : sal_Int16 SAL_CALL AnimationNode::getRestartDefault() throw (RuntimeException, std::exception)
1125 : {
1126 0 : Guard< Mutex > aGuard( maMutex );
1127 0 : return mnRestartDefault;
1128 : }
1129 :
1130 :
1131 :
1132 : // XAnimationNode
1133 0 : void SAL_CALL AnimationNode::setRestartDefault( sal_Int16 _restartdefault ) throw (RuntimeException, std::exception)
1134 : {
1135 0 : Guard< Mutex > aGuard( maMutex );
1136 0 : if( _restartdefault != mnRestartDefault )
1137 : {
1138 0 : mnRestartDefault = _restartdefault;
1139 0 : fireChangeListener();
1140 0 : }
1141 0 : }
1142 :
1143 :
1144 :
1145 : // XAnimationNode
1146 10 : double SAL_CALL AnimationNode::getAcceleration() throw (RuntimeException, std::exception)
1147 : {
1148 10 : Guard< Mutex > aGuard( maMutex );
1149 10 : return mfAcceleration;
1150 : }
1151 :
1152 :
1153 :
1154 : // XAnimationNode
1155 0 : void SAL_CALL AnimationNode::setAcceleration( double _acceleration ) throw (RuntimeException, std::exception)
1156 : {
1157 0 : Guard< Mutex > aGuard( maMutex );
1158 0 : if( _acceleration != mfAcceleration )
1159 : {
1160 0 : mfAcceleration = _acceleration;
1161 0 : fireChangeListener();
1162 0 : }
1163 0 : }
1164 :
1165 :
1166 :
1167 : // XAnimationNode
1168 10 : double SAL_CALL AnimationNode::getDecelerate() throw (RuntimeException, std::exception)
1169 : {
1170 10 : Guard< Mutex > aGuard( maMutex );
1171 10 : return mfDecelerate;
1172 : }
1173 :
1174 :
1175 :
1176 : // XAnimationNode
1177 0 : void SAL_CALL AnimationNode::setDecelerate( double _decelerate ) throw (RuntimeException, std::exception)
1178 : {
1179 0 : Guard< Mutex > aGuard( maMutex );
1180 0 : if( _decelerate != mfDecelerate )
1181 : {
1182 0 : mfDecelerate = _decelerate;
1183 0 : fireChangeListener();
1184 0 : }
1185 0 : }
1186 :
1187 :
1188 :
1189 : // XAnimationNode
1190 10 : sal_Bool SAL_CALL AnimationNode::getAutoReverse() throw (RuntimeException, std::exception)
1191 : {
1192 10 : Guard< Mutex > aGuard( maMutex );
1193 10 : return mbAutoReverse;
1194 : }
1195 :
1196 :
1197 :
1198 : // XAnimationNode
1199 83 : void SAL_CALL AnimationNode::setAutoReverse( sal_Bool _autoreverse ) throw (RuntimeException, std::exception)
1200 : {
1201 83 : Guard< Mutex > aGuard( maMutex );
1202 83 : if( bool(_autoreverse) != mbAutoReverse )
1203 : {
1204 0 : mbAutoReverse = _autoreverse;
1205 0 : fireChangeListener();
1206 83 : }
1207 83 : }
1208 :
1209 :
1210 :
1211 442 : Sequence< NamedValue > SAL_CALL AnimationNode::getUserData() throw (RuntimeException, std::exception)
1212 : {
1213 442 : Guard< Mutex > aGuard( maMutex );
1214 442 : return maUserData;
1215 : }
1216 :
1217 :
1218 :
1219 979 : void SAL_CALL AnimationNode::setUserData( const Sequence< NamedValue >& _userdata ) throw (RuntimeException, std::exception)
1220 : {
1221 979 : Guard< Mutex > aGuard( maMutex );
1222 979 : maUserData = _userdata;
1223 979 : fireChangeListener();
1224 979 : }
1225 :
1226 :
1227 :
1228 : // XChild
1229 0 : Reference< XInterface > SAL_CALL AnimationNode::getParent() throw (RuntimeException, std::exception)
1230 : {
1231 0 : Guard< Mutex > aGuard( maMutex );
1232 0 : return mxParent.get();
1233 : }
1234 :
1235 :
1236 :
1237 : // XChild
1238 918 : void SAL_CALL AnimationNode::setParent( const Reference< XInterface >& Parent ) throw (NoSupportException, RuntimeException, std::exception)
1239 : {
1240 918 : Guard< Mutex > aGuard( maMutex );
1241 918 : if( Parent != mxParent.get() )
1242 : {
1243 918 : mxParent = Parent;
1244 :
1245 918 : mpParent = 0;
1246 918 : Reference< XUnoTunnel > xTunnel( mxParent.get(), UNO_QUERY );
1247 918 : if( xTunnel.is() )
1248 918 : mpParent = reinterpret_cast< AnimationNode* >( sal::static_int_cast< sal_IntPtr >(xTunnel->getSomething( getUnoTunnelId() )));
1249 :
1250 918 : fireChangeListener();
1251 918 : }
1252 918 : }
1253 :
1254 :
1255 :
1256 : // XCloneable
1257 0 : Reference< XCloneable > SAL_CALL AnimationNode::createClone() throw (RuntimeException, std::exception)
1258 : {
1259 0 : Guard< Mutex > aGuard( maMutex );
1260 :
1261 0 : Reference< XCloneable > xNewNode;
1262 : try
1263 : {
1264 0 : xNewNode = new AnimationNode( *this );
1265 :
1266 0 : if( !maChildren.empty() )
1267 : {
1268 0 : Reference< XTimeContainer > xContainer( xNewNode, UNO_QUERY );
1269 0 : if( xContainer.is() )
1270 : {
1271 0 : ChildList_t::iterator aIter( maChildren.begin() );
1272 0 : ChildList_t::iterator aEnd( maChildren.end() );
1273 0 : while( aIter != aEnd )
1274 : {
1275 0 : Reference< XCloneable > xCloneable((*aIter++), UNO_QUERY );
1276 0 : if( xCloneable.is() ) try
1277 : {
1278 0 : Reference< XAnimationNode > xNewChildNode( xCloneable->createClone(), UNO_QUERY );
1279 0 : if( xNewChildNode.is() )
1280 0 : xContainer->appendChild( xNewChildNode );
1281 : }
1282 0 : catch(const Exception&)
1283 : {
1284 : OSL_TRACE( "animations::AnimationNode::createClone(), exception caught!" );
1285 : }
1286 0 : }
1287 0 : }
1288 : }
1289 : }
1290 0 : catch(const Exception&)
1291 : {
1292 : OSL_TRACE( "animations::AnimationNode::createClone(), exception caught!" );
1293 : }
1294 :
1295 0 : return xNewNode;
1296 : }
1297 :
1298 :
1299 :
1300 : // XAnimate
1301 156 : Any SAL_CALL AnimationNode::getTarget()
1302 : throw (RuntimeException, std::exception)
1303 : {
1304 156 : Guard< Mutex > aGuard( maMutex );
1305 156 : return maTarget;
1306 : }
1307 :
1308 :
1309 :
1310 : // XAnimate
1311 169 : void SAL_CALL AnimationNode::setTarget( const Any& _target )
1312 : throw (RuntimeException, std::exception)
1313 : {
1314 169 : Guard< Mutex > aGuard( maMutex );
1315 169 : if( _target != maTarget )
1316 : {
1317 168 : maTarget= _target;
1318 168 : fireChangeListener();
1319 169 : }
1320 169 : }
1321 :
1322 :
1323 :
1324 : // XAnimate
1325 153 : OUString SAL_CALL AnimationNode::getAttributeName() throw (RuntimeException, std::exception)
1326 : {
1327 153 : Guard< Mutex > aGuard( maMutex );
1328 153 : return maAttributeName;
1329 : }
1330 :
1331 :
1332 :
1333 : // XAnimate
1334 317 : void SAL_CALL AnimationNode::setAttributeName( const OUString& _attribute )
1335 : throw (RuntimeException, std::exception)
1336 : {
1337 317 : Guard< Mutex > aGuard( maMutex );
1338 317 : if( _attribute != maAttributeName )
1339 : {
1340 317 : maAttributeName = _attribute;
1341 317 : fireChangeListener();
1342 317 : }
1343 317 : }
1344 :
1345 :
1346 :
1347 : // XAnimate
1348 153 : Sequence< Any > SAL_CALL AnimationNode::getValues()
1349 : throw (RuntimeException, std::exception)
1350 : {
1351 153 : Guard< Mutex > aGuard( maMutex );
1352 153 : return maValues;
1353 : }
1354 :
1355 :
1356 :
1357 : // XAnimate
1358 206 : void SAL_CALL AnimationNode::setValues( const Sequence< Any >& _values )
1359 : throw (RuntimeException, std::exception)
1360 : {
1361 206 : Guard< Mutex > aGuard( maMutex );
1362 206 : maValues = _values;
1363 206 : fireChangeListener();
1364 206 : }
1365 :
1366 :
1367 :
1368 : // XAnimate
1369 0 : sal_Int16 SAL_CALL AnimationNode::getSubItem() throw (RuntimeException, std::exception)
1370 : {
1371 0 : Guard< Mutex > aGuard( maMutex );
1372 0 : return mnSubItem;
1373 : }
1374 :
1375 :
1376 :
1377 : // XAnimate
1378 165 : void SAL_CALL AnimationNode::setSubItem( sal_Int16 _subitem ) throw (RuntimeException, std::exception)
1379 : {
1380 165 : Guard< Mutex > aGuard( maMutex );
1381 165 : if( _subitem != mnSubItem )
1382 : {
1383 52 : mnSubItem = _subitem;
1384 52 : fireChangeListener();
1385 165 : }
1386 165 : }
1387 :
1388 :
1389 :
1390 : // XAnimate
1391 0 : Sequence< double > SAL_CALL AnimationNode::getKeyTimes() throw (RuntimeException, std::exception)
1392 : {
1393 0 : Guard< Mutex > aGuard( maMutex );
1394 0 : return maKeyTimes;
1395 : }
1396 :
1397 :
1398 :
1399 : // XAnimate
1400 104 : void SAL_CALL AnimationNode::setKeyTimes( const Sequence< double >& _keytimes ) throw (RuntimeException, std::exception)
1401 : {
1402 104 : Guard< Mutex > aGuard( maMutex );
1403 104 : maKeyTimes = _keytimes;
1404 104 : fireChangeListener();
1405 104 : }
1406 :
1407 :
1408 :
1409 : // XAnimate
1410 0 : sal_Int16 SAL_CALL AnimationNode::getValueType() throw (RuntimeException, std::exception)
1411 : {
1412 0 : Guard< Mutex > aGuard( maMutex );
1413 0 : return mnValueType;
1414 : }
1415 :
1416 :
1417 :
1418 102 : void SAL_CALL AnimationNode::setValueType( sal_Int16 _valuetype ) throw (RuntimeException, std::exception)
1419 : {
1420 102 : Guard< Mutex > aGuard( maMutex );
1421 102 : if( _valuetype != mnValueType )
1422 : {
1423 102 : mnValueType = _valuetype;
1424 102 : fireChangeListener();
1425 102 : }
1426 102 : }
1427 :
1428 :
1429 :
1430 : // XAnimate
1431 0 : sal_Int16 SAL_CALL AnimationNode::getCalcMode()
1432 : throw (RuntimeException, std::exception)
1433 : {
1434 0 : Guard< Mutex > aGuard( maMutex );
1435 0 : return mnCalcMode;
1436 : }
1437 :
1438 :
1439 :
1440 : // XAnimate
1441 102 : void SAL_CALL AnimationNode::setCalcMode( sal_Int16 _calcmode )
1442 : throw (RuntimeException, std::exception)
1443 : {
1444 102 : Guard< Mutex > aGuard( maMutex );
1445 102 : if( _calcmode != mnCalcMode )
1446 : {
1447 0 : mnCalcMode = _calcmode;
1448 0 : fireChangeListener();
1449 102 : }
1450 102 : }
1451 :
1452 :
1453 :
1454 : // XAnimate
1455 0 : sal_Bool SAL_CALL AnimationNode::getAccumulate()
1456 : throw (RuntimeException, std::exception)
1457 : {
1458 0 : Guard< Mutex > aGuard( maMutex );
1459 0 : return mbAccumulate;
1460 : }
1461 :
1462 :
1463 :
1464 : // XAnimate
1465 0 : void SAL_CALL AnimationNode::setAccumulate( sal_Bool _accumulate )
1466 : throw (RuntimeException, std::exception)
1467 : {
1468 0 : Guard< Mutex > aGuard( maMutex );
1469 0 : if( bool(_accumulate) != mbAccumulate )
1470 : {
1471 0 : mbAccumulate = _accumulate;
1472 0 : fireChangeListener();
1473 0 : }
1474 0 : }
1475 :
1476 :
1477 :
1478 : // XAnimate
1479 0 : sal_Int16 SAL_CALL AnimationNode::getAdditive()
1480 : throw (RuntimeException, std::exception)
1481 : {
1482 0 : Guard< Mutex > aGuard( maMutex );
1483 0 : return mnAdditive;
1484 : }
1485 :
1486 :
1487 :
1488 : // XAnimate
1489 102 : void SAL_CALL AnimationNode::setAdditive( sal_Int16 _additive )
1490 : throw (RuntimeException, std::exception)
1491 : {
1492 102 : Guard< Mutex > aGuard( maMutex );
1493 102 : if( _additive != mnAdditive )
1494 : {
1495 102 : mnAdditive = _additive;
1496 102 : fireChangeListener();
1497 102 : }
1498 102 : }
1499 :
1500 :
1501 :
1502 : // XAnimate
1503 153 : Any SAL_CALL AnimationNode::getFrom()
1504 : throw (RuntimeException, std::exception)
1505 : {
1506 153 : Guard< Mutex > aGuard( maMutex );
1507 153 : return maFrom;
1508 : }
1509 :
1510 :
1511 :
1512 : // XAnimate
1513 0 : void SAL_CALL AnimationNode::setFrom( const Any& _from )
1514 : throw (RuntimeException, std::exception)
1515 : {
1516 0 : Guard< Mutex > aGuard( maMutex );
1517 0 : if( _from != maFrom )
1518 : {
1519 0 : maFrom = _from;
1520 0 : fireChangeListener();
1521 0 : }
1522 0 : }
1523 :
1524 :
1525 :
1526 : // XAnimate
1527 153 : Any SAL_CALL AnimationNode::getTo()
1528 : throw (RuntimeException, std::exception)
1529 : {
1530 153 : Guard< Mutex > aGuard( maMutex );
1531 153 : return maTo;
1532 : }
1533 :
1534 :
1535 :
1536 : // XAnimate
1537 111 : void SAL_CALL AnimationNode::setTo( const Any& _to )
1538 : throw (RuntimeException, std::exception)
1539 : {
1540 111 : Guard< Mutex > aGuard( maMutex );
1541 111 : if( _to != maTo )
1542 : {
1543 111 : maTo = _to;
1544 111 : fireChangeListener();
1545 111 : }
1546 111 : }
1547 :
1548 :
1549 :
1550 : // XAnimate
1551 153 : Any SAL_CALL AnimationNode::getBy()
1552 : throw (RuntimeException, std::exception)
1553 : {
1554 153 : Guard< Mutex > aGuard( maMutex );
1555 153 : return maBy;
1556 : }
1557 :
1558 :
1559 :
1560 : // XAnimate
1561 0 : void SAL_CALL AnimationNode::setBy( const Any& _by )
1562 : throw (RuntimeException, std::exception)
1563 : {
1564 0 : Guard< Mutex > aGuard( maMutex );
1565 0 : if( _by != maBy )
1566 : {
1567 0 : maBy = _by;
1568 0 : fireChangeListener();
1569 0 : }
1570 0 : }
1571 :
1572 :
1573 :
1574 : // XAnimate
1575 0 : Sequence< TimeFilterPair > SAL_CALL AnimationNode::getTimeFilter()
1576 : throw (RuntimeException, std::exception)
1577 : {
1578 0 : Guard< Mutex > aGuard( maMutex );
1579 0 : return maTimeFilter;
1580 : }
1581 :
1582 :
1583 :
1584 : // XAnimate
1585 0 : void SAL_CALL AnimationNode::setTimeFilter( const Sequence< TimeFilterPair >& _timefilter )
1586 : throw (RuntimeException, std::exception)
1587 : {
1588 0 : Guard< Mutex > aGuard( maMutex );
1589 0 : maTimeFilter = _timefilter;
1590 0 : fireChangeListener();
1591 0 : }
1592 :
1593 :
1594 :
1595 153 : OUString SAL_CALL AnimationNode::getFormula() throw (RuntimeException, std::exception)
1596 : {
1597 153 : Guard< Mutex > aGuard( maMutex );
1598 153 : return maFormula;
1599 : }
1600 :
1601 :
1602 :
1603 102 : void SAL_CALL AnimationNode::setFormula( const OUString& _formula ) throw (RuntimeException, std::exception)
1604 : {
1605 102 : Guard< Mutex > aGuard( maMutex );
1606 102 : if( _formula != maFormula )
1607 : {
1608 0 : maFormula = _formula;
1609 0 : fireChangeListener();
1610 102 : }
1611 102 : }
1612 :
1613 :
1614 :
1615 : // XAnimateColor
1616 0 : sal_Int16 SAL_CALL AnimationNode::getColorInterpolation() throw (RuntimeException, std::exception)
1617 : {
1618 0 : Guard< Mutex > aGuard( maMutex );
1619 0 : return mnColorSpace;
1620 : }
1621 :
1622 :
1623 :
1624 : // XAnimateColor
1625 0 : void SAL_CALL AnimationNode::setColorInterpolation( sal_Int16 _colorspace ) throw (RuntimeException, std::exception)
1626 : {
1627 0 : Guard< Mutex > aGuard( maMutex );
1628 0 : if( _colorspace != mnColorSpace )
1629 : {
1630 0 : mnColorSpace = _colorspace;
1631 0 : fireChangeListener();
1632 0 : }
1633 0 : }
1634 :
1635 :
1636 :
1637 : // XAnimateColor
1638 243 : sal_Bool SAL_CALL AnimationNode::getDirection() throw (RuntimeException, std::exception)
1639 : {
1640 243 : Guard< Mutex > aGuard( maMutex );
1641 243 : return mbDirection;
1642 : }
1643 :
1644 :
1645 :
1646 : // XAnimateColor
1647 65 : void SAL_CALL AnimationNode::setDirection( sal_Bool _direction ) throw (RuntimeException, std::exception)
1648 : {
1649 65 : Guard< Mutex > aGuard( maMutex );
1650 65 : if( bool(_direction) != mbDirection )
1651 : {
1652 61 : mbDirection = _direction;
1653 61 : fireChangeListener();
1654 65 : }
1655 65 : }
1656 :
1657 :
1658 :
1659 : // XAnimateMotion
1660 0 : Any SAL_CALL AnimationNode::getPath() throw (RuntimeException, std::exception)
1661 : {
1662 0 : Guard< Mutex > aGuard( maMutex );
1663 0 : return maPath;
1664 : }
1665 :
1666 :
1667 :
1668 : // XAnimateMotion
1669 0 : void SAL_CALL AnimationNode::setPath( const Any& _path ) throw (RuntimeException, std::exception)
1670 : {
1671 0 : Guard< Mutex > aGuard( maMutex );
1672 0 : maPath = _path;
1673 0 : fireChangeListener();
1674 0 : }
1675 :
1676 :
1677 :
1678 : // XAnimateMotion
1679 0 : Any SAL_CALL AnimationNode::getOrigin() throw (RuntimeException, std::exception)
1680 : {
1681 0 : Guard< Mutex > aGuard( maMutex );
1682 0 : return maOrigin;
1683 : }
1684 :
1685 :
1686 :
1687 : // XAnimateMotion
1688 0 : void SAL_CALL AnimationNode::setOrigin( const Any& _origin ) throw (RuntimeException, std::exception)
1689 : {
1690 0 : Guard< Mutex > aGuard( maMutex );
1691 0 : maOrigin = _origin;
1692 0 : fireChangeListener();
1693 0 : }
1694 :
1695 :
1696 :
1697 : // XAnimateTransform
1698 0 : sal_Int16 SAL_CALL AnimationNode::getTransformType() throw (RuntimeException, std::exception)
1699 : {
1700 0 : Guard< Mutex > aGuard( maMutex );
1701 0 : return mnTransformType;
1702 : }
1703 :
1704 :
1705 :
1706 : // XAnimateTransform
1707 0 : void SAL_CALL AnimationNode::setTransformType( sal_Int16 _transformtype ) throw (RuntimeException, std::exception)
1708 : {
1709 0 : Guard< Mutex > aGuard( maMutex );
1710 0 : if( _transformtype != mnTransformType )
1711 : {
1712 0 : mnTransformType = _transformtype;
1713 0 : fireChangeListener();
1714 0 : }
1715 0 : }
1716 :
1717 :
1718 :
1719 : // XTransitionFilter
1720 243 : sal_Int16 SAL_CALL AnimationNode::getTransition() throw (RuntimeException, std::exception)
1721 : {
1722 243 : Guard< Mutex > aGuard( maMutex );
1723 243 : return mnTransition;
1724 : }
1725 :
1726 :
1727 :
1728 : // XTransitionFilter
1729 248 : void SAL_CALL AnimationNode::setTransition( sal_Int16 _transition ) throw (RuntimeException, std::exception)
1730 : {
1731 248 : Guard< Mutex > aGuard( maMutex );
1732 248 : if( _transition != mnTransition )
1733 : {
1734 229 : mnTransition = _transition;
1735 229 : fireChangeListener();
1736 248 : }
1737 248 : }
1738 :
1739 :
1740 :
1741 : // XTransitionFilter
1742 243 : sal_Int16 SAL_CALL AnimationNode::getSubtype() throw (RuntimeException, std::exception)
1743 : {
1744 243 : Guard< Mutex > aGuard( maMutex );
1745 243 : return mnSubtype;
1746 : }
1747 :
1748 :
1749 :
1750 : // XTransitionFilter
1751 245 : void SAL_CALL AnimationNode::setSubtype( sal_Int16 _subtype ) throw (RuntimeException, std::exception)
1752 : {
1753 245 : Guard< Mutex > aGuard( maMutex );
1754 245 : if( _subtype != mnSubtype )
1755 : {
1756 242 : mnSubtype = _subtype;
1757 242 : fireChangeListener();
1758 245 : }
1759 245 : }
1760 :
1761 :
1762 :
1763 : // XTransitionFilter
1764 0 : sal_Bool SAL_CALL AnimationNode::getMode() throw (RuntimeException, std::exception)
1765 : {
1766 0 : Guard< Mutex > aGuard( maMutex );
1767 0 : return mbMode;
1768 : }
1769 :
1770 :
1771 :
1772 : // XTransitionFilter
1773 5 : void SAL_CALL AnimationNode::setMode( sal_Bool _mode ) throw (RuntimeException, std::exception)
1774 : {
1775 5 : Guard< Mutex > aGuard( maMutex );
1776 5 : if( bool(_mode) != mbMode )
1777 : {
1778 0 : mbMode = _mode;
1779 0 : fireChangeListener();
1780 5 : }
1781 5 : }
1782 :
1783 :
1784 :
1785 : // XTransitionFilter
1786 243 : sal_Int32 SAL_CALL AnimationNode::getFadeColor() throw (RuntimeException, std::exception)
1787 : {
1788 243 : Guard< Mutex > aGuard( maMutex );
1789 243 : return mnFadeColor;
1790 : }
1791 :
1792 :
1793 :
1794 : // XTransitionFilter
1795 10 : void SAL_CALL AnimationNode::setFadeColor( sal_Int32 _fadecolor ) throw (RuntimeException, std::exception)
1796 : {
1797 10 : Guard< Mutex > aGuard( maMutex );
1798 10 : if( _fadecolor != mnFadeColor )
1799 : {
1800 0 : mnFadeColor = _fadecolor;
1801 0 : fireChangeListener();
1802 10 : }
1803 10 : }
1804 :
1805 :
1806 :
1807 : // XAudio
1808 0 : Any SAL_CALL AnimationNode::getSource() throw (RuntimeException, std::exception)
1809 : {
1810 0 : Guard< Mutex > aGuard( maMutex );
1811 0 : return maTarget;
1812 : }
1813 :
1814 :
1815 :
1816 : // XAudio
1817 0 : void SAL_CALL AnimationNode::setSource( const Any& _source ) throw (RuntimeException, std::exception)
1818 : {
1819 0 : Guard< Mutex > aGuard( maMutex );
1820 0 : maTarget = _source;
1821 0 : fireChangeListener();
1822 0 : }
1823 :
1824 :
1825 :
1826 : // XAudio
1827 0 : double SAL_CALL AnimationNode::getVolume() throw (RuntimeException, std::exception)
1828 : {
1829 0 : Guard< Mutex > aGuard( maMutex );
1830 0 : return mfVolume;
1831 : }
1832 :
1833 :
1834 :
1835 : // XAudio
1836 0 : void SAL_CALL AnimationNode::setVolume( double _volume ) throw (RuntimeException, std::exception)
1837 : {
1838 0 : Guard< Mutex > aGuard( maMutex );
1839 0 : if( _volume != mfVolume )
1840 : {
1841 0 : mfVolume = _volume;
1842 0 : fireChangeListener();
1843 0 : }
1844 0 : }
1845 :
1846 :
1847 :
1848 : // XCommand
1849 0 : sal_Int16 SAL_CALL AnimationNode::getCommand() throw (RuntimeException, std::exception)
1850 : {
1851 0 : Guard< Mutex > aGuard( maMutex );
1852 0 : return mnCommand;
1853 : }
1854 :
1855 :
1856 :
1857 : // XCommand
1858 5 : void SAL_CALL AnimationNode::setCommand( sal_Int16 _command ) throw (RuntimeException, std::exception)
1859 : {
1860 5 : Guard< Mutex > aGuard( maMutex );
1861 5 : if( _command != mnCommand )
1862 : {
1863 3 : mnCommand = _command;
1864 3 : fireChangeListener();
1865 5 : }
1866 5 : }
1867 :
1868 :
1869 :
1870 : // XCommand
1871 0 : Any SAL_CALL AnimationNode::getParameter() throw (RuntimeException, std::exception)
1872 : {
1873 0 : Guard< Mutex > aGuard( maMutex );
1874 0 : return maParameter;
1875 : }
1876 :
1877 :
1878 :
1879 : // XCommand
1880 4 : void SAL_CALL AnimationNode::setParameter( const Any& _parameter ) throw (RuntimeException, std::exception)
1881 : {
1882 4 : Guard< Mutex > aGuard( maMutex );
1883 4 : maParameter = _parameter;
1884 4 : fireChangeListener();
1885 4 : }
1886 :
1887 :
1888 :
1889 : // XElementAccess
1890 0 : Type SAL_CALL AnimationNode::getElementType() throw (RuntimeException, std::exception)
1891 : {
1892 0 : return cppu::UnoType<XAnimationNode>::get();
1893 : }
1894 :
1895 :
1896 :
1897 : // XElementAccess
1898 0 : sal_Bool SAL_CALL AnimationNode::hasElements() throw (RuntimeException, std::exception)
1899 : {
1900 0 : Guard< Mutex > aGuard( maMutex );
1901 0 : return !maChildren.empty();
1902 : }
1903 :
1904 :
1905 :
1906 : // XEnumerationAccess
1907 475 : Reference< XEnumeration > SAL_CALL AnimationNode::createEnumeration()
1908 : throw (RuntimeException, std::exception)
1909 : {
1910 475 : Guard< Mutex > aGuard( maMutex );
1911 :
1912 475 : return new TimeContainerEnumeration( maChildren);
1913 : }
1914 :
1915 :
1916 :
1917 :
1918 : // XTimeContainer
1919 0 : Reference< XAnimationNode > SAL_CALL AnimationNode::insertBefore( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild )
1920 : throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException, std::exception)
1921 : {
1922 0 : Guard< Mutex > aGuard( maMutex );
1923 :
1924 0 : if( !newChild.is() || !refChild.is() )
1925 0 : throw IllegalArgumentException();
1926 :
1927 0 : ChildList_t::iterator before = ::std::find(maChildren.begin(), maChildren.end(), refChild);
1928 0 : if( before == maChildren.end() )
1929 0 : throw NoSuchElementException();
1930 :
1931 0 : if( ::std::find(maChildren.begin(), maChildren.end(), newChild) != maChildren.end() )
1932 0 : throw ElementExistException();
1933 :
1934 0 : maChildren.insert( before, newChild );
1935 :
1936 0 : Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
1937 0 : newChild->setParent( xThis );
1938 :
1939 0 : return newChild;
1940 : }
1941 :
1942 :
1943 :
1944 : // XTimeContainer
1945 0 : Reference< XAnimationNode > SAL_CALL AnimationNode::insertAfter( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild )
1946 : throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException, std::exception)
1947 : {
1948 0 : Guard< Mutex > aGuard( maMutex );
1949 :
1950 0 : if( !newChild.is() || !refChild.is() )
1951 0 : throw IllegalArgumentException();
1952 :
1953 0 : ChildList_t::iterator before = ::std::find(maChildren.begin(), maChildren.end(), refChild);
1954 0 : if( before == maChildren.end() )
1955 0 : throw NoSuchElementException();
1956 :
1957 0 : if( ::std::find(maChildren.begin(), maChildren.end(), newChild) != maChildren.end() )
1958 0 : throw ElementExistException();
1959 :
1960 0 : ++before;
1961 0 : if( before != maChildren.end() )
1962 0 : maChildren.insert( before, newChild );
1963 : else
1964 0 : maChildren.push_back( newChild );
1965 :
1966 0 : Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
1967 0 : newChild->setParent( xThis );
1968 :
1969 0 : return newChild;
1970 : }
1971 :
1972 :
1973 :
1974 : // XTimeContainer
1975 0 : Reference< XAnimationNode > SAL_CALL AnimationNode::replaceChild( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& oldChild )
1976 : throw( IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException, std::exception)
1977 : {
1978 0 : Guard< Mutex > aGuard( maMutex );
1979 :
1980 0 : if( !newChild.is() || !oldChild.is() )
1981 0 : throw IllegalArgumentException();
1982 :
1983 0 : ChildList_t::iterator replace = ::std::find(maChildren.begin(), maChildren.end(), oldChild);
1984 0 : if( replace == maChildren.end() )
1985 0 : throw NoSuchElementException();
1986 :
1987 0 : if( ::std::find(maChildren.begin(), maChildren.end(), newChild) != maChildren.end() )
1988 0 : throw ElementExistException();
1989 :
1990 0 : Reference< XInterface > xNull( 0 );
1991 0 : oldChild->setParent( xNull );
1992 :
1993 0 : (*replace) = newChild;
1994 :
1995 0 : Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
1996 0 : newChild->setParent( xThis );
1997 :
1998 0 : return newChild;
1999 : }
2000 :
2001 :
2002 :
2003 : // XTimeContainer
2004 0 : Reference< XAnimationNode > SAL_CALL AnimationNode::removeChild( const Reference< XAnimationNode >& oldChild )
2005 : throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException, std::exception)
2006 : {
2007 0 : Guard< Mutex > aGuard( maMutex );
2008 :
2009 0 : if( !oldChild.is() )
2010 0 : throw IllegalArgumentException();
2011 :
2012 0 : ChildList_t::iterator old = ::std::find(maChildren.begin(), maChildren.end(), oldChild);
2013 0 : if( old == maChildren.end() )
2014 0 : throw NoSuchElementException();
2015 :
2016 0 : Reference< XInterface > xNull( 0 );
2017 0 : oldChild->setParent( xNull );
2018 :
2019 0 : maChildren.erase( old );
2020 :
2021 0 : return oldChild;
2022 : }
2023 :
2024 :
2025 :
2026 : // XTimeContainer
2027 918 : Reference< XAnimationNode > SAL_CALL AnimationNode::appendChild( const Reference< XAnimationNode >& newChild )
2028 : throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException, std::exception)
2029 : {
2030 918 : Guard< Mutex > aGuard( maMutex );
2031 :
2032 918 : if( !newChild.is() )
2033 0 : throw IllegalArgumentException();
2034 :
2035 918 : if( ::std::find(maChildren.begin(), maChildren.end(), newChild) != maChildren.end() )
2036 0 : throw ElementExistException();
2037 :
2038 1836 : Reference< XInterface > xThis( static_cast< OWeakObject * >(this) );
2039 1836 : Reference< XInterface > xChild( newChild );
2040 :
2041 918 : if( xThis == xChild )
2042 0 : throw IllegalArgumentException();
2043 :
2044 918 : maChildren.push_back( newChild );
2045 :
2046 918 : newChild->setParent( xThis );
2047 :
2048 1836 : return newChild;
2049 : }
2050 :
2051 :
2052 :
2053 : // XIterateContainer
2054 0 : sal_Int16 SAL_CALL AnimationNode::getIterateType() throw (RuntimeException, std::exception)
2055 : {
2056 0 : Guard< Mutex > aGuard( maMutex );
2057 0 : return mnIterateType;
2058 : }
2059 :
2060 :
2061 :
2062 : // XIterateContainer
2063 0 : void SAL_CALL AnimationNode::setIterateType( sal_Int16 _iteratetype ) throw (RuntimeException, std::exception)
2064 : {
2065 0 : Guard< Mutex > aGuard( maMutex );
2066 0 : if( _iteratetype != mnIterateType )
2067 : {
2068 0 : mnIterateType = _iteratetype;
2069 0 : fireChangeListener();
2070 0 : }
2071 0 : }
2072 :
2073 :
2074 :
2075 : // XIterateContainer
2076 0 : double SAL_CALL AnimationNode::getIterateInterval() throw (RuntimeException, std::exception)
2077 : {
2078 0 : Guard< Mutex > aGuard( maMutex );
2079 0 : return mfIterateInterval;
2080 : }
2081 :
2082 :
2083 :
2084 : // XIterateContainer
2085 0 : void SAL_CALL AnimationNode::setIterateInterval( double _iterateinterval ) throw (RuntimeException, std::exception)
2086 : {
2087 0 : Guard< Mutex > aGuard( maMutex );
2088 0 : if( _iterateinterval != mfIterateInterval )
2089 : {
2090 0 : mfIterateInterval = _iterateinterval;
2091 0 : fireChangeListener();
2092 0 : }
2093 0 : }
2094 :
2095 :
2096 :
2097 : // XChangesNotifier
2098 93 : void SAL_CALL AnimationNode::addChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException, std::exception)
2099 : {
2100 93 : maChangeListener.addInterface( aListener );
2101 93 : }
2102 :
2103 :
2104 :
2105 : // XChangesNotifier
2106 89 : void SAL_CALL AnimationNode::removeChangesListener( const Reference< XChangesListener >& aListener ) throw (RuntimeException, std::exception)
2107 : {
2108 89 : maChangeListener.removeInterface(aListener);
2109 89 : }
2110 :
2111 :
2112 :
2113 : // XUnoTunnel
2114 918 : ::sal_Int64 SAL_CALL AnimationNode::getSomething( const Sequence< ::sal_Int8 >& rId ) throw (RuntimeException, std::exception)
2115 : {
2116 918 : if( rId.getLength() == 16 && 0 == memcmp( getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) )
2117 : {
2118 918 : return sal::static_int_cast< sal_Int64 >(reinterpret_cast< sal_IntPtr >(this));
2119 :
2120 : }
2121 : else
2122 : {
2123 0 : return 0;
2124 : }
2125 : }
2126 :
2127 : namespace
2128 : {
2129 : class theAnimationNodeUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theAnimationNodeUnoTunnelId > {};
2130 : }
2131 :
2132 1836 : const ::com::sun::star::uno::Sequence< sal_Int8 > & AnimationNode::getUnoTunnelId()
2133 : {
2134 1836 : return theAnimationNodeUnoTunnelId::get().getSeq();
2135 : }
2136 :
2137 :
2138 :
2139 6521 : void AnimationNode::fireChangeListener()
2140 : {
2141 6521 : Guard< Mutex > aGuard( maMutex );
2142 :
2143 13042 : OInterfaceIteratorHelper aIterator( maChangeListener );
2144 6521 : if( aIterator.hasMoreElements() )
2145 : {
2146 0 : Reference< XInterface > xSource( static_cast<OWeakObject*>(this), UNO_QUERY );
2147 0 : Sequence< ElementChange > aChanges;
2148 0 : const ChangesEvent aEvent( xSource, makeAny( mxParent.get() ), aChanges );
2149 0 : while( aIterator.hasMoreElements() )
2150 : {
2151 0 : Reference< XChangesListener > xListener( aIterator.next(), UNO_QUERY );
2152 0 : if( xListener.is() )
2153 0 : xListener->changesOccurred( aEvent );
2154 0 : }
2155 : }
2156 :
2157 : //fdo#69645 use WeakReference of mxParent to test if mpParent is still valid
2158 6521 : if (mpParent)
2159 : {
2160 1950 : Reference<XInterface> xGuard(mxParent);
2161 1950 : if (xGuard.is())
2162 1950 : mpParent->fireChangeListener();
2163 6521 : }
2164 6521 : }
2165 :
2166 :
2167 :
2168 : } // namespace animcore
2169 :
2170 :
2171 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2172 640 : com_sun_star_animations_ParallelTimeContainer_get_implementation(::com::sun::star::uno::XComponentContext*,
2173 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2174 : {
2175 640 : return cppu::acquire(new animcore::AnimationNode(PAR));
2176 : }
2177 :
2178 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2179 130 : com_sun_star_animations_SequenceTimeContainer_get_implementation(::com::sun::star::uno::XComponentContext*,
2180 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2181 : {
2182 130 : return cppu::acquire(new animcore::AnimationNode(SEQ));
2183 : }
2184 :
2185 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2186 1 : com_sun_star_animations_IterateContainer_get_implementation(::com::sun::star::uno::XComponentContext*,
2187 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2188 : {
2189 1 : return cppu::acquire(new animcore::AnimationNode(ITERATE));
2190 : }
2191 :
2192 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2193 104 : com_sun_star_animations_Animate_get_implementation(::com::sun::star::uno::XComponentContext*,
2194 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2195 : {
2196 104 : return cppu::acquire(new animcore::AnimationNode(ANIMATE));
2197 : }
2198 :
2199 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2200 61 : com_sun_star_animations_AnimateSet_get_implementation(::com::sun::star::uno::XComponentContext*,
2201 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2202 : {
2203 61 : return cppu::acquire(new animcore::AnimationNode(SET));
2204 : }
2205 :
2206 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2207 1 : com_sun_star_animations_AnimateColor_get_implementation(::com::sun::star::uno::XComponentContext*,
2208 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2209 : {
2210 1 : return cppu::acquire(new animcore::AnimationNode(ANIMATECOLOR));
2211 : }
2212 :
2213 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2214 1 : com_sun_star_animations_AnimateMotion_get_implementation(::com::sun::star::uno::XComponentContext*,
2215 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2216 : {
2217 1 : return cppu::acquire(new animcore::AnimationNode(ANIMATEMOTION));
2218 : }
2219 :
2220 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2221 0 : com_sun_star_animations_AnimateTransform_get_implementation(::com::sun::star::uno::XComponentContext*,
2222 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2223 : {
2224 0 : return cppu::acquire(new animcore::AnimationNode(ANIMATETRANSFORM));
2225 : }
2226 :
2227 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2228 248 : com_sun_star_animations_TransitionFilter_get_implementation(::com::sun::star::uno::XComponentContext*,
2229 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2230 : {
2231 248 : return cppu::acquire(new animcore::AnimationNode(TRANSITIONFILTER));
2232 : }
2233 :
2234 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2235 3 : com_sun_star_animations_Audio_get_implementation(::com::sun::star::uno::XComponentContext*,
2236 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2237 : {
2238 3 : return cppu::acquire(new animcore::AnimationNode(AUDIO));
2239 : }
2240 :
2241 : extern "C" SAL_DLLPUBLIC_EXPORT ::com::sun::star::uno::XInterface* SAL_CALL
2242 6 : com_sun_star_animations_Command_get_implementation(::com::sun::star::uno::XComponentContext*,
2243 : ::com::sun::star::uno::Sequence<css::uno::Any> const &)
2244 : {
2245 6 : return cppu::acquire(new animcore::AnimationNode(COMMAND));
2246 : }
2247 :
2248 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|