@ifc-lite/wasm 1.17.0 → 1.19.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.
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "IFC-Lite Contributors"
6
6
  ],
7
7
  "description": "WebAssembly bindings for IFC-Lite",
8
- "version": "1.17.0",
8
+ "version": "1.19.0",
9
9
  "license": "MPL-2.0",
10
10
  "repository": {
11
11
  "type": "git",
package/pkg/ifc-lite.d.ts CHANGED
@@ -805,6 +805,12 @@ export class MeshDataJs {
805
805
  * Get vertex count
806
806
  */
807
807
  readonly vertexCount: number;
808
+ /**
809
+ * Optional SurfaceColour for the "Shading" GLB-export choice — only
810
+ * present when the file authored a distinct DiffuseColour. JS sees
811
+ * `undefined` when absent (most files).
812
+ */
813
+ readonly shadingColor: Float32Array | undefined;
808
814
  /**
809
815
  * Get triangle count
810
816
  */
@@ -926,12 +932,45 @@ export class SymbolicCircle {
926
932
  readonly isFullCircle: boolean;
927
933
  readonly repIdentifier: string;
928
934
  readonly radius: number;
935
+ /**
936
+ * World-Y elevation captured from the placement chain.
937
+ */
938
+ readonly worldY: number;
929
939
  readonly centerX: number;
930
940
  readonly centerY: number;
931
941
  readonly ifcType: string;
932
942
  readonly endAngle: number;
933
943
  }
934
944
 
945
+ export class SymbolicFillArea {
946
+ private constructor();
947
+ free(): void;
948
+ [Symbol.dispose](): void;
949
+ readonly expressId: number;
950
+ readonly holeCount: number;
951
+ readonly hatchAngle: number;
952
+ readonly pointCount: number;
953
+ readonly hasHatching: boolean;
954
+ readonly hatchSpacing: number;
955
+ /**
956
+ * Vertex indices marking the start of each hole. Empty = no holes.
957
+ */
958
+ readonly holesOffsets: Uint32Array;
959
+ readonly repIdentifier: string;
960
+ readonly hatchLineWidth: number;
961
+ readonly hatchAngleSecondary: number;
962
+ readonly fillA: number;
963
+ readonly fillB: number;
964
+ readonly fillG: number;
965
+ readonly fillR: number;
966
+ /**
967
+ * Flattened ring vertices.
968
+ */
969
+ readonly points: Float32Array;
970
+ readonly worldY: number;
971
+ readonly ifcType: string;
972
+ }
973
+
935
974
  export class SymbolicPolyline {
936
975
  private constructor();
937
976
  free(): void;
@@ -952,6 +991,11 @@ export class SymbolicPolyline {
952
991
  * Get 2D points as Float32Array [x1, y1, x2, y2, ...]
953
992
  */
954
993
  readonly points: Float32Array;
994
+ /**
995
+ * World-Y elevation captured from the placement chain (or first 3D
996
+ * point's Z component). JS uses this as the canonical bucket key.
997
+ */
998
+ readonly worldY: number;
955
999
  /**
956
1000
  * Get IFC type name (e.g., "IfcDoor", "IfcWindow")
957
1001
  */
@@ -978,6 +1022,22 @@ export class SymbolicRepresentationCollection {
978
1022
  * Get all express IDs that have symbolic representations
979
1023
  */
980
1024
  getExpressIds(): Uint32Array;
1025
+ /**
1026
+ * Get fill area at index.
1027
+ */
1028
+ getFill(index: number): SymbolicFillArea | undefined;
1029
+ /**
1030
+ * Get text annotation at index.
1031
+ */
1032
+ getText(index: number): SymbolicText | undefined;
1033
+ /**
1034
+ * Get number of fill areas
1035
+ */
1036
+ readonly fillCount: number;
1037
+ /**
1038
+ * Get number of text annotations
1039
+ */
1040
+ readonly textCount: number;
981
1041
  /**
982
1042
  * Get total count of all symbolic items
983
1043
  */
@@ -996,6 +1056,28 @@ export class SymbolicRepresentationCollection {
996
1056
  readonly isEmpty: boolean;
997
1057
  }
998
1058
 
1059
+ export class SymbolicText {
1060
+ private constructor();
1061
+ free(): void;
1062
+ [Symbol.dispose](): void;
1063
+ readonly expressId: number;
1064
+ readonly repIdentifier: string;
1065
+ readonly x: number;
1066
+ readonly y: number;
1067
+ readonly dirX: number;
1068
+ readonly dirY: number;
1069
+ readonly height: number;
1070
+ readonly colorA: number;
1071
+ readonly colorB: number;
1072
+ readonly colorG: number;
1073
+ readonly colorR: number;
1074
+ readonly content: string;
1075
+ readonly worldY: number;
1076
+ readonly ifcType: string;
1077
+ readonly alignment: string;
1078
+ readonly targetPx: number;
1079
+ }
1080
+
999
1081
  export class ZeroCopyMesh {
1000
1082
  free(): void;
1001
1083
  [Symbol.dispose](): void;
@@ -1110,8 +1192,10 @@ export interface InitOutput {
1110
1192
  readonly __wbg_set_georeferencejs_x_axis_abscissa: (a: number, b: number) => void;
1111
1193
  readonly __wbg_set_georeferencejs_x_axis_ordinate: (a: number, b: number) => void;
1112
1194
  readonly __wbg_symboliccircle_free: (a: number, b: number) => void;
1195
+ readonly __wbg_symbolicfillarea_free: (a: number, b: number) => void;
1113
1196
  readonly __wbg_symbolicpolyline_free: (a: number, b: number) => void;
1114
1197
  readonly __wbg_symbolicrepresentationcollection_free: (a: number, b: number) => void;
1198
+ readonly __wbg_symbolictext_free: (a: number, b: number) => void;
1115
1199
  readonly __wbg_zerocopymesh_free: (a: number, b: number) => void;
1116
1200
  readonly georeferencejs_crsName: (a: number, b: number) => void;
1117
1201
  readonly georeferencejs_localToMap: (a: number, b: number, c: number, d: number, e: number) => void;
@@ -1223,10 +1307,12 @@ export interface InitOutput {
1223
1307
  readonly meshdatajs_indices: (a: number) => number;
1224
1308
  readonly meshdatajs_normals: (a: number) => number;
1225
1309
  readonly meshdatajs_positions: (a: number) => number;
1310
+ readonly meshdatajs_shadingColor: (a: number, b: number) => void;
1226
1311
  readonly meshdatajs_triangleCount: (a: number) => number;
1227
1312
  readonly meshdatajs_vertexCount: (a: number) => number;
1228
1313
  readonly profilecollection_get: (a: number, b: number) => number;
1229
1314
  readonly profilecollection_length: (a: number) => number;
1315
+ readonly profileentryjs_expressId: (a: number) => number;
1230
1316
  readonly profileentryjs_extrusionDepth: (a: number) => number;
1231
1317
  readonly profileentryjs_extrusionDir: (a: number) => number;
1232
1318
  readonly profileentryjs_holeCounts: (a: number) => number;
@@ -1245,19 +1331,44 @@ export interface InitOutput {
1245
1331
  readonly symboliccircle_radius: (a: number) => number;
1246
1332
  readonly symboliccircle_repIdentifier: (a: number, b: number) => void;
1247
1333
  readonly symboliccircle_startAngle: (a: number) => number;
1334
+ readonly symboliccircle_worldY: (a: number) => number;
1335
+ readonly symbolicfillarea_fillA: (a: number) => number;
1336
+ readonly symbolicfillarea_fillB: (a: number) => number;
1337
+ readonly symbolicfillarea_fillG: (a: number) => number;
1338
+ readonly symbolicfillarea_fillR: (a: number) => number;
1339
+ readonly symbolicfillarea_hasHatching: (a: number) => number;
1340
+ readonly symbolicfillarea_hatchAngle: (a: number) => number;
1341
+ readonly symbolicfillarea_hatchAngleSecondary: (a: number) => number;
1342
+ readonly symbolicfillarea_hatchLineWidth: (a: number) => number;
1343
+ readonly symbolicfillarea_hatchSpacing: (a: number) => number;
1344
+ readonly symbolicfillarea_holesOffsets: (a: number) => number;
1345
+ readonly symbolicfillarea_ifcType: (a: number, b: number) => void;
1346
+ readonly symbolicfillarea_pointCount: (a: number) => number;
1347
+ readonly symbolicfillarea_points: (a: number) => number;
1348
+ readonly symbolicfillarea_repIdentifier: (a: number, b: number) => void;
1349
+ readonly symbolicfillarea_worldY: (a: number) => number;
1248
1350
  readonly symbolicpolyline_expressId: (a: number) => number;
1249
1351
  readonly symbolicpolyline_ifcType: (a: number, b: number) => void;
1250
1352
  readonly symbolicpolyline_isClosed: (a: number) => number;
1251
- readonly symbolicpolyline_pointCount: (a: number) => number;
1252
1353
  readonly symbolicpolyline_points: (a: number) => number;
1253
1354
  readonly symbolicpolyline_repIdentifier: (a: number, b: number) => void;
1254
1355
  readonly symbolicrepresentationcollection_circleCount: (a: number) => number;
1356
+ readonly symbolicrepresentationcollection_fillCount: (a: number) => number;
1255
1357
  readonly symbolicrepresentationcollection_getCircle: (a: number, b: number) => number;
1256
1358
  readonly symbolicrepresentationcollection_getExpressIds: (a: number, b: number) => void;
1359
+ readonly symbolicrepresentationcollection_getFill: (a: number, b: number) => number;
1257
1360
  readonly symbolicrepresentationcollection_getPolyline: (a: number, b: number) => number;
1361
+ readonly symbolicrepresentationcollection_getText: (a: number, b: number) => number;
1258
1362
  readonly symbolicrepresentationcollection_isEmpty: (a: number) => number;
1259
1363
  readonly symbolicrepresentationcollection_polylineCount: (a: number) => number;
1364
+ readonly symbolicrepresentationcollection_textCount: (a: number) => number;
1260
1365
  readonly symbolicrepresentationcollection_totalCount: (a: number) => number;
1366
+ readonly symbolictext_alignment: (a: number, b: number) => void;
1367
+ readonly symbolictext_colorA: (a: number) => number;
1368
+ readonly symbolictext_content: (a: number, b: number) => void;
1369
+ readonly symbolictext_ifcType: (a: number, b: number) => void;
1370
+ readonly symbolictext_repIdentifier: (a: number, b: number) => void;
1371
+ readonly symbolictext_targetPx: (a: number) => number;
1261
1372
  readonly version: (a: number) => void;
1262
1373
  readonly zerocopymesh_bounds_max: (a: number, b: number) => void;
1263
1374
  readonly zerocopymesh_bounds_min: (a: number, b: number) => void;
@@ -1275,7 +1386,9 @@ export interface InitOutput {
1275
1386
  readonly instancedmeshcollection_length: (a: number) => number;
1276
1387
  readonly instancedmeshcollection_totalGeometries: (a: number) => number;
1277
1388
  readonly meshcollectionwithrtc_length: (a: number) => number;
1389
+ readonly symbolicfillarea_holeCount: (a: number) => number;
1278
1390
  readonly zerocopymesh_indices_len: (a: number) => number;
1391
+ readonly symbolicpolyline_pointCount: (a: number) => number;
1279
1392
  readonly __wbg_set_rtcoffsetjs_x: (a: number, b: number) => void;
1280
1393
  readonly __wbg_set_rtcoffsetjs_y: (a: number, b: number) => void;
1281
1394
  readonly __wbg_set_rtcoffsetjs_z: (a: number, b: number) => void;
@@ -1297,12 +1410,23 @@ export interface InitOutput {
1297
1410
  readonly gpuinstancedgeometryref_geometryId: (a: number) => bigint;
1298
1411
  readonly instancedgeometry_geometryId: (a: number) => bigint;
1299
1412
  readonly meshcollection_rtcOffsetX: (a: number) => number;
1300
- readonly profileentryjs_expressId: (a: number) => number;
1301
1413
  readonly symboliccircle_expressId: (a: number) => number;
1414
+ readonly symbolicfillarea_expressId: (a: number) => number;
1415
+ readonly symbolicpolyline_worldY: (a: number) => number;
1416
+ readonly symbolictext_colorB: (a: number) => number;
1417
+ readonly symbolictext_colorG: (a: number) => number;
1418
+ readonly symbolictext_colorR: (a: number) => number;
1419
+ readonly symbolictext_dirX: (a: number) => number;
1420
+ readonly symbolictext_dirY: (a: number) => number;
1421
+ readonly symbolictext_expressId: (a: number) => number;
1422
+ readonly symbolictext_height: (a: number) => number;
1423
+ readonly symbolictext_worldY: (a: number) => number;
1424
+ readonly symbolictext_x: (a: number) => number;
1425
+ readonly symbolictext_y: (a: number) => number;
1302
1426
  readonly __wbg_gpuinstancedgeometryref_free: (a: number, b: number) => void;
1303
- readonly __wasm_bindgen_func_elem_1480: (a: number, b: number, c: number) => void;
1304
- readonly __wasm_bindgen_func_elem_1479: (a: number, b: number) => void;
1305
- readonly __wasm_bindgen_func_elem_1520: (a: number, b: number, c: number, d: number) => void;
1427
+ readonly __wasm_bindgen_func_elem_1529: (a: number, b: number, c: number) => void;
1428
+ readonly __wasm_bindgen_func_elem_1528: (a: number, b: number) => void;
1429
+ readonly __wasm_bindgen_func_elem_1569: (a: number, b: number, c: number, d: number) => void;
1306
1430
  readonly __wbindgen_export: (a: number) => void;
1307
1431
  readonly __wbindgen_export2: (a: number, b: number, c: number) => void;
1308
1432
  readonly __wbindgen_export3: (a: number, b: number) => number;
package/pkg/ifc-lite.js CHANGED
@@ -220,12 +220,12 @@ if (!('encodeInto' in cachedTextEncoder)) {
220
220
 
221
221
  let WASM_VECTOR_LEN = 0;
222
222
 
223
- function __wasm_bindgen_func_elem_1480(arg0, arg1, arg2) {
224
- wasm.__wasm_bindgen_func_elem_1480(arg0, arg1, addHeapObject(arg2));
223
+ function __wasm_bindgen_func_elem_1529(arg0, arg1, arg2) {
224
+ wasm.__wasm_bindgen_func_elem_1529(arg0, arg1, addHeapObject(arg2));
225
225
  }
226
226
 
227
- function __wasm_bindgen_func_elem_1520(arg0, arg1, arg2, arg3) {
228
- wasm.__wasm_bindgen_func_elem_1520(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
227
+ function __wasm_bindgen_func_elem_1569(arg0, arg1, arg2, arg3) {
228
+ wasm.__wasm_bindgen_func_elem_1569(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
229
229
  }
230
230
 
231
231
  const GeoReferenceJsFinalization = (typeof FinalizationRegistry === 'undefined')
@@ -296,6 +296,10 @@ const SymbolicCircleFinalization = (typeof FinalizationRegistry === 'undefined')
296
296
  ? { register: () => {}, unregister: () => {} }
297
297
  : new FinalizationRegistry(ptr => wasm.__wbg_symboliccircle_free(ptr >>> 0, 1));
298
298
 
299
+ const SymbolicFillAreaFinalization = (typeof FinalizationRegistry === 'undefined')
300
+ ? { register: () => {}, unregister: () => {} }
301
+ : new FinalizationRegistry(ptr => wasm.__wbg_symbolicfillarea_free(ptr >>> 0, 1));
302
+
299
303
  const SymbolicPolylineFinalization = (typeof FinalizationRegistry === 'undefined')
300
304
  ? { register: () => {}, unregister: () => {} }
301
305
  : new FinalizationRegistry(ptr => wasm.__wbg_symbolicpolyline_free(ptr >>> 0, 1));
@@ -304,6 +308,10 @@ const SymbolicRepresentationCollectionFinalization = (typeof FinalizationRegistr
304
308
  ? { register: () => {}, unregister: () => {} }
305
309
  : new FinalizationRegistry(ptr => wasm.__wbg_symbolicrepresentationcollection_free(ptr >>> 0, 1));
306
310
 
311
+ const SymbolicTextFinalization = (typeof FinalizationRegistry === 'undefined')
312
+ ? { register: () => {}, unregister: () => {} }
313
+ : new FinalizationRegistry(ptr => wasm.__wbg_symbolictext_free(ptr >>> 0, 1));
314
+
307
315
  const ZeroCopyMeshFinalization = (typeof FinalizationRegistry === 'undefined')
308
316
  ? { register: () => {}, unregister: () => {} }
309
317
  : new FinalizationRegistry(ptr => wasm.__wbg_zerocopymesh_free(ptr >>> 0, 1));
@@ -2316,6 +2324,28 @@ export class MeshDataJs {
2316
2324
  const ret = wasm.meshdatajs_vertexCount(this.__wbg_ptr);
2317
2325
  return ret >>> 0;
2318
2326
  }
2327
+ /**
2328
+ * Optional SurfaceColour for the "Shading" GLB-export choice — only
2329
+ * present when the file authored a distinct DiffuseColour. JS sees
2330
+ * `undefined` when absent (most files).
2331
+ * @returns {Float32Array | undefined}
2332
+ */
2333
+ get shadingColor() {
2334
+ try {
2335
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2336
+ wasm.meshdatajs_shadingColor(retptr, this.__wbg_ptr);
2337
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2338
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2339
+ let v1;
2340
+ if (r0 !== 0) {
2341
+ v1 = getArrayF32FromWasm0(r0, r1).slice();
2342
+ wasm.__wbindgen_export2(r0, r1 * 4, 4);
2343
+ }
2344
+ return v1;
2345
+ } finally {
2346
+ wasm.__wbindgen_add_to_stack_pointer(16);
2347
+ }
2348
+ }
2319
2349
  /**
2320
2350
  * Get triangle count
2321
2351
  * @returns {number}
@@ -2458,7 +2488,7 @@ export class ProfileEntryJs {
2458
2488
  * @returns {number}
2459
2489
  */
2460
2490
  get expressId() {
2461
- const ret = wasm.meshdatajs_expressId(this.__wbg_ptr);
2491
+ const ret = wasm.profileentryjs_expressId(this.__wbg_ptr);
2462
2492
  return ret >>> 0;
2463
2493
  }
2464
2494
  /**
@@ -2707,6 +2737,14 @@ export class SymbolicCircle {
2707
2737
  const ret = wasm.symboliccircle_radius(this.__wbg_ptr);
2708
2738
  return ret;
2709
2739
  }
2740
+ /**
2741
+ * World-Y elevation captured from the placement chain.
2742
+ * @returns {number}
2743
+ */
2744
+ get worldY() {
2745
+ const ret = wasm.symboliccircle_worldY(this.__wbg_ptr);
2746
+ return ret;
2747
+ }
2710
2748
  /**
2711
2749
  * @returns {number}
2712
2750
  */
@@ -2750,6 +2788,187 @@ export class SymbolicCircle {
2750
2788
  }
2751
2789
  if (Symbol.dispose) SymbolicCircle.prototype[Symbol.dispose] = SymbolicCircle.prototype.free;
2752
2790
 
2791
+ /**
2792
+ * A 2D filled region (IfcAnnotationFillArea / IfcAnnotationFillAreaOccurrence).
2793
+ *
2794
+ * Stores one outer ring of 2D points plus an offset table indexing inner
2795
+ * rings (holes). Both rings are stored flat in `points` so the JS side can
2796
+ * view the buffer as one Float32Array. The optional `hatch_*` fields encode
2797
+ * IfcFillAreaStyleHatching (line spacing, primary/secondary angles, line
2798
+ * width) when the IfcStyledItem chain resolves to a hatching style; absent
2799
+ * styles render as a solid fill.
2800
+ *
2801
+ * `holes_offsets` is an inclusive-prefix array describing where each hole
2802
+ * begins. The outer ring is implicitly at `points[0..holes_offsets[0]]`
2803
+ * (or all points if `holes_offsets` is empty). Each `holes_offsets[i]` is a
2804
+ * vertex index, not a byte offset.
2805
+ */
2806
+ export class SymbolicFillArea {
2807
+ static __wrap(ptr) {
2808
+ ptr = ptr >>> 0;
2809
+ const obj = Object.create(SymbolicFillArea.prototype);
2810
+ obj.__wbg_ptr = ptr;
2811
+ SymbolicFillAreaFinalization.register(obj, obj.__wbg_ptr, obj);
2812
+ return obj;
2813
+ }
2814
+ __destroy_into_raw() {
2815
+ const ptr = this.__wbg_ptr;
2816
+ this.__wbg_ptr = 0;
2817
+ SymbolicFillAreaFinalization.unregister(this);
2818
+ return ptr;
2819
+ }
2820
+ free() {
2821
+ const ptr = this.__destroy_into_raw();
2822
+ wasm.__wbg_symbolicfillarea_free(ptr, 0);
2823
+ }
2824
+ /**
2825
+ * @returns {number}
2826
+ */
2827
+ get expressId() {
2828
+ const ret = wasm.profileentryjs_expressId(this.__wbg_ptr);
2829
+ return ret >>> 0;
2830
+ }
2831
+ /**
2832
+ * @returns {number}
2833
+ */
2834
+ get holeCount() {
2835
+ const ret = wasm.gpuinstancedgeometry_indicesLen(this.__wbg_ptr);
2836
+ return ret >>> 0;
2837
+ }
2838
+ /**
2839
+ * @returns {number}
2840
+ */
2841
+ get hatchAngle() {
2842
+ const ret = wasm.symbolicfillarea_hatchAngle(this.__wbg_ptr);
2843
+ return ret;
2844
+ }
2845
+ /**
2846
+ * @returns {number}
2847
+ */
2848
+ get pointCount() {
2849
+ const ret = wasm.symbolicfillarea_pointCount(this.__wbg_ptr);
2850
+ return ret >>> 0;
2851
+ }
2852
+ /**
2853
+ * @returns {boolean}
2854
+ */
2855
+ get hasHatching() {
2856
+ const ret = wasm.symbolicfillarea_hasHatching(this.__wbg_ptr);
2857
+ return ret !== 0;
2858
+ }
2859
+ /**
2860
+ * @returns {number}
2861
+ */
2862
+ get hatchSpacing() {
2863
+ const ret = wasm.symbolicfillarea_hatchSpacing(this.__wbg_ptr);
2864
+ return ret;
2865
+ }
2866
+ /**
2867
+ * Vertex indices marking the start of each hole. Empty = no holes.
2868
+ * @returns {Uint32Array}
2869
+ */
2870
+ get holesOffsets() {
2871
+ const ret = wasm.symbolicfillarea_holesOffsets(this.__wbg_ptr);
2872
+ return takeObject(ret);
2873
+ }
2874
+ /**
2875
+ * @returns {string}
2876
+ */
2877
+ get repIdentifier() {
2878
+ let deferred1_0;
2879
+ let deferred1_1;
2880
+ try {
2881
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2882
+ wasm.symbolicfillarea_repIdentifier(retptr, this.__wbg_ptr);
2883
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2884
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2885
+ deferred1_0 = r0;
2886
+ deferred1_1 = r1;
2887
+ return getStringFromWasm0(r0, r1);
2888
+ } finally {
2889
+ wasm.__wbindgen_add_to_stack_pointer(16);
2890
+ wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1);
2891
+ }
2892
+ }
2893
+ /**
2894
+ * @returns {number}
2895
+ */
2896
+ get hatchLineWidth() {
2897
+ const ret = wasm.symbolicfillarea_hatchLineWidth(this.__wbg_ptr);
2898
+ return ret;
2899
+ }
2900
+ /**
2901
+ * @returns {number}
2902
+ */
2903
+ get hatchAngleSecondary() {
2904
+ const ret = wasm.symbolicfillarea_hatchAngleSecondary(this.__wbg_ptr);
2905
+ return ret;
2906
+ }
2907
+ /**
2908
+ * @returns {number}
2909
+ */
2910
+ get fillA() {
2911
+ const ret = wasm.symbolicfillarea_fillA(this.__wbg_ptr);
2912
+ return ret;
2913
+ }
2914
+ /**
2915
+ * @returns {number}
2916
+ */
2917
+ get fillB() {
2918
+ const ret = wasm.symbolicfillarea_fillB(this.__wbg_ptr);
2919
+ return ret;
2920
+ }
2921
+ /**
2922
+ * @returns {number}
2923
+ */
2924
+ get fillG() {
2925
+ const ret = wasm.symbolicfillarea_fillG(this.__wbg_ptr);
2926
+ return ret;
2927
+ }
2928
+ /**
2929
+ * @returns {number}
2930
+ */
2931
+ get fillR() {
2932
+ const ret = wasm.symbolicfillarea_fillR(this.__wbg_ptr);
2933
+ return ret;
2934
+ }
2935
+ /**
2936
+ * Flattened ring vertices.
2937
+ * @returns {Float32Array}
2938
+ */
2939
+ get points() {
2940
+ const ret = wasm.symbolicfillarea_points(this.__wbg_ptr);
2941
+ return takeObject(ret);
2942
+ }
2943
+ /**
2944
+ * @returns {number}
2945
+ */
2946
+ get worldY() {
2947
+ const ret = wasm.symbolicfillarea_worldY(this.__wbg_ptr);
2948
+ return ret;
2949
+ }
2950
+ /**
2951
+ * @returns {string}
2952
+ */
2953
+ get ifcType() {
2954
+ let deferred1_0;
2955
+ let deferred1_1;
2956
+ try {
2957
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
2958
+ wasm.symbolicfillarea_ifcType(retptr, this.__wbg_ptr);
2959
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
2960
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
2961
+ deferred1_0 = r0;
2962
+ deferred1_1 = r1;
2963
+ return getStringFromWasm0(r0, r1);
2964
+ } finally {
2965
+ wasm.__wbindgen_add_to_stack_pointer(16);
2966
+ wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1);
2967
+ }
2968
+ }
2969
+ }
2970
+ if (Symbol.dispose) SymbolicFillArea.prototype[Symbol.dispose] = SymbolicFillArea.prototype.free;
2971
+
2753
2972
  /**
2754
2973
  * A single 2D polyline for symbolic representations (Plan, Annotation, FootPrint)
2755
2974
  * Points are stored as [x1, y1, x2, y2, ...] in 2D coordinates
@@ -2785,7 +3004,7 @@ export class SymbolicPolyline {
2785
3004
  * @returns {number}
2786
3005
  */
2787
3006
  get pointCount() {
2788
- const ret = wasm.symbolicpolyline_pointCount(this.__wbg_ptr);
3007
+ const ret = wasm.symbolicfillarea_pointCount(this.__wbg_ptr);
2789
3008
  return ret >>> 0;
2790
3009
  }
2791
3010
  /**
@@ -2816,6 +3035,15 @@ export class SymbolicPolyline {
2816
3035
  const ret = wasm.symbolicpolyline_points(this.__wbg_ptr);
2817
3036
  return takeObject(ret);
2818
3037
  }
3038
+ /**
3039
+ * World-Y elevation captured from the placement chain (or first 3D
3040
+ * point's Z component). JS uses this as the canonical bucket key.
3041
+ * @returns {number}
3042
+ */
3043
+ get worldY() {
3044
+ const ret = wasm.symboliccircle_worldY(this.__wbg_ptr);
3045
+ return ret;
3046
+ }
2819
3047
  /**
2820
3048
  * Get IFC type name (e.g., "IfcDoor", "IfcWindow")
2821
3049
  * @returns {string}
@@ -2868,6 +3096,14 @@ export class SymbolicRepresentationCollection {
2868
3096
  const ptr = this.__destroy_into_raw();
2869
3097
  wasm.__wbg_symbolicrepresentationcollection_free(ptr, 0);
2870
3098
  }
3099
+ /**
3100
+ * Get number of fill areas
3101
+ * @returns {number}
3102
+ */
3103
+ get fillCount() {
3104
+ const ret = wasm.symbolicrepresentationcollection_fillCount(this.__wbg_ptr);
3105
+ return ret >>> 0;
3106
+ }
2871
3107
  /**
2872
3108
  * Get circle at index
2873
3109
  * @param {number} index
@@ -2877,6 +3113,14 @@ export class SymbolicRepresentationCollection {
2877
3113
  const ret = wasm.symbolicrepresentationcollection_getCircle(this.__wbg_ptr, index);
2878
3114
  return ret === 0 ? undefined : SymbolicCircle.__wrap(ret);
2879
3115
  }
3116
+ /**
3117
+ * Get number of text annotations
3118
+ * @returns {number}
3119
+ */
3120
+ get textCount() {
3121
+ const ret = wasm.symbolicrepresentationcollection_textCount(this.__wbg_ptr);
3122
+ return ret >>> 0;
3123
+ }
2880
3124
  /**
2881
3125
  * Get total count of all symbolic items
2882
3126
  * @returns {number}
@@ -2927,6 +3171,24 @@ export class SymbolicRepresentationCollection {
2927
3171
  wasm.__wbindgen_add_to_stack_pointer(16);
2928
3172
  }
2929
3173
  }
3174
+ /**
3175
+ * Get fill area at index.
3176
+ * @param {number} index
3177
+ * @returns {SymbolicFillArea | undefined}
3178
+ */
3179
+ getFill(index) {
3180
+ const ret = wasm.symbolicrepresentationcollection_getFill(this.__wbg_ptr, index);
3181
+ return ret === 0 ? undefined : SymbolicFillArea.__wrap(ret);
3182
+ }
3183
+ /**
3184
+ * Get text annotation at index.
3185
+ * @param {number} index
3186
+ * @returns {SymbolicText | undefined}
3187
+ */
3188
+ getText(index) {
3189
+ const ret = wasm.symbolicrepresentationcollection_getText(this.__wbg_ptr, index);
3190
+ return ret === 0 ? undefined : SymbolicText.__wrap(ret);
3191
+ }
2930
3192
  /**
2931
3193
  * Check if collection is empty
2932
3194
  * @returns {boolean}
@@ -2938,6 +3200,198 @@ export class SymbolicRepresentationCollection {
2938
3200
  }
2939
3201
  if (Symbol.dispose) SymbolicRepresentationCollection.prototype[Symbol.dispose] = SymbolicRepresentationCollection.prototype.free;
2940
3202
 
3203
+ /**
3204
+ * A 2D text annotation (IfcTextLiteral / IfcTextLiteralWithExtent).
3205
+ *
3206
+ * Position is in the same 2D coordinate space as `SymbolicPolyline` (i.e. the
3207
+ * floor-plan / annotation overlay's local frame after applying placement +
3208
+ * RTC). The text-orientation pair `(cos, sin)` rotates the baseline from the
3209
+ * `+x` axis. Height is the IFC font height in model units, scaled by the
3210
+ * project's length-unit factor so the renderer can convert directly to world
3211
+ * units. Alignment is the IFC `BoxAlignment` string verbatim
3212
+ * (`top-left`, `center`, `bottom-right`, …) — the renderer can interpret it.
3213
+ */
3214
+ export class SymbolicText {
3215
+ static __wrap(ptr) {
3216
+ ptr = ptr >>> 0;
3217
+ const obj = Object.create(SymbolicText.prototype);
3218
+ obj.__wbg_ptr = ptr;
3219
+ SymbolicTextFinalization.register(obj, obj.__wbg_ptr, obj);
3220
+ return obj;
3221
+ }
3222
+ __destroy_into_raw() {
3223
+ const ptr = this.__wbg_ptr;
3224
+ this.__wbg_ptr = 0;
3225
+ SymbolicTextFinalization.unregister(this);
3226
+ return ptr;
3227
+ }
3228
+ free() {
3229
+ const ptr = this.__destroy_into_raw();
3230
+ wasm.__wbg_symbolictext_free(ptr, 0);
3231
+ }
3232
+ /**
3233
+ * @returns {number}
3234
+ */
3235
+ get expressId() {
3236
+ const ret = wasm.profileentryjs_expressId(this.__wbg_ptr);
3237
+ return ret >>> 0;
3238
+ }
3239
+ /**
3240
+ * @returns {string}
3241
+ */
3242
+ get repIdentifier() {
3243
+ let deferred1_0;
3244
+ let deferred1_1;
3245
+ try {
3246
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3247
+ wasm.symbolictext_repIdentifier(retptr, this.__wbg_ptr);
3248
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3249
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3250
+ deferred1_0 = r0;
3251
+ deferred1_1 = r1;
3252
+ return getStringFromWasm0(r0, r1);
3253
+ } finally {
3254
+ wasm.__wbindgen_add_to_stack_pointer(16);
3255
+ wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1);
3256
+ }
3257
+ }
3258
+ /**
3259
+ * @returns {number}
3260
+ */
3261
+ get x() {
3262
+ const ret = wasm.symbolicfillarea_fillR(this.__wbg_ptr);
3263
+ return ret;
3264
+ }
3265
+ /**
3266
+ * @returns {number}
3267
+ */
3268
+ get y() {
3269
+ const ret = wasm.symbolicfillarea_fillG(this.__wbg_ptr);
3270
+ return ret;
3271
+ }
3272
+ /**
3273
+ * @returns {number}
3274
+ */
3275
+ get dirX() {
3276
+ const ret = wasm.symbolicfillarea_fillB(this.__wbg_ptr);
3277
+ return ret;
3278
+ }
3279
+ /**
3280
+ * @returns {number}
3281
+ */
3282
+ get dirY() {
3283
+ const ret = wasm.symbolicfillarea_fillA(this.__wbg_ptr);
3284
+ return ret;
3285
+ }
3286
+ /**
3287
+ * @returns {number}
3288
+ */
3289
+ get height() {
3290
+ const ret = wasm.symbolicfillarea_hatchSpacing(this.__wbg_ptr);
3291
+ return ret;
3292
+ }
3293
+ /**
3294
+ * @returns {number}
3295
+ */
3296
+ get colorA() {
3297
+ const ret = wasm.symbolictext_colorA(this.__wbg_ptr);
3298
+ return ret;
3299
+ }
3300
+ /**
3301
+ * @returns {number}
3302
+ */
3303
+ get colorB() {
3304
+ const ret = wasm.symbolicfillarea_worldY(this.__wbg_ptr);
3305
+ return ret;
3306
+ }
3307
+ /**
3308
+ * @returns {number}
3309
+ */
3310
+ get colorG() {
3311
+ const ret = wasm.symbolicfillarea_hatchLineWidth(this.__wbg_ptr);
3312
+ return ret;
3313
+ }
3314
+ /**
3315
+ * @returns {number}
3316
+ */
3317
+ get colorR() {
3318
+ const ret = wasm.symbolicfillarea_hatchAngleSecondary(this.__wbg_ptr);
3319
+ return ret;
3320
+ }
3321
+ /**
3322
+ * @returns {string}
3323
+ */
3324
+ get content() {
3325
+ let deferred1_0;
3326
+ let deferred1_1;
3327
+ try {
3328
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3329
+ wasm.symbolictext_content(retptr, this.__wbg_ptr);
3330
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3331
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3332
+ deferred1_0 = r0;
3333
+ deferred1_1 = r1;
3334
+ return getStringFromWasm0(r0, r1);
3335
+ } finally {
3336
+ wasm.__wbindgen_add_to_stack_pointer(16);
3337
+ wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1);
3338
+ }
3339
+ }
3340
+ /**
3341
+ * @returns {number}
3342
+ */
3343
+ get worldY() {
3344
+ const ret = wasm.symbolicfillarea_hatchAngle(this.__wbg_ptr);
3345
+ return ret;
3346
+ }
3347
+ /**
3348
+ * @returns {string}
3349
+ */
3350
+ get ifcType() {
3351
+ let deferred1_0;
3352
+ let deferred1_1;
3353
+ try {
3354
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3355
+ wasm.symbolictext_ifcType(retptr, this.__wbg_ptr);
3356
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3357
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3358
+ deferred1_0 = r0;
3359
+ deferred1_1 = r1;
3360
+ return getStringFromWasm0(r0, r1);
3361
+ } finally {
3362
+ wasm.__wbindgen_add_to_stack_pointer(16);
3363
+ wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1);
3364
+ }
3365
+ }
3366
+ /**
3367
+ * @returns {string}
3368
+ */
3369
+ get alignment() {
3370
+ let deferred1_0;
3371
+ let deferred1_1;
3372
+ try {
3373
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3374
+ wasm.symbolictext_alignment(retptr, this.__wbg_ptr);
3375
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3376
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3377
+ deferred1_0 = r0;
3378
+ deferred1_1 = r1;
3379
+ return getStringFromWasm0(r0, r1);
3380
+ } finally {
3381
+ wasm.__wbindgen_add_to_stack_pointer(16);
3382
+ wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1);
3383
+ }
3384
+ }
3385
+ /**
3386
+ * @returns {number}
3387
+ */
3388
+ get targetPx() {
3389
+ const ret = wasm.symbolictext_targetPx(this.__wbg_ptr);
3390
+ return ret;
3391
+ }
3392
+ }
3393
+ if (Symbol.dispose) SymbolicText.prototype[Symbol.dispose] = SymbolicText.prototype.free;
3394
+
2941
3395
  /**
2942
3396
  * Zero-copy mesh that exposes pointers to WASM memory
2943
3397
  */
@@ -3232,10 +3686,6 @@ function __wbg_get_imports() {
3232
3686
  const ret = InstancedGeometry.__wrap(arg0);
3233
3687
  return addHeapObject(ret);
3234
3688
  };
3235
- imports.wbg.__wbg_length_86ce4877baf913bb = function(arg0) {
3236
- const ret = getObject(arg0).length;
3237
- return ret;
3238
- };
3239
3689
  imports.wbg.__wbg_length_d45040a40c570362 = function(arg0) {
3240
3690
  const ret = getObject(arg0).length;
3241
3691
  return ret;
@@ -3263,7 +3713,7 @@ function __wbg_get_imports() {
3263
3713
  const a = state0.a;
3264
3714
  state0.a = 0;
3265
3715
  try {
3266
- return __wasm_bindgen_func_elem_1520(a, state0.b, arg0, arg1);
3716
+ return __wasm_bindgen_func_elem_1569(a, state0.b, arg0, arg1);
3267
3717
  } finally {
3268
3718
  state0.a = a;
3269
3719
  }
@@ -3298,9 +3748,6 @@ function __wbg_get_imports() {
3298
3748
  const ret = new Uint8Array(arg0 >>> 0);
3299
3749
  return addHeapObject(ret);
3300
3750
  };
3301
- imports.wbg.__wbg_prototypesetcall_96cc7097487b926d = function(arg0, arg1, arg2) {
3302
- Float32Array.prototype.set.call(getArrayF32FromWasm0(arg0, arg1), getObject(arg2));
3303
- };
3304
3751
  imports.wbg.__wbg_push_7d9be8f38fc13975 = function(arg0, arg1) {
3305
3752
  const ret = getObject(arg0).push(getObject(arg1));
3306
3753
  return ret;
@@ -3375,9 +3822,9 @@ function __wbg_get_imports() {
3375
3822
  const ret = BigInt.asUintN(64, arg0);
3376
3823
  return addHeapObject(ret);
3377
3824
  };
3378
- imports.wbg.__wbindgen_cast_73cbb7b49382c492 = function(arg0, arg1) {
3379
- // Cast intrinsic for `Closure(Closure { dtor_idx: 179, function: Function { arguments: [Externref], shim_idx: 180, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3380
- const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_1479, __wasm_bindgen_func_elem_1480);
3825
+ imports.wbg.__wbindgen_cast_56b148ee1abaedad = function(arg0, arg1) {
3826
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 180, function: Function { arguments: [Externref], shim_idx: 181, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
3827
+ const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_1528, __wasm_bindgen_func_elem_1529);
3381
3828
  return addHeapObject(ret);
3382
3829
  };
3383
3830
  imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) {
Binary file