Add a simple implementation of CanvasRenderingContext2d.fillText

This commit is contained in:
kaiakz 2020-02-15 20:52:51 +08:00
parent 2b0a48f291
commit 0d0ac986b7
5 changed files with 111 additions and 8 deletions

View file

@ -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,
);
}