Commit Graph
15 Commits
Author SHA1 Message Date
aiongg db0b16ac39 Merge #308: fix(geom): correct pica and cicero rounding at unit boundaries 2026-10-10 09:28:29 +00:00
aiongg 61483f8b66 Merge #306: fix(geom): prevent invalid zoom values from breaking ruler ticks 2026-10-10 09:28:28 +00:00
Nigel Ihza Firdausy 67fce0f63c fix(geom): carry rounded pica and cicero fractions
Apply the displayed precision before testing for a 12-point carry,
so measurements near a pica/cicero boundary do not display as 0p12
or 0c12. Cover positive, negative, coarse, and subunit rounding.
2026-10-10 15:54:14 +07:00
Nigel Ihza Firdausy 8db2f76798 fix(geom): keep ruler ticks finite for invalid zoom values
Guard non-positive and non-finite viewport scales before the ruler tick
spacing loops, and cap extreme magnitudes. Cover invalid and extreme
zoom values without changing normal zoom behavior.
2026-10-10 15:50:36 +07:00
aiongg 572799b883 IDML: frames inherit their object style's corners and text frame options
A frame takes the corner options and Text Frame Options it doesn't write
from its applied object style, the styles that one is based on, then
[None]: IDML frames write only what differs from their style. Each
corner's shape and radius resolve separately, item first; at each level
a per-corner attribute wins over the legacy CornerOption / CornerRadius
pair, so a frame that writes one corner keeps the style's other corners,
and a shape without a radius takes the chain's (12 pt at the root). Fill
and stroke lookups end at [None] too.

Checked, unchanged: corner radii are drawn clamped to half the shorter
side as circular arcs, and inside-aligned strokes are the stroke of the
path inset by half the weight (screen and PDF); tests pin both.
2026-10-07 09:05:00 -04:00
Brandon ThomasandClaude Opus 5.5 89891fdfbe Never crash: geom and color return or fall back instead of panicking
Replace the unwrap/expect calls in path closing, bounds, Pathfinder output
and gradient sampling with let-else / if-let; the ASE reader uses checked
offsets (a 32-bit length could overflow on wasm32). Both crates now deny
unwrap/expect/panic/unimplemented/todo/unreachable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 11:39:33 -04:00
Brandon ThomasandClaude Opus 5.5 754425b1c7 O: clipping paths traced from alpha or edges
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 03:01:39 -04:00
Brandon ThomasandClaude Opus 5.5 ba95a6f900 F: stroke styles — stripes, wavy, hash drawn (screen + PDF); named custom styles (+ IDML)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 02:39:39 -04:00
Brandon ThomasandClaude Opus 5.5 059312b1d1 F: Generate QR Code — vector codes for links, text, SMS, email, business cards
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:53:04 -04:00
Brandon ThomasandClaude Opus 5.5 240668e87d T: scale/rotation/shear fields, absolute transform values, Transformations are Totals
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:54:05 -04:00
Brandon ThomasandClaude Opus 5.5 4e874efbb0 D: Smooth and Erase tools (path.smooth, path.erase)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:39:23 -04:00
Brandon ThomasandClaude Opus 5.5 eb4fa9c64c T: Type on a Path — tool, options, screen and PDF
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:34:20 -04:00
Brandon ThomasandClaude Opus 5.5 cc33d0ba15 D: Pencil tool — freehand strokes to smooth paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:30:59 -04:00
Brandon ThomasandClaude Opus 5.5 9dd44f63cf D: Pathfinder — add, subtract, intersect, exclude overlap, minus back (curves kept)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 15:45:34 -04:00
Brandon Thomas e1e1352fff first commit 2026-10-01 09:13:29 -04:00