42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
|
|
export type ShapeType =
|
||
|
|
| 'rectangle'
|
||
|
|
| 'ellipse'
|
||
|
|
| 'line'
|
||
|
|
| 'arrow'
|
||
|
|
| 'polygon'
|
||
|
|
| 'star'
|
||
|
|
| 'triangle';
|
||
|
|
|
||
|
|
export interface ShapeSettings {
|
||
|
|
type: ShapeType;
|
||
|
|
fill: boolean;
|
||
|
|
fillColor: string;
|
||
|
|
stroke: boolean;
|
||
|
|
strokeColor: string;
|
||
|
|
strokeWidth: number;
|
||
|
|
cornerRadius: number; // For rounded rectangles
|
||
|
|
sides: number; // For polygons and stars
|
||
|
|
innerRadius: number; // For stars (0-1, percentage of outer radius)
|
||
|
|
arrowHeadSize: number; // For arrows
|
||
|
|
arrowHeadAngle: number; // For arrows (degrees)
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ShapeState {
|
||
|
|
settings: ShapeSettings;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ShapeStore extends ShapeState {
|
||
|
|
setShapeType: (type: ShapeType) => void;
|
||
|
|
setFill: (fill: boolean) => void;
|
||
|
|
setFillColor: (color: string) => void;
|
||
|
|
setStroke: (stroke: boolean) => void;
|
||
|
|
setStrokeColor: (color: string) => void;
|
||
|
|
setStrokeWidth: (width: number) => void;
|
||
|
|
setCornerRadius: (radius: number) => void;
|
||
|
|
setSides: (sides: number) => void;
|
||
|
|
setInnerRadius: (radius: number) => void;
|
||
|
|
setArrowHeadSize: (size: number) => void;
|
||
|
|
setArrowHeadAngle: (angle: number) => void;
|
||
|
|
updateSettings: (settings: Partial<ShapeSettings>) => void;
|
||
|
|
}
|