You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The main canvas is an unmanaged RGB surface. What the operator looks at while making colour decisions is not colour-managed to their display and does not show separations.
Current state:
PDFDrawWidget::paintEvent (pdfdrawwidget.cpp:807-858) paints through QPainter or a Blend2D framebuffer in QImage::Format_ARGB32_Premultiplied. Both are device RGB.
A full LittleCMS integration exists — pdfcms.cpp implements PDFLittleCMS with fillRGBBufferFromDeviceCMYK, XYZ handling, and rendering intents — but its output is RGB for display, and no monitor profile is applied to the canvas surface.
Separation-aware compositing lives in pdftransparencyrenderer.cpp, reachable through the Output Preview and Soft Proofing plugins, not the main canvas.
R-002 in docs/V1_RELEASE_READINESS.md accepts this for V1 with a disclosure: the report panel tells the operator that "page view does not simulate overprint" and to use Output Preview. The disclosure is honest. It is also an admission that the primary working surface is not trustworthy for colour.
Why this is the largest remaining fidelity gap: a print operator's core loop is look at the artwork and judge it. Acrobat's Output Preview and InDesign's separation preview put ink coverage, separation isolation, and proof simulation on the working surface, not behind a modal tool. Loupe's positioning — "precise: exact about... color" — is measured against that.
This issue is about the display path: monitor profile, proof simulation, separation preview, and ink coverage on the canvas. It is deliberately not the overprint-compositing work in #49 / #52 / #14, which owns the compositing model itself. The two meet at the renderer, and #49's outcome determines whether the canvas can show overprint correctly — but a colour-managed canvas with separation preview is a distinct, separately valuable deliverable.
Scope
Apply the display profile to the canvas: monitor ICC profile from the OS (per display, following the window), with an operator override, using the CMS that already exists.
Proof setup on the canvas: choose an output intent / destination profile and a rendering intent, with black-point compensation, and render the page under it — the equivalent of soft proofing, in the main view rather than a separate plugin surface.
Separation preview on the canvas: show/hide individual process and spot inks, isolate a separation, and view total ink coverage as an overlay with a configurable threshold.
A visible, always-correct indicator of the current view mode — managed or unmanaged, proofing or not, which separations are hidden. The operator must never be unsure whether what they are seeing is a proof. Hidden separations in particular are a trap: an isolated view that silently persists is worse than no separation preview.
Reconcile with the existing Output Preview and Soft Proofing plugins — either absorb them into the canvas (consistent with ADR-005 surface pruning) or define which is authoritative. Two colour paths with different answers is the "surface divergence" risk the platform doc names.
Part of #155.
Problem
The main canvas is an unmanaged RGB surface. What the operator looks at while making colour decisions is not colour-managed to their display and does not show separations.
Current state:
PDFDrawWidget::paintEvent(pdfdrawwidget.cpp:807-858) paints throughQPainteror a Blend2D framebuffer inQImage::Format_ARGB32_Premultiplied. Both are device RGB.pdfcms.cppimplementsPDFLittleCMSwithfillRGBBufferFromDeviceCMYK, XYZ handling, and rendering intents — but its output is RGB for display, and no monitor profile is applied to the canvas surface.pdftransparencyrenderer.cpp, reachable through the Output Preview and Soft Proofing plugins, not the main canvas.docs/V1_RELEASE_READINESS.mdaccepts this for V1 with a disclosure: the report panel tells the operator that "page view does not simulate overprint" and to use Output Preview. The disclosure is honest. It is also an admission that the primary working surface is not trustworthy for colour.Why this is the largest remaining fidelity gap: a print operator's core loop is look at the artwork and judge it. Acrobat's Output Preview and InDesign's separation preview put ink coverage, separation isolation, and proof simulation on the working surface, not behind a modal tool. Loupe's positioning — "precise: exact about... color" — is measured against that.
This issue is about the display path: monitor profile, proof simulation, separation preview, and ink coverage on the canvas. It is deliberately not the overprint-compositing work in #49 / #52 / #14, which owns the compositing model itself. The two meet at the renderer, and #49's outcome determines whether the canvas can show overprint correctly — but a colour-managed canvas with separation preview is a distinct, separately valuable deliverable.
Scope
Acceptance criteria
Test strategy
Dependencies