abstract-3d 1.6.3 → 1.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/renderers/dxf/color.d.ts +2 -0
- package/lib/renderers/dxf/color.d.ts.map +1 -1
- package/lib/renderers/dxf/color.js +3 -0
- package/lib/renderers/dxf/color.js.map +1 -1
- package/lib/renderers/dxf/dxf-encoding.d.ts +9 -8
- package/lib/renderers/dxf/dxf-encoding.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-encoding.js +48 -117
- package/lib/renderers/dxf/dxf-encoding.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-box.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-box.js +7 -8
- package/lib/renderers/dxf/dxf-geometries/dxf-box.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.js +7 -8
- package/lib/renderers/dxf/dxf-geometries/dxf-cone.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js +13 -16
- package/lib/renderers/dxf/dxf-geometries/dxf-cylinder.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-image.js +12 -79
- package/lib/renderers/dxf/dxf-geometries/dxf-image.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.js +2 -2
- package/lib/renderers/dxf/dxf-geometries/dxf-plane.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js +5 -5
- package/lib/renderers/dxf/dxf-geometries/dxf-polygon.js.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js +37 -13
- package/lib/renderers/dxf/dxf-geometries/dxf-shape.js.map +1 -1
- package/lib/renderers/dxf/dxf.d.ts.map +1 -1
- package/lib/renderers/dxf/dxf.js +10 -10
- package/lib/renderers/dxf/dxf.js.map +1 -1
- package/lib/renderers/svg/svg-encoding.d.ts.map +1 -1
- package/lib/renderers/svg/svg-encoding.js +42 -2
- package/lib/renderers/svg/svg-encoding.js.map +1 -1
- package/lib/renderers/svg/svg.js +2 -1
- package/lib/renderers/svg/svg.js.map +1 -1
- package/package.json +3 -3
- package/src/renderers/dxf/color.ts +5 -0
- package/src/renderers/dxf/dxf-encoding.ts +61 -127
- package/src/renderers/dxf/dxf-geometries/dxf-box.ts +7 -9
- package/src/renderers/dxf/dxf-geometries/dxf-cone.ts +7 -9
- package/src/renderers/dxf/dxf-geometries/dxf-cylinder.ts +15 -18
- package/src/renderers/dxf/dxf-geometries/dxf-image.ts +27 -97
- package/src/renderers/dxf/dxf-geometries/dxf-plane.ts +2 -3
- package/src/renderers/dxf/dxf-geometries/dxf-polygon.ts +5 -8
- package/src/renderers/dxf/dxf-geometries/dxf-shape.ts +37 -14
- package/src/renderers/dxf/dxf.ts +28 -22
- package/src/renderers/svg/svg-encoding.ts +45 -3
- package/src/renderers/svg/svg.ts +3 -5
- package/src/.DS_Store +0 -0
- package/src/renderers/.DS_Store +0 -0
|
@@ -1,39 +1,36 @@
|
|
|
1
1
|
import { vec3TransRot, vec3RotCombine, vec3Zero, vec3, vec3Scale, equals, } from "../../../abstract-3d.js";
|
|
2
|
-
import {
|
|
2
|
+
import { dxfQuad, dxfTriangle } from "../dxf-encoding.js";
|
|
3
3
|
import { dxfPlane } from "./dxf-plane.js";
|
|
4
4
|
export function dxfCylinder(c, m, sides, parentPos, parentRot, handleRef) {
|
|
5
|
-
const angleStart = c.angleStart ?? 0.0;
|
|
6
|
-
const angleLength = c.angleLength ?? Math.PI * 2;
|
|
7
|
-
const angleEnd = angleStart + angleLength;
|
|
8
|
-
let dxfString = "";
|
|
9
5
|
const pos = vec3TransRot(c.pos, parentPos, parentRot);
|
|
10
6
|
const rot = vec3RotCombine(parentRot, c.rot ?? vec3Zero);
|
|
11
7
|
const vec3tr = (x, y, z) => vec3TransRot(vec3(x, y, z), pos, rot);
|
|
12
|
-
const
|
|
8
|
+
const angleStart = c.angleStart ?? 0.0;
|
|
9
|
+
const angleLength = c.angleLength ?? Math.PI * 2;
|
|
10
|
+
const angleEnd = angleStart + angleLength;
|
|
13
11
|
const angleStep = angleLength / sides;
|
|
14
12
|
let currentAngle = angleStart;
|
|
13
|
+
let dxfString = "";
|
|
15
14
|
const half = c.length / 2;
|
|
16
15
|
const topPos = vec3tr(0, half, 0);
|
|
17
16
|
const botPos = vec3tr(0, -half, 0);
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
let prevBot = undefined;
|
|
18
|
+
let prevTop = undefined;
|
|
20
19
|
for (let i = 0; i <= sides; i++) {
|
|
21
20
|
const x = Math.sin(currentAngle) * c.radius;
|
|
22
21
|
const z = Math.cos(currentAngle) * c.radius;
|
|
23
22
|
const currBot = vec3tr(x, -half, z);
|
|
24
23
|
const currTop = vec3tr(x, half, z);
|
|
25
|
-
|
|
26
|
-
topVec3Array.push(currTop);
|
|
27
|
-
if (i !== 0) {
|
|
28
|
-
const prevBot = botVec3Array[i - 1];
|
|
29
|
-
const prevTop = topVec3Array[i - 1];
|
|
24
|
+
if (i !== 0 && prevBot && prevTop) {
|
|
30
25
|
if (!c.open) {
|
|
31
26
|
dxfString +=
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
dxfTriangle(botPos, prevBot, currBot, m.normal, handleRef) +
|
|
28
|
+
dxfTriangle(topPos, prevTop, currTop, m.normal, handleRef);
|
|
34
29
|
}
|
|
35
|
-
dxfString +=
|
|
30
|
+
dxfString += dxfQuad(currBot, prevBot, prevTop, currTop, m.normal, handleRef);
|
|
36
31
|
}
|
|
32
|
+
prevBot = currBot;
|
|
33
|
+
prevTop = currTop;
|
|
37
34
|
currentAngle += angleStep;
|
|
38
35
|
}
|
|
39
36
|
if (!equals(angleStart, angleEnd - Math.PI * 2) && angleLength > 0.0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-cylinder.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-cylinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,MAAM,GACP,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf-cylinder.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-cylinder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-image.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-image.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,IAAI,
|
|
1
|
+
{"version":3,"file":"dxf-image.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-image.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,IAAI,EAQL,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAoE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE9G,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAiB9F"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { vec2Scale, vec3TransRot, vec3RotCombine, vec3Zero, vec3, vec3Rot, vec3Add,
|
|
2
|
-
import {
|
|
1
|
+
import { vec2Scale, vec3TransRot, vec3RotCombine, vec3Zero, vec3, vec3Rot, vec3Add, } from "../../../abstract-3d.js";
|
|
2
|
+
import { DEFAULT_CIRCLE_SIDE_COUNT, dxfLine, dxfPolyline } from "../dxf-encoding.js";
|
|
3
3
|
export function dxfImage(i, parentPos, parentRot, handleRef) {
|
|
4
4
|
const half = vec2Scale(i.size, 0.5);
|
|
5
5
|
const offset = vec3Rot(vec3(-half.x, half.y, 0), vec3Zero, i.rot ?? vec3Zero);
|
|
@@ -20,60 +20,42 @@ export function dxfImage(i, parentPos, parentRot, handleRef) {
|
|
|
20
20
|
}
|
|
21
21
|
function abstractImageToDxf3D(image, pos, rot, scale, handleRef) {
|
|
22
22
|
const strokeScale = Math.max(scale.x, scale.y, scale.z);
|
|
23
|
-
|
|
24
|
-
//create the background and place it slightly below the stroke elements
|
|
25
|
-
// const normal = eulerToVector(rot);
|
|
26
|
-
// const bgSize = { x: image.size.width * scale.x, y: image.size.height * scale.y, z: 1 };
|
|
27
|
-
// const bgHalf = vec3Rot(vec3Scale(bgSize, 0.5), vec3Zero, rot);
|
|
28
|
-
// const bgPos = vec3Add(vec3Add(pos, bgHalf), vec3Scale(normal, -1));
|
|
29
|
-
// dxf += dxfPlane({
|
|
30
|
-
// type: "Plane",
|
|
31
|
-
// size: bgSize,
|
|
32
|
-
// pos: bgPos,
|
|
33
|
-
// rot,
|
|
34
|
-
// }, {normal: `normal(0, 0, 1)`}, vec3Zero, vec3Zero, handleRef);
|
|
35
|
-
for (const comp of image.components) {
|
|
36
|
-
dxf += abstractImageComponentToDxf3D(comp, pos, rot, scale, strokeScale, handleRef);
|
|
37
|
-
}
|
|
38
|
-
return dxf;
|
|
23
|
+
return image.components.map((comp) => abstractImageComponentToDxf3D(comp, pos, rot, scale, strokeScale, handleRef)).join("");
|
|
39
24
|
}
|
|
40
25
|
function abstractImageComponentToDxf3D(comp, pos, rot, scale, strokeScale, handleRef) {
|
|
41
26
|
const vec3tr = (x, y) => vec3TransRot(vec3(x * scale.x, y * scale.y, 0), pos, rot);
|
|
42
|
-
const strokeColor =
|
|
27
|
+
const strokeColor = 7;
|
|
43
28
|
let dxf = "";
|
|
44
29
|
switch (comp.type) {
|
|
45
30
|
case "group": {
|
|
46
|
-
|
|
47
|
-
dxf += abstractImageComponentToDxf3D(child, pos, rot, scale, strokeScale, handleRef);
|
|
48
|
-
}
|
|
31
|
+
dxf += comp.children.map((child) => abstractImageComponentToDxf3D(child, pos, rot, scale, strokeScale, handleRef)).join("");
|
|
49
32
|
break;
|
|
50
33
|
}
|
|
51
34
|
case "line": {
|
|
52
|
-
dxf += dxfLine(vec3tr(comp.start.x, comp.start.y), vec3tr(comp.end.x, comp.end.y), strokeColor,
|
|
35
|
+
dxf += dxfLine(vec3tr(comp.start.x, comp.start.y), vec3tr(comp.end.x, comp.end.y), strokeColor, handleRef);
|
|
53
36
|
break;
|
|
54
37
|
}
|
|
55
38
|
case "polyline": {
|
|
56
39
|
const points = comp.points.map((p) => vec3tr(p.x, p.y));
|
|
57
|
-
dxf += dxfPolyline(points, strokeColor, false,
|
|
40
|
+
dxf += dxfPolyline(points, strokeColor, false, handleRef);
|
|
58
41
|
break;
|
|
59
42
|
}
|
|
60
43
|
case "polygon": {
|
|
61
44
|
const points = comp.points.map((p) => vec3tr(p.x, p.y));
|
|
62
|
-
dxf += dxfPolyline(points, strokeColor, true,
|
|
45
|
+
dxf += dxfPolyline(points, strokeColor, true, handleRef);
|
|
63
46
|
break;
|
|
64
47
|
}
|
|
65
48
|
case "ellipse": {
|
|
66
49
|
const points = [];
|
|
67
50
|
const r1 = Math.abs(comp.bottomRight.x - comp.topLeft.x) / 2.0;
|
|
68
51
|
const r2 = Math.abs(comp.topLeft.y - comp.bottomRight.y) / 2.0;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const t = (2 * Math.PI * i) / numPoints;
|
|
52
|
+
for (let i = 0; i < DEFAULT_CIRCLE_SIDE_COUNT; i++) {
|
|
53
|
+
const t = (2 * Math.PI * i) / DEFAULT_CIRCLE_SIDE_COUNT;
|
|
72
54
|
const x = comp.topLeft.x + r1 + r1 * Math.cos(t);
|
|
73
55
|
const y = comp.topLeft.y + r2 + r2 * Math.sin(t);
|
|
74
56
|
points.push(vec3tr(x, y));
|
|
75
57
|
}
|
|
76
|
-
dxf += dxfPolyline(points, strokeColor, true,
|
|
58
|
+
dxf += dxfPolyline(points, strokeColor, true, handleRef);
|
|
77
59
|
break;
|
|
78
60
|
}
|
|
79
61
|
case "rectangle": {
|
|
@@ -87,7 +69,7 @@ function abstractImageComponentToDxf3D(comp, pos, rot, scale, strokeScale, handl
|
|
|
87
69
|
vec3tr(size.x, size.y),
|
|
88
70
|
vec3tr(0, size.y),
|
|
89
71
|
];
|
|
90
|
-
dxf += dxfPolyline(points, strokeColor, true,
|
|
72
|
+
dxf += dxfPolyline(points, strokeColor, true, handleRef);
|
|
91
73
|
break;
|
|
92
74
|
}
|
|
93
75
|
default:
|
|
@@ -95,53 +77,4 @@ function abstractImageComponentToDxf3D(comp, pos, rot, scale, strokeScale, handl
|
|
|
95
77
|
}
|
|
96
78
|
return dxf;
|
|
97
79
|
}
|
|
98
|
-
function dxfLine(vecStart, vecEnd, color, strokeThickness, normal, handleRef) {
|
|
99
|
-
const norm = eulerToVector(normal);
|
|
100
|
-
strokeThickness = 0;
|
|
101
|
-
const dir = vec3Normalize(vec3Sub(vecEnd, vecStart));
|
|
102
|
-
const right = vec3Cross(dir, norm);
|
|
103
|
-
const s1 = vec3Add(vecStart, vec3Scale(right, strokeThickness / 2));
|
|
104
|
-
const s2 = vec3Add(vecStart, vec3Scale(right, -strokeThickness / 2));
|
|
105
|
-
const e1 = vec3Add(vecEnd, vec3Scale(right, strokeThickness / 2));
|
|
106
|
-
const e2 = vec3Add(vecEnd, vec3Scale(right, -strokeThickness / 2));
|
|
107
|
-
//return dxf3DFACE(s1, e1, e2, s2, abstractImageColorToHex(color), handleRef);
|
|
108
|
-
return dxf3DFACE(s1, e1, e2, s2, 7, handleRef);
|
|
109
|
-
}
|
|
110
|
-
function dxfPolyline(points, color, closed, strokeThickness, normal, handleRef) {
|
|
111
|
-
let dxf = "";
|
|
112
|
-
for (let i = 0; i < points.length - 1; i++) {
|
|
113
|
-
const p1 = points[i];
|
|
114
|
-
const p2 = points[i + 1];
|
|
115
|
-
if (!p1 || !p2) {
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
dxf += dxfLine(p1, p2, color, strokeThickness, normal, handleRef);
|
|
119
|
-
}
|
|
120
|
-
if (closed) {
|
|
121
|
-
const start = points[0];
|
|
122
|
-
const end = points[points.length - 1];
|
|
123
|
-
if (start && end) {
|
|
124
|
-
dxf += dxfLine(start, end, color, strokeThickness, normal, handleRef);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return dxf;
|
|
128
|
-
}
|
|
129
|
-
function abstractImageColorToHex(color) {
|
|
130
|
-
const col = `rgb(${color.r}, ${color.g}, ${color.b})`;
|
|
131
|
-
return col;
|
|
132
|
-
}
|
|
133
|
-
function eulerToVector(euler) {
|
|
134
|
-
const cx = Math.cos(euler.x);
|
|
135
|
-
const sx = Math.sin(euler.x);
|
|
136
|
-
const cy = Math.cos(euler.y);
|
|
137
|
-
const sy = Math.sin(euler.y);
|
|
138
|
-
//const cz = Math.cos(euler.z); ?
|
|
139
|
-
//const sz = Math.sin(euler.z); ?
|
|
140
|
-
const norm = {
|
|
141
|
-
x: sy,
|
|
142
|
-
y: -sx * cy,
|
|
143
|
-
z: cx * cy
|
|
144
|
-
};
|
|
145
|
-
return norm;
|
|
146
|
-
}
|
|
147
80
|
//# sourceMappingURL=dxf-image.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-image.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-image.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,OAAO,
|
|
1
|
+
{"version":3,"file":"dxf-image.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-image.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-plane.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EAML,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf-plane.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EAML,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAW,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAErD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAa3G"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { vec2Scale, vec3TransRot, vec3RotCombine, vec3Zero, vec3, } from "../../../abstract-3d.js";
|
|
2
|
-
import {
|
|
2
|
+
import { dxfQuad } from "../dxf-encoding.js";
|
|
3
3
|
export function dxfPlane(p, m, parentPos, parentRot, handleRef) {
|
|
4
4
|
const half = vec2Scale(p.size, 0.5);
|
|
5
5
|
const pos = vec3TransRot(p.pos, parentPos, parentRot);
|
|
6
6
|
const rot = vec3RotCombine(parentRot, p.rot ?? vec3Zero);
|
|
7
7
|
const vec3tr = (x, y) => vec3TransRot(vec3(x, y, 0), pos, rot);
|
|
8
|
-
return
|
|
8
|
+
return dxfQuad(vec3tr(-half.x, -half.y), vec3tr(half.x, -half.y), vec3tr(half.x, half.y), vec3tr(-half.x, half.y), m.normal, handleRef);
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=dxf-plane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-plane.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,IAAI,GACL,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf-plane.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,IAAI,GACL,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAU,MAAM,oBAAoB,CAAC;AAErD,MAAM,UAAU,QAAQ,CAAC,CAAQ,EAAE,CAAW,EAAE,SAAe,EAAE,SAAe,EAAE,SAAiB;IACjG,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAQ,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrF,OAAO,OAAO,CACZ,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EACxB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EACvB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EACtB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EACvB,CAAC,CAAC,MAAM,EACR,SAAS,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-polygon.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAA0C,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf-polygon.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAA0C,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAwB,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKlE,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAyE/G"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { vec3TransRot, vec3RotCombine, vec3Zero } from "../../../abstract-3d.js";
|
|
2
|
-
import {
|
|
2
|
+
import { dxfQuad, dxfTriangle } from "../dxf-encoding.js";
|
|
3
3
|
const QUAD_STRIDE = 4;
|
|
4
4
|
const TRIANGLE_STRIDE = 3;
|
|
5
5
|
export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
@@ -15,7 +15,7 @@ export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
|
15
15
|
const vec3 = points[i + 2];
|
|
16
16
|
const vec4 = points[i + 3];
|
|
17
17
|
if (vec1 && vec2 && vec3 && vec4) {
|
|
18
|
-
polygonString +=
|
|
18
|
+
polygonString += dxfQuad(vec1, vec2, vec3, vec4, col, handleRef);
|
|
19
19
|
}
|
|
20
20
|
i += QUAD_STRIDE;
|
|
21
21
|
}
|
|
@@ -27,7 +27,7 @@ export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
|
27
27
|
const vec2 = points[i - 1];
|
|
28
28
|
const vec3 = points[i - 2];
|
|
29
29
|
if (vec1 && vec2 && vec3) {
|
|
30
|
-
polygonString +=
|
|
30
|
+
polygonString += dxfTriangle(vec3, vec2, vec1, col, handleRef);
|
|
31
31
|
}
|
|
32
32
|
break;
|
|
33
33
|
}
|
|
@@ -36,7 +36,7 @@ export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
|
36
36
|
const vec2 = points[i - 1];
|
|
37
37
|
const vec3 = points[i + 1];
|
|
38
38
|
if (vec1 && vec2 && vec3) {
|
|
39
|
-
polygonString +=
|
|
39
|
+
polygonString += dxfTriangle(vec2, vec1, vec3, col, handleRef);
|
|
40
40
|
}
|
|
41
41
|
break;
|
|
42
42
|
}
|
|
@@ -45,7 +45,7 @@ export function dxfPolygon(p, m, parentPos, parentRot, handleRef) {
|
|
|
45
45
|
const vec2 = points[i + 1];
|
|
46
46
|
const vec3 = points[i + 2];
|
|
47
47
|
if (vec1 && vec2 && vec3) {
|
|
48
|
-
polygonString +=
|
|
48
|
+
polygonString += dxfTriangle(vec1, vec2, vec3, col, handleRef);
|
|
49
49
|
}
|
|
50
50
|
break;
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-polygon.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf-polygon.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-polygon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-shape.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAgD,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf-shape.d.ts","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAgD,MAAM,yBAAyB,CAAC;AAC9G,OAAO,EAAwB,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKlE,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAsD7G"}
|
|
@@ -1,30 +1,54 @@
|
|
|
1
1
|
import { vec3TransRot, vec3RotCombine, vec3Zero, vec3 } from "../../../abstract-3d.js";
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
2
|
+
import { dxfQuad, dxfTriangle } from "../dxf-encoding.js";
|
|
3
|
+
const QUAD_STRIDE = 4;
|
|
4
|
+
const TRIANGLE_STRIDE = 3;
|
|
4
5
|
export function dxfPolygon(s, m, parentPos, parentRot, handleRef) {
|
|
5
6
|
let polygonString = "";
|
|
6
7
|
const pos = vec3TransRot(s.pos, parentPos, parentRot);
|
|
7
8
|
const rot = vec3RotCombine(parentRot, s.rot ?? vec3Zero);
|
|
8
9
|
const points = s.points.map((p) => vec3TransRot(vec3(p.x, p.y, 0), pos, rot));
|
|
9
|
-
const mat = m.normal;
|
|
10
10
|
let i = 0;
|
|
11
|
-
if (points.length >=
|
|
12
|
-
for (i; i < points.length; i +=
|
|
13
|
-
|
|
11
|
+
if (points.length >= QUAD_STRIDE) {
|
|
12
|
+
for (i; i < points.length; i += QUAD_STRIDE) {
|
|
13
|
+
const p1 = points[i];
|
|
14
|
+
const p2 = points[i + 1];
|
|
15
|
+
const p3 = points[i + 2];
|
|
16
|
+
const p4 = points[i + 3];
|
|
17
|
+
if (p1 && p2 && p3 && p4) {
|
|
18
|
+
polygonString += dxfQuad(p1, p2, p3, p4, m.normal, handleRef);
|
|
19
|
+
}
|
|
14
20
|
}
|
|
15
21
|
}
|
|
16
|
-
if (i <= points.length &&
|
|
22
|
+
if (i <= points.length && TRIANGLE_STRIDE <= points.length) {
|
|
17
23
|
const lastArrayLength = points.length - i;
|
|
18
24
|
switch (lastArrayLength) {
|
|
19
|
-
case 1:
|
|
20
|
-
|
|
25
|
+
case 1: {
|
|
26
|
+
const p1 = points[i - 2];
|
|
27
|
+
const p2 = points[i - 1];
|
|
28
|
+
const p3 = points[i];
|
|
29
|
+
if (p1 && p2 && p3) {
|
|
30
|
+
polygonString += dxfTriangle(p1, p2, p3, m.normal, handleRef);
|
|
31
|
+
}
|
|
21
32
|
break;
|
|
22
|
-
|
|
23
|
-
|
|
33
|
+
}
|
|
34
|
+
case 2: {
|
|
35
|
+
const p1 = points[i - 1];
|
|
36
|
+
const p2 = points[i];
|
|
37
|
+
const p3 = points[i + 1];
|
|
38
|
+
if (p1 && p2 && p3) {
|
|
39
|
+
polygonString += dxfTriangle(p1, p2, p3, m.normal, handleRef);
|
|
40
|
+
}
|
|
24
41
|
break;
|
|
25
|
-
|
|
26
|
-
|
|
42
|
+
}
|
|
43
|
+
case 3: {
|
|
44
|
+
const p1 = points[i];
|
|
45
|
+
const p2 = points[i + 1];
|
|
46
|
+
const p3 = points[i + 2];
|
|
47
|
+
if (p1 && p2 && p3) {
|
|
48
|
+
polygonString += dxfTriangle(p1, p2, p3, m.normal, handleRef);
|
|
49
|
+
}
|
|
27
50
|
break;
|
|
51
|
+
}
|
|
28
52
|
default:
|
|
29
53
|
break;
|
|
30
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf-shape.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf-shape.js","sourceRoot":"","sources":["../../../../src/renderers/dxf/dxf-geometries/dxf-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf.d.ts","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EAIJ,IAAI,
|
|
1
|
+
{"version":3,"file":"dxf.d.ts","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EAIJ,IAAI,EAeL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAmD,SAAS,EAAU,MAAM,mBAAmB,CAAC;AAMvG,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,CAiBxG;AAED,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MAKrE,CAAC;AAsGF,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,CAAC,UAAU,CAAC,KAAG,MA2BxE,CAAC"}
|
package/lib/renderers/dxf/dxf.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { vec3RotCombine, vec3Zero, vec3TransRot, group, bounds3ToSize, vec3, rotationForCameraPos, bounds3FromPosAndSize, bounds3Merge, bounds3Center, vec3Add, sizeCenterBoundsForCameraPos, boundsScene, vec3Sub, } from "../../abstract-3d.js";
|
|
2
|
-
import { dxf } from "./dxf-encoding.js";
|
|
1
|
+
import { vec3RotCombine, vec3Zero, vec3TransRot, group, bounds3ToSize, vec3, rotationForCameraPos, bounds3FromPosAndSize, bounds3Merge, bounds3Center, vec3Add, sizeCenterBoundsForCameraPos, boundsScene, vec3Sub, vec3Rot, } from "../../abstract-3d.js";
|
|
2
|
+
import { DEFAULT_CIRCLE_SIDE_COUNT, dxf, dxfHandleCreate } from "./dxf-encoding.js";
|
|
3
3
|
import { dxfPlane } from "./dxf-geometries/dxf-plane.js";
|
|
4
4
|
import { dxfBox } from "./dxf-geometries/dxf-box.js";
|
|
5
5
|
import { dxfCylinder } from "./dxf-geometries/dxf-cylinder.js";
|
|
6
6
|
import { dxfCone } from "./dxf-geometries/dxf-cone.js";
|
|
7
7
|
import { dxfPolygon } from "./dxf-geometries/dxf-polygon.js";
|
|
8
8
|
import { dxfImage } from "./dxf-geometries/dxf-image.js";
|
|
9
|
-
const DEFAULT_CYLINDER_SIDE_COUNT = 18;
|
|
10
9
|
export function renderScenes(scenes, baseOptions) {
|
|
11
10
|
let allGroups = "";
|
|
12
11
|
const allBounds = Array();
|
|
13
|
-
const handle =
|
|
12
|
+
const handle = dxfHandleCreate();
|
|
14
13
|
const originOffset = originOffsetFromScenes(scenes, baseOptions?.origin ?? "Center");
|
|
15
14
|
for (const view of scenes) {
|
|
16
15
|
const { groups, size, center } = renderInternal(view.scene, optionsDef({ ...baseOptions, ...view.options, origin: "Center" }), vec3Add(view.pos, originOffset), handle);
|
|
@@ -23,12 +22,13 @@ export function renderScenes(scenes, baseOptions) {
|
|
|
23
22
|
export const render = (scene, options) => {
|
|
24
23
|
const opts = optionsDef(options);
|
|
25
24
|
const bounds = boundsScene(scene);
|
|
26
|
-
const { groups, size, center } = renderInternal(scene, opts, vec3Zero,
|
|
25
|
+
const { groups, size, center } = renderInternal(scene, opts, vec3Zero, dxfHandleCreate());
|
|
27
26
|
return dxf(groups, bounds, size, center);
|
|
28
27
|
};
|
|
29
28
|
const renderInternal = (scene, options, offset, handleRef) => {
|
|
30
29
|
const unitRot = vec3RotCombine(rotationForCameraPos(options.view), scene.rotation_deprecated ?? vec3Zero);
|
|
31
|
-
const
|
|
30
|
+
const rotatedCenter = vec3Rot(scene.center_deprecated ?? vec3Zero, vec3Zero, scene.rotation_deprecated ?? vec3Zero);
|
|
31
|
+
const [size, center] = sizeCenterBoundsForCameraPos(scene.size_deprecated, rotatedCenter, unitRot);
|
|
32
32
|
const bounds = bounds3FromPosAndSize(center, size);
|
|
33
33
|
const dxfOriginOffset = originOffsetFromBounds(bounds, options.origin);
|
|
34
34
|
const pos = vec3NegateY(vec3Add(center, vec3Add(offset, dxfOriginOffset)));
|
|
@@ -42,7 +42,7 @@ function vec3NegateY(vec) {
|
|
|
42
42
|
return {
|
|
43
43
|
x: vec.x,
|
|
44
44
|
y: -vec.y,
|
|
45
|
-
z: vec.z
|
|
45
|
+
z: vec.z,
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
function originOffsetFromScenes(scenes, origin) {
|
|
@@ -107,7 +107,7 @@ function optionsDef(options) {
|
|
|
107
107
|
return {
|
|
108
108
|
view: options?.view ?? "front",
|
|
109
109
|
origin: options?.origin ?? "BottomLeftFront",
|
|
110
|
-
cylinderSideCount:
|
|
110
|
+
cylinderSideCount: DEFAULT_CIRCLE_SIDE_COUNT,
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
// This is the original
|
|
@@ -127,11 +127,11 @@ export const renderOld = (scene, options) => {
|
|
|
127
127
|
x: bounds.min.x + offset.x,
|
|
128
128
|
y: bounds.min.y + offset.y,
|
|
129
129
|
z: bounds.min.z + offset.z,
|
|
130
|
-
}
|
|
130
|
+
},
|
|
131
131
|
};
|
|
132
132
|
const bounds2 = bounds3FromPosAndSize(offset, scene.size_deprecated);
|
|
133
133
|
const groupRoot = group([], offset, vec3Zero, scene.groups);
|
|
134
|
-
const handleRef =
|
|
134
|
+
const handleRef = dxfHandleCreate();
|
|
135
135
|
return dxf(dxfGroup(groupRoot, center, unitRot, opts, handleRef), bounds2, scene.size_deprecated, center);
|
|
136
136
|
};
|
|
137
137
|
//# sourceMappingURL=dxf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EACd,QAAQ,EAGR,YAAY,EACZ,KAAK,EACL,aAAa,EACb,IAAI,EACJ,oBAAoB,EACpB,qBAAqB,EAErB,YAAY,EACZ,aAAa,EACb,OAAO,EACP,4BAA4B,EAC5B,WAAW,EACX,OAAO,GACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAqB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"dxf.js","sourceRoot":"","sources":["../../../src/renderers/dxf/dxf.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EACd,QAAQ,EAGR,YAAY,EACZ,KAAK,EACL,aAAa,EACb,IAAI,EACJ,oBAAoB,EACpB,qBAAqB,EAErB,YAAY,EACZ,aAAa,EACb,OAAO,EACP,4BAA4B,EAC5B,WAAW,EACX,OAAO,EACP,OAAO,GACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,GAAG,EAAE,eAAe,EAAqB,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAczD,MAAM,UAAU,YAAY,CAAC,MAA+B,EAAE,WAAkC;IAC9F,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,MAAM,SAAS,GAAG,KAAK,EAAW,CAAC;IACnC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC;IACrF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAC7C,IAAI,CAAC,KAAK,EACV,UAAU,CAAC,EAAE,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EACjE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAC/B,MAAM,CACP,CAAC;QACF,SAAS,IAAI,MAAM,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1C,OAAO,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,OAA8B,EAAU,EAAE;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAC1F,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,KAAY,EACZ,OAAmB,EACnB,MAAY,EACZ,SAAiB,EACwD,EAAE;IAC3E,MAAM,OAAO,GAAG,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CAAC;IAC1G,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CAAC;IACpH,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,4BAA4B,CAAC,KAAK,CAAC,eAAe,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACnG,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;QAC5F,IAAI;QACJ,MAAM,EAAE,GAAG;KACZ,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,GAAS;IAC5B,OAAO;QACL,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACT,CAAC,EAAE,GAAG,CAAC,CAAC;KACT,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA+B,EAAE,MAAiB;IAChF,MAAM,SAAS,GAAG,KAAK,EAAW,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;QACzC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,sBAAsB,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAe,EAAE,MAAiB;IAChE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,CAAQ,EAAE,SAAe,EAAE,SAAe,EAAE,OAAmB,EAAE,SAAiB;IAClG,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;IAEzD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAClC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACnE,MAAM;YACR,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACjE,MAAM;YACR,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACjG,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC7F,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACrE,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACpD,MAAM;YACR,CAAC;YACD;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACnC,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,OAAyC;IAC3D,OAAO;QACL,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,OAAO;QAC9B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,iBAAiB;QAC5C,iBAAiB,EAAE,yBAAyB;KAC7C,CAAC;AACJ,CAAC;AAED,uBAAuB;AACvB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,OAA8B,EAAU,EAAE;IAChF,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC;IACnD,MAAM,OAAO,GAAG,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CAAC;IACvG,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,OAAO,CACpB,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EACzG,MAAM,CACP,CAAC;IAEF,MAAM,SAAS,GAAY;QACzB,GAAG,EAAE;YACH,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;YAC1B,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;YAC1B,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;SAC3B;QACD,GAAG,EAAE;YACH,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;YAC1B,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;YAC1B,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;SAC3B;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAC5G,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-encoding.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg-encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,IAAI,EAEJ,IAAI,EAKJ,IAAI,EAGL,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,GAAG,GAAI,KAAK,IAAI,EAAE,MAAM,IAAI,EAAE,UAAU,MAAM,KAAG,MAI7D,CAAC;AACF,eAAO,MAAM,OAAO,GAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,QAAQ,MAAM,EAAE,aAAa,MAAM,KAAG,MAGxB,CAAC;AAE3D,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"svg-encoding.d.ts","sourceRoot":"","sources":["../../../src/renderers/svg/svg-encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,IAAI,EAEJ,IAAI,EAKJ,IAAI,EAGL,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,GAAG,GAAI,KAAK,IAAI,EAAE,MAAM,IAAI,EAAE,UAAU,MAAM,KAAG,MAI7D,CAAC;AACF,eAAO,MAAM,OAAO,GAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,QAAQ,MAAM,EAAE,aAAa,MAAM,KAAG,MAGxB,CAAC;AAE3D,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC1B,MAAM,CAWR;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAC1B,MAAM,CASR;AA4CD,eAAO,MAAM,UAAU,GACrB,QAAQ,MAAM,EACd,KAAK,IAAI,EACT,MAAM,MAAM,EACZ,QAAQ,MAAM,EACd,aAAa,MAAM,EACnB,QAAQ,aAAa,CAAC,IAAI,CAAC,KAC1B,MAGsE,CAAC;AA8C1E,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MACyD,CAAC;AAEhK,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,eAAO,MAAM,QAAQ,GAAI,GAAG,IAAI,EAAE,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,EAAE,QAAQ,IAAI,KAAG,MAM3F,CAAC"}
|
|
@@ -7,17 +7,57 @@ export const svgLine = (p1, p2, stroke, strokeWidth) => `<line x1="${p1.x.toFixe
|
|
|
7
7
|
export function svgPolygon(rot, points, fill, opacity, stroke, strokeWidth, holes) {
|
|
8
8
|
const bounds = bounds2FromVec2Array(points);
|
|
9
9
|
const size = vec2Sub(bounds.max, bounds.min);
|
|
10
|
+
const pos = vec2Scale(vec2Add(bounds.max, bounds.min), 0.5);
|
|
10
11
|
const [mask, maskAttribute] = svgHoleMask(rot, size, holes ?? []);
|
|
11
12
|
const pol = `<polygon points="${points
|
|
12
13
|
.reduce((a, c) => (a += `${c.x.toFixed(0)},${c.y.toFixed(0)} `), "")
|
|
13
14
|
.slice(0, -1)}" fill="${fill}" fill-opacity="${opacity.toFixed(1)}" stroke="${stroke}" stroke-width="${strokeWidth}" ${maskAttribute}/>`;
|
|
14
|
-
return mask + pol;
|
|
15
|
+
return mask + pol + svgStrokedHoles(pos, rot, holes ?? [], stroke, strokeWidth);
|
|
15
16
|
}
|
|
16
17
|
export function svgCircle(radius, rot, pos, fill, opacity, stroke, strokeWidth, holes) {
|
|
17
18
|
const size = vec2Scale(vec2(radius, radius), 2);
|
|
18
19
|
const [mask, maskAttribute] = svgHoleMask(rot, size, holes ?? []);
|
|
19
20
|
const cir = `<circle r="${radius.toFixed(0)}" cx="${pos.x.toFixed(0)}" cy="${pos.y.toFixed(0)}" fill="${fill}" fill-opacity="${opacity.toFixed(1)}" stroke="${stroke}" stroke-width="${strokeWidth}" ${maskAttribute}/>`;
|
|
20
|
-
return mask + cir;
|
|
21
|
+
return mask + cir + svgStrokedHoles(pos, rot, holes ?? [], stroke, strokeWidth);
|
|
22
|
+
}
|
|
23
|
+
function svgStrokedHoles(pos, rot, holes, strokeColor, strokeThickness) {
|
|
24
|
+
if (strokeThickness <= Number.EPSILON) {
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
27
|
+
let svgHoles = "";
|
|
28
|
+
for (const hole of holes) {
|
|
29
|
+
const matrix = svgTrsMatrix(vec2Add(pos, hole.pos), rot);
|
|
30
|
+
switch (hole.type) {
|
|
31
|
+
case "RoundHole": {
|
|
32
|
+
svgHoles += `<circle
|
|
33
|
+
r="${hole.radius.toFixed(0)}"
|
|
34
|
+
transform="${matrix}"
|
|
35
|
+
fill="none"
|
|
36
|
+
stroke="${strokeColor}"
|
|
37
|
+
stroke-width="${strokeThickness}"
|
|
38
|
+
/>`;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
case "SquareHole": {
|
|
42
|
+
const half = vec2Scale(hole.size, 0.5);
|
|
43
|
+
const points = [
|
|
44
|
+
vec2(-half.x, half.y),
|
|
45
|
+
vec2(half.x, half.y),
|
|
46
|
+
vec2(half.x, -half.y),
|
|
47
|
+
vec2(-half.x, -half.y),
|
|
48
|
+
].map(((p) => `${p.x.toFixed(0)},${p.y.toFixed(0)}`)).join(" ");
|
|
49
|
+
svgHoles += `<polygon
|
|
50
|
+
points="${points}"
|
|
51
|
+
transform="${matrix}"
|
|
52
|
+
fill="none"
|
|
53
|
+
stroke="${strokeColor}"
|
|
54
|
+
stroke-width="${strokeThickness}"
|
|
55
|
+
/>`;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return svgHoles;
|
|
21
61
|
}
|
|
22
62
|
export const svgCircle2 = (radius, pos, fill, stroke, strokeWidth, holes) => `<circle r="${radius.toFixed(0)}" cx="${pos.x.toFixed(0)}" cy="${pos.y.toFixed(0)}" fill="${fill}" stroke="${stroke}" stroke-width="${strokeWidth}" />`;
|
|
23
63
|
function svgHoleMask(rot, size, holes) {
|