StepWedgeDensitone · documents version 2.0.0

Interface Reference

The window is one piece: a title strip, a toolbar, a canvas with an inspector beside it, a bottom panel of three data columns, and a status bar. Every divider between those areas is draggable, and the sizes you set are remembered.

The whole StepWedgeDensitone window with a 51-step platinotype wedge loaded

1. Title strip

A 36 pt strip at the very top. The macOS traffic lights float over its left end; the centre shows the Midtone Lab mark, the app name, and — once an image is open — a middle-truncated filename after an interpunct: StepWedgeDensitone · raw-2026-08-03-0001.dng. The strip is a label only; nothing in it is clickable.

2. Toolbar

A 44 pt row of actions, in five groups separated by hairline dividers: the file and rotate buttons, the cell-order cluster, the zoom chip, the session and export controls, and the theme toggle at the far right.

Toolbar, left half: Open Wedge, two rotate buttons, the cell-order cluster, and the zoom chip

Control What it does
Open Wedge Opens a file panel for the scan. PNG, JPEG, TIFF, GIF, BMP, HEIC/HEIF and Apple-supported RAW (DNG, NEF, CR2/CR3, ARW, ORF, RAF, RW2).
↺ / ↻ Rotate the working image 90° counter-clockwise / clockwise. The quad, every measured point, the per-cell offsets and the step-0 corner rotate with it; the file on disk is untouched. Disabled with no image.

Detection is deliberately not here. It used to be, and the toolbar copy was the easier one to reach first — so the common mistake was detecting before entering the layout, then wondering why the pickers had changed. Both detect actions now live in the inspector’s Measurement section, beside the Cols / Rows / Steps values they depend on.

Cell-order cluster

Five compact buttons that describe how the step index walks the grid. They are disabled until a quad exists, because there is nothing to re-order before that.

There is nothing to re-order until a detect in the Measurement section — or a Shift+⌘+drag — has produced a quad, which is why the cluster starts disabled.

Changing either one re-derives every cell centre from the quad and clears per-cell nudges, since those were attached to the old step numbering.

Zoom chip

Button Action
Zoom out one step
Fit / 133% Shows the current zoom; click to snap back to fit-to-window
Fit to wedge — frames the detected wedge instead of the whole scan. Disabled until a quad exists (detect, or place corners, first).
+ Zoom in one step

Zoom ranges from 10 % to 800 %. Zoom is deliberately not saved in the session: opening an image always starts fit-to-window.

Session and export group

Toolbar, right half: Open Session, the Save Session split button, and Export

Right end

After a save, a pill reads Session saved · just now, counting up to Ns ago, Nm ago, then a while ago; it refreshes every 30 seconds. At the far right, a sun/moon button toggles between the light and dark themes.

3. Value strip

A one-line monospace readout above the canvas.

The value strip: RGBVALUE, a six-decimal scalar, an RGBA tuple, then the grid and bit depth

The left half shows the selected step’s value — a six-decimal scalar and the same number as an RGBA tuple. The right half restates the current layout (3 × 17 · 51 points) and the working colour depth (16-bit · sRGB).

4. Canvas

The scan sits in a rounded, faintly striped panel that is also a drop target: drag an image file onto it to open it, or a .wdge file to restore that session. While a drag hovers, the panel border turns orange.

With no image loaded the panel shows a placeholder:

Placeholder: “No image loaded — Use Open Wedge, or drag an image or .wdge here”

With an image loaded, the canvas scrolls and zooms, drawn without smoothing so individual scan pixels stay honest at high zoom.

The wedge filling the canvas: dashed quad, four colour-coded corner handles, and 51 measurement circles with step-percentage labels

Overlays, from back to front:

Canvas gestures

Gesture Effect
⌘ + click Write the sampled value under the cursor into the selected step, then advance to the next step
Shift + ⌘ + drag Lay out the whole grid inside the rectangle you drag. The corner you start from becomes the step-0 corner.
Drag a corner handle Move that corner of the quad; every cell centre re-interpolates
Drag a measurement circle Nudge that one cell off a dust speck; the nudge survives later corner moves
Drag empty canvas Moves every measurement point together, as a group
⌘ + scroll Zoom around the cursor
Pinch Zoom
Esc Cancel the fill wizard

