1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
|
/*
* 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
* 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 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 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.
*/
enum ImageSmoothingQuality { "low", "medium", "high" };
enum CanvasWindingRule { "nonzero", "evenodd" };
// 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,
CallTracingCallback=recordCanvasAction,
] interface CanvasRenderingContext2D {
// back-reference to the canvas
readonly attribute HTMLCanvasElement canvas;
void save();
void restore();
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);
[NewObject] DOMMatrix getTransform();
void setTransform(unrestricted float m11, unrestricted float m12, unrestricted float m21, unrestricted float m22,
unrestricted float dx, unrestricted float dy);
[MayThrowException] void setTransform(optional DOMMatrixInit transform);
void resetTransform();
attribute unrestricted float globalAlpha;
attribute DOMString globalCompositeOperation;
attribute unrestricted float lineWidth;
attribute DOMString lineCap;
attribute DOMString lineJoin;
attribute unrestricted float miterLimit;
attribute unrestricted float shadowOffsetX;
attribute unrestricted float shadowOffsetY;
attribute unrestricted float shadowBlur;
attribute DOMString shadowColor;
void setLineDash(sequence<unrestricted float> dash);
sequence<unrestricted float> getLineDash();
attribute unrestricted float lineDashOffset;
attribute sequence<unrestricted float> webkitLineDash;
[ImplementedAs=lineDashOffset] attribute unrestricted float webkitLineDashOffset;
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();
void fill(DOMPath path, optional CanvasWindingRule winding = "nonzero");
void stroke(DOMPath path);
void clip(DOMPath path, optional CanvasWindingRule winding = "nonzero");
void fill(optional CanvasWindingRule winding = "nonzero");
void stroke();
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(optional unrestricted float alpha = NaN);
// FIXME: Using "undefined" as default parameter value is wrong.
void setCompositeOperation(optional DOMString compositeOperation = "undefined");
void setLineWidth(optional unrestricted float width = NaN);
// FIXME: Using "undefined" as default parameter value is wrong.
void setLineCap(optional DOMString cap = "undefined");
void setLineJoin(optional DOMString join = "undefined");
void setMiterLimit(optional unrestricted float limit = NaN);
void clearShadow();
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 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 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);
void strokeRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height);
// 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);
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
[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 imageSmoothingEnabled;
[ImplementedAs=imageSmoothingEnabled] attribute boolean webkitImageSmoothingEnabled;
attribute ImageSmoothingQuality imageSmoothingQuality;
[EnabledAtRuntime=InspectorAdditions] void setPath(DOMPath path);
[EnabledAtRuntime=InspectorAdditions, NewObject] DOMPath getPath();
};
CanvasRenderingContext2D implements CanvasPath;
|