summaryrefslogtreecommitdiff
path: root/src/layout/pad.rs
AgeCommit message (Collapse)Author
2021-10-31Reorganize modulesLaurenz
Instead of separating functionality into layout and library, everything lives in the library now. This way, related things live side by side and there are no duplicate file names in the two directories.
2021-10-31Fix panic in pad nodeLaurenz
2021-10-26Simplify node constructionLaurenz
2021-10-23Introduce page / block / inline levelsLaurenz
2021-10-05Refactor a bitLaurenz
2021-09-10Reimplement `Debug` for layout nodesLaurenz
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-21Prune derivesLaurenz
2021-08-19Refactor layouting a bitLaurenz
Notably: - Handle aspect ratio in fixed node - Inline constraint inflation into pad node
2021-07-26Slightly more expressive method nameLaurenz
2021-07-10Reference-count complex valuesLaurenz
Rename some nodes types
2021-07-08Add lots of Eq implsLaurenz
2021-06-29Put incremental compilation behind featureMartin Haug
2021-06-27Code review: Reverse temperatureMartin Haug
2021-06-27Code review, new stack testMartin Haug
2021-06-27Testing for incrementalMartin Haug
Also, constraint bugfixes.
2021-06-18Ref count the framesMartin
2021-06-17Constraints (#31)Martin
2021-05-26Add hash impls for all nodesMartin Haug
This prepares the incremental PR. Co-Authored-By: Laurenz <laurmaedje@gmail.com>
2021-05-21Rename areas to regionsLaurenz
2021-05-17Tidy up layouting codeLaurenz
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-19Scheduled maintenance 🔨Laurenz
- New naming scheme - TextNode instead of NodeText - CallExpr instead of ExprCall - ... - Less glob imports - Removes Value::Args variant - Removes prelude - Renames Layouted to Fragment - Moves font into env - Moves shaping into layout - Moves frame into separate module
2021-03-13Factor out alignment deduplication into separate function ♻Laurenz
2021-03-11Better expansion behaviour 🐪Laurenz
This makes expansion behaviour inheritable by placing it into the area and passing it down during layouting instead of computing some approximation of what we want during execution.
2021-02-04Add rectangle function 🎛Martin Haug
2021-01-13Unbounded pages 🌌Laurenz
2021-01-04Better value representations, type function 🌐Laurenz
2021-01-03Move and rename many things 🚛Laurenz
2020-11-25Merge some modules 🥞Laurenz
2020-10-13Rename geometric eval and apply to resolve ✏Laurenz
2020-10-12Naming and grammar ✔Laurenz
2020-10-12Less vecs in layouting ⚡Laurenz
2020-10-12Synchronous layout 🪀Laurenz
2020-10-11Refactor layouting base 🪁Laurenz
2020-10-11Rename LayoutItem to Layouted ✏Laurenz
2020-10-10Switch back to custom geometry types, unified with layout primitives 🏞Laurenz