|
13 | 13 | use font_kit::handle::Handle;
|
14 | 14 | use gl;
|
15 | 15 | use pathfinder_canvas::{Canvas, CanvasFontContext, CanvasRenderingContext2D, FillStyle, LineJoin};
|
16 |
| -use pathfinder_canvas::{Path2D, TextAlign, TextMetrics}; |
| 16 | +use pathfinder_canvas::{Path2D, TextAlign, TextBaseline, TextMetrics}; |
17 | 17 | use pathfinder_color::{ColorF, ColorU};
|
18 | 18 | use pathfinder_content::fill::FillRule;
|
19 | 19 | use pathfinder_content::outline::ArcDirection;
|
@@ -67,6 +67,13 @@ pub const PF_TEXT_ALIGN_LEFT: u8 = 0;
|
67 | 67 | pub const PF_TEXT_ALIGN_CENTER: u8 = 1;
|
68 | 68 | pub const PF_TEXT_ALIGN_RIGHT: u8 = 2;
|
69 | 69 |
|
| 70 | +pub const PF_TEXT_BASELINE_ALPHABETIC: u8 = 0; |
| 71 | +pub const PF_TEXT_BASELINE_TOP: u8 = 1; |
| 72 | +pub const PF_TEXT_BASELINE_HANGING: u8 = 2; |
| 73 | +pub const PF_TEXT_BASELINE_MIDDLE: u8 = 3; |
| 74 | +pub const PF_TEXT_BASELINE_IDEOGRAPHIC: u8 = 4; |
| 75 | +pub const PF_TEXT_BASELINE_BOTTOM: u8 = 5; |
| 76 | + |
70 | 77 | // `content`
|
71 | 78 |
|
72 | 79 | pub const PF_ARC_DIRECTION_CW: u8 = 0;
|
@@ -100,6 +107,7 @@ pub type PFLineCap = u8;
|
100 | 107 | pub type PFLineJoin = u8;
|
101 | 108 | pub type PFArcDirection = u8;
|
102 | 109 | pub type PFTextAlign = u8;
|
| 110 | +pub type PFTextBaseline = u8; |
103 | 111 | #[repr(C)]
|
104 | 112 | pub struct PFTextMetrics {
|
105 | 113 | pub width: f32,
|
@@ -387,6 +395,19 @@ pub unsafe extern "C" fn PFCanvasSetTextAlign(canvas: PFCanvasRef, new_text_alig
|
387 | 395 | });
|
388 | 396 | }
|
389 | 397 |
|
| 398 | +#[no_mangle] |
| 399 | +pub unsafe extern "C" fn PFCanvasSetTextBaseline(canvas: PFCanvasRef, |
| 400 | + new_text_baseline: PFTextBaseline) { |
| 401 | + (*canvas).set_text_baseline(match new_text_baseline { |
| 402 | + PF_TEXT_BASELINE_ALPHABETIC => TextBaseline::Alphabetic, |
| 403 | + PF_TEXT_BASELINE_TOP => TextBaseline::Top, |
| 404 | + PF_TEXT_BASELINE_HANGING => TextBaseline::Hanging, |
| 405 | + PF_TEXT_BASELINE_MIDDLE => TextBaseline::Middle, |
| 406 | + PF_TEXT_BASELINE_IDEOGRAPHIC => TextBaseline::Ideographic, |
| 407 | + _ => TextBaseline::Bottom, |
| 408 | + }); |
| 409 | +} |
| 410 | + |
390 | 411 | #[no_mangle]
|
391 | 412 | pub unsafe extern "C" fn PFCanvasSetFillStyle(canvas: PFCanvasRef, fill_style: PFFillStyleRef) {
|
392 | 413 | // FIXME(pcwalton): Avoid the copy?
|
|
0 commit comments