import { AffineMatrix } from "../math/AffineMatrix";
import { GraphicNode } from "../graphics/node/GraphicNode";
import { Point } from "../common/Point";
import { RectNode } from "../common/RectNode";
import { IPoint } from "../idl";
import { GridType } from "@/app/docState/GridType";
/**
 * 渲染引擎
 */
export interface GMLRender {
    /**
     * 绘制画布
     */
    canvas: HTMLCanvasElement | null;
    /**
     * 渲染上下文
     */
    glCtx: CanvasRenderingContext2D | null;
    /**
     * 全局仿射矩阵，记录缩放平移旋转等视图变换信息
     */
    globalTransform: AffineMatrix;
    /**
     * 初始化方法，需要传入canvas
     * @param element
     */
    init(element: HTMLCanvasElement): void;
    /**
     * 重置方法
     */
    reset(): void;
    /**
     * 移动视窗基本方法
     */
    setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;
    /**
     * 画布整体缩放变化
     * @param sx
     * @param sy
     */
    scale(sx: number, sy: number, p?: IPoint): void;
    /**
     * 画布整体平移变换
     * @param dx
     * @param dy
     */
    translation(dx: number, dy: number): void;
    /**
     * 画布视图重置
     */
    resetTransform(): void;
    /**
     * 脏区渲染
     * @param bounds 脏区bounds
     * @param graphicList 需重绘的节点
     * @param gridType
     */
    dirtyDraw(bounds: RectNode, graphicList: GraphicNode[], gridType: GridType): void;
    /**
     * 获取画布视图bounds
     */
    getViewPortBounds(): RectNode;
    /**
     * 坐标变换，根据鼠标点获取画布坐标
     * 该event通常为挂载在document上的
     * @param event
     */
    getGlobalPoint(event: PointerEvent): Point;
    /**
     * 坐标变换，将点坐标转化为画布全局坐标
     * @param point
     */
    transformToGlobal(point: Point): Point;
    /**
     * 坐标变换，将画布坐标点转化为client坐标
     * @param point
     */
    transformToLocal(point: Point): Point;
    /**
     * 获取当前渲染引擎scale
     */
    getScale(): number;
    /**
     * 缩放到指定比例
     * @param scaleNumber
     */
    scaleToCenter(scaleNumber: number): void;
}
//# sourceMappingURL=GMLRender.d.ts.map