54 lines
997 B
TypeScript
54 lines
997 B
TypeScript
export type Vec2 = [number, number];
|
|
export type LayerObjectType = 'line' | 'room' | 'curve' | 'object';
|
|
export type Vec2Box = [Vec2, Vec2];
|
|
export interface LineSegment {
|
|
start?: Vec2;
|
|
end: Vec2;
|
|
}
|
|
|
|
export interface BezierSegment extends LineSegment {
|
|
startControl: Vec2;
|
|
endControl: Vec2;
|
|
}
|
|
|
|
export interface LayerObject {
|
|
id: number;
|
|
databaseId?: number;
|
|
name: string;
|
|
visible: boolean;
|
|
selected: boolean;
|
|
type: LayerObjectType;
|
|
}
|
|
|
|
export interface Line extends LayerObject {
|
|
segments: LineSegment[];
|
|
width: number;
|
|
color: string;
|
|
render?: Path2D;
|
|
lineCap?: CanvasLineCap;
|
|
lineJoin?: CanvasLineJoin;
|
|
closed?: boolean;
|
|
lineDash?: number[];
|
|
}
|
|
|
|
export interface Layer {
|
|
id: number;
|
|
contents: LayerObject[];
|
|
name: string;
|
|
color: string;
|
|
visible: boolean;
|
|
active: boolean;
|
|
}
|
|
|
|
export interface FloorDocument {
|
|
id: number;
|
|
name: string;
|
|
width: number;
|
|
height: number;
|
|
layers: Layer[];
|
|
/**
|
|
* Min, Max
|
|
*/
|
|
boundingBox?: [Vec2, Vec2];
|
|
}
|