`transparency.rs` implemented all sixteen blend modes and unit-tested them against the specification's formulas. Nothing ever called them with a backdrop. The Makepad renderer's `SetBlendMode` pushed a `TransparencyError::Unsupported` and then painted the source colour, so a /Multiply highlight and a /Normal one produced byte-identical output and every test passed — because every test asked "was the right command issued", not "does the page look right". Overprint had no code at all. /OP, /op and /OPM were not parsed, so an overprinting object knocked out the inks under it. That is not a missing feature, it is the inverse of the instruction: on a press it is the difference between a colour and a hole. - `composite.rs`: a straight-alpha RGBA `Canvas` implementing §11.3.6's union formula, weighted by backdrop alpha so a Multiply over transparency is the source rather than black. Constant alpha and per-pixel soft masks. Transparency groups composite as a unit; knockout groups are refused by name rather than silently treated as non-knockout. - Overprint as `composite_cmyk`, separate from the RGB path rather than a flag on it: overprint is a statement about inks and RGB has none. /op defaults to /OP per table 58 — defaulting it to false makes the common `<< /OP true >>` knock out every fill. §10.7.5's "no effect on an RGB device" is asserted, so our doing nothing there is the spec rather than an omission. - `raster.rs`: a CPU rasteriser that replays a command list onto a canvas. Not on the display path, no anti-aliasing, no fonts; it exists so compositing has a verifiable output. In pdf-graphics and not pdf-makepad because a test that needs a GPU is a test that does not run. - Golden **pixels** for shading, mesh, blend and overprint pages — Phase 7's exit criterion, which the Phase 2 command-text goldens cannot meet. ASCII grids with a colour legend, quantised to quarter steps; each test asserts its exact colours before comparing, so a wrong-but-stable render cannot be blessed by an UPDATE_GOLDEN run. Six mutations, all killed, including the two that describe the old behaviour: discarding the blend result, and ignoring the overprint flag. 1364 tests pass. ADR 0030.
23 lines
575 B
Text
23 lines
575 B
Text
24x16
|
|
. = rgba(1.00, 0.00, 0.00, 1.00)
|
|
: = rgba(0.75, 0.00, 0.25, 1.00)
|
|
- = rgba(0.50, 0.00, 0.50, 1.00)
|
|
= = rgba(0.25, 0.00, 0.75, 1.00)
|
|
+ = rgba(0.00, 0.00, 1.00, 1.00)
|
|
---
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|
|
...::::::------======+++
|