diff options
author | Hyowon Kim <hw1008.kim@samsung.com> | 2015-06-04 17:12:41 +0900 |
---|---|---|
committer | Hyowon Kim <hw1008.kim@samsung.com> | 2015-06-12 09:40:00 +0900 |
commit | 473afdb196f5fa3eb4680c853e5a288f904d3f22 (patch) | |
tree | 49e7ee4bc19863fda83007e444fbf4b5be3d7362 /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 37fcced0fa6b23a43596333aa9f057b21d0e6157 (diff) | |
download | servo-473afdb196f5fa3eb4680c853e5a288f904d3f22.tar.gz servo-473afdb196f5fa3eb4680c853e5a288f904d3f22.zip |
Add attributes for canvas shadows.
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 5cda56f085d..4902bf6ed14 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -27,6 +27,7 @@ use geom::matrix2d::Matrix2D; use geom::point::Point2D; use geom::rect::Rect; use geom::size::Size2D; +use gfx_traits::color; use canvas_traits::{CanvasMsg, Canvas2dMsg, CanvasCommonMsg}; use canvas_traits::{FillOrStrokeStyle, LinearGradientStyle, RadialGradientStyle}; @@ -80,6 +81,10 @@ struct CanvasContextState { line_join: LineJoinStyle, miter_limit: f64, transform: Matrix2D<f32>, + shadow_offset_x: f64, + shadow_offset_y: f64, + shadow_blur: f64, + shadow_color: RGBA, } impl CanvasContextState { @@ -101,6 +106,10 @@ impl CanvasContextState { line_join: LineJoinStyle::Miter, miter_limit: 10.0, transform: Matrix2D::identity(), + shadow_offset_x: 0.0, + shadow_offset_y: 0.0, + shadow_blur: 0.0, + shadow_color: RGBA { red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0 }, // transparent black } } } @@ -1056,6 +1065,61 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'a, CanvasRenderingContext2D> self.state.borrow_mut().miter_limit = limit; self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetMiterLimit(limit as f32))).unwrap() } + + // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsetx + fn ShadowOffsetX(self) -> f64 { + self.state.borrow().shadow_offset_x + } + + // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsetx + fn SetShadowOffsetX(self, value: f64) { + self.state.borrow_mut().shadow_offset_x = value; + self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetX(value))).unwrap() + } + + // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsety + fn ShadowOffsetY(self) -> f64 { + self.state.borrow().shadow_offset_y + } + + // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsety + fn SetShadowOffsetY(self, value: f64) { + self.state.borrow_mut().shadow_offset_y = value; + self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetY(value))).unwrap() + } + + // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowblur + fn ShadowBlur(self) -> f64 { + self.state.borrow().shadow_blur + } + + // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowblur + fn SetShadowBlur(self, value: f64) { + self.state.borrow_mut().shadow_blur = value; + self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowBlur(value))).unwrap() + } + + // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowcolor + fn ShadowColor(self) -> DOMString { + let mut result = String::new(); + serialize(&self.state.borrow().shadow_color, &mut result).unwrap(); + result + } + + // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowcolor + fn SetShadowColor(self, value: DOMString) { + match parse_color(&value) { + Ok(rgba) => { + self.state.borrow_mut().shadow_color = rgba; + self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowColor( + color::rgba(rgba.red, + rgba.green, + rgba.blue, + rgba.alpha)))).unwrap() + }, + _ => {} + } + } } impl Drop for CanvasRenderingContext2D { |