aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas
diff options
context:
space:
mode:
authorUtsav Oza <utsavoza96@gmail.com>2020-06-04 01:32:25 +0530
committerUtsav Oza <utsavoza96@gmail.com>2020-06-10 22:11:24 +0530
commitc21fde375184c367f923b9e3776ba3adbe7f53dd (patch)
treeb23c310ff6abd3fdfac9dd09e0432e0574880ce4 /components/canvas
parent15fd256302cc4401e0c4e2d154d473bfaa16223d (diff)
downloadservo-c21fde375184c367f923b9e3776ba3adbe7f53dd.tar.gz
servo-c21fde375184c367f923b9e3776ba3adbe7f53dd.zip
Implement CanvasRenderingContext2D.font property
Diffstat (limited to 'components/canvas')
-rw-r--r--components/canvas/Cargo.toml1
-rw-r--r--components/canvas/canvas_data.rs6
-rw-r--r--components/canvas/canvas_paint_thread.rs1
-rw-r--r--components/canvas/raqote_backend.rs1
4 files changed, 9 insertions, 0 deletions
diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml
index 918e2971f9a..3d7fa7f38e0 100644
--- a/components/canvas/Cargo.toml
+++ b/components/canvas/Cargo.toml
@@ -34,6 +34,7 @@ pixels = { path = "../pixels" }
raqote = { version = "0.8", features = ["text"] }
servo_config = { path = "../config" }
sparkle = "0.1.24"
+style = { path = "../style" }
# NOTE: the sm-angle feature only enables ANGLE on Windows, not other platforms!
surfman = { version = "0.2", features = ["sm-angle", "sm-angle-default"] }
surfman-chains = "0.3"
diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs
index 6ff87eca291..c90fca964f7 100644
--- a/components/canvas/canvas_data.rs
+++ b/components/canvas/canvas_data.rs
@@ -13,6 +13,7 @@ use num_traits::ToPrimitive;
use std::marker::PhantomData;
use std::mem;
use std::sync::Arc;
+use style::properties::style_structs::Font as FontStyleStruct;
use webrender_api::units::RectExt as RectExt_;
/// The canvas data stores a state machine for the current status of
@@ -1067,6 +1068,10 @@ impl<'a> CanvasData<'a> {
self.backend.set_shadow_color(value, &mut self.state);
}
+ pub fn set_font(&mut self, font_style: FontStyleStruct) {
+ self.state.font_style = Some(font_style)
+ }
+
// https://html.spec.whatwg.org/multipage/#when-shadows-are-drawn
fn need_to_draw_shadow(&self) -> bool {
self.backend.need_to_draw_shadow(&self.state.shadow_color) &&
@@ -1158,6 +1163,7 @@ pub struct CanvasPaintState<'a> {
pub shadow_offset_y: f64,
pub shadow_blur: f64,
pub shadow_color: Color,
+ pub font_style: Option<FontStyleStruct>,
}
/// It writes an image to the destination target
diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs
index 6832a5cddc8..9d9f8350e1d 100644
--- a/components/canvas/canvas_paint_thread.rs
+++ b/components/canvas/canvas_paint_thread.rs
@@ -247,6 +247,7 @@ impl<'a> CanvasPaintThread<'a> {
},
Canvas2dMsg::SetShadowBlur(value) => self.canvas(canvas_id).set_shadow_blur(value),
Canvas2dMsg::SetShadowColor(color) => self.canvas(canvas_id).set_shadow_color(color),
+ Canvas2dMsg::SetFont(font_style) => self.canvas(canvas_id).set_font(font_style),
}
}
diff --git a/components/canvas/raqote_backend.rs b/components/canvas/raqote_backend.rs
index 451656d7708..3c30c0f1a19 100644
--- a/components/canvas/raqote_backend.rs
+++ b/components/canvas/raqote_backend.rs
@@ -90,6 +90,7 @@ impl<'a> CanvasPaintState<'a> {
shadow_offset_y: 0.0,
shadow_blur: 0.0,
shadow_color: Color::Raqote(raqote::SolidSource::from_unpremultiplied_argb(0, 0, 0, 0)),
+ font_style: None,
}
}
}