Provides the chart's DOM root
Supplies the braille on/off state this display mirrors
Announces zoom, pan and connection changes
Formats the description the braille text line carries
The figure being displayed, for locating the active subplot
True when the display should currently be showing something: braille is on and a device is connected.
Whether a display is there to be shown anything.
The key handler asks before taking b over from braille: with no device
connected there is nothing to offer, and the reader is better served by
braille's own account of why it cannot open.
Points the service at a new figure after a live-data swap.
The replacement figure
Turns the display on or off at the reader's request.
b is the one switch for "show me this by touch", and braille normally
carries the display with it. But braille has to encode the data, and there
are places it cannot: the multi-panel lobby, where no series is selected
yet, and the plot types with no braille table -- scatter, manhattan,
volcano. Gating the pins on that made the display unreachable in exactly
those places, and a scatter is the chart a pin grid draws best of all: a
cloud of points is what the grid natively is.
So this exists to be called where braille declines, and the display comes up on the chart's own geometry, which never needed a braille table.
Receives every navigation move.
The new figure, subplot or trace state
Redraws from the last known state, for changes that did not come from a navigation move — a zoom step, a pan, or the device connecting.
Zooms the tactile view in one step.
Zooms the tactile view out one step.
Returns the tactile view to the whole plot.
Stepping back out works, but the steps are multiplicative and there are eight of them: from the closest zoom that is seven presses, each redrawing a frame the reader does not want and waiting on the device to take it. One key is the difference between recovering a view you have lost and picking your way back to it.
Pans the tactile view one step.
Which way to move the view over the chart
Moves along the braille text line by one window.
The device reports its keys but never scrolls its own buffer, so each window is re-sent from the first cell of the line.
Nothing is spoken on a move. The reader is reading the line with their fingers, and a voice saying "part 2 of 4" on every press talks over the very thing they are reading while telling them nothing the cells do not. The one thing the cells cannot say is that there is no more line, so only that is signalled -- by a buzz, under the hand that pressed the key. Where the SDK cannot vibrate, the edge is spoken instead, since a key that does nothing and says nothing is indistinguishable from a broken one.
Windows to move; negative moves back toward the start
Releases this chart's subscriptions.
Deliberately does NOT disconnect the device. This runs on every focus-out
and tab switch, and the connection is the reader's until they end it in
Settings. A chart in another frame that wants the display asks this one
for it instead; see DisplayHandoff.request.
What it does do is leave the display the way turning braille off leaves
it. Nothing else closes the display on the way out: braille's own
dispose() does not fire its toggle, so setShowing never runs, and
the controller that replaces this one starts with the display off. Pins
left up then point the reader at a chart they have left while every other
channel says nothing is there.
Draws the focused chart onto a connected tactile display, and puts the focused point's description on its braille text line.
The display mirrors braille mode: it comes up when the reader turns braille on and goes down when they turn it off, so there is one mental switch for "show me this by touch" rather than two.
The chart is drawn by scaling its own SVG geometry down onto the pin grid — marks outlined, the focused mark filled. At the sizes involved a whole chart often collapses into a few pins, which is why the view zooms: each zoom step spends the same pins on a smaller slice of the chart, and panning reaches the rest.