content: /*
   * 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;
  import org.w3c.dom.Element;
  
  /**
   *  The <code>Time</code> interface is a datatype that represents times within 
   * the timegraph. A <code>Time</code> has a type, key values to describe the 
   * time, and a boolean to indicate whether the values are currently 
   * unresolved.  Still need to address the wallclock values. 
   */
  public interface Time {
      /**
       *  A boolean indicating whether the current <code>Time</code> has been 
       * fully resolved to the document schedule.  Note that for this to be 
       * true, the current <code>Time</code> must be defined (not indefinite), 
       * the syncbase and all <code>Time</code> 's that the syncbase depends on 
       * must be defined (not indefinite), and the begin <code>Time</code> of 
       * all ascendent time containers of this element and all <code>Time</code>
       *  elements that this depends upon must be defined (not indefinite). 
       * <br> If this <code>Time</code> is based upon an event, this 
       * <code>Time</code> will only be resolved once the specified event has 
       * happened, subject to the constraints of the time container. 
       * <br> Note that this may change from true to false when the parent time 
       * container ends its simple duration (including when it repeats or 
       * restarts). 
       */
      public boolean getResolved();
  
      /**
       *  The clock value in seconds relative to the parent time container begin.
       *  This indicates the resolved time relationship to the parent time 
       * container.  This is only valid if resolved is true. 
       */
      public double getResolvedOffset();
  
      // TimeTypes
      public static final short SMIL_TIME_INDEFINITE      = 0;
      public static final short SMIL_TIME_OFFSET          = 1;
      public static final short SMIL_TIME_SYNC_BASED      = 2;
      public static final short SMIL_TIME_EVENT_BASED     = 3;
      public static final short SMIL_TIME_WALLCLOCK       = 4;
      public static final short SMIL_TIME_MEDIA_MARKER    = 5;
  
      /**
       *  A code representing the type of the underlying object, as defined 
       * above. 
       */
      public short getTimeType();
  
      /**
       *  The clock value in seconds relative to the syncbase or eventbase. 
       * Default value is <code>0</code> . 
       * @exception DOMException
       *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this 
       *   readonly attribute. 
       */
      public double getOffset();
      public void setOffset(double offset)
                                        throws DOMException;
  
      /**
       *  The base element for a sync-based or event-based time. 
       * @exception DOMException
       *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this 
       *   readonly attribute. 
       */
      public Element getBaseElement();
      public void setBaseElement(Element baseElement)
                                        throws DOMException;
  
      /**
       *  If <code>true</code> , indicates that a sync-based time is relative to 
       * the begin of the baseElement.  If <code>false</code> , indicates that a
       *  sync-based time is relative to the active end of the baseElement. 
       * @exception DOMException
       *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this 
       *   readonly attribute. 
       */
      public boolean getBaseBegin();
      public void setBaseBegin(boolean baseBegin)
                                        throws DOMException;
  
      /**
       *  The name of the event for an event-based time. Default value is 
       * <code>null</code> . 
       * @exception DOMException
       *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this 
       *   readonly attribute. 
       */
      public String getEvent();
      public void setEvent(String event)
                                        throws DOMException;
  
      /**
       *  The name of the marker from the media element, for media marker times. 
       * Default value is <code>null</code> . 
       * @exception DOMException
       *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this 
       *   readonly attribute. 
       */
      public String getMarker();
      public void setMarker(String marker)
                                        throws DOMException;
  
  }
  
  