diff options
Diffstat (limited to 'components/canvas/canvas_data.rs')
-rw-r--r-- | components/canvas/canvas_data.rs | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index f291ce416e9..fa77b016dd0 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -266,6 +266,15 @@ pub trait GenericDrawTarget { ); fn fill(&mut self, path: &Path, pattern: Pattern, draw_options: &DrawOptions); fn fill_rect(&mut self, rect: &Rect<f32>, pattern: Pattern, draw_options: Option<&DrawOptions>); + fn fill_text( + &mut self, + text: String, + x: f32, + y: f32, + max_width: Option<f64>, + pattern: Pattern, + draw_options: &DrawOptions, + ); fn get_format(&self) -> SurfaceFormat; fn get_size(&self) -> Size2D<i32>; fn get_transform(&self) -> Transform2D<f32>; @@ -458,10 +467,19 @@ impl<'a> CanvasData<'a> { } } - pub fn fill_text(&self, text: String, x: f64, y: f64, max_width: Option<f64>) { - error!( - "Unimplemented canvas2d.fillText. Values received: {}, {}, {}, {:?}.", - text, x, y, max_width + pub fn fill_text(&mut self, text: String, x: f64, y: f64, max_width: Option<f64>) { + // If any of the arguments are infinite or NaN, then return. + if !x.is_finite() || !y.is_finite() { + return; + } + + self.drawtarget.fill_text( + text, + x as f32, + y as f32, + max_width, + self.state.fill_style.clone(), + &self.state.draw_options, ); } |