import { Direction } from "parsegraph-direction";
import Node from "./Node";
import { Matrix3x3 } from "parsegraph-matrix";
import DefaultNodeType from "./DefaultNodeType";
import BlockPainter from "parsegraph-blockpainter";
import Size from "parsegraph-size";
import GlyphPainter from "./GlyphPainter";
import Rect from "parsegraph-rect";
import { BasicWindow, Component } from "parsegraph-window";
import Color from "parsegraph-color";
import Font from "./Font";
import TexturePainter from "./TexturePainter";
import WindowNodePainter from "./WindowNodePainter";
import Camera from "parsegraph-camera";
import WindowNode from "./WindowNode";
declare class PaintedElement {
    _window: BasicWindow;
    _node: WindowNode;
    _size: Size;
    constructor(window: BasicWindow, node: WindowNode);
    paint(paintContext: Component): void;
    render(camera: Camera, paintContext: Component): void;
}
export default class DefaultNodePainter implements WindowNodePainter {
    _window: BasicWindow;
    _paintContext: Component;
    _node: Node<DefaultNodeType>;
    _backgroundColor: Color;
    _blockPainter: BlockPainter;
    _renderBlocks: boolean;
    _extentPainter: BlockPainter;
    _renderExtents: boolean;
    _fontPainters: {
        [key: string]: GlyphPainter;
    };
    _renderText: boolean;
    _textures: TexturePainter[];
    _pagesPerGlyphTexture: number;
    _mass: number;
    _consecutiveRenders: number;
    _renderLines: boolean;
    _renderScenes: boolean;
    _elements: PaintedElement[];
    _renderedElements: Map<Component, PaintedElement[]>;
    bodySize: Size;
    consecutiveRenders(): number;
    constructor(window: BasicWindow, node: Node<DefaultNodeType>, paintContext: Component);
    contextChanged(isLost: boolean): void;
    bounds(): Rect;
    getFontPainter(font: Font): GlyphPainter;
    window(): BasicWindow;
    gl(): WebGLRenderingContext;
    setBackground(r: any, ...args: any[]): void;
    backgroundColor(): Color;
    clear(): void;
    drawSlider(node: Node<DefaultNodeType>): void;
    drawElement(node: Node<DefaultNodeType>): void;
    drawScene(node: Node<DefaultNodeType>): void;
    weight(): number;
    initBlockBuffer(counts: any): void;
    countNode(node: Node<DefaultNodeType>, counts: any): void;
    paint(paintContext: Component): void;
    drawNode(node: Node<DefaultNodeType>): void;
    drawLine(direction: Direction, node: Node<DefaultNodeType>): void;
    paintLines(node: Node<DefaultNodeType>): void;
    paintBound(node: Node<DefaultNodeType>, rect: Rect): void;
    paintDownwardExtent(node: Node<DefaultNodeType>): void;
    paintUpwardExtent(node: Node<DefaultNodeType>): void;
    paintBackwardExtent(node: Node<DefaultNodeType>): void;
    paintForwardExtent(node: Node<DefaultNodeType>): void;
    paintExtent(node: Node<DefaultNodeType>): void;
    paintBlock(node: Node<DefaultNodeType>): void;
    render(world: Matrix3x3, scale: number, forceSimple: boolean, camera: Camera, paintContext: Component): void;
    enableExtentRendering(): void;
    disableExtentRendering(): void;
    isExtentRenderingEnabled(): boolean;
    enableBlockRendering(): void;
    disableBlockRendering(): void;
    isBlockRenderingEnabled(): boolean;
    enableLineRendering(): void;
    disableLineRendering(): void;
    isLineRenderingEnabled(): boolean;
    enableTextRendering(): void;
    disableTextRendering(): void;
    isTextRenderingEnabled(): boolean;
    enableSceneRendering(): void;
    disableSceneRendering(): void;
    isSceneRenderingEnabled(): boolean;
}
export {};
//# sourceMappingURL=DefaultNodePainter.d.ts.map