-
Notifications
You must be signed in to change notification settings - Fork 125
/
Copy pathtoPolylines.js
40 lines (34 loc) · 1.08 KB
/
toPolylines.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { Box2 } from 'vecks'
import colors from './util/colors'
import denormalise from './denormalise'
import entityToPolyline from './entityToPolyline'
import applyTransforms from './applyTransforms'
import logger from './util/logger'
export default (parsed) => {
const entities = denormalise(parsed)
const polylines = entities.map((entity) => {
const layerTable = parsed.tables.layers[entity.layer]
let colorNumber = 0
if ('colorNumber' in entity) {
colorNumber = entity.colorNumber
} else if (layerTable) {
colorNumber = layerTable.colorNumber
}
if (colors[colorNumber] === undefined) {
logger.warn('Color index', colorNumber, 'invalid, defaulting to black')
colorNumber = 0
}
return {
rgb: colors[colorNumber],
layer: layerTable,
vertices: applyTransforms(entityToPolyline(entity), entity.transforms),
}
})
const bbox = new Box2()
polylines.forEach((polyline) => {
polyline.vertices.forEach((vertex) => {
bbox.expandByPoint({ x: vertex[0], y: vertex[1] })
})
})
return { bbox, polylines }
}