1/*
2 * Copyright (c) 2000 World Wide Web Consortium,
3 * (Massachusetts Institute of Technology, Institut National de
4 * Recherche en Informatique et en Automatique, Keio University). All
5 * Rights Reserved. This program is distributed under the W3C's Software
6 * Intellectual Property License. This program is distributed in the
7 * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
8 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9 * PURPOSE. See W3C License http://www.w3.org/Consortium/Legal/ for more
10 * details.
11 */
12
13package org.w3c.dom.smil;
14
15import org.w3c.dom.DOMException;
16import org.w3c.dom.Element;
17
18/**
19 *  The <code>Time</code> interface is a datatype that represents times within
20 * the timegraph. A <code>Time</code> has a type, key values to describe the
21 * time, and a boolean to indicate whether the values are currently
22 * unresolved.  Still need to address the wallclock values.
23 */
24public interface Time {
25    /**
26     *  A boolean indicating whether the current <code>Time</code> has been
27     * fully resolved to the document schedule.  Note that for this to be
28     * true, the current <code>Time</code> must be defined (not indefinite),
29     * the syncbase and all <code>Time</code> 's that the syncbase depends on
30     * must be defined (not indefinite), and the begin <code>Time</code> of
31     * all ascendent time containers of this element and all <code>Time</code>
32     *  elements that this depends upon must be defined (not indefinite).
33     * <br> If this <code>Time</code> is based upon an event, this
34     * <code>Time</code> will only be resolved once the specified event has
35     * happened, subject to the constraints of the time container.
36     * <br> Note that this may change from true to false when the parent time
37     * container ends its simple duration (including when it repeats or
38     * restarts).
39     */
40    public boolean getResolved();
41
42    /**
43     *  The clock value in seconds relative to the parent time container begin.
44     *  This indicates the resolved time relationship to the parent time
45     * container.  This is only valid if resolved is true.
46     */
47    public double getResolvedOffset();
48
49    // TimeTypes
50    public static final short SMIL_TIME_INDEFINITE      = 0;
51    public static final short SMIL_TIME_OFFSET          = 1;
52    public static final short SMIL_TIME_SYNC_BASED      = 2;
53    public static final short SMIL_TIME_EVENT_BASED     = 3;
54    public static final short SMIL_TIME_WALLCLOCK       = 4;
55    public static final short SMIL_TIME_MEDIA_MARKER    = 5;
56
57    /**
58     *  A code representing the type of the underlying object, as defined
59     * above.
60     */
61    public short getTimeType();
62
63    /**
64     *  The clock value in seconds relative to the syncbase or eventbase.
65     * Default value is <code>0</code> .
66     * @exception DOMException
67     *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this
68     *   readonly attribute.
69     */
70    public double getOffset();
71    public void setOffset(double offset)
72                                      throws DOMException;
73
74    /**
75     *  The base element for a sync-based or event-based time.
76     * @exception DOMException
77     *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this
78     *   readonly attribute.
79     */
80    public Element getBaseElement();
81    public void setBaseElement(Element baseElement)
82                                      throws DOMException;
83
84    /**
85     *  If <code>true</code> , indicates that a sync-based time is relative to
86     * the begin of the baseElement.  If <code>false</code> , indicates that a
87     *  sync-based time is relative to the active end of the baseElement.
88     * @exception DOMException
89     *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this
90     *   readonly attribute.
91     */
92    public boolean getBaseBegin();
93    public void setBaseBegin(boolean baseBegin)
94                                      throws DOMException;
95
96    /**
97     *  The name of the event for an event-based time. Default value is
98     * <code>null</code> .
99     * @exception DOMException
100     *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this
101     *   readonly attribute.
102     */
103    public String getEvent();
104    public void setEvent(String event)
105                                      throws DOMException;
106
107    /**
108     *  The name of the marker from the media element, for media marker times.
109     * Default value is <code>null</code> .
110     * @exception DOMException
111     *    NO_MODIFICATION_ALLOWED_ERR: Raised on attempts to modify this
112     *   readonly attribute.
113     */
114    public String getMarker();
115    public void setMarker(String marker)
116                                      throws DOMException;
117
118}
119
120