Under the canvas

A status badge reports where the current geometry came from — · untouched, ⚠ auto-detected, or ✓ manually adjusted — followed by a live RGBValue readout that follows the pointer, and a one-line reminder of the three canvas gestures.

5. Inspector

A scrolling column of six sections on the right. Drag its left edge to resize it (280–440 pt).

Inspector, upper half: the Measurement, Image and Processing sections

Measurement

This section owns detection, and its three pickers are ordered the way you fill them in — Cols, then Rows, then Steps: the first two describe the sheet in front of you, and the step count follows from them.

Control Notes
Cols 1, 7, 8, 11, 13, 17, 21, 31, 41, 51
Rows 1, 2, 3, 7, 8, 10
Steps 5, 10, 11, 12, 14, 21, 31, 37, 41, 51, 101, 129, 256
Status UNTOUCHED before any detection, DETECTED · N PTS after

Under them, a hint line — Set Cols, Rows and Steps above, then Detect Corners — and four buttons in a 2 × 2 block, the two detect actions down the left edge with their smaller companions flush right:

Button What it does
Detect Corners Finds the wedge outline and keeps your Cols / Rows / Steps, re-deriving each cell centre from the detected quad. It leads because it honours what you just entered
Show result / Hide result Toggles the measurement overlay on the canvas
Detect Corners and Steps Detects the outline and the layout, overwriting the three pickers. The fallback for a wedge whose layout you do not know
Clear Destructive: drops the quad, the cells and every reading

Both detect buttons are tinted: they are two halves of one choice, not a primary and a lesser path. Which one you want depends only on whether you already know the layout.

The three pickers are independent — changing one never silently rewrites the others. The only constraint is that the grid must hold the steps, so changing one axis bumps the other when cols × rows would fall below the step count. When a detection can’t be applied exactly as predicted, a note appears under the block explaining the difference — “Detector read 51 steps in 17×3 — kept your 21 in 7×3”.

Image

Control Range Effect
Blur 0 – 10, step 0.1 Pre-blur used to suppress scanner grain
Edge 0 – 10, step 1 Strength of the Metal Laplacian edge pass
Radius 5 – 40, step 1 Radius, in pixels, of the disc averaged at each measurement point
Display Processed / Raw / Edges What the canvas draws: the blurred image, the untouched scan, or the edge map

Sliders apply when you release them, then the canvas repaints and every patch is re-sampled. Blur and Edge exist to help you and the detector see patch boundaries; reports always use the unprocessed scan.

Processing

Changing either recomputes the normalized values, the adjusted curve, the graph, and the statistics immediately.

Inspector, lower half: the Curve, Print Process and Notes sections

Curve

Load .acv opens a Photoshop curve; Unload drops it and returns to a straight line; Save writes the adjusted curve to a location you pick. Below the buttons, a chip names the loaded curve — click it for a menu of the five most recently used curves, plus Browse… and Clear Recents. With nothing loaded it reads No curve loaded.

Method and Paper are free-text fields with a preset menu on the chevron (Platinum/Palladium, Palladium, Kallitype, Cyanotype, Van Dyke Brown, Salted Paper, Ziatype, Gum Bichromate, Carbon Transfer, Argyrotype; Bergger COT320, Arches Platine, Hahnemühle Platinum Rag, Hahnemühle Photo Rag, Revere Platinum, Fabriano Artistico). Anything you type is accepted. These values are saved in the session, printed on the reports, and folded into the description of exported ICC profiles.

Notes

A free-form note for the print — exposure, humidity, coating batch, developer dilution, what went wrong. It is saved in the session and printed on the PDF and CSV reports. Unlike Method and Paper it describes one specific print, so it is cleared when you open a different wedge image.

6. Bottom panel

Three columns, each with its own draggable divider. The whole panel’s height is adjustable from 200 to 600 pt.

