///|
fn PdfDocument::pdf_page_stamp_transform_overlay(
self : PdfDocument,
overlay_page : @page.PdfPage,
under_page : @page.PdfPage,
relative_to_box : @core.PdfName,
position : @geometry.PdfPosition,
topline : Bool,
midline : Bool,
scale_to_fit : Bool,
fast : Bool,
) -> @page.PdfPage raise @core.PdfError {
let stamp_box = self.pdf_page_stamp_box(overlay_page, relative_to_box)
let target_box = self.pdf_page_stamp_box(under_page, relative_to_box)
let matrix = if scale_to_fit {
pdf_page_stamp_scale_to_fit_matrix(stamp_box, target_box, relative_to_box)
} else {
pdf_page_stamp_position_matrix(
stamp_box, target_box, relative_to_box, position, topline, midline,
)
}
self.transform_annotations(matrix, overlay_page.rest)
let transformed = self.prepend_operators(overlay_page, [Op_cm(matrix)], fast~)
self.pdf_impose_change_pattern_matrices_page(matrix, transformed)
}