Offer standard web and print canvas formats
The canvas was two spin buttons, so "an Instagram story" or "A4 at 300 dpi" was a number the user had to work out. src/core/canvas.cpp now holds one table of standard sizes both front-ends read: a web format is a fixed pixel size, a print format a sheet in millimetres that becomes pixels at a dpi. Adding a format is a line in canvasFormats() — the dropdown, --format and --help all walk the table. The pixels stay the truth everywhere; renderChain never hears about formats. A format is the presentation of a canvas, carried alongside the pixels in Options and Project and empty for a custom size, and where one is named it decides the pixels — so a project saved as A4 reopens as A4 rather than as whatever it happened to measure. In the interface a format fills the width and height in and greys them out rather than hiding them: the size a sheet works out to is worth seeing. A print format also shows a DPI row, and Custom hands the spins back keeping the last size, which makes starting from a format and then tweaking it the ordinary path. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -80,6 +80,17 @@ CLI builds it from repeated `-e`: `-e scanlines --strip-height 6 -e blur
|
||||
(`src/cli/options.cpp`) hands each flag to the stage whose effect declares it —
|
||||
two effects must not declare the same param key.
|
||||
|
||||
### The canvas is a format or plain pixels
|
||||
|
||||
`src/core/canvas.cpp` holds the one table of standard sizes both front-ends
|
||||
offer: web formats are a fixed pixel size, print formats a sheet in millimetres
|
||||
that becomes pixels at a dpi. Adding a format is a line in `canvasFormats()` —
|
||||
the dropdown, `--format` and `--help` all walk that table. The pixels stay the
|
||||
truth everywhere (`renderChain` never hears about formats); a format is the
|
||||
*presentation* of a canvas, carried alongside the pixels in `Options` and
|
||||
`Project` and empty for a custom size. Where a format is named it decides the
|
||||
pixels, so a project saved as A4 reopens as A4.
|
||||
|
||||
### Projects are plain JSON
|
||||
|
||||
`src/core/project.cpp` reads and writes the whole setup — source paths, the
|
||||
|
||||
Reference in New Issue
Block a user