import type { IDisposable, IFilter } from '../../../abstraction'; import type { IRenderer } from '../i-renderer'; import type { IShape, ShapeType } from '../shape'; import type { DrawerType } from './drawer-type'; import type { ICommentDrawer } from './i-comment-drawer'; import type { IImageDrawer } from './i-image-drawer'; import type { INatureDrawer } from './i-nature-drawer'; import type { IObjectDrawer } from './i-object-drawer'; import type { IRelationDrawer } from './i-relation-drawer'; import type { IRegionDrawer } from './i-region-drawer'; import type { IThingDrawer } from './i-thing-drawer'; export interface IDrawer extends IDisposable { readonly type: DrawerType; readonly shapeType: ShapeType; readonly current?: T; readonly shapes: Array; readonly shouldShowShapeLabel: boolean; readonly hoverSources?: Array; readonly selectSources?: Array; readonly useHoverSources: boolean; readonly useSelectSources: boolean; readonly suspended: boolean; isBase(): boolean; isDragable(): boolean; isClickable(): boolean; isSelectable(): boolean; isImage(): this is IImageDrawer; isObject(): this is IObjectDrawer; isNature(): this is INatureDrawer; isRelation(): this is IRelationDrawer; isComment(): this is ICommentDrawer; isRegion(): this is IRegionDrawer; isThing(): this is IThingDrawer; isMultiSelect(): boolean; isReadonly(): boolean; use(renderer: IRenderer): void; refreshRenderer(): void; lock(): void; release(): void; suspend(): void; resume(): void; draw(shapes: T | Array): void; remove(shapes: T | Array): void; clear(): void; showShapeLabel(show?: boolean, sources?: Array): void; changeShapeAlpha(aplha?: number, sources?: ShapeType[]): void; changeShapeVisible(visible: boolean, filter?: IFilter): void; showSmallShape(show: boolean): void; enableSmallShape(enable: boolean): void; }