Package limn.backend.spi
@NullMarked
package limn.backend.spi
What a backend implements and the toolkit calls, below the application's view of
limn.backend: the input a window delivers to its scene (WindowInput),
the frame it asks the scene to draw (FrameCallback,
FrameInfo, GpuRenderer), the services it installs
(BackendServices), and the modality rules every backend shares
(ModalStack).
Incubating. The 1.0 contract freezes the application's layer, limn.backend; this
layer may change in a minor release while a second backend is still possible, and every change is
listed in the CHANGELOG with its migration. An application does not need it.
-
ClassDescriptionWhat the toolkit asks of a backend below the application's view of it: the modal stack, and windows it can reach as peers.Handle to an in-scene modal (see
BackendPeer.pushSceneModal(limn.backend.NativeWindow, boolean));BackendPeer.SceneModalHandle.release()it on close.Everything aBackendprovides to the toolkit besides its windows, named in one place and installed by one call.A drag the scene hands to the system: what it carries, what may be done with it, the picture the system shows under the pointer, and who hears the end.Renders one frame of a window.Immutable per-frame metrics handed to aFrameCallback.The outlines of the glyphs aShapedTextnames, for a writer that draws text as text rather than as pixels: a PDF page keeps each glyph as its outline and maps it back to the characters it stands for.A glyph drawn in place of a character.A picture drawn in place of a character: a colour emoji's strike.One thing a glyphless cluster draws.GPU rendering entry point for one window.Installed<T>The one slot a backend fills for a service the toolkit offers statically: the image decoder, the audio engine, the text ruler, the 3D provider, the crash handler, the UI runtime.What a backend does forLauncher: hand an address or a file to the system its window is on.What a backend asks and tells of a menu bar the system shows.A menu bar as a backend is handed it for the system's own bar: what the application declared, already sorted into the places a system that keeps the bar outside the window has for it.What a menu of the bar is to the system.One menu of the bar.One row of a menu the system draws (a tray's, a menu bar's) as a backend is handed it: what the three systems can draw of a menu's item, and a number to say back when the user chooses it.What a row is.Modality bookkeeping for a backend: a stack of active modals and the decision of whether a given window's input is blocked.One active modal, for a backend's own rule over them.What a backend's window implements so thatPrintercan print through it: the system's own print dialog, owned by the window, and the hand-over of a PDF to the system once the dialog is confirmed.What aPrinterPeerhands the system: a PDF, the job's name, and the paper the document was laid out on, which the system's dialog starts from.The menu bar a system keeps outside the windows, one for the application, as a backend offers it to the toolkit.The words the toolkit writes in a system's menu bar for the items that are not the application's: those of the application's own menu and of a Window menu given to an application that named none.What text a window asks the platform for, set withWindowPeer.setTextInput(limn.backend.spi.TextInput).What a tray's backend asks of the toolkit and tells it.What a backend does forTray: keep one icon in the system's place for one.A tray icon's picture at whatever size a system asks for: the application's icon, and the dot that says attention when it has one.What a tray shows, whole: a backend is handed a new one whenever any part changes and shows the difference.Receives a window's translated native input on the UI thread, in logical points.What the toolkit asks of a window below the application's view of it: the input it delivers, the frames it asks for, the input method, the popups it owns and whether it is a modal.What a registered child window is, which decides whether a modal over the owner leaves it usable.