diff --git a/printpdf1/src/my_pdf.rs b/printpdf1/src/my_pdf.rs
index e73329a..38fe588 100644
--- a/printpdf1/src/my_pdf.rs
+++ b/printpdf1/src/my_pdf.rs
@@ -8,6 +8,12 @@ use printpdf::{
Point,
};
+#[derive(Clone, Copy, Debug)]
+pub struct Size {
+ pub height: Mm,
+ pub width: Mm,
+}
+
pub struct MyPdfDocument {
pdf_document_reference: PdfDocumentReference,
pdf_page_index: PdfPageIndex,
@@ -40,23 +46,39 @@ impl MyPdfDocument {
}
}
- pub fn add_horizontal_line
(&self, point: Point, len: P)
+ pub fn add_horizontal_line
(&self, point: Point, width: P)
where
P: Into,
{
self.add_line(&[
point,
- Point::new(Mm::from(point.x) + len.into(), Mm::from(point.y)),
+ Point::new(Mm::from(point.x) + width.into(), Mm::from(point.y)),
+ ]);
+ }
+
+ pub fn add_rectangle(&self, point: Point, size: Size) {
+ let (x, y, w, h) = (
+ Mm::from(point.x),
+ Mm::from(point.y),
+ size.width,
+ size.height,
+ );
+ self.add_line(&[
+ point,
+ Point::new(x, y + h),
+ Point::new(x + w, y + h),
+ Point::new(x + w, y),
+ point,
]);
}
- pub fn add_vertical_line(&self, point: Point, len: P)
+ pub fn add_vertical_line
(&self, point: Point, height: P)
where
P: Into,
{
self.add_line(&[
point,
- Point::new(Mm::from(point.x), Mm::from(point.y) + len.into()),
+ Point::new(Mm::from(point.x), Mm::from(point.y) + height.into()),
]);
}
@@ -89,6 +111,13 @@ pub fn main() -> anyhow::Result<()> {
doc.add_horizontal_line(Point::new(Mm(10.0), Mm(10.0)), Mm(10.0));
doc.add_vertical_line(Point::new(Mm(10.0), Mm(10.0)), Mm(10.0));
+ doc.add_rectangle(
+ Point::new(Mm(15.0), Mm(15.0)),
+ Size {
+ height: Mm(10.0),
+ width: Mm(10.0),
+ },
+ );
let mut writer = BufWriter::new(File::create("test_working.pdf")?);
writer.write_all(&doc.into_bytes()?)?;