1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_SD_INC_CUSTOMANIMATIONEFFECT_HXX
21 #define INCLUDED_SD_INC_CUSTOMANIMATIONEFFECT_HXX
23 #include <com/sun/star/animations/XAnimationNode.hpp>
24 #include <com/sun/star/animations/XTimeContainer.hpp>
25 #include <com/sun/star/animations/XAudio.hpp>
26 #include <com/sun/star/drawing/XShape.hpp>
27 #include <com/sun/star/util/XChangesListener.hpp>
29 #include <boost/shared_ptr.hpp>
31 #include <vcl/timer.hxx>
42 enum EValue
{ VALUE_FROM
, VALUE_TO
, VALUE_BY
, VALUE_FIRST
, VALUE_LAST
};
44 class CustomAnimationEffect
;
46 class CustomAnimationPreset
;
47 typedef boost::shared_ptr
< CustomAnimationPreset
> CustomAnimationPresetPtr
;
49 typedef boost::shared_ptr
< CustomAnimationEffect
> CustomAnimationEffectPtr
;
51 typedef std::list
< CustomAnimationEffectPtr
> EffectSequence
;
53 class EffectSequenceHelper
;
55 class SD_DLLPUBLIC CustomAnimationEffect
57 friend class MainSequence
;
58 friend class EffectSequenceHelper
;
61 CustomAnimationEffect( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
);
62 virtual ~CustomAnimationEffect();
64 SAL_DLLPRIVATE
const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& getNode() const { return mxNode
; }
65 SAL_DLLPRIVATE
void setNode( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
);
66 SAL_DLLPRIVATE
void replaceNode( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
);
68 SAL_DLLPRIVATE CustomAnimationEffectPtr
clone() const;
71 SAL_DLLPRIVATE
const OUString
& getPresetId() const { return maPresetId
; }
72 SAL_DLLPRIVATE
const OUString
& getPresetSubType() const { return maPresetSubType
; }
73 SAL_DLLPRIVATE
const OUString
& getProperty() const { return maProperty
; }
75 SAL_DLLPRIVATE sal_Int16
getPresetClass() const { return mnPresetClass
; }
76 SAL_DLLPRIVATE
void setPresetClass( sal_Int16 nPresetClass
);
78 SAL_DLLPRIVATE sal_Int16
getNodeType() const { return mnNodeType
; }
79 void setNodeType( sal_Int16 nNodeType
);
81 SAL_DLLPRIVATE ::com::sun::star::uno::Any
getRepeatCount() const;
82 SAL_DLLPRIVATE
void setRepeatCount( const ::com::sun::star::uno::Any
& rRepeatCount
);
84 SAL_DLLPRIVATE ::com::sun::star::uno::Any
getEnd() const;
85 SAL_DLLPRIVATE
void setEnd( const ::com::sun::star::uno::Any
& rEnd
);
87 SAL_DLLPRIVATE sal_Int16
getFill() const;
88 SAL_DLLPRIVATE
void setFill( sal_Int16 nFill
);
90 SAL_DLLPRIVATE
double getBegin() const { return mfBegin
; }
91 void setBegin( double fBegin
);
93 SAL_DLLPRIVATE
double getDuration() const { return mfDuration
; }
94 void setDuration( double fDuration
);
96 SAL_DLLPRIVATE
double getAbsoluteDuration() const { return mfAbsoluteDuration
; }
98 SAL_DLLPRIVATE
const OUString
& getName() const { return maName
; }
99 SAL_DLLPRIVATE
void setName( const OUString
& rName
) { maName
= rName
; }
101 SAL_DLLPRIVATE sal_Int16
getIterateType() const { return mnIterateType
; }
102 void setIterateType( sal_Int16 nIterateType
);
104 SAL_DLLPRIVATE
double getIterateInterval() const { return mfIterateInterval
; }
105 void setIterateInterval( double fIterateInterval
);
107 SAL_DLLPRIVATE ::com::sun::star::uno::Any
getTarget() const { return maTarget
; }
108 void setTarget( const ::com::sun::star::uno::Any
& rTarget
);
110 SAL_DLLPRIVATE
bool hasAfterEffect() const { return mbHasAfterEffect
; }
111 SAL_DLLPRIVATE
void setHasAfterEffect( bool bHasAfterEffect
) { mbHasAfterEffect
= bHasAfterEffect
; }
113 SAL_DLLPRIVATE
css::uno::Any
getDimColor() const { return maDimColor
; }
114 SAL_DLLPRIVATE
void setDimColor( const css::uno::Any
& rDimColor
) { maDimColor
= rDimColor
; }
116 SAL_DLLPRIVATE
bool IsAfterEffectOnNext() const { return mbAfterEffectOnNextEffect
; }
117 SAL_DLLPRIVATE
void setAfterEffectOnNext( bool bOnNextEffect
) { mbAfterEffectOnNextEffect
= bOnNextEffect
; }
119 SAL_DLLPRIVATE sal_Int32
getParaDepth() const { return mnParaDepth
; }
121 SAL_DLLPRIVATE
bool hasText() const { return mbHasText
; }
123 SAL_DLLPRIVATE sal_Int16
getCommand() const { return mnCommand
; }
125 SAL_DLLPRIVATE
double getAcceleration() const { return mfAcceleration
; }
126 SAL_DLLPRIVATE
void setAcceleration( double fAcceleration
);
128 SAL_DLLPRIVATE
double getDecelerate() const { return mfDecelerate
; }
129 SAL_DLLPRIVATE
void setDecelerate( double fDecelerate
);
131 SAL_DLLPRIVATE
bool getAutoReverse() const { return mbAutoReverse
; }
132 SAL_DLLPRIVATE
void setAutoReverse( bool bAutoReverse
);
134 SAL_DLLPRIVATE ::com::sun::star::uno::Any
getProperty( sal_Int32 nNodeType
, const OUString
& rAttributeName
, EValue eValue
);
135 SAL_DLLPRIVATE
bool setProperty( sal_Int32 nNodeType
, const OUString
& rAttributeName
, EValue eValue
, const ::com::sun::star::uno::Any
& rValue
);
137 SAL_DLLPRIVATE ::com::sun::star::uno::Any
getTransformationProperty( sal_Int32 nTransformType
, EValue eValue
);
138 SAL_DLLPRIVATE
bool setTransformationProperty( sal_Int32 nTransformType
, EValue eValue
, const ::com::sun::star::uno::Any
& rValue
);
140 SAL_DLLPRIVATE ::com::sun::star::uno::Any
getColor( sal_Int32 nIndex
);
141 SAL_DLLPRIVATE
void setColor( sal_Int32 nIndex
, const ::com::sun::star::uno::Any
& rColor
);
143 SAL_DLLPRIVATE ::com::sun::star::uno::Any
getRotation();
144 SAL_DLLPRIVATE
void setRotation( const ::com::sun::star::uno::Any
& rRotation
);
146 SAL_DLLPRIVATE sal_Int32
getGroupId() const { return mnGroupId
; }
147 SAL_DLLPRIVATE
void setGroupId( sal_Int32 nGroupId
);
149 SAL_DLLPRIVATE sal_Int16
getTargetSubItem() const { return mnTargetSubItem
; }
150 void setTargetSubItem( sal_Int16 nSubItem
);
152 SAL_DLLPRIVATE OUString
getPath() const;
153 SAL_DLLPRIVATE
void setPath( const OUString
& rPath
);
155 SAL_DLLPRIVATE
bool checkForText();
156 SAL_DLLPRIVATE
bool calculateIterateDuration();
158 SAL_DLLPRIVATE
void setAudio( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAudio
>& xAudio
);
159 SAL_DLLPRIVATE
bool getStopAudio() const;
161 void createAudio( const ::com::sun::star::uno::Any
& rSource
, double fVolume
= 1.0 );
162 SAL_DLLPRIVATE
void removeAudio();
163 SAL_DLLPRIVATE
const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAudio
>& getAudio() const { return mxAudio
; }
165 SAL_DLLPRIVATE EffectSequenceHelper
* getEffectSequence() const { return mpEffectSequence
; }
168 SAL_DLLPRIVATE ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
> createAfterEffectNode() const throw (com::sun::star::uno::Exception
);
169 SAL_DLLPRIVATE ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
> getTargetShape() const;
172 SAL_DLLPRIVATE
static sal_Int32
get_node_type( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
);
173 SAL_DLLPRIVATE
static sal_Int32
getNumberOfSubitems( const ::com::sun::star::uno::Any
& aTarget
, sal_Int16 nIterateType
);
175 SAL_DLLPRIVATE SdrPathObj
* createSdrPathObjFromPath();
176 SAL_DLLPRIVATE
void updateSdrPathObjFromPath( SdrPathObj
& rPathObj
);
177 SAL_DLLPRIVATE
void updatePathFromSdrPathObj( const SdrPathObj
& rPathObj
);
180 SAL_DLLPRIVATE
void setEffectSequence( EffectSequenceHelper
* pSequence
) { mpEffectSequence
= pSequence
; }
183 sal_Int16 mnNodeType
;
185 OUString maPresetSubType
;
187 sal_Int16 mnPresetClass
;
189 double mfDuration
; // this is the maximum duration of the subeffects
190 double mfAbsoluteDuration
; // this is the maximum duration of the subeffects including possible iterations
192 sal_Int16 mnIterateType
;
193 double mfIterateInterval
;
194 sal_Int32 mnParaDepth
;
196 double mfAcceleration
;
199 sal_Int16 mnTargetSubItem
;
202 EffectSequenceHelper
* mpEffectSequence
;
206 ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
> mxNode
;
207 ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAudio
> mxAudio
;
208 ::com::sun::star::uno::Any maTarget
;
210 bool mbHasAfterEffect
;
211 ::com::sun::star::uno::Any maDimColor
;
212 bool mbAfterEffectOnNextEffect
;
215 struct stl_CustomAnimationEffect_search_node_predict
217 stl_CustomAnimationEffect_search_node_predict( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xSearchNode
);
218 bool operator()( CustomAnimationEffectPtr pEffect
) const;
219 const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& mxSearchNode
;
222 enum ESequenceHint
{ EFFECT_EDITED
, EFFECT_REMOVED
, EFFECT_ADDED
};
224 /** this listener is implemented by UI components to track changes in the animation core */
225 class ISequenceListener
228 virtual void notify_change() = 0;
231 ~ISequenceListener() {}
234 /** this class keeps track of a group of animations that build up
235 a text animation for a single shape */
236 class CustomAnimationTextGroup
238 friend class EffectSequenceHelper
;
241 CustomAnimationTextGroup( const ::com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
>& rTarget
, sal_Int32 nGroupId
);
244 void addEffect( CustomAnimationEffectPtr
& pEffect
);
246 const ::com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
>& getTarget() const { return maTarget
; }
247 const EffectSequence
& getEffects() const { return maEffects
; }
249 /* -1: as single object, 0: all at once, n > 0: by n Th paragraph */
250 sal_Int32
getTextGrouping() const { return mnTextGrouping
; }
252 bool getAnimateForm() const { return mbAnimateForm
; }
253 bool getTextReverse() const { return mbTextReverse
; }
254 double getTextGroupingAuto() const { return mfGroupingAuto
; }
257 EffectSequence maEffects
;
258 ::com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
> maTarget
;
260 enum { PARA_LEVELS
= 5 };
262 sal_Int32 mnTextGrouping
;
265 double mfGroupingAuto
;
266 sal_Int32 mnLastPara
;
267 sal_Int8 mnDepthFlags
[PARA_LEVELS
];
271 typedef boost::shared_ptr
< CustomAnimationTextGroup
> CustomAnimationTextGroupPtr
;
272 typedef std::map
< sal_Int32
, CustomAnimationTextGroupPtr
> CustomAnimationTextGroupMap
;
274 class SD_DLLPUBLIC EffectSequenceHelper
276 friend class MainSequence
;
279 SAL_DLLPRIVATE
EffectSequenceHelper();
280 SAL_DLLPRIVATE
EffectSequenceHelper( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XTimeContainer
>& xSequenceRoot
);
281 SAL_DLLPRIVATE
virtual ~EffectSequenceHelper();
283 SAL_DLLPRIVATE
virtual ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
> getRootNode();
285 SAL_DLLPRIVATE CustomAnimationEffectPtr
append( const CustomAnimationPresetPtr
& pDescriptor
, const ::com::sun::star::uno::Any
& rTarget
, double fDuration
= -1.0 );
286 SAL_DLLPRIVATE CustomAnimationEffectPtr
append( const SdrPathObj
& rPathObj
, const ::com::sun::star::uno::Any
& rTarget
, double fDuration
= -1.0 );
287 void append( const CustomAnimationEffectPtr
& pEffect
);
288 SAL_DLLPRIVATE
void insert( EffectSequence::iterator
& rPos
, const CustomAnimationEffectPtr
& pEffect
);
289 SAL_DLLPRIVATE
void replace( const CustomAnimationEffectPtr
& pEffect
, const CustomAnimationPresetPtr
& pDescriptor
, double fDuration
= -1.0 );
290 SAL_DLLPRIVATE
void replace( const CustomAnimationEffectPtr
& pEffect
, const CustomAnimationPresetPtr
& pDescriptor
, const OUString
& rPresetSubType
, double fDuration
= -1.0 );
291 SAL_DLLPRIVATE
void remove( const CustomAnimationEffectPtr
& pEffect
);
293 SAL_DLLPRIVATE
void create( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
);
294 SAL_DLLPRIVATE
void createEffectsequence( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
);
295 SAL_DLLPRIVATE
void processAfterEffect( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
);
296 SAL_DLLPRIVATE
void createEffects( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
);
298 SAL_DLLPRIVATE sal_Int32
getCount() const { return sal::static_int_cast
< sal_Int32
>( maEffects
.size() ); }
300 SAL_DLLPRIVATE
virtual CustomAnimationEffectPtr
findEffect( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
) const;
302 SAL_DLLPRIVATE
virtual bool disposeShape( const com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
>& xShape
);
303 SAL_DLLPRIVATE
virtual void insertTextRange( const com::sun::star::uno::Any
& aTarget
);
304 SAL_DLLPRIVATE
virtual void disposeTextRange( const com::sun::star::uno::Any
& aTarget
);
305 SAL_DLLPRIVATE
virtual bool hasEffect( const com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
>& xShape
);
306 SAL_DLLPRIVATE
virtual void onTextChanged( const com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
>& xShape
);
308 /** this must be called if effects from this sequence are changed.
309 the method will call the registered listeners */
310 SAL_DLLPRIVATE
void update( const CustomAnimationEffectPtr
& pEffect
);
312 /** this method rebuilds the animation nodes */
313 SAL_DLLPRIVATE
virtual void rebuild();
315 SAL_DLLPRIVATE
EffectSequence::iterator
getBegin() { return maEffects
.begin(); }
316 SAL_DLLPRIVATE
EffectSequence::iterator
getEnd() { return maEffects
.end(); }
317 SAL_DLLPRIVATE
EffectSequence::iterator
find( const CustomAnimationEffectPtr
& pEffect
);
319 SAL_DLLPRIVATE EffectSequence
& getSequence() { return maEffects
; }
321 SAL_DLLPRIVATE
void addListener( ISequenceListener
* pListener
);
322 SAL_DLLPRIVATE
void removeListener( ISequenceListener
* pListener
);
324 // text group methods
326 SAL_DLLPRIVATE CustomAnimationTextGroupPtr
findGroup( sal_Int32 nGroupId
);
327 CustomAnimationTextGroupPtr
createTextGroup( CustomAnimationEffectPtr pEffect
, sal_Int32 nTextGrouping
, double fTextGroupingAuto
, bool bAnimateForm
, bool bTextReverse
);
328 SAL_DLLPRIVATE
void setTextGrouping( CustomAnimationTextGroupPtr pTextGroup
, sal_Int32 nTextGrouping
);
329 SAL_DLLPRIVATE
void setAnimateForm( CustomAnimationTextGroupPtr pTextGroup
, bool bAnimateForm
);
330 SAL_DLLPRIVATE
void setTextGroupingAuto( CustomAnimationTextGroupPtr pTextGroup
, double fTextGroupingAuto
);
331 SAL_DLLPRIVATE
void setTextReverse( CustomAnimationTextGroupPtr pTextGroup
, bool bAnimateForm
);
333 SAL_DLLPRIVATE sal_Int32
getSequenceType() const { return mnSequenceType
; }
335 SAL_DLLPRIVATE ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
> getTriggerShape() const { return mxEventSource
; }
336 SAL_DLLPRIVATE
void setTriggerShape( const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
>& xTrigger
) { mxEventSource
= xTrigger
; }
338 SAL_DLLPRIVATE
virtual sal_Int32
getOffsetFromEffect( const CustomAnimationEffectPtr
& xEffect
) const;
339 SAL_DLLPRIVATE
virtual CustomAnimationEffectPtr
getEffectFromOffset( sal_Int32 nOffset
) const;
342 SAL_DLLPRIVATE
virtual void implRebuild();
343 SAL_DLLPRIVATE
virtual void reset();
345 SAL_DLLPRIVATE
void createTextGroupParagraphEffects( CustomAnimationTextGroupPtr pTextGroup
, CustomAnimationEffectPtr pEffect
, bool bUsed
);
347 SAL_DLLPRIVATE
void notify_listeners();
349 SAL_DLLPRIVATE
void updateTextGroups();
352 ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XTimeContainer
> mxSequenceRoot
;
353 EffectSequence maEffects
;
354 std::list
< ISequenceListener
* > maListeners
;
355 CustomAnimationTextGroupMap maGroupMap
;
356 sal_Int32 mnSequenceType
;
357 ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
> mxEventSource
;
362 class InteractiveSequence
: public EffectSequenceHelper
364 friend class MainSequence
;
365 friend class MainSequenceChangeGuard
;
368 InteractiveSequence( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XTimeContainer
>& xSequenceRoot
, MainSequence
* pMainSequence
);
370 /** this method rebuilds the animation nodes */
371 virtual void rebuild() SAL_OVERRIDE
;
374 virtual void implRebuild() SAL_OVERRIDE
;
376 MainSequence
* mpMainSequence
;
379 typedef boost::shared_ptr
< InteractiveSequence
> InteractiveSequencePtr
;
380 typedef std::list
< InteractiveSequencePtr
> InteractiveSequenceList
;
382 class MainSequence
: public EffectSequenceHelper
, public ISequenceListener
384 friend class UndoAnimation
;
385 friend class MainSequenceRebuildGuard
;
386 friend class MainSequenceChangeGuard
;
390 MainSequence( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xTimingRootNode
);
391 virtual ~MainSequence();
393 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
> getRootNode() SAL_OVERRIDE
;
394 void reset( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xTimingRootNode
);
396 /** this method rebuilds the animation nodes */
397 virtual void rebuild() SAL_OVERRIDE
;
399 virtual CustomAnimationEffectPtr
findEffect( const ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XAnimationNode
>& xNode
) const SAL_OVERRIDE
;
401 virtual bool disposeShape( const com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
>& xShape
) SAL_OVERRIDE
;
402 virtual void insertTextRange( const com::sun::star::uno::Any
& aTarget
) SAL_OVERRIDE
;
403 virtual void disposeTextRange( const com::sun::star::uno::Any
& aTarget
) SAL_OVERRIDE
;
404 virtual bool hasEffect( const com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
>& xShape
) SAL_OVERRIDE
;
405 virtual void onTextChanged( const com::sun::star::uno::Reference
< com::sun::star::drawing::XShape
>& xShape
) SAL_OVERRIDE
;
407 const InteractiveSequenceList
& getInteractiveSequenceList() const { return maInteractiveSequenceList
; }
409 virtual void notify_change() SAL_OVERRIDE
;
411 bool setTrigger( const CustomAnimationEffectPtr
& pEffect
, const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
>& xTriggerShape
);
413 /** starts a timer that recreates the internal structure from the API core after 1 second */
414 void startRecreateTimer();
416 /** starts a timer that rebuilds the API core from the internal structure after 1 second */
417 void startRebuildTimer();
419 virtual sal_Int32
getOffsetFromEffect( const CustomAnimationEffectPtr
& xEffect
) const SAL_OVERRIDE
;
420 virtual CustomAnimationEffectPtr
getEffectFromOffset( sal_Int32 nOffset
) const SAL_OVERRIDE
;
423 /** permits rebuilds until unlockRebuilds() is called. All rebuild calls during a locked sequence are
424 process after unlockRebuilds() call. lockRebuilds() and unlockRebuilds() calls can be nested. */
426 void unlockRebuilds();
428 DECL_LINK_TYPED(onTimerHdl
, Timer
*, void);
430 virtual void implRebuild() SAL_OVERRIDE
;
434 void createMainSequence();
435 virtual void reset() SAL_OVERRIDE
;
437 InteractiveSequencePtr
createInteractiveSequence( const ::com::sun::star::uno::Reference
< ::com::sun::star::drawing::XShape
>& xShape
);
439 InteractiveSequenceList maInteractiveSequenceList
;
441 ::com::sun::star::uno::Reference
< ::com::sun::star::util::XChangesListener
> mxChangesListener
;
442 ::com::sun::star::uno::Reference
< ::com::sun::star::animations::XTimeContainer
> mxTimingRootNode
;
447 long mnRebuildLockGuard
;
448 bool mbPendingRebuildRequest
;
449 sal_Int32 mbIgnoreChanges
;
452 typedef boost::shared_ptr
< MainSequence
> MainSequencePtr
;
454 class MainSequenceRebuildGuard
457 MainSequenceRebuildGuard( const MainSequencePtr
& pMainSequence
);
458 ~MainSequenceRebuildGuard();
461 MainSequencePtr mpMainSequence
;
466 #endif // INCLUDED_SD_INC_CUSTOMANIMATIONEFFECT_HXX
468 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */