summaryrefslogtreecommitdiff
path: root/src/geom/size.rs
AgeCommit message (Collapse)Author
2023-07-02Move everything into `crates/` directoryLaurenz
2022-10-28Refactor `geom` moduleLaurenz
2021-11-26X/Y abstractionsLaurenz
2021-11-25Layout improvementsLaurenz
2021-11-22Remove decorumLaurenz
2021-10-26Fr in stack and parLaurenz
2021-08-23Kerned PDF outputLaurenz
2021-08-21Shorter/clearer field name for geometry typesLaurenz
Size { width, height } => Size { w, h } Spec { horizontal, vertical } => Spec { x, y } Gen { cross, main } => Gen { inline, block }
2021-08-19Refactor layouting a bitLaurenz
Notably: - Handle aspect ratio in fixed node - Inline constraint inflation into pad node
2021-06-17Constraints (#31)Martin
2021-06-15Refactor grid row layoutLaurenz
2021-06-12Give up on not implementing Eq and OrdLaurenz
2021-06-11Remove props in favor of using state for everythingLaurenz
2021-06-09Tidy upLaurenz
2021-05-26Add hash impls for all nodesMartin Haug
This prepares the incremental PR. Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-05-17Tidy up layouting codeLaurenz
2021-04-21Make frames serializable 📚Laurenz
This also makes serialization support non-optional since it's too much feature-management for too little benefit.
2021-04-03New paragraph layout 🚀Laurenz
The previous paragraph layout algorithm had a couple of flaws: - It always produced line break opportunities between runs although on the textual level there might have been none. - It didn't handle trailing spacing correctly in some cases. - It wouldn't have been easily adaptable to Knuth-Plass style optimal line breaking because it was fundamentally structured first-fit run-by-run. The new paragraph layout algorithm fixes these flaws. It proceeds roughly in the following stages: 1. Collect all text in the paragraph. 2. Compute BiDi embedding levels. 3. Shape all runs, layout all children and store the resulting items in a reusable (possibly even cacheable) `ParLayout`. 3. Iterate over all line breaks in the concatenated text. 4. Construct lightweight `LineLayout` objects for full lines instead of runs. These mostly borrow from the `ParLayout` and only reshape the first and last run if necessary. The design allows to use Harfbuzz's UNSAFE_TO_BREAK mechanism to make reshaping more efficient. The size of a `LineLayout` can be measured without building the line's frame. 5. Build only the selected line's frames and stack them.
2021-03-25Refactor alignments & directions 📐Laurenz
- Adds lang function - Refactors execution context - Adds StackChild and ParChild enums
2021-03-20Square, circle and ellipse 🔵Laurenz
2021-03-19Better debug representations 💻Laurenz
2021-01-13Unbounded pages 🌌Laurenz
2021-01-13Some minor improvements ♻Laurenz
2021-01-03Move and rename many things 🚛Laurenz
2020-12-10Refine test infrastructure ✅Laurenz
- Tests diagnostics - More and better separated image tests
2020-10-13BoxAlign and Flow aliases ✏Laurenz
2020-10-10Switch back to custom geometry types, unified with layout primitives 🏞Laurenz