Auto merge of #8729 - dzbarsky:canvas_webidl, r=dzbarsky

Update Canvas webIDL to spec

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8729)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2015-11-29 09:32:28 +05:30
commit 2d164f2beb
2 changed files with 27 additions and 25 deletions

View file

@ -11,8 +11,8 @@ use cssparser::{Parser, RGBA};
use dom::bindings::cell::DOMRefCell; use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::CSSStyleDeclarationMethods; use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::CSSStyleDeclarationMethods;
use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding;
use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasFillRule;
use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasRenderingContext2DMethods; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasRenderingContext2DMethods;
use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasWindingRule;
use dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods; use dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::UnionTypes::HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D; use dom::bindings::codegen::UnionTypes::HTMLImageElementOrHTMLCanvasElementOrCanvasRenderingContext2D;
@ -669,8 +669,8 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
} }
// https://html.spec.whatwg.org/multipage/#dom-context-2d-fill // https://html.spec.whatwg.org/multipage/#dom-context-2d-fill
fn Fill(&self, _: CanvasWindingRule) { fn Fill(&self, _: CanvasFillRule) {
// TODO: Process winding rule // TODO: Process fill rule
self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Fill)).unwrap(); self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Fill)).unwrap();
self.mark_as_dirty(); self.mark_as_dirty();
} }
@ -682,8 +682,8 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
} }
// https://html.spec.whatwg.org/multipage/#dom-context-2d-clip // https://html.spec.whatwg.org/multipage/#dom-context-2d-clip
fn Clip(&self, _: CanvasWindingRule) { fn Clip(&self, _: CanvasFillRule) {
// TODO: Process winding rule // TODO: Process fill rule
self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Clip)).unwrap(); self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::Clip)).unwrap();
} }

View file

@ -3,7 +3,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
enum CanvasWindingRule { "nonzero", "evenodd" }; enum CanvasFillRule { "nonzero", "evenodd" };
// https://html.spec.whatwg.org/multipage/#2dcontext // https://html.spec.whatwg.org/multipage/#2dcontext
typedef (HTMLImageElement or typedef (HTMLImageElement or
@ -30,7 +30,6 @@ interface CanvasRenderingContext2D {
void restore(); // pop state stack and restore state void restore(); // pop state stack and restore state
// transformations (default transform is the identity matrix) // transformations (default transform is the identity matrix)
// attribute SVGMatrix currentTransform;
void scale(unrestricted double x, unrestricted double y); void scale(unrestricted double x, unrestricted double y);
void rotate(unrestricted double angle); void rotate(unrestricted double angle);
void translate(unrestricted double x, unrestricted double y); void translate(unrestricted double x, unrestricted double y);
@ -40,12 +39,15 @@ interface CanvasRenderingContext2D {
unrestricted double d, unrestricted double d,
unrestricted double e, unrestricted double e,
unrestricted double f); unrestricted double f);
// [NewObject] DOMMatrix getTransform();
void setTransform(unrestricted double a, void setTransform(unrestricted double a,
unrestricted double b, unrestricted double b,
unrestricted double c, unrestricted double c,
unrestricted double d, unrestricted double d,
unrestricted double e, unrestricted double e,
unrestricted double f); unrestricted double f);
// void setTransform(optional DOMMatrixInit matrix);
void resetTransform(); void resetTransform();
// compositing // compositing
@ -53,11 +55,12 @@ interface CanvasRenderingContext2D {
attribute DOMString globalCompositeOperation; // (default source-over) attribute DOMString globalCompositeOperation; // (default source-over)
// image smoothing // image smoothing
attribute boolean imageSmoothingEnabled; // (default true) attribute boolean imageSmoothingEnabled; // (default true)
// attribute ImageSmoothingQuality imageSmoothingQuality; // (default low)
// colours and styles (see also the CanvasDrawingStyles interface) // colours and styles (see also the CanvasDrawingStyles interface)
attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black) attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black)
attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black) attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black)
CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1);
[Throws] [Throws]
CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
@ -80,25 +83,24 @@ interface CanvasRenderingContext2D {
// path API (see also CanvasPathMethods) // path API (see also CanvasPathMethods)
void beginPath(); void beginPath();
void fill(optional CanvasWindingRule fillRule = "nonzero"); void fill(optional CanvasFillRule fillRule = "nonzero");
//void fill(Path2D path, optional CanvasWindingRule fillRule = "nonzero"); //void fill(Path2D path, optional CanvasFillRule fillRule = "nonzero");
void stroke(); void stroke();
//void stroke(Path2D path); //void stroke(Path2D path);
//void drawSystemFocusRing(Element element); //void drawFocusIfNeeded(Element element);
//void drawSystemFocusRing(Path2D path, Element element); //void drawFocusIfNeeded(Path2D path, Element element);
//boolean drawCustomFocusRing(Element element);
//boolean drawCustomFocusRing(Path2D path, Element element);
//void scrollPathIntoView(); //void scrollPathIntoView();
//void scrollPathIntoView(Path2D path); //void scrollPathIntoView(Path2D path);
void clip(optional CanvasWindingRule fillRule = "nonzero"); void clip(optional CanvasFillRule fillRule = "nonzero");
//void clip(Path2D path, optional CanvasWindingRule fillRule = "nonzero"); //void clip(Path2D path, optional CanvasFillRule fillRule = "nonzero");
//void resetClip(); //void resetClip();
//boolean isPointInPath(unrestricted double x, unrestricted double y, //boolean isPointInPath(unrestricted double x, unrestricted double y,
// optional CanvasWindingRule fillRule = "nonzero"); // optional CanvasFillRule fillRule = "nonzero");
//boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, //boolean isPointInPath(Path2D path, unrestricted double x, unrestricted
// optional CanvasWindingRule fillRule = "nonzero"); // double y, optional CanvasFillRule fillRule = "nonzero");
//boolean isPointInStroke(unrestricted double x, unrestricted double y); //boolean isPointInStroke(unrestricted double x, unrestricted double y);
//boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); // boolean isPointInStroke(Path2D path, unrestricted double x,
// unrestricted double y);
// text (see also the CanvasDrawingStyles interface) // text (see also the CanvasDrawingStyles interface)
//void fillText(DOMString text, unrestricted double x, unrestricted double y, //void fillText(DOMString text, unrestricted double x, unrestricted double y,
@ -122,6 +124,7 @@ interface CanvasRenderingContext2D {
// hit regions // hit regions
//void addHitRegion(optional HitRegionOptions options); //void addHitRegion(optional HitRegionOptions options);
//void removeHitRegion(DOMString id); //void removeHitRegion(DOMString id);
//void clearHitRegions();
// pixel manipulation // pixel manipulation
[Throws] [Throws]
@ -136,6 +139,8 @@ interface CanvasRenderingContext2D {
double dirtyX, double dirtyY, double dirtyX, double dirtyY,
double dirtyWidth, double dirtyHeight); double dirtyWidth, double dirtyHeight);
}; };
CanvasRenderingContext2D implements CanvasDrawingStyles;
CanvasRenderingContext2D implements CanvasPathMethods;
[NoInterfaceObject] [NoInterfaceObject]
interface CanvasDrawingStyles { interface CanvasDrawingStyles {
@ -191,6 +196,3 @@ interface CanvasPathMethods {
// boolean anticlockwise); // boolean anticlockwise);
}; };
CanvasRenderingContext2D implements CanvasDrawingStyles;
CanvasRenderingContext2D implements CanvasPathMethods;