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 */
13 // File: smil.idl
14 #ifndef _SMIL_IDL_
15 #define _SMIL_IDL_
17 #include "dom.idl"
18 #include "views.idl"
19 #include "events.idl"
21 #pragma prefix "dom.w3c.org"
22 module smil
23 {
24 typedef dom::DOMString DOMString;
25 typedef dom::Element Element;
26 typedef dom::NodeList NodeList;
27 typedef dom::Document Document;
29 interface SMILRegionElement;
31 interface ElementLayout {
32 attribute DOMString title;
33 // raises(dom::DOMException) on setting
35 attribute DOMString backgroundColor;
36 // raises(dom::DOMException) on setting
38 attribute long height;
39 // raises(dom::DOMException) on setting
41 attribute long width;
42 // raises(dom::DOMException) on setting
44 };
46 interface SMILRegionInterface {
47 attribute SMILRegionElement region;
48 };
50 interface Time {
51 readonly attribute boolean resolved;
52 readonly attribute double resolvedOffset;
53 // TimeTypes
54 const unsigned short SMIL_TIME_INDEFINITE = 0;
55 const unsigned short SMIL_TIME_OFFSET = 1;
56 const unsigned short SMIL_TIME_SYNC_BASED = 2;
57 const unsigned short SMIL_TIME_EVENT_BASED = 3;
58 const unsigned short SMIL_TIME_WALLCLOCK = 4;
59 const unsigned short SMIL_TIME_MEDIA_MARKER = 5;
61 readonly attribute unsigned short timeType;
62 attribute double offset;
63 // raises(dom::DOMException) on setting
65 attribute Element baseElement;
66 // raises(dom::DOMException) on setting
68 attribute boolean baseBegin;
69 // raises(dom::DOMException) on setting
71 attribute DOMString event;
72 // raises(dom::DOMException) on setting
74 attribute DOMString marker;
75 // raises(dom::DOMException) on setting
77 };
79 interface TimeList {
80 Time item(in unsigned long index);
81 readonly attribute unsigned long length;
82 };
84 interface ElementTime {
85 attribute TimeList begin;
86 // raises(dom::DOMException) on setting
88 attribute TimeList end;
89 // raises(dom::DOMException) on setting
91 attribute float dur;
92 // raises(dom::DOMException) on setting
94 // restartTypes
95 const unsigned short RESTART_ALWAYS = 0;
96 const unsigned short RESTART_NEVER = 1;
97 const unsigned short RESTART_WHEN_NOT_ACTIVE = 2;
99 attribute unsigned short restart;
100 // raises(dom::DOMException) on setting
102 // fillTypes
103 const unsigned short FILL_REMOVE = 0;
104 const unsigned short FILL_FREEZE = 1;
106 attribute unsigned short fill;
107 // raises(dom::DOMException) on setting
109 attribute float repeatCount;
110 // raises(dom::DOMException) on setting
112 attribute float repeatDur;
113 // raises(dom::DOMException) on setting
115 boolean beginElement();
116 boolean endElement();
117 void pauseElement();
118 void resumeElement();
119 void seekElement(inout float seekTo);
120 };
122 interface ElementTimeManipulation {
123 attribute float speed;
124 // raises(dom::DOMException) on setting
126 attribute float accelerate;
127 // raises(dom::DOMException) on setting
129 attribute float decelerate;
130 // raises(dom::DOMException) on setting
132 attribute boolean autoReverse;
133 // raises(dom::DOMException) on setting
135 };
137 interface ElementTimeContainer : ElementTime {
138 readonly attribute NodeList timeChildren;
139 NodeList getActiveChildrenAt(in float instant);
140 };
142 interface ElementSyncBehavior {
143 readonly attribute DOMString syncBehavior;
144 readonly attribute float syncTolerance;
145 readonly attribute DOMString defaultSyncBehavior;
146 readonly attribute float defaultSyncTolerance;
147 readonly attribute boolean syncMaster;
148 };
150 interface ElementParallelTimeContainer : ElementTimeContainer {
151 attribute DOMString endSync;
152 // raises(dom::DOMException) on setting
154 float getImplicitDuration();
155 };
157 interface ElementSequentialTimeContainer : ElementTimeContainer {
158 };
160 interface ElementExclusiveTimeContainer : ElementTimeContainer {
161 attribute DOMString endSync;
162 // raises(dom::DOMException) on setting
164 NodeList getPausedElements();
165 };
167 interface ElementTimeControl {
168 boolean beginElement()
169 raises(dom::DOMException);
170 boolean beginElementAt(in float offset)
171 raises(dom::DOMException);
172 boolean endElement()
173 raises(dom::DOMException);
174 boolean endElementAt(in float offset)
175 raises(dom::DOMException);
176 };
178 interface ElementTargetAttributes {
179 attribute DOMString attributeName;
180 // attributeTypes
181 const unsigned short ATTRIBUTE_TYPE_AUTO = 0;
182 const unsigned short ATTRIBUTE_TYPE_CSS = 1;
183 const unsigned short ATTRIBUTE_TYPE_XML = 2;
185 attribute unsigned short attributeType;
186 };
188 interface ElementTest {
189 attribute long systemBitrate;
190 // raises(dom::DOMException) on setting
192 attribute boolean systemCaptions;
193 // raises(dom::DOMException) on setting
195 attribute DOMString systemLanguage;
196 // raises(dom::DOMException) on setting
198 readonly attribute boolean systemRequired;
199 readonly attribute boolean systemScreenSize;
200 readonly attribute boolean systemScreenDepth;
201 attribute DOMString systemOverdubOrSubtitle;
202 // raises(dom::DOMException) on setting
204 attribute boolean systemAudioDesc;
205 // raises(dom::DOMException) on setting
207 };
209 interface SMILDocument : Document, ElementSequentialTimeContainer {
210 };
212 interface SMILElement : Element {
213 attribute DOMString id;
214 // raises(dom::DOMException) on setting
216 };
218 interface SMILLayoutElement : SMILElement {
219 readonly attribute DOMString type;
220 readonly attribute boolean resolved;
221 };
223 interface SMILTopLayoutElement : SMILElement, ElementLayout {
224 };
226 interface SMILRootLayoutElement : SMILElement, ElementLayout {
227 };
229 interface SMILRegionElement : SMILElement, ElementLayout {
230 attribute DOMString fit;
231 // raises(dom::DOMException) on setting
233 attribute DOMString top;
234 // raises(dom::DOMException) on setting
236 attribute long zIndex;
237 // raises(dom::DOMException) on setting
239 };
241 interface TimeEvent : events::Event {
242 readonly attribute views::AbstractView view;
243 readonly attribute long detail;
244 void initTimeEvent(in DOMString typeArg,
245 in views::AbstractView viewArg,
246 in long detailArg);
247 };
249 interface SMILMediaElement : ElementTime, SMILElement {
250 attribute DOMString abstractAttr;
251 // raises(dom::DOMException) on setting
253 attribute DOMString alt;
254 // raises(dom::DOMException) on setting
256 attribute DOMString author;
257 // raises(dom::DOMException) on setting
259 attribute DOMString clipBegin;
260 // raises(dom::DOMException) on setting
262 attribute DOMString clipEnd;
263 // raises(dom::DOMException) on setting
265 attribute DOMString copyright;
266 // raises(dom::DOMException) on setting
268 attribute DOMString longdesc;
269 // raises(dom::DOMException) on setting
271 attribute DOMString port;
272 // raises(dom::DOMException) on setting
274 attribute DOMString readIndex;
275 // raises(dom::DOMException) on setting
277 attribute DOMString rtpformat;
278 // raises(dom::DOMException) on setting
280 attribute DOMString src;
281 // raises(dom::DOMException) on setting
283 attribute DOMString stripRepeat;
284 // raises(dom::DOMException) on setting
286 attribute DOMString title;
287 // raises(dom::DOMException) on setting
289 attribute DOMString transport;
290 // raises(dom::DOMException) on setting
292 attribute DOMString type;
293 // raises(dom::DOMException) on setting
295 };
297 interface SMILRefElement : SMILMediaElement {
298 };
300 interface SMILAnimation : SMILElement, ElementTargetAttributes, ElementTime, ElementTimeControl {
301 // additiveTypes
302 const unsigned short ADDITIVE_REPLACE = 0;
303 const unsigned short ADDITIVE_SUM = 1;
305 attribute unsigned short additive;
306 // raises(dom::DOMException) on setting
308 // accumulateTypes
309 const unsigned short ACCUMULATE_NONE = 0;
310 const unsigned short ACCUMULATE_SUM = 1;
312 attribute unsigned short accumulate;
313 // raises(dom::DOMException) on setting
315 // calcModeTypes
316 const unsigned short CALCMODE_DISCRETE = 0;
317 const unsigned short CALCMODE_LINEAR = 1;
318 const unsigned short CALCMODE_PACED = 2;
319 const unsigned short CALCMODE_SPLINE = 3;
321 attribute unsigned short calcMode;
322 // raises(dom::DOMException) on setting
324 attribute DOMString keySplines;
325 // raises(dom::DOMException) on setting
327 attribute TimeList keyTimes;
328 // raises(dom::DOMException) on setting
330 attribute DOMString values;
331 // raises(dom::DOMException) on setting
333 attribute DOMString from;
334 // raises(dom::DOMException) on setting
336 attribute DOMString to;
337 // raises(dom::DOMException) on setting
339 attribute DOMString by;
340 // raises(dom::DOMException) on setting
342 };
344 interface SMILAnimateElement : SMILAnimation {
345 };
347 interface SMILSetElement : ElementTimeControl, ElementTime, ElementTargetAttributes, SMILElement {
348 attribute DOMString to;
349 };
351 interface SMILAnimateMotionElement : SMILAnimateElement {
352 attribute DOMString path;
353 // raises(dom::DOMException) on setting
355 attribute DOMString origin;
356 // raises(dom::DOMException) on setting
358 };
360 interface SMILAnimateColorElement : SMILAnimation {
361 };
363 interface SMILSwitchElement : SMILElement {
364 Element getSelectedElement();
365 };
366 };
368 #endif // _SMIL_IDL_