mirror of
https://github.com/pipipi-pikachu/PPTist.git
synced 2025-04-15 02:20:00 +08:00
163 lines
3.1 KiB
TypeScript
163 lines
3.1 KiB
TypeScript
export interface PPTElementShadow {
|
|
h: number;
|
|
v: number;
|
|
blur: number;
|
|
color: string;
|
|
}
|
|
|
|
export enum ElementTypes {
|
|
TEXT = 'text',
|
|
IMAGE = 'image',
|
|
SHAPE = 'shape',
|
|
LINE = 'line',
|
|
CHART = 'chart',
|
|
TABLE = 'table',
|
|
}
|
|
|
|
export interface PPTElementOutline {
|
|
style?: 'dashed' | 'solid';
|
|
width?: number;
|
|
color?: string;
|
|
}
|
|
|
|
export interface PPTTextElement {
|
|
type: 'text';
|
|
id: string;
|
|
left: number;
|
|
top: number;
|
|
lock?: boolean;
|
|
groupId?: string;
|
|
width: number;
|
|
height: number;
|
|
content: string;
|
|
rotate?: number;
|
|
outline?: PPTElementOutline;
|
|
fill?: string;
|
|
lineHeight?: number;
|
|
wordSpace?: number;
|
|
opacity?: number;
|
|
shadow?: PPTElementShadow;
|
|
}
|
|
|
|
export interface ImageElementFilters {
|
|
'blur': string;
|
|
'brightness': string;
|
|
'contrast': string;
|
|
'grayscale': string;
|
|
'saturate': string;
|
|
'hue-rotate': string;
|
|
'opacity': string;
|
|
}
|
|
export interface PPTImageElement {
|
|
type: 'image';
|
|
id: string;
|
|
left: number;
|
|
top: number;
|
|
lock?: boolean;
|
|
groupId?: string;
|
|
width: number;
|
|
height: number;
|
|
fixedRatio: boolean;
|
|
src: string;
|
|
rotate?: number;
|
|
outline?: PPTElementOutline;
|
|
filters?: ImageElementFilters;
|
|
clip?: {
|
|
range: [[number, number], [number, number]];
|
|
shape: 'rect' | 'roundRect' | 'ellipse' | 'triangle' | 'pentagon' | 'rhombus' | 'star';
|
|
};
|
|
flip?: { x?: number; y?: number };
|
|
shadow?: PPTElementShadow;
|
|
}
|
|
|
|
export interface PPTShapeElement {
|
|
type: 'shape';
|
|
id: string;
|
|
left: number;
|
|
top: number;
|
|
lock?: boolean;
|
|
groupId?: string;
|
|
width: number;
|
|
height: number;
|
|
viewBox: number;
|
|
path: string;
|
|
fixedRatio: boolean;
|
|
fill: string;
|
|
rotate?: number;
|
|
outline?: PPTElementOutline;
|
|
opacity?: number;
|
|
shadow?: PPTElementShadow;
|
|
}
|
|
|
|
export interface PPTLineElement {
|
|
type: 'line';
|
|
id: string;
|
|
left: number;
|
|
top: number;
|
|
lock?: boolean;
|
|
groupId?: string;
|
|
start: [number, number];
|
|
end: [number, number];
|
|
width: number;
|
|
style: string;
|
|
color: string;
|
|
points: [string, string];
|
|
shadow?: PPTElementShadow;
|
|
}
|
|
|
|
export interface PPTChartElement {
|
|
type: 'chart';
|
|
id: string;
|
|
left: number;
|
|
top: number;
|
|
lock?: boolean;
|
|
groupId?: string;
|
|
width: number;
|
|
height: number;
|
|
chartType: string;
|
|
data: string;
|
|
outline?: PPTElementOutline;
|
|
theme?: string;
|
|
}
|
|
|
|
export interface TableElementCell {
|
|
colspan: number;
|
|
rowspan: number;
|
|
content: string;
|
|
bgColor: string;
|
|
}
|
|
export interface PPTTableElement {
|
|
type: 'table';
|
|
id: string;
|
|
left: number;
|
|
top: number;
|
|
lock?: boolean;
|
|
groupId?: string;
|
|
width: number;
|
|
height: number;
|
|
borderTheme?: string;
|
|
theme?: string;
|
|
rowSizes: number[];
|
|
colSizes: number[];
|
|
data: TableElementCell[][];
|
|
}
|
|
|
|
export type PPTElement = PPTTextElement | PPTImageElement | PPTShapeElement | PPTLineElement | PPTChartElement | PPTTableElement
|
|
|
|
export interface PPTAnimation {
|
|
elId: string;
|
|
type: string;
|
|
duration: number;
|
|
}
|
|
|
|
export interface SlideBackground {
|
|
type: 'solid' | 'image';
|
|
value: string;
|
|
}
|
|
|
|
export interface Slide {
|
|
id: string;
|
|
elements: PPTElement[];
|
|
background?: SlideBackground;
|
|
animations?: PPTAnimation[];
|
|
} |