summaryrefslogtreecommitdiff
path: root/src/layout/stack.rs
AgeCommit message (Collapse)Author
2021-06-17Setter methodLaurenz
2021-06-17Constraints (#31)Martin
2021-06-15Refactor grid row layoutLaurenz
2021-06-13Refactor column resolvingLaurenz
2021-06-12Give up on not implementing Eq and OrdLaurenz
2021-06-11Push some nodes directly into the stackLaurenz
2021-06-09Tidy upLaurenz
2021-05-27Switch to N64 type aliasLaurenz
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-05-17Move aspect ratio into stackLaurenz
2021-05-17Rename expand to fixed and switch to boolsLaurenz
2021-04-03Fix multi-page paragraph bugs 🐞Laurenz
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-30Baseline alignment ⏏Laurenz
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-12Rename ChildAlign to LayoutAligns ✏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-01-20If expressions 🔀Laurenz
2021-01-13Unbounded pages 🌌Laurenz
2021-01-04Better value representations, type function 🌐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-12Naming and grammar ✔Laurenz
2020-10-12Less vecs in layouting ⚡Laurenz
2020-10-12Synchronous layout 🪀Laurenz
2020-10-11Evaluation benchmark 🔋Laurenz
2020-10-11Refactor stack layout again 🧣Laurenz
2020-10-11Rename LayoutItem to Layouted ✏Laurenz
2020-10-10Switch back to custom geometry types, unified with layout primitives 🏞Laurenz
2020-10-07Evaluation and node-based layouting 🚀Laurenz
2020-10-06Remove obsolete extra variable in stack layouter ❌Laurenz
2020-10-06Typesafe conversions in stack & line layouters 🍮Laurenz
2020-10-06Move multi-dir support in stack layouter 🍁Laurenz
2020-10-06Rename secondary/primary to main/cross ✏Laurenz
2020-10-05Streamline generic layouting primitives 🛫Laurenz
2020-10-05Move align out of BoxLayout 🍫Laurenz
2020-10-04Small improvements 🍪Laurenz
2020-10-04Remove unncessary wrappers and typedefs 🛑Laurenz
2020-10-03Port to kurbo 🎋Laurenz
2020-10-02Remove spans from token iterator 🧽Laurenz
2020-10-01Generalize layouting primitives 🛤Laurenz
2020-08-30Format everything with rustfmt! 💚Laurenz
2020-08-03Formatting, documentation and small improvements 🧽Laurenz
2020-08-02Refactor model into tree 🛒Laurenz
2020-08-02Layout elements and pure rust rendering 🥏Laurenz