Index: Source/core/html/canvas/CanvasRenderingContext2D.idl |
diff --git a/Source/core/html/canvas/CanvasRenderingContext2D.idl b/Source/core/html/canvas/CanvasRenderingContext2D.idl |
index 4aa31cae745a60c3f26ef7c257795345d09268cd..f3050e36eabfba836f0bf092d27208c9beeee484 100644 |
--- a/Source/core/html/canvas/CanvasRenderingContext2D.idl |
+++ b/Source/core/html/canvas/CanvasRenderingContext2D.idl |
@@ -23,90 +23,104 @@ |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
-enum CanvasWindingRule { "nonzero", "evenodd" }; |
+// 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|Nullable|Unrestricted, |
WillBeGarbageCollected, |
] interface CanvasRenderingContext2D { |
- |
+ // back-reference to the canvas |
readonly attribute HTMLCanvasElement canvas; |
- void save(); |
- void restore(); |
+ // 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 sx, unrestricted float sy); |
+ void scale(unrestricted float x, unrestricted float y); |
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 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(); |
- attribute unrestricted float globalAlpha; |
- [TreatNullAs=NullString] attribute DOMString globalCompositeOperation; |
+ // compositing |
+ attribute unrestricted float globalAlpha; // (default 1.0) |
+ [TreatNullAs=NullString] attribute DOMString globalCompositeOperation; // (default source-over) |
+ |
+ // image smoothing |
+ [ImplementedAs=imageSmoothingEnabled, MeasureAs=PrefixedImageSmoothingEnabled] 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, [TreatNullAs=NullString] DOMString repetitionType); |
+ [RaisesException] CanvasPattern createPattern(HTMLImageElement image, [TreatNullAs=NullString] DOMString repetitionType); |
+ [RaisesException] CanvasPattern createPattern(HTMLVideoElement image, [TreatNullAs=NullString] DOMString repetitionType); |
- attribute unrestricted float lineWidth; |
- [TreatNullAs=NullString] attribute DOMString lineCap; |
- [TreatNullAs=NullString] attribute DOMString lineJoin; |
- attribute unrestricted float miterLimit; |
- |
+ // shadows |
attribute unrestricted float shadowOffsetX; |
attribute unrestricted float shadowOffsetY; |
attribute unrestricted float shadowBlur; |
[TreatNullAs=NullString] attribute DOMString shadowColor; |
- void setLineDash(sequence<unrestricted float> dash); |
- sequence<unrestricted float> getLineDash(); |
- attribute unrestricted float lineDashOffset; |
- |
+ // 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(); |
- |
- // FIXME: Simplify these using optional CanvasWindingRule once crbug.com/339000 gets fixed. |
+ // FIXME: Simplify these using optional CanvasFillRule once crbug.com/339000 gets fixed. |
void fill(); |
+ void fill(CanvasFillRule winding); |
[RuntimeEnabled=Path2D] void fill(Path2D path); |
- void fill(CanvasWindingRule winding); |
- [RuntimeEnabled=Path2D] void fill(Path2D path, CanvasWindingRule winding); |
+ [RuntimeEnabled=Path2D] void fill(Path2D path, CanvasFillRule winding); |
void stroke(); |
[RuntimeEnabled=Path2D] void stroke(Path2D path); |
- // FIXME: Simplify these using optional CanvasWindingRule once crbug.com/339000 gets fixed. |
+ // Focus rings |
+ [RuntimeEnabled=ExperimentalCanvasFeatures] void drawFocusIfNeeded(Element element); |
+ [RuntimeEnabled=ExperimentalCanvasFeatures] void drawFocusIfNeeded(Path2D path, Element element); |
+ [RuntimeEnabled=ExperimentalCanvasFeatures] boolean drawCustomFocusRing(Element element); |
+ |
+ [RuntimeEnabled=ExperimentalCanvasFeatures] void scrollPathIntoView(); |
+ [RuntimeEnabled=ExperimentalCanvasFeatures] void scrollPathIntoView(Path2D path); |
+ // FIXME: Simplify these using optional CanvasFillRule once crbug.com/339000 gets fixed. |
void clip(); |
+ void clip(CanvasFillRule winding); |
[RuntimeEnabled=Path2D] void clip(Path2D path); |
- void clip(CanvasWindingRule winding); |
- [RuntimeEnabled=Path2D] void clip(Path2D path, CanvasWindingRule winding); |
- |
- // FIXME: Simplify these using optional CanvasWindingRule once crbug.com/339000 gets fixed. |
+ [RuntimeEnabled=Path2D] void clip(Path2D path, CanvasFillRule winding); |
+ // FIXME: Simplify these using optional CanvasFillRule once crbug.com/339000 gets fixed. |
boolean isPointInPath(unrestricted float x, unrestricted float y); |
+ boolean isPointInPath(unrestricted float x, unrestricted float y, CanvasFillRule winding); |
[RuntimeEnabled=Path2D] boolean isPointInPath(Path2D path, unrestricted float x, unrestricted float y); |
- boolean isPointInPath(unrestricted float x, unrestricted float y, CanvasWindingRule winding); |
- [RuntimeEnabled=Path2D] boolean isPointInPath(Path2D path, unrestricted float x, unrestricted float y, CanvasWindingRule winding); |
+ [RuntimeEnabled=Path2D] boolean isPointInPath(Path2D path, unrestricted float x, unrestricted float y, CanvasFillRule winding); |
boolean isPointInStroke(unrestricted float x, unrestricted float y); |
[RuntimeEnabled=Path2D] boolean isPointInStroke(Path2D path, unrestricted float x, unrestricted float y); |
- [RuntimeEnabled=ExperimentalCanvasFeatures] void scrollPathIntoView(); |
- [RuntimeEnabled=ExperimentalCanvasFeatures] void scrollPathIntoView(Path2D path); |
- |
- // text |
- attribute DOMString font; |
- attribute DOMString textAlign; |
- attribute DOMString textBaseline; |
+ // 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); |
- // Context state |
- // Should be merged with WebGL counterpart in CanvasRenderingContext, once no-longer experimental |
- [RuntimeEnabled=ExperimentalCanvasFeatures] boolean isContextLost(); |
- |
- void strokeRect(unrestricted float x, unrestricted float y, unrestricted float width, unrestricted float height); |
- |
+ // 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); |
@@ -120,32 +134,38 @@ enum CanvasWindingRule { "nonzero", "evenodd" }; |
[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); |
- void putImageData(ImageData imagedata, float dx, float dy); |
- void putImageData(ImageData imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight); |
- |
- [RaisesException] CanvasPattern createPattern(HTMLCanvasElement canvas, [TreatNullAs=NullString] DOMString repetitionType); |
- [RaisesException] CanvasPattern createPattern(HTMLImageElement image, [TreatNullAs=NullString] DOMString repetitionType); |
- [RaisesException] CanvasPattern createPattern(HTMLVideoElement image, [TreatNullAs=NullString] DOMString repetitionType); |
+ // pixel manipulation |
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); |
- [Custom] attribute object strokeStyle; |
- [Custom] attribute object fillStyle; |
+ // Context state |
+ // Should be merged with WebGL counterpart in CanvasRenderingContext, once no-longer experimental |
+ [RuntimeEnabled=ExperimentalCanvasFeatures] boolean isContextLost(); |
- // pixel manipulation |
- [RaisesException] ImageData getImageData(float sx, float sy, float sw, float sh); |
+ Canvas2DContextAttributes getContextAttributes(); |
- // Focus rings |
- [RuntimeEnabled=ExperimentalCanvasFeatures] void drawFocusIfNeeded(Element element); |
- [RuntimeEnabled=ExperimentalCanvasFeatures] void drawFocusIfNeeded(Path2D path, Element element); |
- [RuntimeEnabled=ExperimentalCanvasFeatures] boolean drawCustomFocusRing(Element element); |
+ // 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) |
- [ImplementedAs=imageSmoothingEnabled, MeasureAs=PrefixedImageSmoothingEnabled] attribute boolean webkitImageSmoothingEnabled; |
- [MeasureAs=UnprefixedImageSmoothingEnabled] attribute boolean imageSmoothingEnabled; |
+ // dashed lines |
+ void setLineDash(sequence<unrestricted float> dash); |
+ sequence<unrestricted float> getLineDash(); |
+ attribute unrestricted float lineDashOffset; |
- Canvas2DContextAttributes getContextAttributes(); |
+ // 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") |
// 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); |
@@ -153,11 +173,11 @@ enum CanvasWindingRule { "nonzero", "evenodd" }; |
[MeasureAs=CanvasRenderingContext2DSetLineJoin] void setLineJoin(DOMString join); |
[MeasureAs=CanvasRenderingContext2DSetMiterLimit] void setMiterLimit(unrestricted float limit); |
[MeasureAs=CanvasRenderingContext2DClearShadow] void clearShadow(); |
- [MeasureAs=CanvasRenderingContext2DSetStrokeColor] void setStrokeColor([LegacyOverloadString] DOMString color, optional unrestricted float alpha); |
+ [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([LegacyOverloadString] DOMString color, optional unrestricted float alpha); |
+ [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); |