/*
 * Copyright (c) 2000 World Wide Web Consortium,
 * (Massachusetts Institute of Technology, Institut National de
 * Recherche en Informatique et en Automatique, Keio University). All
 * Rights Reserved. This program is distributed under the W3C's Software
 * Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more
 * details.
 */

package org.w3c.dom.smil;

import org.w3c.dom.DOMException;

/**
 */
public interface ElementTimeControl {
    /**
     *  Causes this element to begin the local timeline (subject to sync 
     * constraints).  
     * @return  <code>true</code> if the method call was successful and the 
     *   element was begun. <code>false</code> if the method call failed. 
     *   Possible reasons for failure include:  The element doesn't support 
     *   the <code>beginElement</code> method. (the <code>begin</code> 
     *   attribute is not set to <code>"indefinite"</code> )  The element is 
     *   already active and can't be restart when it is active. (the 
     *   <code>restart</code> attribute is set to <code>"whenNotActive"</code>
     *    )  The element is active or has been active and can't be restart. 
     *   (the <code>restart</code> attribute is set to <code>"never"</code> ).
     *    
     * @exception DOMException
     *    SYNTAX_ERR: The element was not defined with the appropriate syntax 
     *   to allow <code>beginElement</code> calls. 
     */
    public boolean beginElement()
                                throws DOMException;

    /**
     *  Causes this element to begin the local timeline (subject to sync 
     * constraints), at the passed offset from the current time when the 
     * method is called. If the offset is &gt;= 0, the semantics are 
     * equivalent to an event-base begin with the specified offset. If the 
     * offset is &lt; 0, the semantics are equivalent to beginElement(), but 
     * the element active duration is evaluated as though the element had 
     * begun at the passed (negative) offset from the current time when the 
     * method is called. 
     * @param offset  The offset in seconds at which to begin the element. 
     * @return  <code>true</code> if the method call was successful and the 
     *   element was begun. <code>false</code> if the method call failed. 
     *   Possible reasons for failure include:  The element doesn't support 
     *   the <code>beginElementAt</code> method. (the <code>begin</code> 
     *   attribute is not set to <code>"indefinite"</code> )  The element is 
     *   already active and can't be restart when it is active. (the 
     *   <code>restart</code> attribute is set to <code>"whenNotActive"</code>
     *    )  The element is active or has been active and can't be restart. 
     *   (the <code>restart</code> attribute is set to <code>"never"</code> ).
     *    
     * @exception DOMException
     *    SYNTAX_ERR: The element was not defined with the appropriate syntax 
     *   to allow <code>beginElementAt</code> calls. 
     */
    public boolean beginElementAt(float offset)
                                  throws DOMException;

    /**
     *  Causes this element to end the local timeline (subject to sync 
     * constraints). 
     * @return  <code>true</code> if the method call was successful and the 
     *   element was ended. <code>false</code> if method call failed. 
     *   Possible reasons for failure include:  The element doesn't support 
     *   the <code>endElement</code> method. (the <code>end</code> attribute 
     *   is not set to <code>"indefinite"</code> )  The element is not active.
     *    
     * @exception DOMException
     *    SYNTAX_ERR: The element was not defined with the appropriate syntax 
     *   to allow <code>endElement</code> calls. 
     */
    public boolean endElement()
                              throws DOMException;

    /**
     *  Causes this element to end the local timeline (subject to sync 
     * constraints) at the specified offset from the current time when the 
     * method is called. 
     * @param offset  The offset in seconds at which to end the element. Must 
     *   be &gt;= 0. 
     * @return  <code>true</code> if the method call was successful and the 
     *   element was ended. <code>false</code> if method call failed. 
     *   Possible reasons for failure include:  The element doesn't support 
     *   the <code>endElementAt</code> method. (the <code>end</code> 
     *   attribute is not set to <code>"indefinite"</code> )  The element is 
     *   not active. 
     * @exception DOMException
     *    SYNTAX_ERR: The element was not defined with the appropriate syntax 
     *   to allow <code>endElementAt</code> calls. 
     */
    public boolean endElementAt(float offset)
                                throws DOMException;

}