| import type { ShapePoolItem } from '@/configs/shapes'; |
| import type { LinePoolItem } from '@/configs/lines'; |
| import type { ImageClipDataRange, PPTElementOutline, PPTElementShadow, Gradient } from './slides'; |
|
|
| export enum ElementOrderCommands { |
| UP = 'up', |
| DOWN = 'down', |
| TOP = 'top', |
| BOTTOM = 'bottom', |
| } |
|
|
| export enum ElementAlignCommands { |
| TOP = 'top', |
| BOTTOM = 'bottom', |
| LEFT = 'left', |
| RIGHT = 'right', |
| VERTICAL = 'vertical', |
| HORIZONTAL = 'horizontal', |
| CENTER = 'center', |
| } |
|
|
| export const enum OperateBorderLines { |
| T = 'top', |
| B = 'bottom', |
| L = 'left', |
| R = 'right', |
| } |
|
|
| export const enum OperateResizeHandlers { |
| LEFT_TOP = 'left-top', |
| TOP = 'top', |
| RIGHT_TOP = 'right-top', |
| LEFT = 'left', |
| RIGHT = 'right', |
| LEFT_BOTTOM = 'left-bottom', |
| BOTTOM = 'bottom', |
| RIGHT_BOTTOM = 'right-bottom', |
| } |
|
|
| export const enum OperateLineHandlers { |
| START = 'start', |
| END = 'end', |
| C = 'ctrl', |
| C1 = 'ctrl1', |
| C2 = 'ctrl2', |
| } |
|
|
| export interface AlignmentLineAxis { |
| x: number; |
| y: number; |
| } |
|
|
| export interface AlignmentLineProps { |
| type: 'vertical' | 'horizontal'; |
| axis: AlignmentLineAxis; |
| length: number; |
| } |
|
|
| export interface MultiSelectRange { |
| minX: number; |
| maxX: number; |
| minY: number; |
| maxY: number; |
| } |
|
|
| export interface ImageClipedEmitData { |
| range: ImageClipDataRange; |
| position: { |
| left: number; |
| top: number; |
| width: number; |
| height: number; |
| }; |
| } |
|
|
| export interface CreateElementSelectionData { |
| start: [number, number]; |
| end: [number, number]; |
| } |
|
|
| export interface CreateCustomShapeData { |
| start: [number, number]; |
| end: [number, number]; |
| path: string; |
| viewBox: [number, number]; |
| fill?: string; |
| outline?: PPTElementOutline; |
| } |
|
|
| export interface CreatingTextElement { |
| type: 'text'; |
| vertical?: boolean; |
| } |
| export interface CreatingShapeElement { |
| type: 'shape'; |
| data: ShapePoolItem; |
| } |
| export interface CreatingLineElement { |
| type: 'line'; |
| data: LinePoolItem; |
| } |
| export type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement; |
|
|
| export type TextFormatPainterKeys = |
| | 'bold' |
| | 'em' |
| | 'underline' |
| | 'strikethrough' |
| | 'color' |
| | 'backcolor' |
| | 'fontsize' |
| | 'fontname' |
| | 'align'; |
|
|
| export interface TextFormatPainter { |
| keep: boolean; |
| bold?: boolean; |
| em?: boolean; |
| underline?: boolean; |
| strikethrough?: boolean; |
| color?: string; |
| backcolor?: string; |
| fontsize?: string; |
| fontname?: string; |
| align?: 'left' | 'right' | 'center'; |
| } |
|
|
| export interface ShapeFormatPainter { |
| keep: boolean; |
| fill?: string; |
| gradient?: Gradient; |
| outline?: PPTElementOutline; |
| opacity?: number; |
| shadow?: PPTElementShadow; |
| } |
|
|