WebEditorClient should properly write to m_rangeForCandidates
[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);
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);
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, optional unrestricted float sy, optional unrestricted float sw, optional unrestricted float sh,
160         optional unrestricted float dx, optional unrestricted float dy, optional unrestricted float dw, optional unrestricted float dh,
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);
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