1 6b2c26f4 2023-12-19 benni use genpdf::{
2 6b2c26f4 2023-12-19 benni elements::Text,
3 6b2c26f4 2023-12-19 benni style::{Style, StyledString},
4 6b2c26f4 2023-12-19 benni render::Area,
5 6b2c26f4 2023-12-19 benni error::Error,
7 6b2c26f4 2023-12-19 benni RenderResult,
13 6b2c26f4 2023-12-19 benni pub struct UnderlinedText {
14 6b2c26f4 2023-12-19 benni text: Text,
17 6b2c26f4 2023-12-19 benni pub struct HorizontalLine;
19 6b2c26f4 2023-12-19 benni impl UnderlinedText {
20 6b2c26f4 2023-12-19 benni pub fn new(text: impl Into<String>, style: Style) -> Self {
22 6b2c26f4 2023-12-19 benni text: Text::new(StyledString::new(text.into(), style)),
27 6b2c26f4 2023-12-19 benni impl Element for UnderlinedText {
30 6b2c26f4 2023-12-19 benni context: &Context,
31 6b2c26f4 2023-12-19 benni area: Area<'_>,
32 6b2c26f4 2023-12-19 benni style: Style,
33 6b2c26f4 2023-12-19 benni ) -> Result<RenderResult, Error> {
34 6b2c26f4 2023-12-19 benni let result = self.text.render(context, area.clone(), style)?;
35 6b2c26f4 2023-12-19 benni let points = vec![
36 6b2c26f4 2023-12-19 benni Position::new(0.0, result.size.height),
37 6b2c26f4 2023-12-19 benni Position::new(result.size.width, result.size.height),
39 6b2c26f4 2023-12-19 benni area.draw_line(points, style);
44 6b2c26f4 2023-12-19 benni impl Element for HorizontalLine {
47 6b2c26f4 2023-12-19 benni context: &Context,
48 6b2c26f4 2023-12-19 benni area: Area<'_>,
49 6b2c26f4 2023-12-19 benni style: Style,
50 6b2c26f4 2023-12-19 benni ) -> Result<RenderResult, Error> {
51 6b2c26f4 2023-12-19 benni let s = area.size();
52 6b2c26f4 2023-12-19 benni let points = vec![
53 6b2c26f4 2023-12-19 benni Position::default(),
54 6b2c26f4 2023-12-19 benni Position::new(s.width, 0.0),
56 6b2c26f4 2023-12-19 benni area.draw_line(points, style);
57 6b2c26f4 2023-12-19 benni let mut result = RenderResult::default();
58 6b2c26f4 2023-12-19 benni result.size.width = s.width;
59 6b2c26f4 2023-12-19 benni result.size.height = style.line_height(&context.font_cache) * 0.5;