summaryrefslogtreecommitdiff
path: root/src/geom/align.rs
AgeCommit message (Collapse)Author
2023-07-02Move everything into `crates/` directoryLaurenz
2023-06-12More `bail!` usageLaurenz
2023-06-06Improve value casting infrastructureLaurenz
2023-05-17Show default values in documentationLaurenz
Fixes #169 Fixes #1102
2023-05-11Improve alignment of text inside raw blocks (#1034)Pg Biel
2023-05-11Alternate between right/left alignment in equations (#936)Alex Saveau
2023-03-17CountersLaurenz
2023-03-07Fully untyped modelLaurenz
2023-01-22Formatting fixesLaurenz
2022-11-03Split cratesLaurenz
2022-10-28Refactor `geom` moduleLaurenz
2022-04-08Start & end alignmentLaurenz
2021-11-26More independent placed nodeLaurenz
2021-11-23Simpler alignment resolvingLaurenz
2021-11-23Horizon alignmentLaurenz
2021-11-22Remove decorumLaurenz
2021-11-17Align nodeLaurenz
2021-08-31Make user-facing "debug" representation use Debug instead of DisplayLaurenz
2021-07-29Move font family and refactor alignmentLaurenz
2021-05-26Add hash impls for all nodesMartin Haug
This prepares the incremental PR. Co-Authored-By: Laurenz <laurmaedje@gmail.com>
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-12Rename ChildAlign to LayoutAligns ✏Laurenz
2021-01-03Move and rename many things 🚛Laurenz
2020-10-13BoxAlign and Flow aliases ✏Laurenz
2020-10-13Rename geometric eval and apply to resolve ✏Laurenz
2020-10-10Switch back to custom geometry types, unified with layout primitives 🏞Laurenz