From 82171088c5ff360fe979b57e45fa98b2ea572dfe Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 24 Jun 2019 12:06:05 -0700 Subject: [PATCH] Expose text alignment in the C API --- c/src/lib.rs | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/c/src/lib.rs b/c/src/lib.rs index 6b6235c1..7b2e2ef9 100644 --- a/c/src/lib.rs +++ b/c/src/lib.rs @@ -13,8 +13,8 @@ use font_kit::handle::Handle; use foreign_types::ForeignTypeRef; use gl; -use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, LineJoin}; -use pathfinder_canvas::{Path2D, TextMetrics}; +use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, LineJoin, Path2D}; +use pathfinder_canvas::{TextAlign, TextMetrics}; use pathfinder_content::color::{ColorF, ColorU}; use pathfinder_content::outline::ArcDirection; use pathfinder_content::stroke::LineCap; @@ -43,13 +43,17 @@ use pathfinder_metal::MetalDevice; // `canvas` -pub const PF_LINE_CAP_BUTT: u8 = 0; -pub const PF_LINE_CAP_SQUARE: u8 = 1; -pub const PF_LINE_CAP_ROUND: u8 = 2; +pub const PF_LINE_CAP_BUTT: u8 = 0; +pub const PF_LINE_CAP_SQUARE: u8 = 1; +pub const PF_LINE_CAP_ROUND: u8 = 2; -pub const PF_LINE_JOIN_MITER: u8 = 0; -pub const PF_LINE_JOIN_BEVEL: u8 = 1; -pub const PF_LINE_JOIN_ROUND: u8 = 2; +pub const PF_LINE_JOIN_MITER: u8 = 0; +pub const PF_LINE_JOIN_BEVEL: u8 = 1; +pub const PF_LINE_JOIN_ROUND: u8 = 2; + +pub const PF_TEXT_ALIGN_LEFT: u8 = 0; +pub const PF_TEXT_ALIGN_CENTER: u8 = 1; +pub const PF_TEXT_ALIGN_RIGHT: u8 = 2; // `content` @@ -73,6 +77,7 @@ pub type PFFillStyleRef = *mut FillStyle; pub type PFLineCap = u8; pub type PFLineJoin = u8; pub type PFArcDirection = u8; +pub type PFTextAlign = u8; #[repr(C)] pub struct PFTextMetrics { pub width: f32, @@ -290,6 +295,15 @@ pub unsafe extern "C" fn PFCanvasSetFontSize(canvas: PFCanvasRef, new_font_size: (*canvas).set_font_size(new_font_size) } +#[no_mangle] +pub unsafe extern "C" fn PFCanvasSetTextAlign(canvas: PFCanvasRef, new_text_align: PFTextAlign) { + (*canvas).set_text_align(match new_text_align { + PF_TEXT_ALIGN_CENTER => TextAlign::Center, + PF_TEXT_ALIGN_RIGHT => TextAlign::Right, + _ => TextAlign::Left, + }); +} + #[no_mangle] pub unsafe extern "C" fn PFCanvasSetFillStyle(canvas: PFCanvasRef, fill_style: PFFillStyleRef) { (*canvas).set_fill_style(*fill_style)