summaryrefslogtreecommitdiff
path: root/src/geom
AgeCommit message (Collapse)Author
2021-08-30Add abs() functionLaurenz
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-21Prune derivesLaurenz
2021-08-21Turn backlog into iteratorLaurenz
2021-08-19Refactor layouting a bitLaurenz
Notably: - Handle aspect ratio in fixed node - Inline constraint inflation into pad node
2021-08-16Convert single-field structs to tuple structsLaurenz
2021-08-13Optimize memory sizesLaurenz
2021-07-29Change derive orderLaurenz
2021-07-29Refactor stateLaurenz
2021-07-29Move font family and refactor alignmentLaurenz
2021-06-27Apply suggestions from code reviewMartin
Co-authored-by: Laurenz <laurmaedje@gmail.com>
2021-06-27Testing for incrementalMartin Haug
Also, constraint bugfixes.
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-12Allow grid cells to span multiple regions. (#30)Martin
2021-06-11Remove props in favor of using state for everythingLaurenz
2021-06-09Tidy upLaurenz
2021-06-09Add a grid layouterMartin Haug
2021-06-09Introduce `fr`sMartin Haug
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-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-21Syntax functions ๐Ÿš€Laurenz
This adds overridable functions that markup desugars into. Specifically: - \ desugars into linebreak - Two newlines desugar into parbreak - * desugars into strong - _ desugars into emph - = .. desugars into heading - `..` desugars into raw
2021-03-20Square, circle and ellipse ๐Ÿ”ตLaurenz
2021-03-19Better debug representations ๐Ÿ’ป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-02Remove dependencies on itoa and ryu โฌ‡๏ธLaurenz
2021-02-12Cleaning ๐ŸงนLaurenz
2021-02-09Split evaluation and execution ๐Ÿ”ชLaurenz
2021-01-26Multi-expression blocks ๐Ÿ›๏ธLaurenz
2021-01-22Many more expressions ๐Ÿฅ—Laurenz
Boolean, equality, comparison and assignment expression parsing and evaluation.
2021-01-16Port remaining parser tests ๐ŸššLaurenz
2021-01-15Move value tests + smarter number formatting ๐Ÿ”ขLaurenz
2021-01-13Unbounded pages ๐ŸŒŒLaurenz
2021-01-13Some minor improvements โ™ปLaurenz
2021-01-09Add angle data type ๐Ÿ“Laurenz
2021-01-06Inline literal enum into expression enum ๐Ÿ”€Laurenz
2021-01-04Better value representations, type function ๐ŸŒLaurenz
2021-01-03Move and rename many things ๐Ÿš›Laurenz
2021-01-02Dynamic values, Types, Arrays, and Dictionaries ๐Ÿš€Laurenz
- Identifiers are now evaluated as variables instead of being plain values - Constants like `left` or `bold` are stored as dynamic values containing the respective rust types - We now distinguish between arrays and dictionaries to make things more intuitive (at the cost of a bit more complex parsing) - Spans were removed from collections (arrays, dictionaries), function arguments still have spans for the top-level values to enable good diagnostics
2020-12-10Refine test infrastructure โœ…Laurenz
- Tests diagnostics - More and better separated image tests
2020-11-24Use newly stabilized intra doc links โ†ฉLaurenz