cairo/font/
font_extents.rs
1use crate::ffi;
4use std::fmt;
5
6#[derive(Clone, Copy)]
7#[repr(transparent)]
8#[doc(alias = "cairo_font_extents_t")]
9pub struct FontExtents(ffi::cairo_font_extents_t);
10
11impl FontExtents {
12 pub fn ascent(&self) -> f64 {
13 self.0.ascent
14 }
15
16 pub fn descent(&self) -> f64 {
17 self.0.descent
18 }
19
20 pub fn height(&self) -> f64 {
21 self.0.height
22 }
23
24 pub fn max_x_advance(&self) -> f64 {
25 self.0.max_x_advance
26 }
27
28 pub fn max_y_advance(&self) -> f64 {
29 self.0.max_y_advance
30 }
31
32 pub fn set_ascent(&mut self, ascent: f64) {
33 self.0.ascent = ascent;
34 }
35
36 pub fn set_descent(&mut self, descent: f64) {
37 self.0.descent = descent;
38 }
39
40 pub fn set_height(&mut self, height: f64) {
41 self.0.height = height;
42 }
43
44 pub fn set_max_x_advance(&mut self, max_x_advance: f64) {
45 self.0.max_x_advance = max_x_advance;
46 }
47
48 pub fn set_max_y_advance(&mut self, max_y_advance: f64) {
49 self.0.max_y_advance = max_y_advance;
50 }
51}
52
53impl fmt::Debug for FontExtents {
54 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
55 f.debug_struct("FontExtents")
56 .field("ascent", &self.ascent())
57 .field("descent", &self.descent())
58 .field("height", &self.height())
59 .field("max_x_advance", &self.max_x_advance())
60 .field("max_y_advance", &self.max_y_advance())
61 .finish()
62 }
63}
64
65#[doc(hidden)]
66impl From<FontExtents> for ffi::cairo_font_extents_t {
67 fn from(val: FontExtents) -> ffi::cairo_font_extents_t {
68 val.0
69 }
70}
71
72#[doc(hidden)]
73impl From<ffi::cairo_font_extents_t> for FontExtents {
74 fn from(value: ffi::cairo_font_extents_t) -> Self {
75 Self(value)
76 }
77}