Commit 5517ddc
Sync iccviz engine: GamutVolume, RoundTripDE, neutral-axis inking (InternationalColorConsortium#1711)
Bring the data-first visualization engine under Tools/CmdLine/IccProfilePlot/
(IccVizModel, landed in InternationalColorConsortium#1517) up to date with three feature-additive changes,
plus the caller updates they require. No refactor of the enumerate/render
surface; no change to IccProfLib or to the Mini{PDF,SVG,TIFF} writers.
Engine (IccVizModel.hpp/.cpp, IccVizMath.hpp):
- GamutVolume(): gamut volume in dE*ab^3 via boundary voxelisation + flood-fill
through the AToB transform; scalar GamutVolumeResult with a `degenerate` flag
so a collapsed sampling is distinguishable from a genuinely tiny gamut.
- RoundTripDE(): B2A->A2B round-trip accuracy (mean/p90/max/std dE*ab) seeded
from in-gamut device-cube samples; scalar RoundTripResult.
- Kind::NeutralAxisInking: device colorant along the neutral axis from a
PCS->device (BToA) table, enumerated per BToA tag. InkReversalL retired
(enum value reserved). Plus GamutVolume accuracy work (IccProfLib CIELAB
reuse) and CLUT-raster / new-metric hardening against malformed input.
Breaking API (internal only): Enumerate(pIcc, Order) loses its Order argument.
Enumerate(pIcc) now returns one canonical order (chromaticity, then per-tag
A2B0/1/2, B2A0/1/2, gamut, then named/colorant). Only in-tree caller updated.
iccProfileVisualize.cpp:
- Drop the Order argument at the Enumerate call site.
- Render Kind::NeutralAxisInking into the PDF report (was engine-enumerated but
silently skipped): CreateNeutralAxesXobject (L*/%-ink axes frame) +
renderNeutralAxisGraph (one polyline per colorant along L* 100->0, distinct
CMYK stroke, channel-name legend) + the processLuts switch case. One page per
PCS->device table.
The engine sources are algorithmically identical to the upstream copy; the only
deltas are the restored ICC license header on IccVizModel.cpp and an ASCII
punctuation sweep (matching the InternationalColorConsortium#1517 strict-build convention), which changes
five graph-title string literals from an em-dash to a hyphen. All translation
units build clean under -Wall -Wextra.
The old "byte-identical vs original iccProfileVisualize" PDF baseline is
intentionally superseded by the canonical page order and the chromaticity page
for device/CMYK profiles; a pinned-output regression + CTests for the two new
scalar metrics follow as a separate in-repo PR per the maintainer-owned CTest
policy. Refs InternationalColorConsortium#1711.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 3c65614 commit 5517ddc
4 files changed
Lines changed: 1044 additions & 174 deletions
File tree
- Tools/CmdLine/IccProfilePlot
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | | - | |
71 | | - | |
| 70 | + | |
| 71 | + | |
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
| |||
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
88 | | - | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
89 | 91 | | |
90 | 92 | | |
91 | 93 | | |
| |||
96 | 98 | | |
97 | 99 | | |
98 | 100 | | |
99 | | - | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
100 | 104 | | |
101 | 105 | | |
102 | 106 | | |
| |||
106 | 110 | | |
107 | 111 | | |
108 | 112 | | |
109 | | - | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
110 | 117 | | |
111 | 118 | | |
112 | 119 | | |
| |||
0 commit comments