UNPKG

@vivliostyle/core

Version:

Vivliostyle Core library for HTML+CSS typesetting with EPUB/Web publications support

65 lines (64 loc) 3.15 kB
import * as Task from "./task"; import { Layout, Vtree } from "./types"; export declare type LayoutIteratorState = { nodeContext: Vtree.NodeContext; atUnforcedBreak: boolean; break: boolean; leadingEdge?: boolean; breakAtTheEdge?: string | null; onStartEdges?: boolean; leadingEdgeContexts?: Vtree.NodeContext[]; lastAfterNodeContext?: Vtree.NodeContext | null; }; export declare class LayoutIteratorStrategy { initialState(initialNodeContext: Vtree.NodeContext): LayoutIteratorState; startNonDisplayableNode(state: LayoutIteratorState): void | Task.Result<boolean>; afterNonDisplayableNode(state: LayoutIteratorState): void | Task.Result<boolean>; startIgnoredTextNode(state: LayoutIteratorState): void | Task.Result<boolean>; afterIgnoredTextNode(state: LayoutIteratorState): void | Task.Result<boolean>; startNonElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; afterNonElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; startInlineElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; afterInlineElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; startNonInlineElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; afterNonInlineElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; finish(state: LayoutIteratorState): void | Task.Result<boolean>; } export declare class LayoutIterator { private readonly strategy; private readonly layoutContext; constructor(strategy: LayoutIteratorStrategy, layoutContext: Vtree.LayoutContext); iterate(initialNodeContext: Vtree.NodeContext): Task.Result<Vtree.NodeContext>; } export declare class EdgeSkipper extends LayoutIteratorStrategy { protected readonly leadingEdge?: boolean; constructor(leadingEdge?: boolean); startNonInlineBox(state: LayoutIteratorState): void | Task.Result<boolean>; endEmptyNonInlineBox(state: LayoutIteratorState): void | Task.Result<boolean>; endNonInlineBox(state: LayoutIteratorState): void | Task.Result<boolean>; initialState(initialNodeContext: Vtree.NodeContext): LayoutIteratorState; /** * @return Returns true if a forced break occurs. */ processForcedBreak(state: LayoutIteratorState, column: Layout.Column): boolean; /** * @return Returns true if the node overflows the column. */ saveEdgeAndProcessOverflow(state: LayoutIteratorState, column: Layout.Column): boolean; /** * @returns Returns true if the layout constraint is violated. */ processLayoutConstraint(state: LayoutIteratorState, layoutConstraint: Layout.LayoutConstraint, column: Layout.Column): boolean; /** * @override */ startNonElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; /** * @override */ startNonInlineElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; /** * @override */ afterNonInlineElementNode(state: LayoutIteratorState): void | Task.Result<boolean>; }