use quillmark_core::{Diagnostic, RenderError, Severity};
use typst::layout::PagedDocument;
mod extract;
mod inject;
mod scanner;
#[derive(Debug, Clone, PartialEq)]
pub(crate) struct SigPlacement {
pub name: String,
pub page: usize,
pub rect_typst_pt: [f32; 4],
}
pub(super) fn err(code: &'static str, msg: impl Into<String>) -> RenderError {
RenderError::CompilationFailed {
diags: vec![Diagnostic::new(Severity::Error, msg.into()).with_code(code.into())],
}
}
pub(crate) fn extract(doc: &PagedDocument) -> Result<Vec<SigPlacement>, RenderError> {
extract::extract(doc)
}
pub(crate) fn inject(
pdf: Vec<u8>,
doc: &PagedDocument,
placements: &[SigPlacement],
) -> Result<Vec<u8>, RenderError> {
inject::inject(pdf, doc, placements)
}