Move HTML canvas and tracks from ExceptionCode to Exception
[WebKit-https.git] / Source / WebCore / html / canvas / CanvasRenderingContext2D.idl
1 /*
2  * Copyright (C) 2006 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 enum ImageSmoothingQuality { "low", "medium", "high" };
27 enum CanvasWindingRule { "nonzero", "evenodd" };
28
29 [
30     CustomIsReachable,
31     JSGenerateToJSObject,
32     JSCustomMarkFunction,
33 ] interface CanvasRenderingContext2D {
34
35     // back-reference to the canvas
36     readonly attribute HTMLCanvasElement canvas;
37
38     void save();
39     void restore();
40
41     void commit();
42
43     void scale(unrestricted float sx, unrestricted float sy);
44     void rotate(unrestricted float angle);
45     void translate(unrestricted float tx, unrestricted float ty);
46     void transform(unrestricted float m11, unrestricted float m12, unrestricted float m21, unrestricted float m22, 
47         unrestricted float dx, unrestricted float dy);
48     void setTransform(unrestricted float m11, unrestricted float m12, unrestricted float m21, unrestricted float m22, 
49         unrestricted float dx, unrestricted float dy);
50     void resetTransform();
51
52     attribute unrestricted float globalAlpha;
53
54     attribute DOMString globalCompositeOperation;
55
56     [MayThrowException] CanvasGradient createLinearGradient(float x0, float y0, float x1, float y1);
57     [MayThrowException] CanvasGradient createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1);
58
59     attribute unrestricted float lineWidth;
60     attribute DOMString lineCap;
61     attribute DOMString lineJoin;
62     attribute unrestricted float miterLimit;
63
64     attribute unrestricted float shadowOffsetX;
65     attribute unrestricted float shadowOffsetY;
66     attribute unrestricted float shadowBlur;
67     attribute DOMString shadowColor;
68
69     void setLineDash(sequence<unrestricted float> dash);
70     sequence<unrestricted float> getLineDash();
71     attribute unrestricted float lineDashOffset;
72
73     attribute sequence<unrestricted float> webkitLineDash;
74     [ImplementedAs=lineDashOffset] attribute unrestricted float webkitLineDashOffset;
75
76     void clearRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
77     void fillRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
78
79     void beginPath();
80
81     void fill(DOMPath path, optional CanvasWindingRule winding = "nonzero");
82     void stroke(DOMPath path);
83     void clip(DOMPath path, optional CanvasWindingRule winding = "nonzero");
84
85     void fill(optional CanvasWindingRule winding = "nonzero");
86     void stroke();
87     void clip(optional CanvasWindingRule winding = "nonzero");
88
89     boolean isPointInPath(DOMPath path, unrestricted float x, unrestricted float y, optional CanvasWindingRule winding = "nonzero");
90     boolean isPointInStroke(DOMPath path, unrestricted float x, unrestricted float y);
91
92     boolean isPointInPath(unrestricted float x, unrestricted float y, optional CanvasWindingRule winding = "nonzero");
93     boolean isPointInStroke(unrestricted float x, unrestricted float y);
94
95     // text
96     attribute DOMString font;
97     attribute DOMString textAlign;
98     attribute DOMString textBaseline;
99     attribute DOMString direction;
100
101     TextMetrics measureText(DOMString text);
102
103     // other
104
105     void setAlpha(optional unrestricted float alpha = NaN);
106
107     // FIXME: Using "undefined" as default parameter value is wrong.
108     void setCompositeOperation(optional DOMString compositeOperation = "undefined");
109
110     void setLineWidth(optional unrestricted float width = NaN);
111
112     // FIXME: Using "undefined" as default parameter value is wrong.
113     void setLineCap(optional DOMString cap = "undefined");
114     void setLineJoin(optional DOMString join = "undefined");
115
116     void setMiterLimit(optional unrestricted float limit = NaN);
117
118     void clearShadow();
119
120     void fillText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
121     void strokeText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
122
123     void setStrokeColor(DOMString color, optional unrestricted float alpha);
124     void setStrokeColor(unrestricted float grayLevel, optional float alpha = 1);
125     void setStrokeColor(unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a);
126     void setStrokeColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a);
127
128     void setFillColor(DOMString color, optional unrestricted float alpha);
129     void setFillColor(unrestricted float grayLevel, optional unrestricted float alpha = 1);
130     void setFillColor(unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a);
131     void setFillColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a);
132
133     void strokeRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
134
135     [MayThrowException] void drawImage(HTMLImageElement image, unrestricted float x, unrestricted float y);
136     [MayThrowException] void drawImage(HTMLImageElement image, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
137     [MayThrowException] void drawImage(HTMLImageElement image, unrestricted float sx, unrestricted float sy, unrestricted float sw, unrestricted float sh, unrestricted float dx, unrestricted float dy, unrestricted float dw, unrestricted float dh);
138     [MayThrowException] void drawImage(HTMLCanvasElement canvas, unrestricted float x, unrestricted float y);
139     [MayThrowException] void drawImage(HTMLCanvasElement canvas, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
140     [MayThrowException] void drawImage(HTMLCanvasElement canvas, unrestricted float sx, unrestricted float sy, unrestricted float sw, unrestricted float sh, unrestricted float dx, unrestricted float dy, unrestricted float dw, unrestricted float dh);
141     [Conditional=VIDEO, MayThrowException] void drawImage(HTMLVideoElement video, unrestricted float x, unrestricted float y);
142     [Conditional=VIDEO, MayThrowException] void drawImage(HTMLVideoElement video, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
143     [Conditional=VIDEO, MayThrowException] void drawImage(HTMLVideoElement video, unrestricted float sx, unrestricted float sy, unrestricted float sw, unrestricted float sh, unrestricted float dx, unrestricted float dy, unrestricted float dw, unrestricted float dh);
144
145     void drawImageFromRect(HTMLImageElement image,
146         optional unrestricted float sx = 0, optional unrestricted float sy = 0, optional unrestricted float sw = 0, optional unrestricted float sh = 0,
147         optional unrestricted float dx = 0, optional unrestricted float dy = 0, optional unrestricted float dw = 0, optional unrestricted float dh = 0,
148         optional DOMString compositeOperation = "");
149
150     void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, 
151         optional DOMString color, optional unrestricted float alpha);
152     void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float grayLevel, 
153         optional unrestricted float alpha = 1);
154     void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float r, 
155         unrestricted float g, unrestricted float b, unrestricted float a);
156     void setShadow(float width, unrestricted float height, unrestricted float blur, unrestricted float c, unrestricted float m, 
157         unrestricted float y, unrestricted float k, unrestricted float a);
158
159     void putImageData(ImageData imagedata, float dx, float dy);
160     void putImageData(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
161
162     void webkitPutImageDataHD(ImageData imagedata, float dx, float dy);
163     void webkitPutImageDataHD(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
164
165     [MayThrowException] CanvasPattern createPattern(HTMLCanvasElement canvas, [TreatNullAs=EmptyString] DOMString repetitionType);
166     [MayThrowException] CanvasPattern createPattern(HTMLImageElement image, [TreatNullAs=EmptyString] DOMString repetitionType);
167     [Conditional=VIDEO, MayThrowException] CanvasPattern? createPattern(HTMLVideoElement video, [TreatNullAs=EmptyString] DOMString repetitionType);
168     [MayThrowException] ImageData createImageData(ImageData? imagedata);
169     [MayThrowException] ImageData createImageData(float sw, float sh);
170
171     [Custom] attribute custom strokeStyle;
172     [Custom] attribute custom fillStyle;
173
174     // pixel manipulation
175     [MayThrowException] ImageData getImageData(float sx, float sy, float sw, float sh);
176     [MayThrowException] ImageData webkitGetImageDataHD(float sx, float sy, float sw, float sh);
177     
178     // Focus rings
179     void drawFocusIfNeeded(Element? element); // FIXME: The element parameter should not be nullable.
180     void drawFocusIfNeeded(DOMPath path, Element? element); // FIXME: The element parameter should not be nullable.
181
182     readonly attribute float webkitBackingStorePixelRatio;
183
184     attribute boolean imageSmoothingEnabled;
185     [ImplementedAs=imageSmoothingEnabled] attribute boolean webkitImageSmoothingEnabled;
186     attribute ImageSmoothingQuality imageSmoothingQuality;
187 };
188
189 CanvasRenderingContext2D implements CanvasPath;