mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-07 20:23:35 +00:00
The editing copy for other apps now writes linear and radial gradients and grid patterns as themselves instead of as average colors and cut tiles. - Gradients the art uses are defined in the setup (`n Bn`, then `%AI5_BeginGradient` … `Bd`, the stops as `Bs` with their opacity and midpoints, `BD`), and gradient swatches nothing uses in a non-printing block. Stops keep gray, CMYK, RGB and spot colors at a tint. A gradient that isn't a swatch gets a name that no swatch or pattern of the document has. - Each fill or stroke with a gradient is an instance around its painting operator (`Bb`, `Bh`, `Bg`, `Xm`, `Bm`, `Bc`, `BB`), on a compound path's last subpath and on clipping paths too. `Bg` places the gradient relative to the path: a linear one by its angle and its start and length as fractions of the path's extent along it, a radial one by the matrix that takes the unit circle onto its extent ellipse, its center as fractions of the path's bounds in that circle's space and its radius as a multiple of the one the center's distances to the right side and to the bottom give. In a pattern's tile the placement is mirrored top to bottom. - Patterns whose tiles make a grid and hold their art are defined with `%AI3_BeginPattern` … `E`, the tile's box first, and fills and strokes paint with `p` and `P`; gradient and pattern swatches are in the palette. - Freeform gradients, gradients along or across a stroke and gradients without stops, with more than 256 stops or without extent are written as their average color, and other patterns as their tiles cut to the shape, each with a warning. Gradients that dither or mix perceptually are written as classic ones, stops linked to global process colors as their colors, and pattern swatches without the placement that moves, turns or scales their pattern, with warnings. - Reading: an unpainted box that a pattern's definition marks as its tile's box (`AIPattern_Editor_Backing_Tile_Rect`) is no longer read as art, and a linear gradient whose stops all lie at one place keeps each stop on its side. The definitions, instances and patterns follow sections 3.4, 3.5 and 14 of the version 7 specification (http://mercator.elte.hu/~saman/hu/okt/AI7FileFormat.pdf). The stop opacity, `Bg`'s placement and the marked tile box follow the newer form that current .ai files carry, which that specification predates. Each of these is written in the form VectorCraft's .ai reader reads, and the tests read the written data back through that reader. Docs: docs/file-format-parity.md.