/*************************************************************************
 *
 *  OpenOffice.org - a multi-platform office productivity suite
 *
 *  $RCSfile: XAnimationNode.idl,v $
 *
 *  $Revision: 1.3 $
 *
 *  last change: $Author: rt $ $Date: 2005/09/07 20:41:02 $
 *
 *  The Contents of this file are made available subject to
 *  the terms of GNU Lesser General Public License Version 2.1.
 *
 *
 *    GNU Lesser General Public License Version 2.1
 *    =============================================
 *    Copyright 2005 by Sun Microsystems, Inc.
 *    901 San Antonio Road, Palo Alto, CA 94303, USA
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License version 2.1, as published by the Free Software Foundation.
 *
 *    This library is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *    Lesser General Public License for more details.
 *
 *    You should have received a copy of the GNU Lesser General Public
 *    License along with this library; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *    MA  02111-1307  USA
 *
 ************************************************************************/
#ifndef __com_sun_star_animations_XAnimationNode_idl__ 
#define __com_sun_star_animations_XAnimationNode_idl__ 

#ifndef __com_sun_star_container_XChild_idl__
#include <com/sun/star/container/XChild.idl>
#endif

#ifndef __com_sun_star_beans_NamedValue_idl__
#include <com/sun/star/beans/NamedValue.idl>
#endif

