diff options
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 50 | ||||
-rw-r--r-- | components/script/dom/webidls/CanvasRenderingContext2D.webidl | 16 |
2 files changed, 39 insertions, 27 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 7ea623b5bf4..97574187038 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -12,6 +12,8 @@ use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::CSSStyleDeclarationMethods; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasFillRule; +use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasLineCap; +use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasLineJoin; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasRenderingContext2DMethods; use dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; @@ -1209,39 +1211,43 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { } // https://html.spec.whatwg.org/multipage/#dom-context-2d-linecap - fn LineCap(&self) -> DOMString { - let state = self.state.borrow(); - match state.line_cap { - LineCapStyle::Butt => DOMString::from("butt"), - LineCapStyle::Round => DOMString::from("round"), - LineCapStyle::Square => DOMString::from("square"), + fn LineCap(&self) -> CanvasLineCap { + match self.state.borrow().line_cap { + LineCapStyle::Butt => CanvasLineCap::Butt, + LineCapStyle::Round => CanvasLineCap::Round, + LineCapStyle::Square => CanvasLineCap::Square, } } // https://html.spec.whatwg.org/multipage/#dom-context-2d-linecap - fn SetLineCap(&self, cap_str: DOMString) { - if let Ok(cap) = LineCapStyle::from_str(&cap_str) { - self.state.borrow_mut().line_cap = cap; - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineCap(cap))).unwrap() - } + fn SetLineCap(&self, cap: CanvasLineCap) { + let line_cap = match cap { + CanvasLineCap::Butt => LineCapStyle::Butt, + CanvasLineCap::Round => LineCapStyle::Round, + CanvasLineCap::Square => LineCapStyle::Square, + }; + self.state.borrow_mut().line_cap = line_cap; + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineCap(line_cap))).unwrap(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-linejoin - fn LineJoin(&self) -> DOMString { - let state = self.state.borrow(); - match state.line_join { - LineJoinStyle::Round => DOMString::from("round"), - LineJoinStyle::Bevel => DOMString::from("bevel"), - LineJoinStyle::Miter => DOMString::from("miter"), + fn LineJoin(&self) -> CanvasLineJoin { + match self.state.borrow().line_join { + LineJoinStyle::Round => CanvasLineJoin::Round, + LineJoinStyle::Bevel => CanvasLineJoin::Bevel, + LineJoinStyle::Miter => CanvasLineJoin::Miter, } } // https://html.spec.whatwg.org/multipage/#dom-context-2d-linejoin - fn SetLineJoin(&self, join_str: DOMString) { - if let Ok(join) = LineJoinStyle::from_str(&join_str) { - self.state.borrow_mut().line_join = join; - self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineJoin(join))).unwrap() - } + fn SetLineJoin(&self, join: CanvasLineJoin) { + let line_join = match join { + CanvasLineJoin::Round => LineJoinStyle::Round, + CanvasLineJoin::Bevel => LineJoinStyle::Bevel, + CanvasLineJoin::Miter => LineJoinStyle::Miter, + }; + self.state.borrow_mut().line_join = line_join; + self.ipc_renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetLineJoin(line_join))).unwrap(); } // https://html.spec.whatwg.org/multipage/#dom-context-2d-miterlimit diff --git a/components/script/dom/webidls/CanvasRenderingContext2D.webidl b/components/script/dom/webidls/CanvasRenderingContext2D.webidl index a0e7614a1a2..67199d30555 100644 --- a/components/script/dom/webidls/CanvasRenderingContext2D.webidl +++ b/components/script/dom/webidls/CanvasRenderingContext2D.webidl @@ -141,12 +141,18 @@ interface CanvasRenderingContext2D { CanvasRenderingContext2D implements CanvasDrawingStyles; CanvasRenderingContext2D implements CanvasPathMethods; +enum CanvasLineCap { "butt", "round", "square" }; +enum CanvasLineJoin { "round", "bevel", "miter"}; +enum CanvasTextAlign { "start", "end", "left", "right", "center" }; +enum CanvasTextBaseline { "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" }; +enum CanvasDirection { "ltr", "rtl", "inherit" }; + [NoInterfaceObject] interface CanvasDrawingStyles { // line caps/joins attribute unrestricted double lineWidth; // (default 1) - attribute DOMString lineCap; // "butt", "round", "square" (default "butt") - attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter") + attribute CanvasLineCap lineCap; // "butt", "round", "square" (default "butt") + attribute CanvasLineJoin lineJoin; // "round", "bevel", "miter" (default "miter") attribute unrestricted double miterLimit; // (default 10) // dashed lines @@ -156,10 +162,10 @@ interface CanvasDrawingStyles { // 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", + //attribute CanvasTextAlign textAlign; // "start", "end", "left", "right", "center" (default: "start") + //attribute CanvasTextBaseline textBaseline; // "top", "hanging", "middle", "alphabetic", // "ideographic", "bottom" (default: "alphabetic") - //attribute DOMString direction; // "ltr", "rtl", "inherit" (default: "inherit") + //attribute CanvasDirection direction; // "ltr", "rtl", "inherit" (default: "inherit") }; [NoInterfaceObject] |