summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/html/canvas/CanvasRenderingContext2D.idl')
-rw-r--r--Source/WebCore/html/canvas/CanvasRenderingContext2D.idl220
1 files changed, 121 insertions, 99 deletions
diff --git a/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl b/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
index ffac89618..6dbb17553 100644
--- a/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
+++ b/Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2006-2016 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -10,10 +10,10 @@
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
@@ -23,146 +23,168 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+enum ImageSmoothingQuality { "low", "medium", "high" };
enum CanvasWindingRule { "nonzero", "evenodd" };
-interface CanvasRenderingContext2D : CanvasRenderingContext {
+// FIXME: This should include SVGImageElement and ImageBitmap.
+#if defined(ENABLE_VIDEO) && ENABLE_VIDEO
+typedef (HTMLImageElement or HTMLVideoElement or HTMLCanvasElement) CanvasImageSource;
+#else
+typedef (HTMLImageElement or HTMLCanvasElement) CanvasImageSource;
+#endif
+
+[
+ CustomIsReachable,
+ JSGenerateToJSObject,
+ JSCustomMarkFunction,
+] interface CanvasRenderingContext2D {
+
+ // back-reference to the canvas
+ readonly attribute HTMLCanvasElement canvas;
void save();
void restore();
- void scale(float sx, float sy);
- void rotate(float angle);
- void translate(float tx, float ty);
- void transform(float m11, float m12, float m21, float m22, float dx, float dy);
- void setTransform(float m11, float m12, float m21, float m22, float dx, float dy);
+ void commit();
+
+ void scale(unrestricted float sx, unrestricted float sy);
+ void rotate(unrestricted float angle);
+ void translate(unrestricted float tx, unrestricted float ty);
+ void transform(unrestricted float m11, unrestricted float m12, unrestricted float m21, unrestricted float m22,
+ unrestricted float dx, unrestricted float dy);
+ void setTransform(unrestricted float m11, unrestricted float m12, unrestricted float m21, unrestricted float m22,
+ unrestricted float dx, unrestricted float dy);
+ void resetTransform();
- attribute float globalAlpha;
- [TreatNullAs=NullString] attribute DOMString globalCompositeOperation;
+ attribute unrestricted float globalAlpha;
- [RaisesException] CanvasGradient createLinearGradient(float x0, float y0, float x1, float y1);
- [RaisesException] CanvasGradient createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1);
+ attribute DOMString globalCompositeOperation;
- attribute float lineWidth;
- [TreatNullAs=NullString] attribute DOMString lineCap;
- [TreatNullAs=NullString] attribute DOMString lineJoin;
- attribute float miterLimit;
+ attribute unrestricted float lineWidth;
+ attribute DOMString lineCap;
+ attribute DOMString lineJoin;
+ attribute unrestricted float miterLimit;
- attribute float shadowOffsetX;
- attribute float shadowOffsetY;
- attribute float shadowBlur;
- [TreatNullAs=NullString] attribute DOMString shadowColor;
+ attribute unrestricted float shadowOffsetX;
+ attribute unrestricted float shadowOffsetY;
+ attribute unrestricted float shadowBlur;
+ attribute DOMString shadowColor;
- void setLineDash(sequence<float> dash);
- sequence<float> getLineDash();
- attribute float lineDashOffset;
+ void setLineDash(sequence<unrestricted float> dash);
+ sequence<unrestricted float> getLineDash();
+ attribute unrestricted float lineDashOffset;
- [Custom] attribute Array webkitLineDash;
- attribute float webkitLineDashOffset;
+ attribute sequence<unrestricted float> webkitLineDash;
+ [ImplementedAs=lineDashOffset] attribute unrestricted float webkitLineDashOffset;
- void clearRect(float x, float y, float width, float height);
- void fillRect(float x, float y, float width, float height);
+ void clearRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
+ void fillRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
void beginPath();
-#if defined(ENABLE_CANVAS_PATH) && ENABLE_CANVAS_PATH
- attribute DOMPath currentPath;
-#endif
+ void fill(DOMPath path, optional CanvasWindingRule winding = "nonzero");
+ void stroke(DOMPath path);
+ void clip(DOMPath path, optional CanvasWindingRule winding = "nonzero");
- // FIXME: These methods should be shared with CanvasRenderingContext2D in the CanvasPathMethods interface.
- void closePath();
- void moveTo(float x, float y);
- void lineTo(float x, float y);
- void quadraticCurveTo(float cpx, float cpy, float x, float y);
- void bezierCurveTo(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y);
- [RaisesException] void arcTo(float x1, float y1, float x2, float y2, float radius);
- void rect(float x, float y, float width, float height);
- [RaisesException] void arc(float x, float y, float radius, float startAngle, float endAngle, [Default=Undefined] optional boolean anticlockwise);
-
- void fill(optional CanvasWindingRule winding);
+ void fill(optional CanvasWindingRule winding = "nonzero");
void stroke();
- void clip(optional CanvasWindingRule winding);
- boolean isPointInPath(float x, float y, optional CanvasWindingRule winding);
- boolean isPointInStroke(float x, float y);
+ void clip(optional CanvasWindingRule winding = "nonzero");
+
+ boolean isPointInPath(DOMPath path, unrestricted float x, unrestricted float y, optional CanvasWindingRule winding = "nonzero");
+ boolean isPointInStroke(DOMPath path, unrestricted float x, unrestricted float y);
+
+ boolean isPointInPath(unrestricted float x, unrestricted float y, optional CanvasWindingRule winding = "nonzero");
+ boolean isPointInStroke(unrestricted float x, unrestricted float y);
// text
attribute DOMString font;
attribute DOMString textAlign;
attribute DOMString textBaseline;
+ attribute DOMString direction;
TextMetrics measureText(DOMString text);
// other
- void setAlpha([Default=Undefined] optional float alpha);
- void setCompositeOperation([Default=Undefined] optional DOMString compositeOperation);
+ void setAlpha(optional unrestricted float alpha = NaN);
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
- void setLineWidth([Default=Undefined] optional float width);
- void setLineCap([Default=Undefined] optional DOMString cap);
- void setLineJoin([Default=Undefined] optional DOMString join);
- void setMiterLimit([Default=Undefined] optional float limit);
-#endif
+ // FIXME: Using "undefined" as default parameter value is wrong.
+ void setCompositeOperation(optional DOMString compositeOperation = "undefined");
- void clearShadow();
-
- void fillText(DOMString text, float x, float y, optional float maxWidth);
- void strokeText(DOMString text, float x, float y, optional float maxWidth);
+ void setLineWidth(optional unrestricted float width = NaN);
- void setStrokeColor([StrictTypeChecking] DOMString color, optional float alpha);
- void setStrokeColor(float grayLevel, optional float alpha);
- void setStrokeColor(float r, float g, float b, float a);
- void setStrokeColor(float c, float m, float y, float k, float a);
+ // FIXME: Using "undefined" as default parameter value is wrong.
+ void setLineCap(optional DOMString cap = "undefined");
+ void setLineJoin(optional DOMString join = "undefined");
- void setFillColor([StrictTypeChecking] DOMString color, optional float alpha);
- void setFillColor(float grayLevel, optional float alpha);
- void setFillColor(float r, float g, float b, float a);
- void setFillColor(float c, float m, float y, float k, float a);
+ void setMiterLimit(optional unrestricted float limit = NaN);
- void strokeRect(float x, float y, float width, float height);
+ void clearShadow();
- [RaisesException] void drawImage(HTMLImageElement? image, float x, float y);
- [RaisesException] void drawImage(HTMLImageElement? image, float x, float y, float width, float height);
- [RaisesException] void drawImage(HTMLImageElement? image, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
- [RaisesException] void drawImage(HTMLCanvasElement? canvas, float x, float y);
- [RaisesException] void drawImage(HTMLCanvasElement? canvas, float x, float y, float width, float height);
- [RaisesException] void drawImage(HTMLCanvasElement? canvas, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
-#if defined(ENABLE_VIDEO) && ENABLE_VIDEO
- [RaisesException] void drawImage(HTMLVideoElement? video, float x, float y);
- [RaisesException] void drawImage(HTMLVideoElement? video, float x, float y, float width, float height);
- [RaisesException] void drawImage(HTMLVideoElement? video, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
-#endif
+ void fillText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
+ void strokeText(DOMString text, unrestricted float x, unrestricted float y, optional unrestricted float maxWidth);
- void drawImageFromRect(HTMLImageElement image,
- optional float sx, optional float sy, optional float sw, optional float sh,
- optional float dx, optional float dy, optional float dw, optional float dh,
- optional DOMString compositeOperation);
+ void setStrokeColor(DOMString color, optional unrestricted float alpha);
+ void setStrokeColor(unrestricted float grayLevel, optional float alpha = 1);
+ void setStrokeColor(unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a);
+ void setStrokeColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a);
- void setShadow(float width, float height, float blur, [StrictTypeChecking] optional DOMString color, optional float alpha);
- void setShadow(float width, float height, float blur, float grayLevel, optional float alpha);
- void setShadow(float width, float height, float blur, float r, float g, float b, float a);
- void setShadow(float width, float height, float blur, float c, float m, float y, float k, float a);
+ void setFillColor(DOMString color, optional unrestricted float alpha);
+ void setFillColor(unrestricted float grayLevel, optional unrestricted float alpha = 1);
+ void setFillColor(unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a);
+ void setFillColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a);
- [RaisesException] void putImageData(ImageData? imagedata, float dx, float dy);
- [RaisesException] void putImageData(ImageData? imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
+ void strokeRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
- [RaisesException] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy);
- [RaisesException] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
+ // FIXME: This should move to the CanvasDrawImage interface.
+ // FIXME: All the unrestricted float arguments below should be unrestricted doubles.
+ [MayThrowException] void drawImage(CanvasImageSource image, unrestricted float x, unrestricted float y);
+ [MayThrowException] void drawImage(CanvasImageSource image, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
+ [MayThrowException] void drawImage(CanvasImageSource 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);
- [RaisesException] CanvasPattern createPattern(HTMLCanvasElement? canvas, [TreatNullAs=NullString] DOMString repetitionType);
- [RaisesException] CanvasPattern createPattern(HTMLImageElement? image, [TreatNullAs=NullString] DOMString repetitionType);
- [RaisesException] ImageData createImageData(ImageData? imagedata);
- [RaisesException] ImageData createImageData(float sw, float sh);
- [Custom] attribute custom strokeStyle;
- [Custom] attribute custom fillStyle;
+ void drawImageFromRect(HTMLImageElement image,
+ optional unrestricted float sx = 0, optional unrestricted float sy = 0, optional unrestricted float sw = 0, optional unrestricted float sh = 0,
+ optional unrestricted float dx = 0, optional unrestricted float dy = 0, optional unrestricted float dw = 0, optional unrestricted float dh = 0,
+ optional DOMString compositeOperation = "");
+
+ void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur,
+ optional DOMString color, optional unrestricted float alpha);
+ void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float grayLevel,
+ optional unrestricted float alpha = 1);
+ void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float r,
+ unrestricted float g, unrestricted float b, unrestricted float a);
+ void setShadow(float width, unrestricted float height, unrestricted float blur, unrestricted float c, unrestricted float m,
+ unrestricted float y, unrestricted float k, unrestricted float a);
+
+ void putImageData(ImageData imagedata, float dx, float dy);
+ void putImageData(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
+
+ void webkitPutImageDataHD(ImageData imagedata, float dx, float dy);
+ void webkitPutImageDataHD(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
+
+ [MayThrowException] ImageData createImageData(ImageData? imagedata);
+ [MayThrowException] ImageData createImageData(float sw, float sh);
+
+ attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle;
+ attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle;
+ [MayThrowException] CanvasGradient createLinearGradient(float x0, float y0, float x1, float y1);
+ [MayThrowException] CanvasGradient createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1);
+ [MayThrowException] CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition);
// pixel manipulation
- [RaisesException] ImageData getImageData(float sx, float sy, float sw, float sh);
-
- [RaisesException] ImageData webkitGetImageDataHD(float sx, float sy, float sw, float sh);
+ [MayThrowException] ImageData getImageData(float sx, float sy, float sw, float sh);
+ [MayThrowException] ImageData webkitGetImageDataHD(float sx, float sy, float sw, float sh);
+
+ // Focus rings
+ void drawFocusIfNeeded(Element element);
+ void drawFocusIfNeeded(DOMPath path, Element element);
readonly attribute float webkitBackingStorePixelRatio;
- attribute boolean webkitImageSmoothingEnabled;
+ attribute boolean imageSmoothingEnabled;
+ [ImplementedAs=imageSmoothingEnabled] attribute boolean webkitImageSmoothingEnabled;
+ attribute ImageSmoothingQuality imageSmoothingQuality;
};
+CanvasRenderingContext2D implements CanvasPath;