| /* |
| * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * 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 |
| * 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 |
| * 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 |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#canvasrenderingcontext2d |
| |
| // FIXME: float => double throughout |
| // FIXME: Use union type in drawImage and createPattern once supported: |
| // http://crbug.com/372891 |
| typedef (HTMLImageElement or |
| HTMLVideoElement or |
| HTMLCanvasElement // or |
| // CanvasRenderingContext2D or |
| // ImageBitmap |
| ) CanvasImageSource; |
| |
| enum CanvasFillRule { "nonzero", "evenodd" }; |
| |
| [ |
| TypeChecking=(Interface,Unrestricted), |
| WillBeGarbageCollected, |
| ] interface CanvasRenderingContext2D { |
| // back-reference to the canvas |
| readonly attribute HTMLCanvasElement canvas; |
| |
| // state |
| void save(); // push state on state stack |
| void restore(); // pop state stack and restore state |
| |
| // transformations (default transform is the identity matrix) |
| [RuntimeEnabled=ExperimentalCanvasFeatures] attribute SVGMatrix currentTransform; |
| void scale(unrestricted float x, unrestricted float y); |
| void rotate(unrestricted float angle); |
| void translate(unrestricted float x, unrestricted float y); |
| void transform(unrestricted float a, unrestricted float b, unrestricted float c, unrestricted float d, unrestricted float e, unrestricted float f); |
| void setTransform(unrestricted float a, unrestricted float b, unrestricted float c, unrestricted float d, unrestricted float e, unrestricted float f); |
| void resetTransform(); |
| |
| // compositing |
| attribute unrestricted float globalAlpha; // (default 1.0) |
| [TreatNullAs=NullString] attribute DOMString globalCompositeOperation; // (default source-over) |
| |
| // image smoothing |
| [ImplementedAs=imageSmoothingEnabled, MeasureAs=PrefixedImageSmoothingEnabled, DartSuppress] attribute boolean webkitImageSmoothingEnabled; |
| [MeasureAs=UnprefixedImageSmoothingEnabled] attribute boolean imageSmoothingEnabled; |
| |
| // colors and styles (see also the CanvasDrawingStyles interface) |
| // FIXME: Use union types when supported: http://crbug.com/372891 |
| [Custom] attribute object strokeStyle; // (default black) |
| [Custom] attribute object fillStyle; // (default black) |
| 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); |
| [RaisesException] CanvasPattern createPattern(HTMLCanvasElement canvas, DOMString? repetitionType); |
| [RaisesException] CanvasPattern createPattern(HTMLImageElement image, DOMString? repetitionType); |
| [RaisesException] CanvasPattern createPattern(HTMLVideoElement image, DOMString? repetitionType); |
| |
| // shadows |
| attribute unrestricted float shadowOffsetX; |
| attribute unrestricted float shadowOffsetY; |
| attribute unrestricted float shadowBlur; |
| [TreatNullAs=NullString] attribute DOMString shadowColor; |
| |
| // rects |
| 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 strokeRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height); |
| |
| // path API (see also CanvasPathMethods) |
| void beginPath(); |
| void fill(optional CanvasFillRule winding); |
| void fill(Path2D path, optional CanvasFillRule winding); |
| void stroke(); |
| void stroke(Path2D path); |
| // Focus rings |
| void drawFocusIfNeeded(Element element); |
| void drawFocusIfNeeded(Path2D path, Element element); |
| |
| [RuntimeEnabled=ExperimentalCanvasFeatures] void scrollPathIntoView(optional Path2D path); |
| void clip(optional CanvasFillRule winding); |
| void clip(Path2D path, optional CanvasFillRule winding); |
| boolean isPointInPath(unrestricted float x, unrestricted float y, optional CanvasFillRule winding); |
| boolean isPointInPath(Path2D path, unrestricted float x, unrestricted float y, optional CanvasFillRule winding); |
| boolean isPointInStroke(unrestricted float x, unrestricted float y); |
| boolean isPointInStroke(Path2D path, unrestricted float x, unrestricted float y); |
| |
| // text (see also the CanvasDrawingStyles interface) |
| 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); |
| TextMetrics measureText(DOMString text); |
| |
| // drawing images |
| [RaisesException] void drawImage(HTMLImageElement image, unrestricted float x, unrestricted float y); |
| [RaisesException] void drawImage(HTMLImageElement image, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height); |
| [RaisesException] 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); |
| [RaisesException] void drawImage(HTMLCanvasElement canvas, unrestricted float x, unrestricted float y); |
| [RaisesException] void drawImage(HTMLCanvasElement canvas, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height); |
| [RaisesException] 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); |
| [RaisesException] void drawImage(HTMLVideoElement video, unrestricted float x, unrestricted float y); |
| [RaisesException] void drawImage(HTMLVideoElement video, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height); |
| [RaisesException] 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); |
| [RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap imageBitmap, unrestricted float x, unrestricted float y); |
| [RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap imageBitmap, unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height); |
| [RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap imageBitmap, unrestricted float sx, unrestricted float sy, unrestricted float sw, unrestricted float sh, unrestricted float dx, unrestricted float dy, unrestricted float dw, unrestricted float dh); |
| |
| // hit regions |
| [RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException] void addHitRegion(optional HitRegionOptions options); |
| [RuntimeEnabled=ExperimentalCanvasFeatures] void removeHitRegion(DOMString id); |
| [RuntimeEnabled=ExperimentalCanvasFeatures] void clearHitRegions(); |
| |
| // pixel manipulation |
| [DartName=createImageDataFromImageData] ImageData createImageData(ImageData imagedata); |
| [RaisesException] ImageData createImageData(float sw, float sh); |
| [RaisesException] ImageData getImageData(float sx, float sy, float sw, float sh); |
| void putImageData(ImageData imagedata, float dx, float dy); |
| void putImageData(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight); |
| |
| // Context state |
| // Should be merged with WebGL counterpart in CanvasRenderingContext, once no-longer experimental |
| [RuntimeEnabled=ExperimentalCanvasFeatures] boolean isContextLost(); |
| |
| Canvas2DContextAttributes getContextAttributes(); |
| |
| // FIXME: factor out to CanvasDrawingStyles |
| // line caps/joins |
| attribute unrestricted float lineWidth; // (default 1) |
| [TreatNullAs=NullString] attribute DOMString lineCap; // "butt", "round", "square" (default "butt") |
| [TreatNullAs=NullString] attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter") |
| attribute unrestricted float miterLimit; // (default 10) |
| |
| // dashed lines |
| void setLineDash(sequence<unrestricted float> dash); |
| sequence<unrestricted float> getLineDash(); |
| attribute unrestricted float lineDashOffset; |
| |
| // text |
| attribute DOMString font; // (default 10px sans-serif) |
| attribute DOMString textAlign; // "start", "end", "left", "right", "center" (default: "start") |
| attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic") |
| [RuntimeEnabled=ExperimentalCanvasFeatures] attribute DOMString direction; // "inherit", "rtl", "ltr" (default: "inherit") |
| |
| // Non-standard APIs. Candidates for deprecation |
| // https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D |
| [MeasureAs=CanvasRenderingContext2DSetAlpha] void setAlpha(unrestricted float alpha); |
| [MeasureAs=CanvasRenderingContext2DSetCompositeOperation] void setCompositeOperation(DOMString compositeOperation); |
| [MeasureAs=CanvasRenderingContext2DSetLineWidth] void setLineWidth(unrestricted float width); |
| [MeasureAs=CanvasRenderingContext2DSetLineCap] void setLineCap(DOMString cap); |
| [MeasureAs=CanvasRenderingContext2DSetLineJoin] void setLineJoin(DOMString join); |
| [MeasureAs=CanvasRenderingContext2DSetMiterLimit] void setMiterLimit(unrestricted float limit); |
| [MeasureAs=CanvasRenderingContext2DClearShadow] void clearShadow(); |
| [MeasureAs=CanvasRenderingContext2DSetStrokeColor] void setStrokeColor(DOMString color, optional unrestricted float alpha); |
| [MeasureAs=CanvasRenderingContext2DSetStrokeColor] void setStrokeColor(unrestricted float grayLevel, optional unrestricted float alpha); |
| [MeasureAs=CanvasRenderingContext2DSetStrokeColor] void setStrokeColor(unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a); |
| [MeasureAs=CanvasRenderingContext2DSetStrokeColor] void setStrokeColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a); |
| [MeasureAs=CanvasRenderingContext2DSetFillColor] void setFillColor(DOMString color, optional unrestricted float alpha); |
| [MeasureAs=CanvasRenderingContext2DSetFillColor] void setFillColor(unrestricted float grayLevel, optional unrestricted float alpha); |
| [MeasureAs=CanvasRenderingContext2DSetFillColor] void setFillColor(unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a); |
| [MeasureAs=CanvasRenderingContext2DSetFillColor] void setFillColor(unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a); |
| [MeasureAs=CanvasRenderingContext2DDrawImageFromRect] void drawImageFromRect( |
| HTMLImageElement? image, optional unrestricted float sx, optional unrestricted float sy, optional unrestricted float sw, optional unrestricted float sh, |
| optional unrestricted float dx, optional unrestricted float dy, optional unrestricted float dw, optional unrestricted float dh, optional DOMString compositeOperation); |
| [MeasureAs=CanvasRenderingContext2DSetShadow] void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, optional DOMString color, optional unrestricted float alpha); |
| [MeasureAs=CanvasRenderingContext2DSetShadow] void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float grayLevel, optional unrestricted float alpha); |
| [MeasureAs=CanvasRenderingContext2DSetShadow] void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float r, unrestricted float g, unrestricted float b, unrestricted float a); |
| [MeasureAs=CanvasRenderingContext2DSetShadow] void setShadow(unrestricted float width, unrestricted float height, unrestricted float blur, unrestricted float c, unrestricted float m, unrestricted float y, unrestricted float k, unrestricted float a); |
| }; |
| |
| CanvasRenderingContext2D implements CanvasPathMethods; |