57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
const parseEnvInt = (
|
|
value: string | undefined,
|
|
fallback: number,
|
|
min: number,
|
|
max: number
|
|
) => {
|
|
if (!value) return fallback
|
|
const parsed = Number.parseInt(value, 10)
|
|
if (!Number.isFinite(parsed)) return fallback
|
|
return Math.min(max, Math.max(min, parsed))
|
|
}
|
|
|
|
export const labelimagePerformanceConfig = {
|
|
// 单次渲染的路径切片大小。越小越丝滑,越大越快完成。
|
|
polygonRenderBatchSize: parseEnvInt(
|
|
process.env.NEXT_PUBLIC_LABELIMAGE_POLYGON_BATCH_SIZE,
|
|
12,
|
|
1,
|
|
200
|
|
),
|
|
// 每帧渲染预算(毫秒)。越小越不卡操作,越大越快完成绘制。
|
|
polygonRenderBatchBudgetMs: parseEnvInt(
|
|
process.env.NEXT_PUBLIC_LABELIMAGE_POLYGON_BATCH_BUDGET_MS,
|
|
6,
|
|
1,
|
|
33
|
|
),
|
|
// 切帧准备超过该阈值后才显示轻量提示,避免短切换频繁闪动提示。
|
|
frameSwitchLoadingDelayMs: parseEnvInt(
|
|
process.env.NEXT_PUBLIC_LABELIMAGE_FRAME_SWITCH_LOADING_DELAY_MS,
|
|
120,
|
|
0,
|
|
1000
|
|
),
|
|
// 切帧时新旧图层的交叉淡入时长(毫秒)。设为 0 可关闭淡入。
|
|
rasterCrossfadeDurationMs: parseEnvInt(
|
|
process.env.NEXT_PUBLIC_LABELIMAGE_RASTER_CROSSFADE_MS,
|
|
90,
|
|
0,
|
|
400
|
|
),
|
|
// 容器尺寸连续变化时,延迟提交 canvas 实际宽高,减少频繁重置导致的白闪。
|
|
resizeCommitDebounceMs: parseEnvInt(
|
|
process.env.NEXT_PUBLIC_LABELIMAGE_RESIZE_COMMIT_DEBOUNCE_MS,
|
|
90,
|
|
0,
|
|
500
|
|
),
|
|
// 容器尺寸变更后的视觉缓动时长(毫秒),用于降低“跳变感”。
|
|
resizeInterpolationDurationMs: parseEnvInt(
|
|
process.env.NEXT_PUBLIC_LABELIMAGE_RESIZE_INTERPOLATION_MS,
|
|
100,
|
|
0,
|
|
400
|
|
),
|
|
} as const
|