chartjs-chart-venn
Version:
Chart.js module for venn diagrams
63 lines (53 loc) • 1.19 kB
text/typescript
export interface ITextLocation {
text: { x: number; y: number };
}
export interface ICircle {
r: number;
cx: number;
cy: number;
}
export interface IEllipse {
rx: number;
ry: number;
rotation: number;
cx: number;
cy: number;
}
export interface ITextCircle extends ICircle, ITextLocation {
align: 'start' | 'end' | 'middle';
verticalAlign: 'top' | 'bottom';
}
export interface ITextEllipse extends IEllipse, ITextLocation {
align: 'start' | 'end' | 'middle';
verticalAlign: 'top' | 'bottom';
}
// could be slice
export interface IArc {
x2: number;
y2: number;
sweep: boolean;
large: boolean;
ref: number;
mode: 'i' | 'o';
}
export interface IArcSlice {
sets: readonly number[];
x1: number;
y1: number;
arcs: readonly IArc[];
path?: string;
}
export interface ITextArcSlice extends IArcSlice, ITextLocation {}
export interface IVennDiagramLayout {
sets: (ITextCircle | ITextEllipse)[];
intersections: ITextArcSlice[];
}
export function isEllipse(d: ICircle | IEllipse): d is IEllipse {
return typeof (d as IEllipse).rx === 'number';
}
export interface IBoundingBox {
x: number;
y: number;
width: number;
height: number;
}