MCPcopy
hub / github.com/veasion/AiPPT / getPaths

Function getPaths

static/geometry.js:24–84  ·  view source on GitHub ↗
(paths, isEmu, anchor, real_anchor, zoom)

Source from the content-addressed store, hash-verified

22}
23
24function getPaths(paths, isEmu, anchor, real_anchor, zoom) {
25 let resultPaths = []
26 for (let i = 0; i < paths.length; i++) {
27 let path = paths[i]
28 // console.log('path: ', path)
29 let scaleX = 1, scaleY = 1
30 if (path.w > 0 && path.h > 0) {
31 if (path.w < 2000 && path.h < 2000) {
32 isEmu = false
33 }
34 let w = value2px(path.w, isEmu)
35 let h = value2px(path.h, isEmu)
36 scaleX = anchor[2] / w
37 scaleY = anchor[3] / h
38 } else if (zoom) {
39 scaleX = zoom
40 scaleY = zoom
41 }
42 let newPaths = []
43 let split = path.path.replace(/\s+/g, ' ').trim().split(' ')
44 for (let j = 0; j < split.length; j++) {
45 switch (split[j]) {
46 case 'M':
47 case 'L':
48 newPaths.push(split[j])
49 newPaths.push(value2px(split[++j], isEmu))
50 newPaths.push(value2px(split[++j], isEmu))
51 break
52 case 'Q':
53 newPaths.push('Q')
54 newPaths.push(value2px(split[++j], isEmu))
55 newPaths.push(value2px(split[++j], isEmu))
56 newPaths.push(value2px(split[++j], isEmu))
57 newPaths.push(value2px(split[++j], isEmu))
58 break
59 case 'C':
60 newPaths.push('C')
61 newPaths.push(value2px(split[++j], isEmu))
62 newPaths.push(value2px(split[++j], isEmu))
63 newPaths.push(value2px(split[++j], isEmu))
64 newPaths.push(value2px(split[++j], isEmu))
65 newPaths.push(value2px(split[++j], isEmu))
66 newPaths.push(value2px(split[++j], isEmu))
67 break
68 case 'Z':
69 newPaths.push('Z')
70 break
71 }
72 }
73 resultPaths.push({
74 scaleX,
75 scaleY,
76 x: real_anchor[0],
77 y: real_anchor[1],
78 path: newPaths.join(' '),
79 stroked: path.stroked,
80 filled: path.filled
81 })

Callers 1

geometryPathsFunction · 0.85

Calls 1

value2pxFunction · 0.70

Tested by

no test coverage detected