mirror of
https://github.com/pipipi-pikachu/PPTist.git
synced 2025-04-15 02:20:00 +08:00
22 lines
817 B
TypeScript
22 lines
817 B
TypeScript
interface AlignLine {
|
|
value: number;
|
|
range: [number, number];
|
|
}
|
|
|
|
// 对齐参考线去重,对于相同位置的多条参考线,取长度范围的最小值和最大值,并基于此范围将多条参考线合并为一条
|
|
export const uniqAlignLines = (lines: AlignLine[]) => {
|
|
const uniqLines: AlignLine[] = []
|
|
lines.forEach(line => {
|
|
const index = uniqLines.findIndex(_line => _line.value === line.value)
|
|
if(index === -1) uniqLines.push(line)
|
|
else {
|
|
const uniqLine = uniqLines[index]
|
|
const rangeMin = Math.min(uniqLine.range[0], line.range[0])
|
|
const rangeMax = Math.max(uniqLine.range[1], line.range[1])
|
|
const range: [number, number] = [rangeMin, rangeMax]
|
|
const _line = { value: line.value, range }
|
|
uniqLines[index] = _line
|
|
}
|
|
})
|
|
return uniqLines
|
|
} |