/** * Where a VML shape sits, in points from the sheet's top-left — read from the * CSS `style` attribute (`margin-left`/`margin-top`/`width`/`height`). * * The same rectangle is also expressed by `` as * (column, offset px, row, offset px) pairs, which needs the sheet's column * widths and row heights to resolve. The style is already absolute, and the two * agree exactly in every file checked, so this reads the simpler one. */ export interface VmlShapeBox { readonly xPt: number; readonly yPt: number; readonly widthPt: number; readonly heightPt: number; } /** A form control declared by a legacy VML shape's ``. */ export interface VmlFormControl { /** `ST_ObjectType` — `Radio`, `CheckBox`, `GBox`, `Button`, `Drop`, … */ readonly objectType: string; /** The shape id (`o:spid` without its `_x0000_s` prefix), pairing with ``. */ readonly shapeId?: string; /** The visible label, from the shape's ``. */ readonly caption?: string; /** `` — set on a checked check/option button, absent otherwise. */ readonly checked?: boolean; /** `` — this option button starts a new group. */ readonly firstButton?: boolean; /** Where the control sits, from the shape's `style` (§{@link VmlShapeBox}). */ readonly box?: VmlShapeBox; /** `` — twentieths of a point, so 160 is 8pt. */ readonly fontSizePt?: number; } /** A parsed legacy VML drawing: its form controls plus every shape's box. */ export interface VmlDrawing { readonly controls: ReadonlyArray; /** * Shape id (`o:spid` without its `_x0000_s` prefix) → box, for EVERY shape in * the part, controls or not. An ActiveX control's box lives nowhere else: its * `activeX#.xml` carries only a class id and its `` element carries * no anchor, so the `ObjectType="Pict"` shape that shares its `shapeId` is * the one thing that says where it goes. */ readonly boxes: ReadonlyMap; /** * Shape ids whose `` clears `` — Excel's "Print * object" checkbox, the legacy spelling of §18.3.1.20 ``. * Such a shape is on screen only, and the `` that shares its id must * not be drawn either. */ readonly nonPrinting: ReadonlySet; } /** * Read the form controls out of a legacy VML drawing part. * * Shapes with no ``, or whose object type is not a control (a * comment, a text box, a picture), are skipped — this is not a general VML * shape reader, only the control channel. See {@link CONTROL_TYPES}. * * @param data The raw `vmlDrawing#.vml` bytes. * @returns One entry per control shape, in document order. */ export declare function parseVmlFormControls(data: Uint8Array): Array; /** * Read a legacy VML drawing part: its form controls and every shape's box. * * @param data The raw `vmlDrawing#.vml` bytes. */ export declare function parseVmlDrawing(data: Uint8Array): VmlDrawing;