xl-public-utils 1.0.5 → 1.0.6

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/index.d.ts CHANGED
@@ -1,4 +1,8 @@
1
+ import vtkInteractorStyleManipulator from "@kitware/vtk.js/Interaction/Style/InteractorStyleManipulator";
2
+ import { vec3, mat4, mat3 } from "gl-matrix";
1
3
  import vtkRenderer from "@kitware/vtk.js/Rendering/Core/Renderer";
4
+ import vtkRenderWindowInteractor from "@kitware/vtk.js/Rendering/Core/RenderWindowInteractor";
5
+ import vtkPolyData from "@kitware/vtk.js/Common/DataModel/PolyData";
2
6
  declare module "xl-public-utils" {
3
7
  export interface QrCodeOptions {
4
8
  /** 二维码类型,具体支持请查看文档 */
@@ -50,7 +54,7 @@ declare module "xl-public-utils" {
50
54
  textContent?: string;
51
55
  }
52
56
 
53
- export namespace vtk {
57
+ export namespace vtkUtils {
54
58
  /**
55
59
  * 计算屏幕坐标到三维坐标
56
60
  * @param {vtkRenderer} renderer vtkRenderer
@@ -65,7 +69,6 @@ declare module "xl-public-utils" {
65
69
  y: number,
66
70
  z: number
67
71
  ): [number, number, number];
68
-
69
72
  /**
70
73
  * 计算三维坐标到屏幕坐标
71
74
  * @param {vtkRenderer} renderer vtkRenderer
@@ -80,15 +83,547 @@ declare module "xl-public-utils" {
80
83
  y: number,
81
84
  z: number
82
85
  ): [number, number, number];
86
+ /**
87
+ * 计算 w2l(word 2 local, word to local) 的变换矩阵
88
+ * @param {vec3} center 中心点
89
+ * @param {vec3} xaxis x轴
90
+ * @param {vec3} yaxis y轴
91
+ * @param {vec3} zaxis z轴
92
+ * @returns { mat4 } 变换矩阵
93
+ */
94
+ export function getW2LMatrix(
95
+ center: vec3,
96
+ xaxis: vec3,
97
+ yaxis: vec3,
98
+ zaxis: vec3
99
+ ): mat4;
100
+ /**
101
+ * 计算 l2w(local 2 word, local to word) 的变换矩阵
102
+ * @param {vec3} center 中心点
103
+ * @param {vec3} xaxis x轴
104
+ * @param {vec3} yaxis y轴
105
+ * @param {vec3} zaxis z轴
106
+ * @returns { mat4 } 变换矩阵
107
+ */
108
+ export function getL2WMatrix(
109
+ center: vec3,
110
+ xaxis: vec3,
111
+ yaxis: vec3,
112
+ zaxis: vec3
113
+ ): mat4;
114
+ /**
115
+ * 返回交互的interactorStyle
116
+ * @returns {vtkInteractorStyleManipulator} 交互的interactorStyle
117
+ */
118
+ export function make3DInteractorStyle(): vtkInteractorStyleManipulator;
119
+ /**
120
+ * 移除并返回当前renderWindow的所有鼠标交互设定
121
+ * @param {vtkRenderWindowInteractor} interactor vtkRenderWindowInteractor
122
+ * @returns {any[]} 当前鼠标的所有交互Manipulators
123
+ */
124
+ export function removeMouseInteraction(
125
+ interactor: vtkRenderWindowInteractor
126
+ ): any[];
127
+ /**
128
+ * 给当前窗口设置交互Maintainers
129
+ * @param {vtkRenderWindowInteractor} interactor vtkRenderWindowInteractor
130
+ * @param {any[]} mm 所有的交互Maintainers
131
+ * @returns {void}
132
+ */
133
+ export function resetAllMouseMaintainers(
134
+ interactor: vtkRenderWindowInteractor,
135
+ mm: any[]
136
+ ): void;
137
+ /**
138
+ * 将点投影到平面上
139
+ * @param {vec3} point 需要投影的点
140
+ * @param {vec3} origin 平面中心点
141
+ * @param {vec3} normal 平面法向量
142
+ * @returns {vec3} 投影到平面之后的点
143
+ */
144
+ export function projectPointToPlane(
145
+ point: vec3,
146
+ origin: vec3,
147
+ normal: vec3
148
+ ): vec3;
149
+ /**
150
+ * 将向量投影到面上
151
+ *
152
+ * @param {vec3} vec - The vector to project.
153
+ * @param {vec3} norm - The normal vector of the plane (assumed to be normalized).
154
+ * @returns {vec3} - The projected vector on the plane.
155
+ */
156
+ export function projectVecToPlane(vec: vec3, norm: vec3): vec3;
157
+ /**
158
+ * 将直线外一点投影到直线(两个点)上
159
+ * @param {vec3} point 直线外一点
160
+ * @param {vec3} begin 直线开始点
161
+ * @param {vec3} end 直线结束点
162
+ * @returns {vec3} 投影后的点
163
+ */
164
+ export function projectPointOnPoints(
165
+ point: vec3,
166
+ begin: vec3,
167
+ end: vec3
168
+ ): vec3;
169
+ /**
170
+ * 将点投影到直线(point+dir)上
171
+ * @param {vec3} point 直线外的点
172
+ * @param {vec3} linePoint 直线任意一点
173
+ * @param {vec3} lineDir 直线方向
174
+ * @returns {vec3} 投影到直线上后的点
175
+ */
176
+ export function projectPointToLine(
177
+ point: vec3,
178
+ linePoint: vec3,
179
+ lineDir: vec3
180
+ ): vec3;
181
+ /**
182
+ * 获取曲线外一点到曲线最近点的索引
183
+ * @param {vec3} point 曲线外一点
184
+ * @param {vec3[]} points 曲线
185
+ * @returns {number} 返回离点最近的曲线点索引
186
+ */
187
+ export function getPointToPointsMinIndex(
188
+ point: vec3,
189
+ points: vec3[]
190
+ ): number;
191
+ /**
192
+ * 获取点到曲线的最近距离
193
+ * @param {vec3} point 曲线外一点
194
+ * @param {vec3[]} points 曲线
195
+ * @returns {number} 返回点到曲线的最近距离
196
+ */
197
+ export function getPointToPointsMinDist(
198
+ point: vec3,
199
+ points: vec3[]
200
+ ): number;
201
+ /**
202
+ * 获取点到曲线的最近点
203
+ * @param {vec3} point 曲线外一点
204
+ * @param {vec3[]} points 曲线
205
+ * @returns {vec3} 返回点到曲线的最近点
206
+ */
207
+ export function getPointToPointsMinPoint(point: vec3, points: vec3[]): vec3;
208
+ /**
209
+ * 获取直线外一点到直线的距离
210
+ * @param {vec3} point 直线外一点
211
+ * @param {vec3} begin 直线开始点
212
+ * @param {vec3} end 直线结束点
213
+ * @returns {number} 点到直线的距离
214
+ */
215
+ export function getPointToLineDist(
216
+ point: vec3,
217
+ begin: vec3,
218
+ end: vec3
219
+ ): number;
220
+ /**
221
+ * 计算点到平面的距离
222
+ * @param {vec3} point 任意一点
223
+ * @param {vec3} origin 平面上一点
224
+ * @param {vec3} normal 平面法向量,要求单位化
225
+ * @returns {number}
226
+ */
227
+ export function getPointToPlaneDist(
228
+ point: vec3,
229
+ origin: vec3,
230
+ normal: vec3
231
+ ): number;
232
+ /**
233
+ * 对一个polydata应用矩阵变化,直接改变点位置
234
+ * @param {mat4} mt4 变换矩阵
235
+ * @param {vtkPolyData} data 需要应用变换的polydata
236
+ */
237
+ export function pointsApplyMat4(mt4: mat4, data: vtkPolyData): void;
238
+ /**
239
+ * 将点应用矩阵变换
240
+ * @param {vec3} point 三维点
241
+ * @param {mat4} matrix 变换矩阵
242
+ * @returns {vec3} 应用矩阵变换之后的点
243
+ */
244
+ export function pointTransformByMat4(point: vec3, matrix: mat4): vec3;
245
+ /**
246
+ * 将向量应用矩阵变换
247
+ * @param {vec3} vec 向量
248
+ * @param {mat4} matrix 变换矩阵
249
+ * @returns {vec3} 应用矩阵变换之后的向量
250
+ */
251
+ export function vecTransfromByMat4(vec: vec3, matrix: mat4): vec3;
252
+ /**
253
+ * 获取mesh的ply文件Blob
254
+ * @param {vtkPolyData} mesh 网格polydata
255
+ * @param {'ascii' | 'binary'} [format='ascii'] format 导出文件格式
256
+ * @returns {Blob} 网格的ply文件Blob
257
+ */
258
+ export function createPlyBlob(
259
+ mesh: vtkPolyData,
260
+ format?: "ascii" | "binary"
261
+ ): Blob;
262
+ /**
263
+ * 获取mesh的stl文件Blob,由于STL文件过大,只使用Binary格式
264
+ * @param {vtkPolyData} mesh 网格polydata
265
+ * @returns {Blob} 网格的BinarySTL文件Blob
266
+ */
267
+ export function createStlBlob(mesh: vtkPolyData): Blob;
268
+ /**
269
+ * 将网格压缩为drc文件,导出drc需要先加载draco_encode.js,并调用initDrcCoder初始化
270
+ * @param {vtkPolyData} mesh 网格文件
271
+ * @returns {Blob} drc文件
272
+ */
273
+ export function createDrcBlob(mesh: vtkPolyData): Blob;
274
+ /**
275
+ * 将网格输出为对应类型的Blob,均采用默认参数,导出drc需要先加载draco_encode.js,并调用initDrcCoder初始化
276
+ * @param {vtkPolyData} mesh 网格文件
277
+ * @param {'ply' | 'stl' | 'drc' } type 输出类型
278
+ * @returns {Blob} 对应类型的Blob
279
+ */
280
+ export function createMeshTypeBlob(
281
+ mesh: vtkPolyData,
282
+ type: "ply" | "stl" | "drc"
283
+ ): Blob;
284
+ /**
285
+ * 计算一组三维点的中心点
286
+ * @param {vec3[]} points 三维点数组
287
+ * @returns {vec3} 中心点
288
+ */
289
+ export function getPointsCenter(points: vec3[]): vec3;
290
+ /**
291
+ * @typedef Position
292
+ * @property {number} x 对应vtk坐标系的x值
293
+ * @property {number} y 对应vtk坐标系的y值
294
+ * @property {number} z 0
295
+ */
296
+ /**
297
+ * 计算js事件对应vtk事件的position
298
+ * @param {HTMLElement} el vtkViewDom
299
+ * @param {MouseEvent} event 二维鼠标事件
300
+ * @returns {Position} 对应vtk坐标系的xyz值
301
+ */
302
+ export function getScreenEventPositionFor(
303
+ el: HTMLElement,
304
+ event: MouseEvent
305
+ ): Position;
306
+ /**
307
+ * 将数值数组转换为vec3数组
308
+ * @param {number[] | Float32Array} dataList
309
+ * @returns {vec3[]} 格式化之后的数组
310
+ */
311
+ export function formatNumberArrayToVec3Array(
312
+ dataList: number[] | Float32Array
313
+ ): vec3[];
314
+ /**
315
+ * 简单的数值平均插值
316
+ * @param {number} from 开始数值
317
+ * @param {number} to 结束数值
318
+ * @param {number} step 步长
319
+ * @returns {number[]} 插值的数值
320
+ */
321
+ export function calculateSimpleLerp(
322
+ from: number,
323
+ to: number,
324
+ step: number
325
+ ): number[];
326
+ /**
327
+ * 将 mat3 解析为 3 个自由度的 欧拉角(Eular)(弧度)
328
+ * @param {mat3} rmat 3 * 3的矩阵
329
+ * @param {[number, number, number]} eular 输出的欧拉角度数(弧度)
330
+ * @returns {[number, number, number]} 3个自由度的欧拉角
331
+ * @example
332
+ * const mt4: mat4;
333
+ * const mt3 = mat3.fromMat4(mt3, mt4);
334
+ * mat3.transpose(mt3, mt3);
335
+ * let eular = [0, 0, 0];
336
+ * convMatrix2EularZYX(mt3, eular);
337
+ */
338
+ export function convMatrix2EularZYX(
339
+ rmat: mat3,
340
+ eular: [number, number, number]
341
+ ): [number, number, number];
342
+ /**
343
+ * 将欧拉角(Eular)转换为mat3
344
+ * @param {mat3} rmat 变换矩阵
345
+ * @param {number} xangle 对应欧拉角x 弧度
346
+ * @param {number} yangle 对应欧拉角y 弧度
347
+ * @param {number} zangle 对应欧拉加z 弧度
348
+ * @returns {mat3} 对应变换矩阵
349
+ * @example
350
+ * const rotateX = 0.5;
351
+ * const rotateY = 0.5;
352
+ * const rotateZ = 0.5;
353
+ * const mt3 = mat3.create();
354
+ * convEular2matrixZYX(mt3, [rotateX, rotateY, rotateZ])
355
+ */
356
+ export function convEular2matrixZYX(
357
+ rmat: mat3,
358
+ xangle: number,
359
+ yangle: number,
360
+ zangle: number
361
+ ): mat3;
362
+ /**
363
+ * 将drc
364
+ * @param {vtkPolyData} mesh 网格polyData
365
+ * @param {mat4} [matrix] 变换矩阵
366
+ * @returns {string} drc压缩之后的网格base64
367
+ */
368
+ export function enCodeMeshToBase64(
369
+ mesh: vtkPolyData,
370
+ matrix?: mat4
371
+ ): string;
372
+ /**
373
+ * 将一圈有序点按指定size进行平滑
374
+ * @param {vec3[]} points 一圈有序点
375
+ * @param {number} smaSize=3 平滑点的数量通常值为奇数
376
+ * @returns {vec3[]} 平滑之后的点
377
+ */
378
+ export function smaPoint(points: vec3[], smaSize?: number): vec3[];
379
+ /**
380
+ * 将一段有序点按指定size进行平滑
381
+ * @param {vec3[]} points 一段有序点
382
+ * @param {number} smaSize=3 平滑点的数量通常值为奇数
383
+ * @returns {vec3[]} 平滑之后的点
384
+ */
385
+ export function smaPointNotRound(points: vec3[], smaSize?: number): vec3[];
386
+ /**
387
+ * 表示一个包含三个轴向的对象
388
+ * @typedef {Object} AxisObject
389
+ * @property {vec3} x - x轴
390
+ * @property {vec3} y - y轴
391
+ * @property {vec3} z - z轴
392
+ */
393
+ /**
394
+ * 获取一个矩阵的三个轴向
395
+ * @param {mat4} matrix 4 * 4 的矩阵
396
+ * @returns {AxisObject} 三个轴向
397
+ */
398
+ export function getAxisFormMat4(matrix: mat4): AxisObject;
399
+ /**
400
+ * 计算 w2l(word 2 local, word to local) 的变换矩阵
401
+ * @param {vec3} center 中心点
402
+ * @param {vec3} xaxis x轴
403
+ * @param {vec3} yaxis y轴
404
+ * @param {vec3} zaxis z轴
405
+ * @returns { mat4 } 变换矩阵
406
+ */
407
+ export function getmatw2l(
408
+ center: vec3,
409
+ xaxis: vec3,
410
+ yaxis: vec3,
411
+ zaxis: vec3
412
+ ): mat4;
413
+ /**
414
+ * 计算 l2w(local 2 word, local to word) 的变换矩阵
415
+ * @param {vec3} center 中心点
416
+ * @param {vec3} xaxis x轴
417
+ * @param {vec3} yaxis y轴
418
+ * @param {vec3} zaxis z轴
419
+ * @returns { mat4 } 变换矩阵
420
+ */
421
+ export function getmatofl2w(
422
+ center: vec3,
423
+ xaxis: vec3,
424
+ yaxis: vec3,
425
+ zaxis: vec3
426
+ ): mat4;
427
+ export function deduplicatePolyData(data: vtkPolyData): vtkPolyData;
428
+ export type Position = {
429
+ /**
430
+ * 对应vtk坐标系的x值
431
+ */
432
+ x: number;
433
+ /**
434
+ * 对应vtk坐标系的y值
435
+ */
436
+ y: number;
437
+ /**
438
+ * 0
439
+ */
440
+ z: number;
441
+ };
442
+ /**
443
+ * 表示一个包含三个轴向的对象
444
+ */
445
+ export type AxisObject = {
446
+ /**
447
+ * - x轴
448
+ */
449
+ x: vec3;
450
+ /**
451
+ * - y轴
452
+ */
453
+ y: vec3;
454
+ /**
455
+ * - z轴
456
+ */
457
+ z: vec3;
458
+ };
459
+ }
460
+ export namespace drcUtils {
461
+
462
+ export type AttrOption = {
463
+ /**
464
+ * 颜色数组
465
+ */
466
+ colors?: number[];
467
+ /**
468
+ * 属性数组
469
+ */
470
+ generics?: number[];
471
+ /**
472
+ * 法向量数组
473
+ */
474
+ normals?: number[];
475
+ };
476
+ export type DrcMeshData = {
477
+ /**
478
+ * 网格面数组
479
+ */
480
+ faces: Uint32Array;
481
+ /**
482
+ * 网格点数组
483
+ */
484
+ vertices: Float32Array;
485
+ /**
486
+ * 颜色数组
487
+ */
488
+ colors?: Float32Array;
489
+ /**
490
+ * 属性数组
491
+ */
492
+ generics?: Float32Array;
493
+ /**
494
+ * 法向量数组
495
+ */
496
+ normals?: Float32Array;
497
+ };
498
+ export type Decoder = any;
499
+ export type Mesh = {
500
+ /**
501
+ * 点信息
502
+ */
503
+ vertices: number[][];
504
+ /**
505
+ * 面信息
506
+ */
507
+ faces: number[][];
508
+ };
509
+ /**
510
+ * @typedef {Object} AttrOption
511
+ * @property {number[]} [colors] 颜色数组
512
+ * @property {number[]} [generics] 属性数组
513
+ * @property {number[]} [normals] 法向量数组
514
+ */
515
+ /**
516
+ * 将数据进行压缩
517
+ * @param {number[]} vertices 网格点
518
+ * @param {number[]} faces 网格面,必须是三角化之后的面,每连续的三个点索引标识一个面
519
+ * @param {number} byteLength=14 byteLength 压缩率
520
+ * @param {AttrOption} [attr] 其他需要压缩的属性
521
+ * @returns {Int8Array} 压缩之后的DRC数据
522
+ */
523
+ export function enCodeMeshByVF(
524
+ vertices: number[],
525
+ faces: number[],
526
+ byteLength?: number,
527
+ attr?: AttrOption
528
+ ): Int8Array;
529
+ /**
530
+ * 使用drc压缩点
531
+ * @param {vec3[] | number[]} points 点数组
532
+ * @returns {Int8Array} 压缩之后的drc data
533
+ */
534
+ export function enCodePointCloud(points: vec3[] | number[]): Int8Array;
535
+ /**
536
+ * 解压drc格式的点云数据
537
+ * @param {ArrayBuffer} byteArray drc点数据
538
+ * @returns {Float32Array} 点数组
539
+ */
540
+ export function decodePointCloud(byteArray: ArrayBuffer): Float32Array;
541
+ /**
542
+ * @typedef {Object} DrcMeshData
543
+ * @property {Uint32Array} faces 网格面数组
544
+ * @property {Float32Array} vertices 网格点数组
545
+ * @property {Float32Array} [colors] 颜色数组
546
+ * @property {Float32Array} [generics] 属性数组
547
+ * @property {Float32Array} [normals] 法向量数组
548
+ */
549
+ /**
550
+ * 解压drc格式的网格数据
551
+ * @param {ArrayBuffer} byteArray drc网格数据
552
+ * @returns {DrcMeshData} 网格数据
553
+ */
554
+ export function decodeDrcBufferArray(byteArray: ArrayBuffer): DrcMeshData;
555
+ /**
556
+ * @typedef {Object} Decoder
557
+ */
558
+ /**
559
+ * 输入一个Drc数据,反会对应的解压器
560
+ * @param {ArrayBuffer} arrayBuffer 输入的数据
561
+ * @returns {Decoder} drc解压类
562
+ */
563
+ export function decodeBuffer(arrayBuffer: ArrayBuffer): Decoder;
564
+ /**
565
+ * 获取decoder中的属性
566
+ * @param {Decoder} dracoGeometry DRC Decoder
567
+ * @param {number} attributeId 需要获取的属性id
568
+ * @returns {Float32Array} 对应decoder中的属性
569
+ */
570
+ export function getDracoAttributeAsFloat32Array(
571
+ dracoGeometry: Decoder,
572
+ attributeId: number
573
+ ): Float32Array;
574
+ /**
575
+ * 将点数据使用drc压缩处理为 base64 string
576
+ * @param {vec3[] | number[]} points 点数据
577
+ * @returns {string} drc压缩之后的base64数据
578
+ */
579
+ export function enCloudPointTobase64(points: vec3[] | number[]): string;
580
+ /**
581
+ * @typedef {Object} Mesh
582
+ * @property {number[][]} vertices 点信息
583
+ * @property {number[][]} faces 面信息
584
+ */
585
+ /**
586
+ * 使用drc压缩网格信息
587
+ * @param {Mesh | vtkPolyData} mesh
588
+ * @param {number} byteLength=14 压缩率
589
+ * @param {AttrOption} [attr] 其他需要压缩的属性
590
+ * @returns {Int8Array} 压缩之后的DRC数据
591
+ */
592
+ export function enCodeMesh(
593
+ mesh: Mesh | vtkPolyData,
594
+ byteLength?: number,
595
+ attr?: AttrOption
596
+ ): Int8Array;
597
+ /**
598
+ * 初始化Draco文件
599
+ */
600
+ export function initDrcCoder(): void;
83
601
  }
84
602
 
85
- export namespace public {
603
+ export namespace utils {
86
604
  /**
87
605
  * 获取当前屏幕分辨率(百分制,默认100)
88
606
  * @returns {number} 当前屏幕分辨率
89
607
  */
90
608
  export function getRatio(): number;
91
-
609
+ /**
610
+ * 将Base64转换为ArrayBuffer
611
+ * @param {string} base64String
612
+ * @returns {ArrayBuffer} base64的ArrayBuffer
613
+ */
614
+ export function base64ToArrayBuffer(base64String: string): ArrayBuffer;
615
+ /**
616
+ * 将Int8Array转换为Base64格式的字符串
617
+ * @param {Int8Array} int8
618
+ * @returns {string} base64格式的字符串
619
+ */
620
+ export function int8ArrayToBase64(int8: Int8Array): string;
621
+ /**
622
+ * 将ArrayBuffer转换为Base64格式的字符串
623
+ * @param {ArrayBuffer} outputBuffer
624
+ * @returns {string} base64格式的字符串
625
+ */
626
+ export function arrayBufferToBase64(outputBuffer: ArrayBuffer): string;
92
627
  /**
93
628
  * 获取当前屏幕分辨率(百分制,默认100)
94
629
  * @returns {number} 当前屏幕分辨率
@@ -197,87 +732,170 @@ declare module "xl-public-utils" {
197
732
  setopts?(options: RenderOptions): void;
198
733
  scale(sx: number, sy: number): [number, number] | null;
199
734
  measure(
200
- str: string,
201
- font: string,
202
- fwidth: number,
203
- fheight: number,
735
+ str: string,
736
+ font: string,
737
+ fwidth: number,
738
+ fheight: number
204
739
  ): { width: number; ascent: number; descent: number };
205
740
  init(width: number, height: number): void;
206
- line(x0: number, y0: number, x1: number, y1: number, lw: number, rgb: string): void;
741
+ line(
742
+ x0: number,
743
+ y0: number,
744
+ x1: number,
745
+ y1: number,
746
+ lw: number,
747
+ rgb: string
748
+ ): void;
207
749
  polygon(pts: Array<[number, number]>): void;
208
- hexagon(pts: [[number, number], [number, number], [number, number], [number, number], [number, number]]): void;
750
+ hexagon(
751
+ pts: [
752
+ [number, number],
753
+ [number, number],
754
+ [number, number],
755
+ [number, number],
756
+ [number, number]
757
+ ]
758
+ ): void;
209
759
  ellipse(x: number, y: number, rx: number, ry: number, ccw: boolean): void;
210
760
  fill(rgb: string): void;
211
- text(x: number, y: number, str: string, rgb: string, font: { name: string; width: number; height: number; dx: number },): void;
761
+ text(
762
+ x: number,
763
+ y: number,
764
+ str: string,
765
+ rgb: string,
766
+ font: { name: string; width: number; height: number; dx: number }
767
+ ): void;
212
768
  end(): T;
213
769
  }
214
-
770
+
215
771
  export function toSVG(opts: RenderOptions): string;
216
772
  export function drawingSVG(): DrawingContext<string>;
217
773
 
218
774
  // platform-specific exports
219
- export function toCanvas(canvas: string | HTMLCanvasElement, opts: RenderOptions): HTMLCanvasElement;
220
- export function drawingCanvas(canvas: string | HTMLCanvasElement): DrawingContext<HTMLCanvasElement>;
221
-
222
- export function datamatrix(canvas: string | HTMLCanvasElement, opts: RenderOptions): HTMLCanvasElement;
223
- export function datamatrix<T>(opts: RenderOptions, drawing: DrawingContext<Promise<T>>): Promise<T>;
224
- export function datamatrix<T>(opts: RenderOptions, drawing: DrawingContext<T>): T;
225
-
226
-
227
- export function qrcode(canvas: string | HTMLCanvasElement, opts: RenderOptions): HTMLCanvasElement;
228
- export function qrcode<T>(opts: RenderOptions, drawing: DrawingContext<Promise<T>>): Promise<T>;
229
- export function qrcode<T>(opts: RenderOptions, drawing: DrawingContext<T>): T;
230
- export function render<T>(params: RenderOptions, drawing: DrawingContext<T>): T;
775
+ export function toCanvas(
776
+ canvas: string | HTMLCanvasElement,
777
+ opts: RenderOptions
778
+ ): HTMLCanvasElement;
779
+ export function drawingCanvas(
780
+ canvas: string | HTMLCanvasElement
781
+ ): DrawingContext<HTMLCanvasElement>;
782
+
783
+ export function datamatrix(
784
+ canvas: string | HTMLCanvasElement,
785
+ opts: RenderOptions
786
+ ): HTMLCanvasElement;
787
+ export function datamatrix<T>(
788
+ opts: RenderOptions,
789
+ drawing: DrawingContext<Promise<T>>
790
+ ): Promise<T>;
791
+ export function datamatrix<T>(
792
+ opts: RenderOptions,
793
+ drawing: DrawingContext<T>
794
+ ): T;
795
+
796
+ export function qrcode(
797
+ canvas: string | HTMLCanvasElement,
798
+ opts: RenderOptions
799
+ ): HTMLCanvasElement;
800
+ export function qrcode<T>(
801
+ opts: RenderOptions,
802
+ drawing: DrawingContext<Promise<T>>
803
+ ): Promise<T>;
804
+ export function qrcode<T>(
805
+ opts: RenderOptions,
806
+ drawing: DrawingContext<T>
807
+ ): T;
808
+ export function render<T>(
809
+ params: RenderOptions,
810
+ drawing: DrawingContext<T>
811
+ ): T;
231
812
  export function raw(
232
813
  bcid: string,
233
814
  text: string,
234
- opts?: BwippOptions,
815
+ opts?: BwippOptions
235
816
  ):
236
817
  | Array<{ bbs: number[]; bhs: number[]; sbs: number[] }>
237
- | Array<{ pixs: number[]; pixx: number; pixy: number; height: number; width: number }>;
238
- }
818
+ | Array<{
819
+ pixs: number[];
820
+ pixx: number;
821
+ pixy: number;
822
+ height: number;
823
+ width: number;
824
+ }>;
239
825
  export const BWIPP_VERSION: string;
240
826
  export const BWIPJS_VERSION: string;
241
827
 
242
828
  // wrapper around FontLib.loadFont()
243
829
  export function loadFont(name: string, data: string | Uint8Array): void;
244
- export function loadFont(name: string, mult: number, data: string | Uint8Array): void;
245
- export function loadFont(name: string, multy: number, multx: number, data: string | Uint8Array): void;
830
+ export function loadFont(
831
+ name: string,
832
+ mult: number,
833
+ data: string | Uint8Array
834
+ ): void;
835
+ export function loadFont(
836
+ name: string,
837
+ multy: number,
838
+ multx: number,
839
+ data: string | Uint8Array
840
+ ): void;
246
841
 
247
842
  export namespace FontLib {
248
843
  export interface PathData
249
- extends Array<
250
- | { type: 'M'; x: number; y: number }
251
- | { type: 'L'; x: number; y: number }
252
- | { type: 'Q'; x: number; y: number; cx: number; cy: number }
253
- | { type: 'C'; x: number; y: number; cx1: number; cy1: number; cx2: number; cy2: number }
254
- > {
255
- ascent: number;
256
- descent: number;
257
- advance: number;
844
+ extends Array<
845
+ | { type: "M"; x: number; y: number }
846
+ | { type: "L"; x: number; y: number }
847
+ | { type: "Q"; x: number; y: number; cx: number; cy: number }
848
+ | {
849
+ type: "C";
850
+ x: number;
851
+ y: number;
852
+ cx1: number;
853
+ cy1: number;
854
+ cx2: number;
855
+ cy2: number;
856
+ }
857
+ > {
858
+ ascent: number;
859
+ descent: number;
860
+ advance: number;
258
861
  }
259
862
  export function lookup(font: string): number;
260
863
  export function monochrome(mono: boolean): void;
261
864
  export function getglyph(
262
- fontid: number,
263
- charcode: number,
264
- width: number,
265
- height: number,
865
+ fontid: number,
866
+ charcode: number,
867
+ width: number,
868
+ height: number
266
869
  ): {
267
- glyph: number;
268
- top: number;
269
- left: number;
270
- width: number;
271
- height: number;
272
- advance: number;
273
- pixels: Uint8Array;
274
- bytes: Uint8Array;
275
- cachekey: string;
276
- offset: number;
870
+ glyph: number;
871
+ top: number;
872
+ left: number;
873
+ width: number;
874
+ height: number;
875
+ advance: number;
876
+ pixels: Uint8Array;
877
+ bytes: Uint8Array;
878
+ cachekey: string;
879
+ offset: number;
277
880
  };
278
- export function getpaths(fontid: number, charcode: number, width: number, height: number): PathData;
881
+ export function getpaths(
882
+ fontid: number,
883
+ charcode: number,
884
+ width: number,
885
+ height: number
886
+ ): PathData;
279
887
  export function loadFont(name: string, data: string | Uint8Array): void;
280
- export function loadFont(name: string, mult: number, data: string | Uint8Array): void;
281
- export function loadFont(name: string, multy: number, multx: number, data: string | Uint8Array): void;
888
+ export function loadFont(
889
+ name: string,
890
+ mult: number,
891
+ data: string | Uint8Array
892
+ ): void;
893
+ export function loadFont(
894
+ name: string,
895
+ multy: number,
896
+ multx: number,
897
+ data: string | Uint8Array
898
+ ): void;
282
899
  }
900
+ }
283
901
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xl-public-utils",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "index.js",
package/src/vtkUtils.mjs CHANGED
@@ -723,7 +723,7 @@ export function enCodeMeshToBase64(mesh, matrix = undefined) {
723
723
 
724
724
  /**
725
725
  * 将一圈有序点按指定size进行平滑
726
- * @param {vce3[]} points 一圈有序点
726
+ * @param {vec3[]} points 一圈有序点
727
727
  * @param {number} smaSize=3 平滑点的数量通常值为奇数
728
728
  * @returns {vec3[]} 平滑之后的点
729
729
  */
@@ -748,7 +748,7 @@ export function smaPoint(points, smaSize = 3) {
748
748
  }
749
749
  /**
750
750
  * 将一段有序点按指定size进行平滑
751
- * @param {vce3[]} points 一段有序点
751
+ * @param {vec3[]} points 一段有序点
752
752
  * @param {number} smaSize=3 平滑点的数量通常值为奇数
753
753
  * @returns {vec3[]} 平滑之后的点
754
754
  */
package/tsconfig.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "allowJs": true,
4
4
  "declaration": true,
5
5
  "emitDeclarationOnly": true,
6
- "outDir": "./types" // 可选,定义.d.ts文件输出目录
6
+ "outFile": "./index.d.ts" // 可选,定义.d.ts文件输出目录
7
7
  },
8
- "include": ["src/*.mjs"] // 指定包含的 JavaScript 文件路径
8
+ "include": ["index.js", "src/*.mjs"] // 指定包含的 JavaScript 文件路径
9
9
  }
@@ -1,4 +1,3 @@
1
- import vtkPolyData from "@kitware/vtk.js/Common/DataModel/PolyData";
2
1
  /**
3
2
  * 将polyData转换为ply文件
4
3
  * @param {vtkPolyData} polyData 需要导出的polydata
@@ -13,4 +12,5 @@ import vtkPolyData from "@kitware/vtk.js/Common/DataModel/PolyData";
13
12
  * @param {boolean} withColors=true 面使用点索引
14
13
  * @returns {string | DataView} 返回文件内容
15
14
  */
16
- export function writePLY(polyData: vtkPolyData, format: "ascii" | "binary", dataByteOrder?: 0 | 1, headerComments?: string[], textureFileName?: string, textureCoordinatesName?: ["u", "v"], withNormals?: boolean, withUVs?: boolean, withColors?: boolean, withIndices?: boolean): string | DataView;
15
+ export function writePLY(polyData: vtkPolyData, format: "ascii" | "binary", dataByteOrder?: 0 | 1, headerComments?: string[], textureFileName?: string, textureCoordinatesName?: ["u", "v"], withNormals?: boolean, withUVs?: boolean, withColors?: boolean, withIndices?: boolean): string | DataView;
16
+ import vtkPolyData from "@kitware/vtk.js/Common/DataModel/PolyData";
@@ -1,5 +1,3 @@
1
- import vtkPolyData from '@kitware/vtk.js/Common/DataModel/PolyData';
2
-
3
1
  /**
4
2
  * 导出stl模型的时候 需要离散点 防止被认为是同一个点 精度到e-7就够了
5
3
  * @param {number[]} points 网格点
@@ -18,3 +16,4 @@ export function exportBinarySTL(polydata: vtkPolyData, colorMagic?: boolean): Bl
18
16
  * @returns {string} 网格的asciiSTL文件内容
19
17
  */
20
18
  export function exportAsciiSTL(polydata: vtkPolyData): string;
19
+ import vtkPolyData from '@kitware/vtk.js/Common/DataModel/PolyData';
@@ -1,3 +1,9 @@
1
+
2
+ import vtkInteractorStyleManipulator from "@kitware/vtk.js/Interaction/Style/InteractorStyleManipulator"
3
+ import { vec3, mat4, mat3 } from 'gl-matrix';
4
+ import vtkRenderer from "@kitware/vtk.js/Rendering/Core/Renderer";
5
+ import vtkRenderWindowInteractor from "@kitware/vtk.js/Rendering/Core/RenderWindowInteractor";
6
+ import vtkPolyData from "@kitware/vtk.js/Common/DataModel/PolyData";
1
7
  /**
2
8
  * 计算屏幕坐标到三维坐标
3
9
  * @param {vtkRenderer} renderer vtkRenderer
@@ -237,18 +243,18 @@ export function convEular2matrixZYX(rmat: mat3, xangle: number, yangle: number,
237
243
  export function enCodeMeshToBase64(mesh: vtkPolyData, matrix?: mat4): string;
238
244
  /**
239
245
  * 将一圈有序点按指定size进行平滑
240
- * @param {vce3[]} points 一圈有序点
246
+ * @param {vec3[]} points 一圈有序点
241
247
  * @param {number} smaSize=3 平滑点的数量通常值为奇数
242
248
  * @returns {vec3[]} 平滑之后的点
243
249
  */
244
- export function smaPoint(points: vce3[], smaSize?: number): vec3[];
250
+ export function smaPoint(points: vec3[], smaSize?: number): vec3[];
245
251
  /**
246
252
  * 将一段有序点按指定size进行平滑
247
- * @param {vce3[]} points 一段有序点
253
+ * @param {vec3[]} points 一段有序点
248
254
  * @param {number} smaSize=3 平滑点的数量通常值为奇数
249
255
  * @returns {vec3[]} 平滑之后的点
250
256
  */
251
- export function smaPointNotRound(points: vce3[], smaSize?: number): vec3[];
257
+ export function smaPointNotRound(points: vec3[], smaSize?: number): vec3[];
252
258
  /**
253
259
  * 表示一个包含三个轴向的对象
254
260
  * @typedef {Object} AxisObject
@@ -312,9 +318,3 @@ export type AxisObject = {
312
318
  */
313
319
  z: vec3;
314
320
  };
315
- import vtkRenderer from "@kitware/vtk.js/Rendering/Core/Renderer";
316
- import { vec3 } from 'gl-matrix';
317
- import { mat4 } from 'gl-matrix';
318
- import vtkRenderWindowInteractor from "@kitware/vtk.js/Rendering/Core/RenderWindowInteractor";
319
- import vtkPolyData from "@kitware/vtk.js/Common/DataModel/PolyData";
320
- import { mat3 } from 'gl-matrix';