/** * THE READING GRID'S PACKING — the pure half of `ReadingGrid`: rows of four units filled in author order, the * last cell of each row stretched to its end, and figures sharing a row — or a band — joined into one strip. */ /** Units a desk row holds. */ export declare const ROW_UNITS = 4; /** The widest grid (`reading_grid.css`) that draws every card the row's width. */ export declare const PHONE_GRID = 720; /** * The units a card whose picture needs `ink` px takes in a grid `width` wide: its own `span`, else as many * as seat the picture whole — never a row's more. A phone's grid gives every card the row anyway. */ export declare function inkedSpan(span: number, ink: number, width: number): number; /** What one reading asks of a row, in units, and whether it is a bare figure. */ export interface PackedInput { span: number; figure: boolean; } /** One box of a row: a card, or a strip of the figures that share the row, with the units it spans. */ export interface PackedCell { /** The inputs it draws, in order — one for a card, one or more for a strip. */ members: readonly number[]; figure: boolean; span: number; } /** * Rows in author order: an input that does not fit what is left of the row opens the next one, a figure * beside a figure joins its strip, and the last cell of every row takes the units left — so each row is * full and a lone card is the row's width. A span past a row is a row. */ export declare function packReadingGrid(inputs: readonly PackedInput[]): PackedCell[][]; /** * The band's one line, in author order: every figure stands in ONE strip, where the first of them stands, and * every card keeps the units it asks — the line's width is shared in their proportion, never wrapped onto a * second line. */ export declare function packReadingBand(inputs: readonly PackedInput[]): PackedCell[];