diff options
author | Utsav Oza <utsavoza96@gmail.com> | 2020-06-07 01:38:04 +0530 |
---|---|---|
committer | Utsav Oza <utsavoza96@gmail.com> | 2020-06-10 22:34:20 +0530 |
commit | 34d0c313dccc7e12b4409e10ec1f7ffae63e4528 (patch) | |
tree | a1bc30e7810cec87393b4e0485ec0c4d9fad752b /components/canvas/raqote_backend.rs | |
parent | c21fde375184c367f923b9e3776ba3adbe7f53dd (diff) | |
download | servo-34d0c313dccc7e12b4409e10ec1f7ffae63e4528.tar.gz servo-34d0c313dccc7e12b4409e10ec1f7ffae63e4528.zip |
Enable textAlign, textBaseline and direction attributes for canvas
Diffstat (limited to 'components/canvas/raqote_backend.rs')
-rw-r--r-- | components/canvas/raqote_backend.rs | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/components/canvas/raqote_backend.rs b/components/canvas/raqote_backend.rs index 3c30c0f1a19..5bab459b326 100644 --- a/components/canvas/raqote_backend.rs +++ b/components/canvas/raqote_backend.rs @@ -13,9 +13,7 @@ use canvas_traits::canvas::*; use cssparser::RGBA; use euclid::default::{Point2D, Rect, Size2D, Transform2D, Vector2D}; use euclid::Angle; -use font_kit::family_name::FamilyName; -use font_kit::properties::Properties; -use font_kit::source::SystemSource; +use font_kit::font::Font; use lyon_geom::Arc; use raqote::PathOp; use std::marker::PhantomData; @@ -78,6 +76,9 @@ impl Backend for RaqoteBackend { } impl<'a> CanvasPaintState<'a> { + pub const HANGING_BASELINE_DEFAULT: f32 = 0.8; // fraction of ascent + pub const IDEOGRAPHIC_BASELINE_DEFAULT: f32 = 0.5; // fraction descent + pub fn new(_antialias: AntialiasMode) -> CanvasPaintState<'a> { let pattern = Pattern::Color(255, 0, 0, 0); CanvasPaintState { @@ -91,6 +92,8 @@ impl<'a> CanvasPaintState<'a> { shadow_blur: 0.0, shadow_color: Color::Raqote(raqote::SolidSource::from_unpremultiplied_argb(0, 0, 0, 0)), font_style: None, + text_align: Default::default(), + text_baseline: Default::default(), } } } @@ -520,26 +523,20 @@ impl GenericDrawTarget for raqote::DrawTarget { fn fill_text( &mut self, - text: String, - x: f64, - y: f64, - _max_width: Option<f64>, + font: &Font, + point_size: f32, + text: &str, + start: Point2D<f32>, pattern: canvas_data::Pattern, - draw_options: &DrawOptions, + options: &DrawOptions, ) { - let font = SystemSource::new() - .select_best_match(&[FamilyName::SansSerif], &Properties::new()) - .unwrap() - .load() - .unwrap(); - self.draw_text( - &font, - 24., - &text, - Point2D::new(x as f32, y as f32), + font, + point_size, + text, + start, &pattern.source(), - draw_options.as_raqote(), + options.as_raqote(), ); } |