blob: 54245d21ad30b5bb82e0604dd465247a11f22a4d [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef OOX_DRAWINGML_TIMENODE_HXX
#define OOX_DRAWINGML_TIMENODE_HXX
#include <boost/shared_ptr.hpp>
#include <vector>
#include <list>
#include <rtl/ustring.hxx>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/animations/XAnimationNode.hpp>
#include "oox/helper/propertymap.hxx"
#include "oox/ppt/slidetransition.hxx"
#include "oox/ppt/slidepersist.hxx"
#include "oox/ppt/animationspersist.hxx"
#include "oox/ppt/timenode.hxx"
namespace oox { namespace ppt {
class TimeNode;
class SlideTransition;
typedef boost::shared_ptr< TimeNode > TimeNodePtr;
typedef ::std::list< TimeNodePtr > TimeNodePtrList;
class TimeNode
{
public:
typedef ::std::map< ::rtl::OUString, ::com::sun::star::uno::Any > UserDataMap;
TimeNode( sal_Int16 nNodeType );
virtual ~TimeNode();
NodePropertyMap & getNodeProperties() { return maNodeProperties; }
UserDataMap & getUserData() { return maUserData; }
void addChild( const TimeNodePtr & pChildPtr )
{ maChildren.push_back( pChildPtr ); }
TimeNodePtrList & getChildren()
{ return maChildren; }
void setId( sal_Int32 nId );
const ::rtl::OUString & getId() const { return msId; }
void addNode(
const ::oox::core::XmlFilterBase& rFilter,
const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& rxNode,
const SlidePersistPtr & slide);
// data setters
void setTo( const ::com::sun::star::uno::Any & aTo );
void setFrom( const ::com::sun::star::uno::Any & aFrom );
void setBy( const ::com::sun::star::uno::Any & aBy );
void setTransitionFilter( const SlideTransition & aTransition)
{ maTransitionFilter = aTransition; }
void setNode(
const ::oox::core::XmlFilterBase& rFilter,
const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& xNode,
const SlidePersistPtr & pSlide );
AnimTargetElementPtr getTarget()
{
if( !mpTarget )
mpTarget.reset( new AnimTargetElement );
return mpTarget;
}
AnimationConditionList &getStartCondition()
{ return maStCondList; }
AnimationConditionList &getEndCondition()
{ return maEndCondList; }
AnimationConditionList &getNextCondition()
{ return maNextCondList; }
AnimationConditionList &getPrevCondition()
{ return maPrevCondList; }
AnimationCondition & getEndSyncValue()
{ mbHasEndSyncValue = true; return maEndSyncValue; }
protected:
static rtl::OUString getServiceName( sal_Int16 nNodeType );
::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >
createAndInsert(
const ::oox::core::XmlFilterBase& rFilter,
const rtl::OUString& rServiceName,
const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& rxNode );
private:
const sal_Int16 mnNodeType;
TimeNodePtrList maChildren;
rtl::OUString msId;
NodePropertyMap maNodeProperties;
UserDataMap maUserData; // a sequence to be stored as "UserData" property
SlideTransition maTransitionFilter;
AnimTargetElementPtr mpTarget;
bool mbHasEndSyncValue; // set to true if we try to get the endSync.
AnimationCondition maEndSyncValue;
AnimationConditionList maStCondList, maEndCondList;
AnimationConditionList maPrevCondList, maNextCondList;
};
} }
#endif