mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-24 18:33:22 +00:00
c948d09c6a
Co-authored-by: LabDennis <341377186+LabDennis@users.noreply.github.com>
pdfcraft-model
Layer L2: typed views over the pdfcraft-cos object graph. It starts small, with what several
L3/L4 crates need:
pages(doc): leaf pages in order, each with its inherited attributes (Resources,MediaBox,CropBox,Rotate, §7.7.3.4) resolved;Page::crop,Page::rotation,Page::user_unitandPage::view_matrix: the displayed page's geometry, and the matrix from "display space" (points, origin at the bottom-left of the page as shown, after/UserUnitand/Rotate) to user space, so content can be placed the way the reader sees the page./UserUnitis read as Acrobat reads it: the page's own entry, a number from 1 up, at most 75,000; anything else counts as 1. A/Rotatethat isn't a multiple of 90 counts as 0, as the renderer draws it.view_matrix_for(rotation, rect)is the same matrix for any rectangle, e.g. to draw a comment's picture upright inside its user-space/Recton a turned page.
The page-tree walk keeps one cursor per ancestor and shares inherited attribute owners. Repeated child references are skipped before copying attributes, with first depth-first occurrence order preserved. Returned page dictionaries still own their effective attributes.
organize, annot and forms still carry their own small walkers; they move here as the model
grows (ADR-0004).