homemanager-be/src/app-building/plan-renderer/renderer/renderer.interfaces.ts

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];
}