The bottom panel with step 50 % selected: step table, response curves, statistics

Step table

Step table columns: dot, STEP, TONE tiles, RAW, NORM and Δ

The header counts the steps (STEPS · 51) and offers Detail panel…, which opens the Step Detail window. Then one 22 pt row per step:

Column Meaning
Orange when the row is selected, green when the step has a reading, grey when it does not
STEP The step’s nominal percentage
TONE Three swatches — scanned, normalized, target — painted as the tones they are, so a drifting step reads as a visible mismatch
RAW The value sampled from the scan
NORM After smoothing and rescaling to the measured range
Δ Normalized minus the ideal target. Green within ±0.015, neutral to ±0.04, red beyond

Hovering highlights a row and marks it on the graph; clicking selects it, and a selection made anywhere — table, canvas or graph — scrolls the table to it.

Response curves

The response-curves panel with all five series shown

The header carries live γ and σ readouts and an expand button. The plot is square, with the step percentage on X (0 % = paper white end) and a 0…1 scale on Y.

Two conventions share the plot, exactly as alt-process workers are used to reading them:

A grey dashed diagonal marks the identity reference. Hovering a step draws a dashed crosshair and a ring; the selected step keeps a solid ring.

The five pill toggles below (Raw, Normalized, Target, Curve, Adjusted) show and hide each series; Target draws dashed. The expand button opens a 900 × 720 sheet with the same plot at inspection size, sharing the same toggles and selection:

The expanded response-curves sheet

Statistics

The statistics panel: white and black readings, reading spread, density range, mid-tone, both gammas, sigma, point count and the selected-step card

Row Meaning
White reading The lightest patch’s raw value — the paper-white end, including base + fog
Black reading The darkest patch’s raw value — the deepest black the process produced
Reading spread White reading − black reading: a plain difference on the 0–1 reading scale, where high means light
Density range log₁₀ of the ratio between those two, linearized first — the log-density figure a densitometer or a scanner’s D-range spec quotes. It is relative: with no reference target in the scan, the lightest patch is the zero-density anchor, so a densitometer reading of the same print differs by that patch’s own base + fog. Reads when the black end clipped to zero
Mid-tone The raw value of the step nearest 50 %, with that step’s percentage
γ (raw) Power-law slope fitted to the measured response. 1.0 is linear
γ (adjusted) The same fit against the correction curve being exported
σ (residual) RMS distance of the normalized readings from the ideal straight line — the single number for “how linear is this print”
Points How many steps are in the table, with the grid that holds them

When a step is selected, its percentage appears in the header and a SELECTED STEP card at the bottom repeats the step, raw and normalized values at four decimals.

7. Status bar

The status bar’s gesture reminder

A 24 pt strip: a gesture reminder on the left, and — whenever a step is selected or hovered — that step’s percentage, its value to six decimals, and the value as an RGBA tuple on the right.

Secondary windows

File

Item Shortcut
Open Session… ⇧⌘O
Open Recent Session ▸
Save Session ⌘S
Save Session As… ⇧⌘S
Close Session
Export Reports for Sessions…

There is no New Window. WindowGroup adds one on the assumption that a second window is a second document, and here it is not: the session lives in a single app-wide object that every window renders, so the “new” window came up showing the wedge already open in the first. Close Session is what starts the next scan from an empty canvas. Closing the last window still leaves the app running, and clicking the Dock icon creates a fresh one.

DisplayFill and adjust measure points ▸ 51 points 3x17 (wizard) starts the two-click fill wizard. It is only available when the step count is 51.

View

Item Shortcut
Dark Theme ⌥⌘D
Light Theme ⌥⌘L
MidtoneLab Theme
System Theme
Zoom In ⌘+
Zoom Out ⌘−
Actual Size ⌘0
Fit to Window ⌘9

Help — Acknowledgments, Privacy Policy.

The active theme is greyed out in the View menu, so the menu also tells you which one you are in. System Theme follows the macOS appearance and flips live.

The same window in the light theme