@mlightcad/cad-pdf-plugin 1.7.8-preview.6 → 1.8.0-preview.0

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.
@@ -1,425 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
- return new (P || (P = Promise))(function (resolve, reject) {
15
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
- step((generator = generator.apply(thisArg, _arguments || [])).next());
19
- });
20
- };
21
- var __generator = (this && this.__generator) || function (thisArg, body) {
22
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
- function verb(n) { return function (v) { return step([n, v]); }; }
25
- function step(op) {
26
- if (f) throw new TypeError("Generator is already executing.");
27
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
- if (y = 0, t) op = [op[0] & 2, t.value];
30
- switch (op[0]) {
31
- case 0: case 1: t = op; break;
32
- case 4: _.label++; return { value: op[1], done: false };
33
- case 5: _.label++; y = op[1]; op = [0]; continue;
34
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
- default:
36
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
- if (t[2]) _.ops.pop();
41
- _.trys.pop(); continue;
42
- }
43
- op = body.call(thisArg, _);
44
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
- }
47
- };
48
- var __read = (this && this.__read) || function (o, n) {
49
- var m = typeof Symbol === "function" && o[Symbol.iterator];
50
- if (!m) return o;
51
- var i = m.call(o), r, ar = [], e;
52
- try {
53
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
54
- }
55
- catch (error) { e = { error: error }; }
56
- finally {
57
- try {
58
- if (r && !r.done && (m = i["return"])) m.call(i);
59
- }
60
- finally { if (e) throw e.error; }
61
- }
62
- return ar;
63
- };
64
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
65
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
66
- if (ar || !(i in from)) {
67
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
68
- ar[i] = from[i];
69
- }
70
- }
71
- return to.concat(ar || Array.prototype.slice.call(from));
72
- };
73
- var __values = (this && this.__values) || function(o) {
74
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
75
- if (m) return m.call(o);
76
- if (o && typeof o.length === "number") return {
77
- next: function () {
78
- if (o && i >= o.length) o = void 0;
79
- return { value: o && o[i++], done: !o };
80
- }
81
- };
82
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
83
- };
84
- import { MTextColor } from '@mlightcad/mtext-parser';
85
- import { AcTrMTextRenderer } from '@mlightcad/three-renderer';
86
- /**
87
- * Turns the viewer's already-initialized mtext renderer into PDF glyph
88
- * geometry so TEXT/MTEXT are not dropped during export.
89
- *
90
- * Geometry is emitted as flat float32 buffers relative to the text's own
91
- * insertion point. Large drawings carry tens of thousands of MTEXT instances;
92
- * the previous per-triangle object graphs (`{x, y}` points inside
93
- * per-primitive arrays) retained ~25 objects per triangle in the renderer's
94
- * glyph cache and exhausted the tab's heap. Buffers are shared by reference
95
- * across identical texts, so a drawing's unique text content costs ~24 bytes
96
- * per triangle.
97
- */
98
- export function createViewerPdfGlyphProvider() {
99
- var empty = {
100
- triangles: new Float32Array(0),
101
- polylines: new Float32Array(0)
102
- };
103
- var emptyBox = { min: { x: 0, y: 0 }, max: { x: 0, y: 0 } };
104
- return {
105
- renderMText: function (data, style, colorSettings) {
106
- return __awaiter(this, void 0, void 0, function () {
107
- var renderer, object, contents, _a, primitives, colorGroups, box, error_1, contents;
108
- var _b, _c, _d, _e;
109
- return __generator(this, function (_f) {
110
- switch (_f.label) {
111
- case 0:
112
- _f.trys.push([0, 2, , 3]);
113
- renderer = AcTrMTextRenderer.getInstance();
114
- return [4 /*yield*/, renderer.asyncRenderMText(
115
- // AcGi and mtext-renderer attachment enums are structurally compatible
116
- // at runtime but diverge in the TypeScript type graph.
117
- __assign(__assign({}, data), { meshGlyphOutputMode: 'merge' }), style, toMTextColorSettings(colorSettings))];
118
- case 1:
119
- object = (_f.sent());
120
- contents = data.contents ||
121
- data.text ||
122
- '';
123
- _a = extractGlyphPrimitives(object, (_c = (_b = data.position) === null || _b === void 0 ? void 0 : _b.x) !== null && _c !== void 0 ? _c : 0, (_e = (_d = data.position) === null || _d === void 0 ? void 0 : _d.y) !== null && _e !== void 0 ? _e : 0), primitives = _a.primitives, colorGroups = _a.colorGroups, box = _a.box;
124
- return [2 /*return*/, { primitives: primitives, colorGroups: colorGroups, actualText: contents, box: box }];
125
- case 2:
126
- error_1 = _f.sent();
127
- contents = data.contents ||
128
- data.text ||
129
- '';
130
- console.warn('[cad-pdf-plugin] MTEXT glyph render failed; vector geometry omitted', error_1 instanceof Error ? error_1.message : error_1);
131
- return [2 /*return*/, { primitives: empty, actualText: contents, box: emptyBox }];
132
- case 3: return [2 /*return*/];
133
- }
134
- });
135
- });
136
- },
137
- renderShape: function (shape, style) {
138
- return __awaiter(this, void 0, void 0, function () {
139
- var renderer, object, _a, primitives, box, error_2;
140
- var _b, _c, _d, _e;
141
- return __generator(this, function (_f) {
142
- switch (_f.label) {
143
- case 0:
144
- _f.trys.push([0, 2, , 3]);
145
- renderer = AcTrMTextRenderer.getInstance();
146
- return [4 /*yield*/, renderer.asyncRenderShape(shape, (style !== null && style !== void 0 ? style : {}))];
147
- case 1:
148
- object = (_f.sent());
149
- _a = extractGlyphPrimitives(object, (_c = (_b = shape.position) === null || _b === void 0 ? void 0 : _b.x) !== null && _c !== void 0 ? _c : 0, (_e = (_d = shape.position) === null || _d === void 0 ? void 0 : _d.y) !== null && _e !== void 0 ? _e : 0), primitives = _a.primitives, box = _a.box;
150
- return [2 /*return*/, { primitives: primitives, box: box }];
151
- case 2:
152
- error_2 = _f.sent();
153
- console.warn('[cad-pdf-plugin] SHAPE glyph render failed; vector geometry omitted', error_2 instanceof Error ? error_2.message : error_2);
154
- return [2 /*return*/, { primitives: empty, box: emptyBox }];
155
- case 3: return [2 /*return*/];
156
- }
157
- });
158
- });
159
- }
160
- };
161
- }
162
- function toMTextColorSettings(settings) {
163
- if (!settings) {
164
- return undefined;
165
- }
166
- var color = new MTextColor();
167
- if (settings.entityIsByLayer) {
168
- color.aci = 256;
169
- }
170
- else if (settings.entityIsByBlock) {
171
- color.aci = 0;
172
- }
173
- else if (settings.entityIsForeground) {
174
- color.aci = 7;
175
- }
176
- else if (typeof settings.entityAci === 'number') {
177
- color.aci = settings.entityAci;
178
- }
179
- else if (typeof settings.entityRgb === 'number') {
180
- color.rgbValue = settings.entityRgb;
181
- }
182
- else {
183
- color.aci = 7;
184
- }
185
- return {
186
- color: color,
187
- byLayerColor: settings.byLayerColor,
188
- byBlockColor: settings.byBlockColor,
189
- layer: settings.layer
190
- };
191
- }
192
- /**
193
- * Builds flat triangle/polyline buffers from the rendered scene graph,
194
- * baking each node's world matrix and translating the result so (0,0) is the
195
- * text's insertion point. Geometry is also grouped by material colour so
196
- * inline `\C` overrides survive vector PDF export.
197
- */
198
- function extractGlyphPrimitives(root, originX, originY) {
199
- var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
200
- var _e, _f, _g;
201
- (_e = root.updateMatrixWorld) === null || _e === void 0 ? void 0 : _e.call(root, true);
202
- var sources = [];
203
- var triangleFloatsByColor = new Map();
204
- var lineFloatsByColor = new Map();
205
- root.traverse(function (node) {
206
- var _a, _b, _c, _d, _e;
207
- var geom = node.geometry;
208
- if (!geom) {
209
- return;
210
- }
211
- var pos = geom.getAttribute('position');
212
- if (!pos || pos.count < 1) {
213
- return;
214
- }
215
- var rgb = (_a = readMaterialRgb(node)) !== null && _a !== void 0 ? _a : 0xffffff;
216
- if (node.isMesh) {
217
- var index = geom.getIndex();
218
- var triCount = index ? index.count / 3 : Math.floor(pos.count / 3);
219
- if (triCount < 1) {
220
- return;
221
- }
222
- sources.push({
223
- elements: (_b = node.matrixWorld) === null || _b === void 0 ? void 0 : _b.elements,
224
- pos: pos,
225
- index: index,
226
- isMesh: true,
227
- isSegments: false,
228
- rgb: rgb
229
- });
230
- triangleFloatsByColor.set(rgb, ((_c = triangleFloatsByColor.get(rgb)) !== null && _c !== void 0 ? _c : 0) + triCount * 6);
231
- return;
232
- }
233
- if (node.isLine) {
234
- var segments = !!node.isLineSegments;
235
- sources.push({
236
- elements: (_d = node.matrixWorld) === null || _d === void 0 ? void 0 : _d.elements,
237
- pos: pos,
238
- index: null,
239
- isMesh: false,
240
- isSegments: segments,
241
- rgb: rgb
242
- });
243
- var floats = segments
244
- ? Math.floor(pos.count / 2) * 5
245
- : pos.count * 2 + 1;
246
- lineFloatsByColor.set(rgb, ((_e = lineFloatsByColor.get(rgb)) !== null && _e !== void 0 ? _e : 0) + floats);
247
- }
248
- });
249
- var colors = __spreadArray([], __read(new Set(__spreadArray(__spreadArray([], __read(triangleFloatsByColor.keys()), false), __read(lineFloatsByColor.keys()), false))), false);
250
- var groups = new Map();
251
- try {
252
- for (var colors_1 = __values(colors), colors_1_1 = colors_1.next(); !colors_1_1.done; colors_1_1 = colors_1.next()) {
253
- var rgb = colors_1_1.value;
254
- groups.set(rgb, {
255
- triangles: new Float32Array((_f = triangleFloatsByColor.get(rgb)) !== null && _f !== void 0 ? _f : 0),
256
- polylines: new Float32Array((_g = lineFloatsByColor.get(rgb)) !== null && _g !== void 0 ? _g : 0),
257
- triOffset: 0,
258
- lineOffset: 0
259
- });
260
- }
261
- }
262
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
263
- finally {
264
- try {
265
- if (colors_1_1 && !colors_1_1.done && (_a = colors_1.return)) _a.call(colors_1);
266
- }
267
- finally { if (e_1) throw e_1.error; }
268
- }
269
- var minX = Infinity;
270
- var minY = Infinity;
271
- var maxX = -Infinity;
272
- var maxY = -Infinity;
273
- var expand = function (x, y) {
274
- if (x < minX)
275
- minX = x;
276
- if (y < minY)
277
- minY = y;
278
- if (x > maxX)
279
- maxX = x;
280
- if (y > maxY)
281
- maxY = y;
282
- };
283
- var _loop_1 = function (source) {
284
- var group = groups.get(source.rgb);
285
- if (!group)
286
- return "continue";
287
- var el = source.elements;
288
- var pos = source.pos;
289
- var world = function (i) {
290
- var x = pos.getX(i);
291
- var y = pos.getY(i);
292
- if (!el) {
293
- return { x: x, y: y };
294
- }
295
- var z = pos.getZ(i);
296
- var w = el[3] * x + el[7] * y + el[11] * z + el[15];
297
- var invW = w === 0 ? 1 : 1 / w;
298
- return {
299
- x: (el[0] * x + el[4] * y + el[8] * z + el[12]) * invW,
300
- y: (el[1] * x + el[5] * y + el[9] * z + el[13]) * invW
301
- };
302
- };
303
- if (source.isMesh) {
304
- var count = source.index
305
- ? source.index.count / 3
306
- : Math.floor(pos.count / 3);
307
- for (var t = 0; t < count; t++) {
308
- for (var k = 0; k < 3; k++) {
309
- var vi = source.index ? source.index.getX(t * 3 + k) : t * 3 + k;
310
- var p = world(vi);
311
- var x = p.x - originX;
312
- var y = p.y - originY;
313
- group.triangles[group.triOffset++] = x;
314
- group.triangles[group.triOffset++] = y;
315
- expand(x, y);
316
- }
317
- }
318
- }
319
- else if (source.isSegments) {
320
- var pairCount = Math.floor(pos.count / 2);
321
- for (var s = 0; s < pairCount; s++) {
322
- group.polylines[group.lineOffset++] = 2;
323
- for (var k = 0; k < 2; k++) {
324
- var p = world(s * 2 + k);
325
- var x = p.x - originX;
326
- var y = p.y - originY;
327
- group.polylines[group.lineOffset++] = x;
328
- group.polylines[group.lineOffset++] = y;
329
- expand(x, y);
330
- }
331
- }
332
- }
333
- else {
334
- group.polylines[group.lineOffset++] = pos.count;
335
- for (var i = 0; i < pos.count; i++) {
336
- var p = world(i);
337
- var x = p.x - originX;
338
- var y = p.y - originY;
339
- group.polylines[group.lineOffset++] = x;
340
- group.polylines[group.lineOffset++] = y;
341
- expand(x, y);
342
- }
343
- }
344
- };
345
- try {
346
- for (var sources_1 = __values(sources), sources_1_1 = sources_1.next(); !sources_1_1.done; sources_1_1 = sources_1.next()) {
347
- var source = sources_1_1.value;
348
- _loop_1(source);
349
- }
350
- }
351
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
352
- finally {
353
- try {
354
- if (sources_1_1 && !sources_1_1.done && (_b = sources_1.return)) _b.call(sources_1);
355
- }
356
- finally { if (e_2) throw e_2.error; }
357
- }
358
- var colorGroups = [];
359
- var totalTri = 0;
360
- var totalLine = 0;
361
- try {
362
- for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
363
- var _h = __read(groups_1_1.value, 2), rgb = _h[0], group = _h[1];
364
- var primitives_1 = {
365
- triangles: group.triangles,
366
- polylines: group.polylines
367
- };
368
- if (primitives_1.triangles.length >= 6 || primitives_1.polylines.length >= 2) {
369
- colorGroups.push({ rgb: rgb, primitives: primitives_1 });
370
- }
371
- totalTri += group.triangles.length;
372
- totalLine += group.polylines.length;
373
- }
374
- }
375
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
376
- finally {
377
- try {
378
- if (groups_1_1 && !groups_1_1.done && (_c = groups_1.return)) _c.call(groups_1);
379
- }
380
- finally { if (e_3) throw e_3.error; }
381
- }
382
- // Combined buffers keep callers that ignore colorGroups working.
383
- var triangles = new Float32Array(totalTri);
384
- var polylines = new Float32Array(totalLine);
385
- var triOffset = 0;
386
- var lineOffset = 0;
387
- try {
388
- for (var colorGroups_1 = __values(colorGroups), colorGroups_1_1 = colorGroups_1.next(); !colorGroups_1_1.done; colorGroups_1_1 = colorGroups_1.next()) {
389
- var group = colorGroups_1_1.value;
390
- triangles.set(group.primitives.triangles, triOffset);
391
- triOffset += group.primitives.triangles.length;
392
- polylines.set(group.primitives.polylines, lineOffset);
393
- lineOffset += group.primitives.polylines.length;
394
- }
395
- }
396
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
397
- finally {
398
- try {
399
- if (colorGroups_1_1 && !colorGroups_1_1.done && (_d = colorGroups_1.return)) _d.call(colorGroups_1);
400
- }
401
- finally { if (e_4) throw e_4.error; }
402
- }
403
- var primitives = { triangles: triangles, polylines: polylines };
404
- var box = Number.isFinite(minX)
405
- ? { min: { x: minX, y: minY }, max: { x: maxX, y: maxY } }
406
- : { min: { x: 0, y: 0 }, max: { x: 0, y: 0 } };
407
- return {
408
- primitives: primitives,
409
- // Always surface groups when present so a lone `\C256` green run is not
410
- // painted with the entity fill (often ACI 7 white).
411
- colorGroups: colorGroups.length > 0 ? colorGroups : undefined,
412
- box: box
413
- };
414
- }
415
- function readMaterialRgb(node) {
416
- var _a, _b;
417
- var material = node.material;
418
- if (!material) {
419
- return undefined;
420
- }
421
- var first = Array.isArray(material) ? material[0] : material;
422
- var hex = (_b = (_a = first === null || first === void 0 ? void 0 : first.color) === null || _a === void 0 ? void 0 : _a.getHex) === null || _b === void 0 ? void 0 : _b.call(_a);
423
- return typeof hex === 'number' ? hex : undefined;
424
- }
425
- //# sourceMappingURL=AcApPdfGlyphProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AcApPdfGlyphProvider.js","sourceRoot":"","sources":["../src/AcApPdfGlyphProvider.ts"],"names":[],"mappings":"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"}