[Web IDL] Specify default values for optional parameters of type 'float' / 'unrestric...
[WebKit.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 interface CanvasRenderingContext2D : CanvasRenderingContext {
30
31     void save();
32     void restore();
33
34     [Custom] void commit();
35
36     void scale(unrestricted float sx, unrestricted float sy);
37     void rotate(unrestricted float angle);
38     void translate(unrestricted float tx, unrestricted float ty);
39     void transform(unrestricted float m11, unrestricted float m12, unrestricted float m21, unrestricted float m22, 
40         unrestricted float dx, unrestricted float dy);
41     void setTransform(unrestricted float m11, unrestricted float m12, unrestricted float m21, unrestricted float m22, 
42         unrestricted float dx, unrestricted float dy);
43
44     attribute unrestricted float globalAlpha;
45
46     // FIXME: This should not have [TreatNullAs=EmptyString].
47     [TreatNullAs=EmptyString] attribute DOMString globalCompositeOperation;
48
49     [RaisesException] CanvasGradient createLinearGradient(float x0, float y0, float x1, float y1);
50     [RaisesException] CanvasGradient createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1);
51
52     attribute unrestricted float lineWidth;
53     attribute DOMString lineCap;
54     attribute DOMString lineJoin;
55     attribute unrestricted float miterLimit;
56
57     attribute unrestricted float shadowOffsetX;
58     attribute unrestricted float shadowOffsetY;
59     attribute unrestricted float shadowBlur;
60     attribute DOMString shadowColor;
61
62     void setLineDash(sequence<unrestricted float> dash);
63     sequence<unrestricted float> getLineDash();
64     attribute unrestricted float lineDashOffset;
65
66     [Custom] attribute Array webkitLineDash;
67     attribute unrestricted float webkitLineDashOffset;
68
69     void clearRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
70     void fillRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
71
72     void beginPath();
73
74     // FIXME: These methods should be shared with CanvasRenderingContext2D in the CanvasPathMethods interface.
75     void closePath();
76     void moveTo(unrestricted float x, unrestricted float y);
77     void lineTo(unrestricted float x, unrestricted float y);
78     void quadraticCurveTo(unrestricted float cpx, unrestricted float cpy, unrestricted float x, unrestricted float y);
79     void bezierCurveTo(unrestricted float cp1x, unrestricted float cp1y, unrestricted float cp2x, unrestricted float cp2y, 
80         unrestricted float x, unrestricted float y);
81     [RaisesException] void arcTo(unrestricted float x1, unrestricted float y1, unrestricted float x2, unrestricted float y2,
82         unrestricted float radius);
83     void rect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
84     [RaisesException] void arc(unrestricted float x, unrestricted float y, unrestricted float radius, unrestricted float startAngle,
85         unrestricted float endAngle, optional boolean anticlockwise = false);
86     [RaisesException] void ellipse(unrestricted float x, unrestricted float y, unrestricted float radiusX, unrestricted float radiusY, unrestricted float rotation, unrestricted float startAngle, unrestricted float endAngle, optional boolean anticlockwise = false);
87
88     void fill(DOMPath path, optional CanvasWindingRule winding = "nonzero");
89     void stroke(DOMPath path);
90     void clip(DOMPath path, optional CanvasWindingRule winding = "nonzero");
91
92     void fill(optional CanvasWindingRule winding = "nonzero");
93     void stroke();
94     void clip(optional CanvasWindingRule winding = "nonzero");
95
96     boolean isPointInPath(DOMPath path, unrestricted float x, unrestricted float y, optional CanvasWindingRule winding = "nonzero");
97     boolean isPointInStroke(DOMPath path, unrestricted float x, unrestricted float y);
98
99     boolean isPointInPath(unrestricted float x, unrestricted float y, optional CanvasWindingRule winding = "nonzero");
100     boolean isPointInStroke(unrestricted float x, unrestricted float y);
101
102     // text
103     attribute DOMString font;
104     attribute DOMString textAlign;
105     attribute DOMString textBaseline;
106     attribute DOMString direction;
107
108     TextMetrics measureText(DOMString text);
109
110     // other
111
112     void setAlpha(optional unrestricted float alpha = NaN);
113
114     // FIXME: Using "undefined" as default parameter value is wrong.
115     void setCompositeOperation(optional DOMString compositeOperation = "undefined");
116
117     void setLineWidth(optional unrestricted float width = NaN);
118
119     // FIXME: Using "undefined" as default parameter value is wrong.
120     void setLineCap(optional DOMString cap = "undefined");
121     void setLineJoin(optional DOMString join = "undefined");
122
123     void setMiterLimit(optional unrestricted float limit = NaN);
124
125     void clearShadow();
126
127     void fillText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
128     void strokeText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
129
130     void setStrokeColor([StrictTypeChecking] DOMString color, optional unrestricted float alpha);
131     void setStrokeColor(unrestricted float grayLevel, optional float alpha = 1);
132     void setStrokeColor(unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a);
133     void setStrokeColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a);
134
135     void setFillColor([StrictTypeChecking] DOMString color, optional unrestricted float alpha);
136     void setFillColor(unrestricted float grayLevel, optional unrestricted float alpha = 1);
137     void setFillColor(unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a);
138     void setFillColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a);
139
140     void strokeRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
141
142     [RaisesException] void drawImage(HTMLImageElement image, unrestricted float x, unrestricted float y);
143     [RaisesException] void drawImage(HTMLImageElement image, unrestricted float x, unrestricted float y,
144         unrestricted float width, unrestricted float height);
145     [RaisesException] void drawImage(HTMLImageElement image, unrestricted float sx, unrestricted float sy, unrestricted float sw,
146         unrestricted float sh, unrestricted float dx, unrestricted float dy, unrestricted float dw, unrestricted float dh);
147     [RaisesException] void drawImage(HTMLCanvasElement canvas, unrestricted float x, unrestricted float y);
148     [RaisesException] void drawImage(HTMLCanvasElement canvas, unrestricted float x, unrestricted float y,
149         unrestricted float width, unrestricted float height);
150     [RaisesException] void drawImage(HTMLCanvasElement canvas, unrestricted float sx, unrestricted float sy, unrestricted float sw,
151         unrestricted float sh, unrestricted float dx, unrestricted float dy, unrestricted float dw, unrestricted float dh);
152     [Conditional=VIDEO, RaisesException] void drawImage(HTMLVideoElement video, unrestricted float x, unrestricted float y);
153     [Conditional=VIDEO, RaisesException] void drawImage(HTMLVideoElement video, unrestricted float x, unrestricted float y,
154         unrestricted float width, unrestricted float height);
155     [Conditional=VIDEO, RaisesException] void drawImage(HTMLVideoElement video, unrestricted float sx, unrestricted float sy, unrestricted float sw,
156         unrestricted float sh, unrestricted float dx, unrestricted float dy, unrestricted float dw, unrestricted float dh);
157
158     void drawImageFromRect(HTMLImageElement image,
159         optional unrestricted float sx = 0, optional unrestricted float sy = 0, optional unrestricted float sw = 0, optional unrestricted float sh = 0,
160         optional unrestricted float dx = 0, optional unrestricted float dy = 0, optional unrestricted float dw = 0, optional unrestricted float dh = 0,
161         optional DOMString compositeOperation = "");
162
163     void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, 
164         [StrictTypeChecking] optional DOMString color, optional unrestricted float alpha);
165     void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float grayLevel, 
166         optional unrestricted float alpha = 1);
167     void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float r, 
168         unrestricted float g, unrestricted float b, unrestricted float a);
169     void setShadow(float width, unrestricted float height, unrestricted float blur, unrestricted float c, unrestricted float m, 
170         unrestricted float y, unrestricted float k, unrestricted float a);
171
172     [RaisesException] void putImageData(ImageData? imagedata, float dx, float dy);
173     [RaisesException] void putImageData(ImageData? imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
174
175     [RaisesException] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy);
176     [RaisesException] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
177
178     [RaisesException] CanvasPattern createPattern(HTMLCanvasElement? canvas, [TreatNullAs=EmptyString] DOMString repetitionType);
179     [RaisesException] CanvasPattern createPattern(HTMLImageElement? image, [TreatNullAs=EmptyString] DOMString repetitionType);
180     [RaisesException] ImageData createImageData(ImageData? imagedata);
181     [RaisesException] ImageData createImageData(float sw, float sh);
182
183     [Custom] attribute custom strokeStyle;
184     [Custom] attribute custom fillStyle;
185
186     // pixel manipulation
187     [RaisesException] ImageData getImageData(float sx, float sy, float sw, float sh);
188
189     [RaisesException] ImageData webkitGetImageDataHD(float sx, float sy, float sw, float sh);
190     
191     // Focus rings
192     void drawFocusIfNeeded(Element? element); // FIXME: The element parameter should not be nullable.
193     void drawFocusIfNeeded(DOMPath path, Element? element); // FIXME: The element parameter should not be nullable.
194
195     readonly attribute float webkitBackingStorePixelRatio;
196
197     attribute boolean imageSmoothingEnabled;
198     [ImplementedAs=imageSmoothingEnabled] attribute boolean webkitImageSmoothingEnabled;
199     attribute ImageSmoothingQuality imageSmoothingQuality;
200 };
201