update at 2026-01-22 18:43:01

This commit is contained in:
douboer
2026-01-22 18:43:01 +08:00
parent c23c71eabf
commit a930a99a50
23 changed files with 2082 additions and 1186 deletions

View File

@@ -19,6 +19,167 @@ export interface Example {
radii: number[];
}
/**
* JSON 配置根对象
*/
export interface LuopanConfig {
name: string;
description?: string;
background: string;
outerRadius?: number;
theme: ThemeConfig;
layers: LayerConfig[];
}
/**
* 主题配置
*/
export interface ThemeConfig {
name?: string;
colorPalettes: Record<string, string>;
}
/**
* 中心图标配置
*/
export interface CenterIconConfig {
rIcon: number;
opacity: number;
name: string;
rotation?: number;
}
/**
* 刻度环配置
*/
export interface DegreeRingConfig {
rInner: number;
rOuter: number;
showDegree: 0 | 1;
mode: 'inner' | 'outer' | 'both';
opacity: number;
tickLength: number;
tickLengthStep?: number;
majorTick: number;
minorTick: number;
microTick: number;
tickColor: string;
ringColor: string;
}
/**
* 层配置(扇区层/中心图标层/刻度环层)
*/
export type LayerConfig =
| SectorLayerConfig
| CenterIconLayerConfig
| DegreeRingLayerConfig;
/**
* 普通扇区层配置
*/
export interface SectorLayerConfig {
type?: 'sectors';
divisions: number;
rInner: number;
rOuter: number;
startAngle?: number;
colorRef?: string;
innerFill?: 0 | 1;
num?: number;
interval?: number;
groupSplit?: boolean;
sectors?: SectorConfig[];
}
/**
* 中心图标层配置
*/
export interface CenterIconLayerConfig {
type: 'centerIcon';
centerIcon: CenterIconConfig;
}
/**
* 刻度环层配置
*/
export interface DegreeRingLayerConfig {
type: 'degreeRing';
degreeRing: DegreeRingConfig;
}
/**
* 扇区配置
*/
export interface SectorConfig {
content?: string;
colorRef?: string;
innerFill?: 0 | 1;
}
/**
* 文本单元
*/
export interface TextUnit {
content: string;
aStart: number;
aEnd: number;
isSvg: boolean;
textPathId?: string;
textPath?: string;
svgPath?: string;
fontSize?: number;
isVertical?: boolean;
}
/**
* 刻度线数据
*/
export interface TickMark {
angle: number;
type: 'major' | 'minor' | 'micro';
length: number;
startR: number;
endR: number;
label?: string;
x1: number;
y1: number;
x2: number;
y2: number;
}
/**
* 刻度标签数据
*/
export interface DegreeLabel {
angle: number;
text: string;
r: number;
fontSize: number;
textPathId: string;
textPath: string;
}
/**
* 刻度环渲染数据
*/
export interface DegreeRingData {
ticks: TickMark[];
tickColor: string;
ring: { rInner: number; rOuter: number; color: string; opacity: number };
labels?: DegreeLabel[];
}
/**
* 中心图标渲染数据
*/
export interface CenterIconData {
rIcon: number;
opacity: number;
svgPath: string;
rotation: number;
}
/**
* 扇区配置
*/
@@ -65,6 +226,14 @@ export interface Sector {
fontSize: number;
/** 是否竖排文字 */
isVertical: boolean;
/** 多文本单元 */
textUnits?: TextUnit[];
/** 是否显示与下一个扇区的分割线 */
groupSplitVisible?: boolean;
/** 内容是否为 SVG */
isSvgContent?: boolean;
/** SVG 文件路径 */
svgPath?: string;
}
/**