//============================================================================= 
 
 module com {  module sun {  module star {  module animations {  
 
//============================================================================= 

/**
*/
interface XAnimationNode : ::com::sun::star::container::XChild
{
	/**  a value from <const>AnimationNodeType</const>.

		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-timeContainer
	*/
	[readonly, attribute] short Type;

	/** a sequnece of values that define the begining of this element
		<br>
		<member>Begin</member> is
			<ul>
			<li><atom>double</atom> describes the element begin as an offset in seconds from an implicit syncbase.
				The definition of the implicit syncbase depends upon the element's parent time container.
				The offset is measured in parent simple time.</li>
			<li><type>Event</type> describes an event and an optional offset that determine the
				element begin. The element begin is defined relative to the time that the event
				is raised.</li>
			<li><const>Timing::INDEFINITE</const> the begin of the element will be determined by an
				external event to the element.</li>
			<li><type>sequence&lt;any&gt;</type> a sequence of values described above if more than
				one begin value is defined for this element.</li>
			<li><void/> if no begin behaviour is defined for this element.</li>
			</ul>

		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-begin
	*/
	[attribute] any Begin;

	/** defines the length of the simple duration.
		<br>
		<member>Duration</member> is
			<ul>
			<li><atom>double</atom> specifies the length of the simple duration in seconds.</li>
			<li><const>Timing::INDEFINITE</const> specifies the simple duration as indefinite.</li>
			<li><const>Timing::MEDIA</const> specifies the simple duration as the intrinsic media duration. This is only valid for elements that define media.</li>
			<li><void/> the simple duration for the element is defined to be the implicit duration of the element.</li>
			</ul>

		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-dur
	*/
	[attribute] any Duration;

	/** a sequnece of values that define the ending of this element
		<br>
		<member>End</member> is
			<ul>
			<li><atom>double</atom> describes the element end as an offset in seconds from an implicit syncbase.
				The definition of the implicit syncbase depends upon the element's parent time container.
				The offset is measured in parent simple time.</li>
			<li><type>Event</type> describes an event and an optional offset that determine the
				element end. The element end is defined relative to the time that the event
				is raised.</li>
			<li><const>Timing::INDEFINITE</const> the end of the element will be determined by an
				external event to the element.</li>
			<li><type>sequence&lt;any&gt;</type> a sequence of values described above if more than
				one begin value is defined for this element.</li>
			<li><void/> if no end behaviour is defined for this element.</li>
			</ul>

		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-end
	*/
	[attribute] any End;

	/** controls the implicit duration of time containers,
		as a function of the children.
		<br>
		The endsync attribute is only valid for
		par and excl time container elements, and media elements with timed
		children (e.g. animate or area elements).

		<member>EndSync</member> is
			eiter a <atom>short</atom> constant from <const>EndSync</const>,
			an interface reference to a child <type>XTimeContainer</type>
			or <void/>.
			
		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-endsync
	*/
	[attribute] any EndSync;

	/** the number of iterations of the simple duration.
		<br>
		<member>RepeatCount</member> is
			<ul>
			<li><atom>double</atom>
				this is a numeric value that specifies the number of iterations.
				It can include partial iterations expressed as fraction values.
				A fractional value describes a portion of the simple duration.
				Values must be greater than 0.</li>
			<li><const>Timing::INDEFINITE</const> the element is defined to repeat indefinitely
				(subject to the constraints of the parent time container).</li>
			<li><void/>
				no repeat count is defined for this element.</li>
			</ul>

		@see <const>EndSync</const>
		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-repeatCount
	*/
	[attribute] any RepeatCount;

	/** the total duration for repeat.
		<br>
		<member>RepeatDuration</member> is
			<ul>
			<li><atom>double</atom>
				specifies the duration in element active time
				to repeat the simple duration in seconds.</li>
			<li><const>Timing::INDEFINITE</const> the element is defined to repeat indefinitely
				(subject to the constraints of the parent time container).</li>
			<li><void/>
				No repeat duration is defined for this element. </li>
			</ul>

		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-repeatDur
	*/
	[attribute] any RepeatDuration;

	/** the attribute that specify the behaviour how an element
	    should be extended beyond the active duration by freezing the final
	    state of the element. 
		<br>
		<member>Fill</member> is
			a value from <const>AnimationFill</const>.

		@see <const>Fill</const>
		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-fill
	*/
	[attribute] short Fill;

	/** the default value for the fill behavior for this element and all
		descendents. 
		<br>
		<member>FillDefault</member> is
			<ul>
			<li>The values <const>AnimationFill::REMOVE</const>, <const>AnimationFill::FREEZE</const>,
			<const>AnimationFill::HOLD</const>, <const>AnimationFill::TRANSITION</const> and <const>AnimationFill::AUTO</const>
			specify that the element fill behavior is the respective value.</li>
			<li>The value <const>AnimationFill::INHERIT</const> specifies that the value of this attribute
			(and of the fill behavior) are inherited from the <member>FillDefault</member> value of the parent
			element. If there is no parent element, the value is <const>AnimationFill::AUTO</const>.</li>
			</ul>

		@see <const>Fill</const>
		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-fillDefault
	*/
	[attribute] short FillDefault;

	/**	defines the restart behaviour of this element.
		<br>
		<member>Restart</member> is
			a <atom>short</atom> value from <const>AnimationRestart</const>.
		
		@see <const>AnimationRestart</const>
		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-restart
	*/
	[attribute] short Restart;

	/**	defines the default restart behaviour for this element and all descendents.

		@returns
			a value from <const>Restart</const>.
		
		@see <const>AnimationRestart</const>
		@see http://www.w3.org/TR/smil20/smil-timing.html#adef-restartDefault
	*/
	[attribute] short RestartDefault;

	/** defines the acceleration for this element.
		<br>
		Element time will accelerate from a rate of 0 at the beginning up
		to a run rate, over the course of the specified proportion of the
		simple duration.

		<member>Acceleration</member> is
			a value between 0 (no acceleration) and 1 (acceleration until end
			of the elements duration).

		@see http://www.w3.org/TR/smil20/smil-timemanip.html#adef-accelerate
	*/
	[attribute] double Acceleration;

	/** defines the deceleration for this element.
		Element time will deceleration from a run rate to a rate of 0 at the
		ending, over the course of the specified proportion of the
		simple duration.

		<member>Decelerate</member> is
			a value between 0 (no deceleration) and 1 (deceleration from beginning
			of the elements duration).

		@see http://www.w3.org/TR/smil20/smil-timemanip.html#adef-decelerate
	*/
	[attribute] double Decelerate;

	/** defines the auto reverse settings for this element.

		<member>AutoRevers</member> is
			<ul>
			<li><false/> if the animation is played normal.</li>
			<li><true/> if the animation is played forwards and then backwards. This doubles the duration</li>
			</ul>
		
		@see http://www.w3.org/TR/smil20/smil-timemanip.html#adef-autoReverse
	*/
	[attribute] boolean AutoReverse;

	/**
	*/
	[attribute] sequence< ::com::sun::star::beans::NamedValue > UserData;
};

//============================================================================= 
 
}; }; }; };  

#endif
