/** * @file Region 区域 */ import { ElementOffset, ElementSize } from '@glue-util/boundary'; import { Emitter } from '@glue-util/emitter'; import { AxisType, PointType } from '../enum'; import { Axis } from './Axis'; import { Point } from './Point'; export interface IRegion { repaint(): void; getPoint(key: string): Point; getAxis(type: AxisType): Axis; setPointValue(part: string, value: ElementOffset, virtual?: boolean): void; getPointValue(part: string): ElementOffset; getAxisLength(type: AxisType): number; updateRegionSize(size: ElementSize): void; isValueSelected(value: ElementOffset): boolean; isAxisSelected(type: AxisType, value: number): boolean; getDragging(): boolean; setDragging(dragging: boolean): void; getPointByOffset(offset: ElementOffset): Point; getSelectedRegion(): [ElementOffset, ElementOffset]; getSelectedOffset(): [ElementOffset, ElementOffset]; } export interface IRegionEvent { 'change': [T]; 'repaint': []; } export declare abstract class Region extends Emitter> implements IRegion { private readonly axisMap; private readonly pointMap; private size; private dragging; protected constructor(); repaint(): void; getPoint(part: string): Point; getAxis(type: AxisType): Axis; getAxisLength(type: AxisType): number; updateRegionSize(size: ElementSize): void; getDragging(): boolean; setDragging(dragging: boolean): void; protected createAxis(type: AxisType): Axis; protected createPoint(part: string, type: PointType): Point; protected repaintPoint(): void; abstract setPointValue(part: string, value: ElementOffset, virtual?: boolean): void; abstract getPointValue(part: string): ElementOffset; abstract isValueSelected(value: ElementOffset): boolean; abstract isAxisSelected(type: AxisType, value: number): boolean; abstract getPointByOffset(offset: ElementOffset): Point; abstract getSelectedRegion(): [ElementOffset, ElementOffset]; abstract getSelectedOffset(): [ElementOffset, ElementOffset]; }