diff options
Diffstat (limited to 'Source/WebCore/html/canvas/CanvasRenderingContext2D.idl')
-rw-r--r-- | Source/WebCore/html/canvas/CanvasRenderingContext2D.idl | 220 |
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; |