nhanh-pure-function
Version:
99 lines (98 loc) • 3.88 kB
TypeScript
import { default as Overlay } from './public/overlay';
import { OverlayType } from './index';
import { EventHandler } from '../public/eventController';
import { ArcStyleType, PolygonStyleType } from '../common.type';
type ConstructorOption = ConstructorParameters<typeof Overlay<ArcStyleType, [number, number]>>[0] & {
/** 是否填充 */
isFill?: boolean;
/** 是否闭合 */
isClosed?: boolean;
/** 闭合时是否经过中心点 */
isClosedThroughCenter?: boolean;
/** 圆弧的半径。必须为正值。 */
radiusValue?: number;
/** 圆弧的半径。必须为正值。 */
radiusPosition?: number;
/** 圆弧的起始点,从 x 轴方向开始计算,以弧度为单位。 */
startAngle: number;
/** 圆弧的终点,从 x 轴方向开始计算,以弧度为单位。 */
endAngle: number;
/** 如果为 true,逆时针绘制圆弧,反之,顺时针绘制。默认为 false(顺时针)。 */
counterclockwise?: boolean;
/** 是否可显示控制点 */
isHandlePointsVisible?: boolean;
};
export default class Arc extends Overlay<ArcStyleType, [number, number]> {
private _isFill;
/** 是否填充 */
get isFill(): boolean;
set isFill(isFill: boolean);
protected _isClosed: boolean;
/** 是否闭合 */
get isClosed(): boolean;
set isClosed(isClosed: boolean);
private _isClosedThroughCenter;
/** 闭合时是否经过中心点 */
get isClosedThroughCenter(): boolean;
set isClosedThroughCenter(isClosedThroughCenter: boolean);
private _radiusValue;
/** 圆弧的半径。必须为正值。 */
get radiusValue(): number;
set radiusValue(radius: number);
private _radiusPosition;
/** 圆弧的半径。必须为正值。 */
get radiusPosition(): number;
set radiusPosition(radius: number);
private _startAngle;
/** 圆弧的起始点,从 x 轴方向开始计算,以弧度为单位。 */
get startAngle(): number;
set startAngle(startAngle: number);
private _endAngle;
/** 圆弧的终点,从 x 轴方向开始计算,以弧度为单位。 */
get endAngle(): number;
set endAngle(endAngle: number);
private _counterclockwise;
/** 如果为 true,逆时针绘制圆弧,反之,顺时针绘制。默认为 false(顺时针)。 */
get counterclockwise(): boolean;
set counterclockwise(counterclockwise: boolean);
/** 当前是否渲染了控制点 */
private isShowHandlePoint;
/** 是否可显示控制点 */
private _isHandlePointsVisible;
/** 是否可显示控制点 */
get isHandlePointsVisible(): boolean;
set isHandlePointsVisible(value: boolean);
/** 偏移量 */
get offset(): {
x: number;
y: number;
};
set offset(offset: {
x: number;
y: number;
});
constructor(option: ConstructorOption);
/** 默认点击事件 点击后切换控制点显示状态 */
defaultClick: EventHandler<"click">;
/** 处理拖动状态变化 */
defaultDragg: EventHandler<"dragg">;
protected updateValueScope(): void;
isPointInPath(x: number, y: number): boolean;
isPointInStroke(x: number, y: number): boolean;
isPointInAnywhere(x: number, y: number): boolean;
get cursorStyle(): string | undefined;
protected setOverlayStyles(ctx?: CanvasRenderingContext2D): PolygonStyleType;
protected get computedValueScopeStyles(): PolygonStyleType;
/** 控制点 */
private handlePoints;
/** 控制点数组 */
private get handlePointsArr();
/** 更新控制点 */
private updateHandlePoints;
protected updateBaseData(): void;
/** 绘制辅助虚线 */
private drawGuideLine;
draw(ctx: CanvasRenderingContext2D): void;
getDraw(): [(ctx: CanvasRenderingContext2D) => void, OverlayType] | void;
}
export {};