import type { IEventTarget } from '../dom'; import type { IMountable } from '../i-mountable'; import type { IRenderable } from '../i-renderable'; import type { IRendererEventMap } from './event'; import type { ICanvas } from './canvas'; import type { IDrawer, DrawerType } from './drawer'; import type { IViewport } from './i-viewport'; import type { IRendererOption } from './option'; import type { IShape, ShapeType } from './shape'; import type { TransformMatrix } from './transform-matrix'; import type { IPoint } from './geometry'; import type { IFilter } from '../i-filter'; import { IKeyboard, IMouse } from './device'; export interface IRenderer extends IMountable, IRenderable, IEventTarget { readonly option: IRendererOption; readonly canvas: ICanvas; readonly width: number; readonly height: number; readonly viewportTransform: TransformMatrix; readonly viewport: IViewport; readonly transformedViewport: IViewport; readonly selectedShapes: Array; readonly currentHoverSources?: Array; readonly currentSelectSources?: Array; readonly mouse: IMouse; readonly keyboard: IKeyboard; readonly drawers: Array; readonly baseDrawers: Array; readonly selectableDrawers: Array; readonly currentDrawer?: IDrawer; readonly shapes: Array; changeViewport(start: IPoint, end: IPoint): void; setCurrentHoverSources(sources?: Array): void; resetCurrentHoverSources(): void; setCurrentSelectSources(sources?: Array): void; resetCurrentSelectSources(): void; getDrawer(type: DrawerType): T | undefined; addDrawer(drawer: IDrawer): void; removeDrawer(type: DrawerType): void; clearDrawers(): void; useBaseDrawer(drawer: IDrawer): void; useBaseDrawerByType(type: DrawerType): void; useDrawer(drawer: IDrawer): void; useDrawerByType(type: DrawerType): void; suspendDrawer(type: DrawerType): void; resumeDrawer(type: DrawerType): void; suspendCurrentDrawer(): void; resumeCurrentDrawer(): void; getShapes(sources: DrawerType | Array): Array; findShapes(filter?: IFilter): Array; showSmallShape(show: boolean): void; enableSmallShape(enable: boolean): void; getDrawerShapes(type: DrawerType): Array; getSelectShape(shapes: Array): T | undefined; getMinSizeShape(shapes: Array): T | undefined; getMinSizeShapeIntersectWithPoint(x: number, y: number, sources?: DrawerType | Array): T | undefined; getSelectShapeIntersectWithPoint(x: number, y: number): T | undefined; getSelectOrMinSizeShapeIntersectWithPoint(x: number, y: number, sources?: DrawerType | Array): T | undefined; getShapeIntersectWithPoint(x: number, y: number, sources: DrawerType | Array): Array; drawShape(shape: IShape | Array): void; drawImage(image: string): Promise; drawImageSync(image: HTMLImageElement): void; removeShape(shapes: IShape | Array): void; removeShapeByFilter(filter?: (shape: IShape) => boolean): void; removeSelectedShapes(): void; showShapeLabel(show: boolean, sources?: Array): void; changeShapeAlpha(alpha?: number, sources?: Array): void; changeShapeVisible(visible: boolean, filter?: (shape: IShape) => boolean): void; selectShape(shape: IShape): void; cancelSelectShape(filter?: IFilter): void; getAnnotateImage(): HTMLImageElement | undefined; zoomIn(zoom: number): void; zoomOut(zoom: number): void; refresh(): void; clear(): void; }