@itwin/core-common 4.0.0-dev.46 → 4.0.0-dev.48

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.
Files changed (947) hide show
  1. package/lib/cjs/AmbientOcclusion.d.ts +49 -49
  2. package/lib/cjs/AmbientOcclusion.js +55 -55
  3. package/lib/cjs/AmbientOcclusion.js.map +1 -1
  4. package/lib/cjs/AnalysisStyle.d.ts +134 -134
  5. package/lib/cjs/AnalysisStyle.js +165 -165
  6. package/lib/cjs/AnalysisStyle.js.map +1 -1
  7. package/lib/cjs/AuthorizationClient.d.ts +17 -17
  8. package/lib/cjs/AuthorizationClient.js +9 -9
  9. package/lib/cjs/AuthorizationClient.js.map +1 -1
  10. package/lib/cjs/BackendTypes.d.ts +12 -12
  11. package/lib/cjs/BackendTypes.js +9 -9
  12. package/lib/cjs/BackendTypes.js.map +1 -1
  13. package/lib/cjs/BackgroundMapProvider.d.ts +51 -51
  14. package/lib/cjs/BackgroundMapProvider.js +67 -67
  15. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  16. package/lib/cjs/BackgroundMapSettings.d.ts +136 -136
  17. package/lib/cjs/BackgroundMapSettings.js +154 -154
  18. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  19. package/lib/cjs/Base64EncodedString.d.ts +32 -32
  20. package/lib/cjs/Base64EncodedString.js +66 -66
  21. package/lib/cjs/Base64EncodedString.js.map +1 -1
  22. package/lib/cjs/BlobReader.d.ts +31 -31
  23. package/lib/cjs/BlobReader.js +84 -84
  24. package/lib/cjs/BlobReader.js.map +1 -1
  25. package/lib/cjs/BriefcaseTypes.d.ts +191 -191
  26. package/lib/cjs/BriefcaseTypes.js +95 -95
  27. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  28. package/lib/cjs/Camera.d.ts +42 -42
  29. package/lib/cjs/Camera.js +62 -62
  30. package/lib/cjs/Camera.js.map +1 -1
  31. package/lib/cjs/ChangedElements.d.ts +85 -85
  32. package/lib/cjs/ChangedElements.js +23 -23
  33. package/lib/cjs/ChangedElements.js.map +1 -1
  34. package/lib/cjs/ChangedEntities.d.ts +45 -45
  35. package/lib/cjs/ChangedEntities.js +9 -9
  36. package/lib/cjs/ChangedEntities.js.map +1 -1
  37. package/lib/cjs/ChangesetProps.d.ts +98 -98
  38. package/lib/cjs/ChangesetProps.js +22 -22
  39. package/lib/cjs/ChangesetProps.js.map +1 -1
  40. package/lib/cjs/ClipStyle.d.ts +89 -89
  41. package/lib/cjs/ClipStyle.js +121 -121
  42. package/lib/cjs/ClipStyle.js.map +1 -1
  43. package/lib/cjs/CloudStorage.d.ts +62 -62
  44. package/lib/cjs/CloudStorage.js +113 -113
  45. package/lib/cjs/CloudStorage.js.map +1 -1
  46. package/lib/cjs/CloudStorageTileCache.d.ts +27 -27
  47. package/lib/cjs/CloudStorageTileCache.js +65 -65
  48. package/lib/cjs/CloudStorageTileCache.js.map +1 -1
  49. package/lib/cjs/Code.d.ts +277 -277
  50. package/lib/cjs/Code.js +268 -268
  51. package/lib/cjs/Code.js.map +1 -1
  52. package/lib/cjs/ColorByName.d.ts +161 -161
  53. package/lib/cjs/ColorByName.js +169 -169
  54. package/lib/cjs/ColorByName.js.map +1 -1
  55. package/lib/cjs/ColorDef.d.ts +208 -208
  56. package/lib/cjs/ColorDef.js +570 -570
  57. package/lib/cjs/ColorDef.js.map +1 -1
  58. package/lib/cjs/CommonLoggerCategory.d.ts +18 -18
  59. package/lib/cjs/CommonLoggerCategory.js +26 -26
  60. package/lib/cjs/CommonLoggerCategory.js.map +1 -1
  61. package/lib/cjs/ConcurrentQuery.d.ts +421 -421
  62. package/lib/cjs/ConcurrentQuery.js +552 -552
  63. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  64. package/lib/cjs/ContextRealityModel.d.ts +303 -303
  65. package/lib/cjs/ContextRealityModel.js +371 -371
  66. package/lib/cjs/ContextRealityModel.js.map +1 -1
  67. package/lib/cjs/DisplayStyleSettings.d.ts +588 -588
  68. package/lib/cjs/DisplayStyleSettings.js +981 -981
  69. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  70. package/lib/cjs/ECSchemaProps.d.ts +39 -39
  71. package/lib/cjs/ECSchemaProps.js +9 -9
  72. package/lib/cjs/ECSchemaProps.js.map +1 -1
  73. package/lib/cjs/ECSqlReader.d.ts +70 -70
  74. package/lib/cjs/ECSqlReader.js +280 -280
  75. package/lib/cjs/ECSqlReader.js.map +1 -1
  76. package/lib/cjs/ECSqlTypes.d.ts +128 -128
  77. package/lib/cjs/ECSqlTypes.js +189 -189
  78. package/lib/cjs/ECSqlTypes.js.map +1 -1
  79. package/lib/cjs/ElementMesh.d.ts +39 -39
  80. package/lib/cjs/ElementMesh.js +56 -56
  81. package/lib/cjs/ElementMesh.js.map +1 -1
  82. package/lib/cjs/ElementProps.d.ts +483 -483
  83. package/lib/cjs/ElementProps.js +99 -99
  84. package/lib/cjs/ElementProps.js.map +1 -1
  85. package/lib/cjs/EmphasizeElementsProps.d.ts +55 -55
  86. package/lib/cjs/EmphasizeElementsProps.js +25 -25
  87. package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
  88. package/lib/cjs/EntityProps.d.ts +177 -177
  89. package/lib/cjs/EntityProps.js +113 -113
  90. package/lib/cjs/EntityProps.js.map +1 -1
  91. package/lib/cjs/EntityReference.d.ts +51 -51
  92. package/lib/cjs/EntityReference.js +56 -56
  93. package/lib/cjs/EntityReference.js.map +1 -1
  94. package/lib/cjs/Environment.d.ts +61 -61
  95. package/lib/cjs/Environment.js +70 -70
  96. package/lib/cjs/Environment.js.map +1 -1
  97. package/lib/cjs/FeatureIndex.d.ts +39 -39
  98. package/lib/cjs/FeatureIndex.js +63 -63
  99. package/lib/cjs/FeatureIndex.js.map +1 -1
  100. package/lib/cjs/FeatureSymbology.d.ts +444 -444
  101. package/lib/cjs/FeatureSymbology.js +613 -613
  102. package/lib/cjs/FeatureSymbology.js.map +1 -1
  103. package/lib/cjs/FeatureTable.d.ts +141 -141
  104. package/lib/cjs/FeatureTable.js +278 -278
  105. package/lib/cjs/FeatureTable.js.map +1 -1
  106. package/lib/cjs/Fonts.d.ts +51 -51
  107. package/lib/cjs/Fonts.js +53 -53
  108. package/lib/cjs/Fonts.js.map +1 -1
  109. package/lib/cjs/Frustum.d.ts +114 -114
  110. package/lib/cjs/Frustum.js +292 -292
  111. package/lib/cjs/Frustum.js.map +1 -1
  112. package/lib/cjs/GeoCoordinateServices.d.ts +119 -119
  113. package/lib/cjs/GeoCoordinateServices.js +80 -80
  114. package/lib/cjs/GeoCoordinateServices.js.map +1 -1
  115. package/lib/cjs/GeometryContainment.d.ts +28 -28
  116. package/lib/cjs/GeometryContainment.js +9 -9
  117. package/lib/cjs/GeometryContainment.js.map +1 -1
  118. package/lib/cjs/GeometryParams.d.ts +130 -130
  119. package/lib/cjs/GeometryParams.js +174 -174
  120. package/lib/cjs/GeometryParams.js.map +1 -1
  121. package/lib/cjs/GeometrySummary.d.ts +45 -45
  122. package/lib/cjs/GeometrySummary.js +23 -23
  123. package/lib/cjs/GeometrySummary.js.map +1 -1
  124. package/lib/cjs/Gradient.d.ts +139 -139
  125. package/lib/cjs/Gradient.js +453 -453
  126. package/lib/cjs/Gradient.js.map +1 -1
  127. package/lib/cjs/GraphicParams.d.ts +58 -58
  128. package/lib/cjs/GraphicParams.js +85 -85
  129. package/lib/cjs/GraphicParams.js.map +1 -1
  130. package/lib/cjs/GroundPlane.d.ts +52 -52
  131. package/lib/cjs/GroundPlane.js +63 -63
  132. package/lib/cjs/GroundPlane.js.map +1 -1
  133. package/lib/cjs/HSLColor.d.ts +20 -20
  134. package/lib/cjs/HSLColor.js +32 -32
  135. package/lib/cjs/HSLColor.js.map +1 -1
  136. package/lib/cjs/HSVColor.d.ts +30 -30
  137. package/lib/cjs/HSVColor.js +59 -59
  138. package/lib/cjs/HSVColor.js.map +1 -1
  139. package/lib/cjs/HiddenLine.d.ts +97 -97
  140. package/lib/cjs/HiddenLine.js +160 -160
  141. package/lib/cjs/HiddenLine.js.map +1 -1
  142. package/lib/cjs/Hilite.d.ts +50 -50
  143. package/lib/cjs/Hilite.js +64 -64
  144. package/lib/cjs/Hilite.js.map +1 -1
  145. package/lib/cjs/IModel.d.ts +358 -358
  146. package/lib/cjs/IModel.js +347 -347
  147. package/lib/cjs/IModel.js.map +1 -1
  148. package/lib/cjs/IModelError.d.ts +42 -42
  149. package/lib/cjs/IModelError.js +71 -71
  150. package/lib/cjs/IModelError.js.map +1 -1
  151. package/lib/cjs/IModelVersion.d.ts +68 -68
  152. package/lib/cjs/IModelVersion.js +79 -79
  153. package/lib/cjs/IModelVersion.js.map +1 -1
  154. package/lib/cjs/Image.d.ts +86 -86
  155. package/lib/cjs/Image.js +128 -128
  156. package/lib/cjs/Image.js.map +1 -1
  157. package/lib/cjs/IpcAppProps.d.ts +141 -141
  158. package/lib/cjs/IpcAppProps.js +23 -23
  159. package/lib/cjs/IpcAppProps.js.map +1 -1
  160. package/lib/cjs/LightSettings.d.ts +224 -224
  161. package/lib/cjs/LightSettings.js +304 -304
  162. package/lib/cjs/LightSettings.js.map +1 -1
  163. package/lib/cjs/LinePixels.d.ts +34 -34
  164. package/lib/cjs/LinePixels.js +42 -42
  165. package/lib/cjs/LinePixels.js.map +1 -1
  166. package/lib/cjs/Localization.d.ts +113 -113
  167. package/lib/cjs/Localization.js +33 -33
  168. package/lib/cjs/Localization.js.map +1 -1
  169. package/lib/cjs/MapImagerySettings.d.ts +62 -62
  170. package/lib/cjs/MapImagerySettings.js +80 -80
  171. package/lib/cjs/MapImagerySettings.js.map +1 -1
  172. package/lib/cjs/MapLayerSettings.d.ts +272 -272
  173. package/lib/cjs/MapLayerSettings.js +407 -407
  174. package/lib/cjs/MapLayerSettings.js.map +1 -1
  175. package/lib/cjs/MassProperties.d.ts +64 -64
  176. package/lib/cjs/MassProperties.js +23 -23
  177. package/lib/cjs/MassProperties.js.map +1 -1
  178. package/lib/cjs/MaterialProps.d.ts +153 -153
  179. package/lib/cjs/MaterialProps.js +35 -35
  180. package/lib/cjs/MaterialProps.js.map +1 -1
  181. package/lib/cjs/ModelClipGroup.d.ts +67 -67
  182. package/lib/cjs/ModelClipGroup.js +96 -96
  183. package/lib/cjs/ModelClipGroup.js.map +1 -1
  184. package/lib/cjs/ModelGeometryChanges.d.ts +107 -107
  185. package/lib/cjs/ModelGeometryChanges.js +83 -83
  186. package/lib/cjs/ModelGeometryChanges.js.map +1 -1
  187. package/lib/cjs/ModelProps.d.ts +67 -67
  188. package/lib/cjs/ModelProps.js +9 -9
  189. package/lib/cjs/ModelProps.js.map +1 -1
  190. package/lib/cjs/NativeAppProps.d.ts +122 -122
  191. package/lib/cjs/NativeAppProps.js +30 -30
  192. package/lib/cjs/NativeAppProps.js.map +1 -1
  193. package/lib/cjs/OctEncodedNormal.d.ts +33 -33
  194. package/lib/cjs/OctEncodedNormal.js +98 -98
  195. package/lib/cjs/OctEncodedNormal.js.map +1 -1
  196. package/lib/cjs/PlanProjectionSettings.d.ts +47 -47
  197. package/lib/cjs/PlanProjectionSettings.js +63 -63
  198. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  199. package/lib/cjs/PlanarClipMask.d.ts +177 -177
  200. package/lib/cjs/PlanarClipMask.js +136 -136
  201. package/lib/cjs/PlanarClipMask.js.map +1 -1
  202. package/lib/cjs/QPoint.d.ts +479 -479
  203. package/lib/cjs/QPoint.js +824 -824
  204. package/lib/cjs/QPoint.js.map +1 -1
  205. package/lib/cjs/RealityDataAccessProps.d.ts +41 -41
  206. package/lib/cjs/RealityDataAccessProps.js +19 -19
  207. package/lib/cjs/RealityDataAccessProps.js.map +1 -1
  208. package/lib/cjs/RealityModelDisplaySettings.d.ts +183 -183
  209. package/lib/cjs/RealityModelDisplaySettings.js +141 -141
  210. package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
  211. package/lib/cjs/Render.d.ts +89 -89
  212. package/lib/cjs/Render.js +177 -177
  213. package/lib/cjs/Render.js.map +1 -1
  214. package/lib/cjs/RenderMaterial.d.ts +58 -58
  215. package/lib/cjs/RenderMaterial.js +75 -75
  216. package/lib/cjs/RenderMaterial.js.map +1 -1
  217. package/lib/cjs/RenderSchedule.d.ts +543 -543
  218. package/lib/cjs/RenderSchedule.js +992 -992
  219. package/lib/cjs/RenderTexture.d.ts +70 -70
  220. package/lib/cjs/RenderTexture.js +59 -59
  221. package/lib/cjs/RenderTexture.js.map +1 -1
  222. package/lib/cjs/RgbColor.d.ts +47 -47
  223. package/lib/cjs/RgbColor.js +77 -77
  224. package/lib/cjs/RgbColor.js.map +1 -1
  225. package/lib/cjs/RpcInterface.d.ts +33 -33
  226. package/lib/cjs/RpcInterface.js +137 -137
  227. package/lib/cjs/RpcInterface.js.map +1 -1
  228. package/lib/cjs/RpcManager.d.ts +40 -40
  229. package/lib/cjs/RpcManager.js +55 -55
  230. package/lib/cjs/RpcManager.js.map +1 -1
  231. package/lib/cjs/SessionProps.d.ts +16 -16
  232. package/lib/cjs/SessionProps.js +9 -9
  233. package/lib/cjs/SessionProps.js.map +1 -1
  234. package/lib/cjs/SkyBox.d.ts +215 -215
  235. package/lib/cjs/SkyBox.js +209 -209
  236. package/lib/cjs/SkyBox.js.map +1 -1
  237. package/lib/cjs/Snapping.d.ts +49 -49
  238. package/lib/cjs/Snapping.js +9 -9
  239. package/lib/cjs/Snapping.js.map +1 -1
  240. package/lib/cjs/SolarCalculate.d.ts +27 -27
  241. package/lib/cjs/SolarCalculate.js +211 -211
  242. package/lib/cjs/SolarCalculate.js.map +1 -1
  243. package/lib/cjs/SolarShadows.d.ts +35 -35
  244. package/lib/cjs/SolarShadows.js +61 -61
  245. package/lib/cjs/SolarShadows.js.map +1 -1
  246. package/lib/cjs/SpatialClassification.d.ts +208 -208
  247. package/lib/cjs/SpatialClassification.js +339 -339
  248. package/lib/cjs/SpatialClassification.js.map +1 -1
  249. package/lib/cjs/SubCategoryAppearance.d.ts +91 -91
  250. package/lib/cjs/SubCategoryAppearance.js +96 -96
  251. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  252. package/lib/cjs/SubCategoryOverride.d.ts +46 -46
  253. package/lib/cjs/SubCategoryOverride.js +104 -104
  254. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  255. package/lib/cjs/TerrainSettings.d.ts +82 -82
  256. package/lib/cjs/TerrainSettings.js +100 -100
  257. package/lib/cjs/TerrainSettings.js.map +1 -1
  258. package/lib/cjs/TextureMapping.d.ts +118 -118
  259. package/lib/cjs/TextureMapping.js +173 -173
  260. package/lib/cjs/TextureMapping.js.map +1 -1
  261. package/lib/cjs/TextureProps.d.ts +65 -65
  262. package/lib/cjs/TextureProps.js +28 -28
  263. package/lib/cjs/TextureProps.js.map +1 -1
  264. package/lib/cjs/ThematicDisplay.d.ts +230 -230
  265. package/lib/cjs/ThematicDisplay.js +343 -343
  266. package/lib/cjs/ThematicDisplay.js.map +1 -1
  267. package/lib/cjs/Thumbnail.d.ts +26 -26
  268. package/lib/cjs/Thumbnail.js +9 -9
  269. package/lib/cjs/Thumbnail.js.map +1 -1
  270. package/lib/cjs/TileProps.d.ts +82 -82
  271. package/lib/cjs/TileProps.js +29 -29
  272. package/lib/cjs/TileProps.js.map +1 -1
  273. package/lib/cjs/Tween.d.ts +191 -191
  274. package/lib/cjs/Tween.js +570 -570
  275. package/lib/cjs/Tween.js.map +1 -1
  276. package/lib/cjs/TxnAction.d.ts +21 -21
  277. package/lib/cjs/TxnAction.js +29 -29
  278. package/lib/cjs/TxnAction.js.map +1 -1
  279. package/lib/cjs/ViewDetails.d.ts +125 -125
  280. package/lib/cjs/ViewDetails.js +166 -166
  281. package/lib/cjs/ViewDetails.js.map +1 -1
  282. package/lib/cjs/ViewFlags.d.ts +287 -287
  283. package/lib/cjs/ViewFlags.js +367 -367
  284. package/lib/cjs/ViewFlags.js.map +1 -1
  285. package/lib/cjs/ViewProps.d.ts +205 -205
  286. package/lib/cjs/ViewProps.js +9 -9
  287. package/lib/cjs/ViewProps.js.map +1 -1
  288. package/lib/cjs/WhiteOnWhiteReversalSettings.d.ts +36 -36
  289. package/lib/cjs/WhiteOnWhiteReversalSettings.js +37 -37
  290. package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
  291. package/lib/cjs/core-common.d.ts +245 -245
  292. package/lib/cjs/core-common.js +261 -261
  293. package/lib/cjs/core-common.js.map +1 -1
  294. package/lib/cjs/domains/FunctionalElementProps.d.ts +11 -11
  295. package/lib/cjs/domains/FunctionalElementProps.js +9 -9
  296. package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
  297. package/lib/cjs/domains/GenericElementProps.d.ts +18 -18
  298. package/lib/cjs/domains/GenericElementProps.js +9 -9
  299. package/lib/cjs/domains/GenericElementProps.js.map +1 -1
  300. package/lib/cjs/geometry/AdditionalTransform.d.ts +84 -84
  301. package/lib/cjs/geometry/AdditionalTransform.js +85 -85
  302. package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
  303. package/lib/cjs/geometry/AreaPattern.d.ts +82 -82
  304. package/lib/cjs/geometry/AreaPattern.js +203 -203
  305. package/lib/cjs/geometry/AreaPattern.js.map +1 -1
  306. package/lib/cjs/geometry/BoundingSphere.d.ts +27 -27
  307. package/lib/cjs/geometry/BoundingSphere.js +44 -44
  308. package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
  309. package/lib/cjs/geometry/Cartographic.d.ts +137 -137
  310. package/lib/cjs/geometry/Cartographic.js +345 -345
  311. package/lib/cjs/geometry/Cartographic.js.map +1 -1
  312. package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts +269 -269
  313. package/lib/cjs/geometry/CoordinateReferenceSystem.js +260 -260
  314. package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
  315. package/lib/cjs/geometry/ElementGeometry.d.ts +402 -402
  316. package/lib/cjs/geometry/ElementGeometry.js +1719 -1719
  317. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  318. package/lib/cjs/geometry/ElementGeometryFB.d.ts +2372 -2372
  319. package/lib/cjs/geometry/ElementGeometryFB.js +3814 -3814
  320. package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
  321. package/lib/cjs/geometry/FrustumPlanes.d.ts +81 -81
  322. package/lib/cjs/geometry/FrustumPlanes.js +189 -189
  323. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  324. package/lib/cjs/geometry/GeodeticDatum.d.ts +409 -409
  325. package/lib/cjs/geometry/GeodeticDatum.js +400 -400
  326. package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
  327. package/lib/cjs/geometry/GeodeticEllipsoid.d.ts +72 -72
  328. package/lib/cjs/geometry/GeodeticEllipsoid.js +71 -71
  329. package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
  330. package/lib/cjs/geometry/GeometryStream.d.ts +347 -347
  331. package/lib/cjs/geometry/GeometryStream.js +468 -468
  332. package/lib/cjs/geometry/GeometryStream.js.map +1 -1
  333. package/lib/cjs/geometry/ImageGraphic.d.ts +74 -74
  334. package/lib/cjs/geometry/ImageGraphic.js +98 -98
  335. package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
  336. package/lib/cjs/geometry/LineStyle.d.ts +71 -71
  337. package/lib/cjs/geometry/LineStyle.js +129 -129
  338. package/lib/cjs/geometry/LineStyle.js.map +1 -1
  339. package/lib/cjs/geometry/Placement.d.ts +95 -95
  340. package/lib/cjs/geometry/Placement.js +131 -131
  341. package/lib/cjs/geometry/Placement.js.map +1 -1
  342. package/lib/cjs/geometry/Projection.d.ts +251 -251
  343. package/lib/cjs/geometry/Projection.js +198 -198
  344. package/lib/cjs/geometry/Projection.js.map +1 -1
  345. package/lib/cjs/geometry/TextString.d.ts +55 -55
  346. package/lib/cjs/geometry/TextString.js +65 -65
  347. package/lib/cjs/geometry/TextString.js.map +1 -1
  348. package/lib/cjs/ipc/IpcSession.d.ts +23 -23
  349. package/lib/cjs/ipc/IpcSession.js +27 -27
  350. package/lib/cjs/ipc/IpcSession.js.map +1 -1
  351. package/lib/cjs/ipc/IpcSocket.d.ts +96 -96
  352. package/lib/cjs/ipc/IpcSocket.js +16 -16
  353. package/lib/cjs/ipc/IpcSocket.js.map +1 -1
  354. package/lib/cjs/ipc/IpcWebSocket.d.ts +61 -61
  355. package/lib/cjs/ipc/IpcWebSocket.js +150 -150
  356. package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
  357. package/lib/cjs/ipc/IpcWebSocketTransport.d.ts +15 -15
  358. package/lib/cjs/ipc/IpcWebSocketTransport.js +160 -160
  359. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  360. package/lib/cjs/rpc/DevToolsRpcInterface.d.ts +32 -32
  361. package/lib/cjs/rpc/DevToolsRpcInterface.js +52 -52
  362. package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
  363. package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +99 -99
  364. package/lib/cjs/rpc/IModelReadRpcInterface.js +122 -122
  365. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  366. package/lib/cjs/rpc/IModelTileRpcInterface.d.ts +61 -61
  367. package/lib/cjs/rpc/IModelTileRpcInterface.js +96 -96
  368. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  369. package/lib/cjs/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  370. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js +48 -48
  371. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  372. package/lib/cjs/rpc/TestRpcManager.d.ts +20 -20
  373. package/lib/cjs/rpc/TestRpcManager.js +40 -40
  374. package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
  375. package/lib/cjs/rpc/WipRpcInterface.d.ts +29 -29
  376. package/lib/cjs/rpc/WipRpcInterface.js +40 -40
  377. package/lib/cjs/rpc/WipRpcInterface.js.map +1 -1
  378. package/lib/cjs/rpc/core/RpcConfiguration.d.ts +111 -111
  379. package/lib/cjs/rpc/core/RpcConfiguration.js +191 -191
  380. package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
  381. package/lib/cjs/rpc/core/RpcConstants.d.ts +90 -90
  382. package/lib/cjs/rpc/core/RpcConstants.js +109 -109
  383. package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
  384. package/lib/cjs/rpc/core/RpcControl.d.ts +54 -54
  385. package/lib/cjs/rpc/core/RpcControl.js +145 -145
  386. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  387. package/lib/cjs/rpc/core/RpcInvocation.d.ts +89 -89
  388. package/lib/cjs/rpc/core/RpcInvocation.js +256 -256
  389. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  390. package/lib/cjs/rpc/core/RpcMarshaling.d.ts +35 -35
  391. package/lib/cjs/rpc/core/RpcMarshaling.js +156 -156
  392. package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
  393. package/lib/cjs/rpc/core/RpcOperation.d.ts +67 -67
  394. package/lib/cjs/rpc/core/RpcOperation.js +134 -134
  395. package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
  396. package/lib/cjs/rpc/core/RpcPendingQueue.d.ts +21 -21
  397. package/lib/cjs/rpc/core/RpcPendingQueue.js +94 -94
  398. package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
  399. package/lib/cjs/rpc/core/RpcProtocol.d.ts +132 -132
  400. package/lib/cjs/rpc/core/RpcProtocol.js +127 -127
  401. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  402. package/lib/cjs/rpc/core/RpcPush.d.ts +68 -68
  403. package/lib/cjs/rpc/core/RpcPush.js +127 -127
  404. package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
  405. package/lib/cjs/rpc/core/RpcRegistry.d.ts +48 -48
  406. package/lib/cjs/rpc/core/RpcRegistry.js +198 -198
  407. package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
  408. package/lib/cjs/rpc/core/RpcRequest.d.ts +186 -186
  409. package/lib/cjs/rpc/core/RpcRequest.js +478 -478
  410. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  411. package/lib/cjs/rpc/core/RpcRequestContext.d.ts +14 -14
  412. package/lib/cjs/rpc/core/RpcRequestContext.js +2 -2
  413. package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
  414. package/lib/cjs/rpc/core/RpcRoutingToken.d.ts +12 -12
  415. package/lib/cjs/rpc/core/RpcRoutingToken.js +24 -24
  416. package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
  417. package/lib/cjs/rpc/core/RpcSessionInvocation.d.ts +10 -10
  418. package/lib/cjs/rpc/core/RpcSessionInvocation.js +60 -60
  419. package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
  420. package/lib/cjs/rpc/web/BentleyCloudRpcManager.d.ts +46 -46
  421. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js +73 -73
  422. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  423. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  424. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +141 -141
  425. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  426. package/lib/cjs/rpc/web/OpenAPI.d.ts +140 -140
  427. package/lib/cjs/rpc/web/OpenAPI.js +60 -60
  428. package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
  429. package/lib/cjs/rpc/web/RpcMultipart.d.ts +35 -35
  430. package/lib/cjs/rpc/web/RpcMultipart.js +50 -50
  431. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  432. package/lib/cjs/rpc/web/WebAppRpcLogging.d.ts +28 -28
  433. package/lib/cjs/rpc/web/WebAppRpcLogging.js +140 -140
  434. package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
  435. package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +89 -89
  436. package/lib/cjs/rpc/web/WebAppRpcProtocol.js +116 -116
  437. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  438. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +67 -67
  439. package/lib/cjs/rpc/web/WebAppRpcRequest.js +239 -239
  440. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  441. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
  442. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js +373 -373
  443. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  444. package/lib/cjs/tile/B3dmTileIO.d.ts +19 -19
  445. package/lib/cjs/tile/B3dmTileIO.js +66 -66
  446. package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
  447. package/lib/cjs/tile/CompositeTileIO.d.ts +15 -15
  448. package/lib/cjs/tile/CompositeTileIO.js +26 -26
  449. package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
  450. package/lib/cjs/tile/ElementGraphics.d.ts +145 -145
  451. package/lib/cjs/tile/ElementGraphics.js +9 -9
  452. package/lib/cjs/tile/ElementGraphics.js.map +1 -1
  453. package/lib/cjs/tile/GltfTileIO.d.ts +45 -45
  454. package/lib/cjs/tile/GltfTileIO.js +109 -109
  455. package/lib/cjs/tile/GltfTileIO.js.map +1 -1
  456. package/lib/cjs/tile/I3dmTileIO.d.ts +20 -20
  457. package/lib/cjs/tile/I3dmTileIO.js +40 -40
  458. package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
  459. package/lib/cjs/tile/IModelTileIO.d.ts +75 -75
  460. package/lib/cjs/tile/IModelTileIO.js +95 -95
  461. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  462. package/lib/cjs/tile/PntsTileIO.d.ts +17 -17
  463. package/lib/cjs/tile/PntsTileIO.js +26 -26
  464. package/lib/cjs/tile/PntsTileIO.js.map +1 -1
  465. package/lib/cjs/tile/TileIO.d.ts +66 -66
  466. package/lib/cjs/tile/TileIO.js +118 -118
  467. package/lib/cjs/tile/TileIO.js.map +1 -1
  468. package/lib/cjs/tile/TileMetadata.d.ts +228 -228
  469. package/lib/cjs/tile/TileMetadata.js +675 -675
  470. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  471. package/lib/cjs/tile/Tileset3dSchema.d.ts +96 -96
  472. package/lib/cjs/tile/Tileset3dSchema.js +9 -9
  473. package/lib/cjs/tile/Tileset3dSchema.js.map +1 -1
  474. package/lib/esm/AmbientOcclusion.d.ts +49 -49
  475. package/lib/esm/AmbientOcclusion.js +52 -52
  476. package/lib/esm/AmbientOcclusion.js.map +1 -1
  477. package/lib/esm/AnalysisStyle.d.ts +134 -134
  478. package/lib/esm/AnalysisStyle.js +159 -159
  479. package/lib/esm/AnalysisStyle.js.map +1 -1
  480. package/lib/esm/AuthorizationClient.d.ts +17 -17
  481. package/lib/esm/AuthorizationClient.js +8 -8
  482. package/lib/esm/AuthorizationClient.js.map +1 -1
  483. package/lib/esm/BackendTypes.d.ts +12 -12
  484. package/lib/esm/BackendTypes.js +8 -8
  485. package/lib/esm/BackendTypes.js.map +1 -1
  486. package/lib/esm/BackgroundMapProvider.d.ts +51 -51
  487. package/lib/esm/BackgroundMapProvider.js +63 -63
  488. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  489. package/lib/esm/BackgroundMapSettings.d.ts +136 -136
  490. package/lib/esm/BackgroundMapSettings.js +150 -150
  491. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  492. package/lib/esm/Base64EncodedString.d.ts +32 -32
  493. package/lib/esm/Base64EncodedString.js +63 -63
  494. package/lib/esm/Base64EncodedString.js.map +1 -1
  495. package/lib/esm/BlobReader.d.ts +31 -31
  496. package/lib/esm/BlobReader.js +79 -79
  497. package/lib/esm/BlobReader.js.map +1 -1
  498. package/lib/esm/BriefcaseTypes.d.ts +191 -191
  499. package/lib/esm/BriefcaseTypes.js +92 -92
  500. package/lib/esm/BriefcaseTypes.js.map +1 -1
  501. package/lib/esm/Camera.d.ts +42 -42
  502. package/lib/esm/Camera.js +58 -58
  503. package/lib/esm/Camera.js.map +1 -1
  504. package/lib/esm/ChangedElements.d.ts +85 -85
  505. package/lib/esm/ChangedElements.js +20 -20
  506. package/lib/esm/ChangedElements.js.map +1 -1
  507. package/lib/esm/ChangedEntities.d.ts +45 -45
  508. package/lib/esm/ChangedEntities.js +8 -8
  509. package/lib/esm/ChangedEntities.js.map +1 -1
  510. package/lib/esm/ChangesetProps.d.ts +98 -98
  511. package/lib/esm/ChangesetProps.js +19 -19
  512. package/lib/esm/ChangesetProps.js.map +1 -1
  513. package/lib/esm/ClipStyle.d.ts +89 -89
  514. package/lib/esm/ClipStyle.js +116 -116
  515. package/lib/esm/ClipStyle.js.map +1 -1
  516. package/lib/esm/CloudStorage.d.ts +62 -62
  517. package/lib/esm/CloudStorage.js +109 -109
  518. package/lib/esm/CloudStorage.js.map +1 -1
  519. package/lib/esm/CloudStorageTileCache.d.ts +27 -27
  520. package/lib/esm/CloudStorageTileCache.js +61 -61
  521. package/lib/esm/CloudStorageTileCache.js.map +1 -1
  522. package/lib/esm/Code.d.ts +277 -277
  523. package/lib/esm/Code.js +263 -263
  524. package/lib/esm/Code.js.map +1 -1
  525. package/lib/esm/ColorByName.d.ts +161 -161
  526. package/lib/esm/ColorByName.js +166 -166
  527. package/lib/esm/ColorByName.js.map +1 -1
  528. package/lib/esm/ColorDef.d.ts +208 -208
  529. package/lib/esm/ColorDef.js +566 -566
  530. package/lib/esm/ColorDef.js.map +1 -1
  531. package/lib/esm/CommonLoggerCategory.d.ts +18 -18
  532. package/lib/esm/CommonLoggerCategory.js +23 -23
  533. package/lib/esm/CommonLoggerCategory.js.map +1 -1
  534. package/lib/esm/ConcurrentQuery.d.ts +421 -421
  535. package/lib/esm/ConcurrentQuery.js +545 -545
  536. package/lib/esm/ConcurrentQuery.js.map +1 -1
  537. package/lib/esm/ContextRealityModel.d.ts +303 -303
  538. package/lib/esm/ContextRealityModel.js +366 -366
  539. package/lib/esm/ContextRealityModel.js.map +1 -1
  540. package/lib/esm/DisplayStyleSettings.d.ts +588 -588
  541. package/lib/esm/DisplayStyleSettings.js +976 -976
  542. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  543. package/lib/esm/ECSchemaProps.d.ts +39 -39
  544. package/lib/esm/ECSchemaProps.js +8 -8
  545. package/lib/esm/ECSchemaProps.js.map +1 -1
  546. package/lib/esm/ECSqlReader.d.ts +70 -70
  547. package/lib/esm/ECSqlReader.js +275 -275
  548. package/lib/esm/ECSqlReader.js.map +1 -1
  549. package/lib/esm/ECSqlTypes.d.ts +128 -128
  550. package/lib/esm/ECSqlTypes.js +185 -185
  551. package/lib/esm/ECSqlTypes.js.map +1 -1
  552. package/lib/esm/ElementMesh.d.ts +39 -39
  553. package/lib/esm/ElementMesh.js +52 -52
  554. package/lib/esm/ElementMesh.js.map +1 -1
  555. package/lib/esm/ElementProps.d.ts +483 -483
  556. package/lib/esm/ElementProps.js +92 -92
  557. package/lib/esm/ElementProps.js.map +1 -1
  558. package/lib/esm/EmphasizeElementsProps.d.ts +55 -55
  559. package/lib/esm/EmphasizeElementsProps.js +22 -22
  560. package/lib/esm/EmphasizeElementsProps.js.map +1 -1
  561. package/lib/esm/EntityProps.d.ts +177 -177
  562. package/lib/esm/EntityProps.js +108 -108
  563. package/lib/esm/EntityProps.js.map +1 -1
  564. package/lib/esm/EntityReference.d.ts +51 -51
  565. package/lib/esm/EntityReference.js +52 -52
  566. package/lib/esm/EntityReference.js.map +1 -1
  567. package/lib/esm/Environment.d.ts +61 -61
  568. package/lib/esm/Environment.js +66 -66
  569. package/lib/esm/Environment.js.map +1 -1
  570. package/lib/esm/FeatureIndex.d.ts +39 -39
  571. package/lib/esm/FeatureIndex.js +57 -57
  572. package/lib/esm/FeatureIndex.js.map +1 -1
  573. package/lib/esm/FeatureSymbology.d.ts +444 -444
  574. package/lib/esm/FeatureSymbology.js +608 -608
  575. package/lib/esm/FeatureSymbology.js.map +1 -1
  576. package/lib/esm/FeatureTable.d.ts +141 -141
  577. package/lib/esm/FeatureTable.js +272 -272
  578. package/lib/esm/FeatureTable.js.map +1 -1
  579. package/lib/esm/Fonts.d.ts +51 -51
  580. package/lib/esm/Fonts.js +49 -49
  581. package/lib/esm/Fonts.js.map +1 -1
  582. package/lib/esm/Frustum.d.ts +114 -114
  583. package/lib/esm/Frustum.js +288 -288
  584. package/lib/esm/Frustum.js.map +1 -1
  585. package/lib/esm/GeoCoordinateServices.d.ts +119 -119
  586. package/lib/esm/GeoCoordinateServices.js +76 -76
  587. package/lib/esm/GeoCoordinateServices.js.map +1 -1
  588. package/lib/esm/GeometryContainment.d.ts +28 -28
  589. package/lib/esm/GeometryContainment.js +8 -8
  590. package/lib/esm/GeometryContainment.js.map +1 -1
  591. package/lib/esm/GeometryParams.d.ts +130 -130
  592. package/lib/esm/GeometryParams.js +170 -170
  593. package/lib/esm/GeometryParams.js.map +1 -1
  594. package/lib/esm/GeometrySummary.d.ts +45 -45
  595. package/lib/esm/GeometrySummary.js +20 -20
  596. package/lib/esm/GeometrySummary.js.map +1 -1
  597. package/lib/esm/Gradient.d.ts +139 -139
  598. package/lib/esm/Gradient.js +450 -450
  599. package/lib/esm/Gradient.js.map +1 -1
  600. package/lib/esm/GraphicParams.d.ts +58 -58
  601. package/lib/esm/GraphicParams.js +81 -81
  602. package/lib/esm/GraphicParams.js.map +1 -1
  603. package/lib/esm/GroundPlane.d.ts +52 -52
  604. package/lib/esm/GroundPlane.js +59 -59
  605. package/lib/esm/GroundPlane.js.map +1 -1
  606. package/lib/esm/HSLColor.d.ts +20 -20
  607. package/lib/esm/HSLColor.js +28 -28
  608. package/lib/esm/HSLColor.js.map +1 -1
  609. package/lib/esm/HSVColor.d.ts +30 -30
  610. package/lib/esm/HSVColor.js +55 -55
  611. package/lib/esm/HSVColor.js.map +1 -1
  612. package/lib/esm/HiddenLine.d.ts +97 -97
  613. package/lib/esm/HiddenLine.js +157 -157
  614. package/lib/esm/HiddenLine.js.map +1 -1
  615. package/lib/esm/Hilite.d.ts +50 -50
  616. package/lib/esm/Hilite.js +61 -61
  617. package/lib/esm/Hilite.js.map +1 -1
  618. package/lib/esm/IModel.d.ts +358 -358
  619. package/lib/esm/IModel.js +342 -342
  620. package/lib/esm/IModel.js.map +1 -1
  621. package/lib/esm/IModelError.d.ts +42 -42
  622. package/lib/esm/IModelError.js +56 -56
  623. package/lib/esm/IModelError.js.map +1 -1
  624. package/lib/esm/IModelVersion.d.ts +68 -68
  625. package/lib/esm/IModelVersion.js +75 -75
  626. package/lib/esm/IModelVersion.js.map +1 -1
  627. package/lib/esm/Image.d.ts +86 -86
  628. package/lib/esm/Image.js +120 -120
  629. package/lib/esm/Image.js.map +1 -1
  630. package/lib/esm/IpcAppProps.d.ts +141 -141
  631. package/lib/esm/IpcAppProps.js +19 -19
  632. package/lib/esm/IpcAppProps.js.map +1 -1
  633. package/lib/esm/LightSettings.d.ts +224 -224
  634. package/lib/esm/LightSettings.js +296 -296
  635. package/lib/esm/LightSettings.js.map +1 -1
  636. package/lib/esm/LinePixels.d.ts +34 -34
  637. package/lib/esm/LinePixels.js +39 -39
  638. package/lib/esm/LinePixels.js.map +1 -1
  639. package/lib/esm/Localization.d.ts +113 -113
  640. package/lib/esm/Localization.js +29 -29
  641. package/lib/esm/Localization.js.map +1 -1
  642. package/lib/esm/MapImagerySettings.d.ts +62 -62
  643. package/lib/esm/MapImagerySettings.js +76 -76
  644. package/lib/esm/MapImagerySettings.js.map +1 -1
  645. package/lib/esm/MapLayerSettings.d.ts +272 -272
  646. package/lib/esm/MapLayerSettings.js +399 -399
  647. package/lib/esm/MapLayerSettings.js.map +1 -1
  648. package/lib/esm/MassProperties.d.ts +64 -64
  649. package/lib/esm/MassProperties.js +20 -20
  650. package/lib/esm/MassProperties.js.map +1 -1
  651. package/lib/esm/MaterialProps.d.ts +153 -153
  652. package/lib/esm/MaterialProps.js +32 -32
  653. package/lib/esm/MaterialProps.js.map +1 -1
  654. package/lib/esm/ModelClipGroup.d.ts +67 -67
  655. package/lib/esm/ModelClipGroup.js +91 -91
  656. package/lib/esm/ModelClipGroup.js.map +1 -1
  657. package/lib/esm/ModelGeometryChanges.d.ts +107 -107
  658. package/lib/esm/ModelGeometryChanges.js +80 -80
  659. package/lib/esm/ModelGeometryChanges.js.map +1 -1
  660. package/lib/esm/ModelProps.d.ts +67 -67
  661. package/lib/esm/ModelProps.js +8 -8
  662. package/lib/esm/ModelProps.js.map +1 -1
  663. package/lib/esm/NativeAppProps.d.ts +122 -122
  664. package/lib/esm/NativeAppProps.js +27 -27
  665. package/lib/esm/NativeAppProps.js.map +1 -1
  666. package/lib/esm/OctEncodedNormal.d.ts +33 -33
  667. package/lib/esm/OctEncodedNormal.js +93 -93
  668. package/lib/esm/OctEncodedNormal.js.map +1 -1
  669. package/lib/esm/PlanProjectionSettings.d.ts +47 -47
  670. package/lib/esm/PlanProjectionSettings.js +59 -59
  671. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  672. package/lib/esm/PlanarClipMask.d.ts +177 -177
  673. package/lib/esm/PlanarClipMask.js +132 -132
  674. package/lib/esm/PlanarClipMask.js.map +1 -1
  675. package/lib/esm/QPoint.d.ts +479 -479
  676. package/lib/esm/QPoint.js +813 -813
  677. package/lib/esm/QPoint.js.map +1 -1
  678. package/lib/esm/RealityDataAccessProps.d.ts +41 -41
  679. package/lib/esm/RealityDataAccessProps.js +16 -16
  680. package/lib/esm/RealityDataAccessProps.js.map +1 -1
  681. package/lib/esm/RealityModelDisplaySettings.d.ts +183 -183
  682. package/lib/esm/RealityModelDisplaySettings.js +136 -136
  683. package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
  684. package/lib/esm/Render.d.ts +89 -89
  685. package/lib/esm/Render.js +165 -165
  686. package/lib/esm/Render.js.map +1 -1
  687. package/lib/esm/RenderMaterial.d.ts +58 -58
  688. package/lib/esm/RenderMaterial.js +71 -71
  689. package/lib/esm/RenderMaterial.js.map +1 -1
  690. package/lib/esm/RenderSchedule.d.ts +543 -543
  691. package/lib/esm/RenderSchedule.js +989 -989
  692. package/lib/esm/RenderTexture.d.ts +70 -70
  693. package/lib/esm/RenderTexture.js +55 -55
  694. package/lib/esm/RenderTexture.js.map +1 -1
  695. package/lib/esm/RgbColor.d.ts +47 -47
  696. package/lib/esm/RgbColor.js +73 -73
  697. package/lib/esm/RgbColor.js.map +1 -1
  698. package/lib/esm/RpcInterface.d.ts +33 -33
  699. package/lib/esm/RpcInterface.js +133 -133
  700. package/lib/esm/RpcInterface.js.map +1 -1
  701. package/lib/esm/RpcManager.d.ts +40 -40
  702. package/lib/esm/RpcManager.js +51 -51
  703. package/lib/esm/RpcManager.js.map +1 -1
  704. package/lib/esm/SessionProps.d.ts +16 -16
  705. package/lib/esm/SessionProps.js +8 -8
  706. package/lib/esm/SessionProps.js.map +1 -1
  707. package/lib/esm/SkyBox.d.ts +215 -215
  708. package/lib/esm/SkyBox.js +202 -202
  709. package/lib/esm/SkyBox.js.map +1 -1
  710. package/lib/esm/Snapping.d.ts +49 -49
  711. package/lib/esm/Snapping.js +8 -8
  712. package/lib/esm/Snapping.js.map +1 -1
  713. package/lib/esm/SolarCalculate.d.ts +27 -27
  714. package/lib/esm/SolarCalculate.js +204 -204
  715. package/lib/esm/SolarCalculate.js.map +1 -1
  716. package/lib/esm/SolarShadows.d.ts +35 -35
  717. package/lib/esm/SolarShadows.js +57 -57
  718. package/lib/esm/SolarShadows.js.map +1 -1
  719. package/lib/esm/SpatialClassification.d.ts +208 -208
  720. package/lib/esm/SpatialClassification.js +333 -333
  721. package/lib/esm/SpatialClassification.js.map +1 -1
  722. package/lib/esm/SubCategoryAppearance.d.ts +91 -91
  723. package/lib/esm/SubCategoryAppearance.js +92 -92
  724. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  725. package/lib/esm/SubCategoryOverride.d.ts +46 -46
  726. package/lib/esm/SubCategoryOverride.js +100 -100
  727. package/lib/esm/SubCategoryOverride.js.map +1 -1
  728. package/lib/esm/TerrainSettings.d.ts +82 -82
  729. package/lib/esm/TerrainSettings.js +96 -96
  730. package/lib/esm/TerrainSettings.js.map +1 -1
  731. package/lib/esm/TextureMapping.d.ts +118 -118
  732. package/lib/esm/TextureMapping.js +169 -169
  733. package/lib/esm/TextureMapping.js.map +1 -1
  734. package/lib/esm/TextureProps.d.ts +65 -65
  735. package/lib/esm/TextureProps.js +25 -25
  736. package/lib/esm/TextureProps.js.map +1 -1
  737. package/lib/esm/ThematicDisplay.d.ts +230 -230
  738. package/lib/esm/ThematicDisplay.js +336 -336
  739. package/lib/esm/ThematicDisplay.js.map +1 -1
  740. package/lib/esm/Thumbnail.d.ts +26 -26
  741. package/lib/esm/Thumbnail.js +8 -8
  742. package/lib/esm/Thumbnail.js.map +1 -1
  743. package/lib/esm/TileProps.d.ts +82 -82
  744. package/lib/esm/TileProps.js +25 -25
  745. package/lib/esm/TileProps.js.map +1 -1
  746. package/lib/esm/Tween.d.ts +191 -191
  747. package/lib/esm/Tween.js +565 -565
  748. package/lib/esm/Tween.js.map +1 -1
  749. package/lib/esm/TxnAction.d.ts +21 -21
  750. package/lib/esm/TxnAction.js +26 -26
  751. package/lib/esm/TxnAction.js.map +1 -1
  752. package/lib/esm/ViewDetails.d.ts +125 -125
  753. package/lib/esm/ViewDetails.js +161 -161
  754. package/lib/esm/ViewDetails.js.map +1 -1
  755. package/lib/esm/ViewFlags.d.ts +287 -287
  756. package/lib/esm/ViewFlags.js +363 -363
  757. package/lib/esm/ViewFlags.js.map +1 -1
  758. package/lib/esm/ViewProps.d.ts +205 -205
  759. package/lib/esm/ViewProps.js +8 -8
  760. package/lib/esm/ViewProps.js.map +1 -1
  761. package/lib/esm/WhiteOnWhiteReversalSettings.d.ts +36 -36
  762. package/lib/esm/WhiteOnWhiteReversalSettings.js +33 -33
  763. package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
  764. package/lib/esm/core-common.d.ts +245 -245
  765. package/lib/esm/core-common.js +249 -249
  766. package/lib/esm/core-common.js.map +1 -1
  767. package/lib/esm/domains/FunctionalElementProps.d.ts +11 -11
  768. package/lib/esm/domains/FunctionalElementProps.js +8 -8
  769. package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
  770. package/lib/esm/domains/GenericElementProps.d.ts +18 -18
  771. package/lib/esm/domains/GenericElementProps.js +8 -8
  772. package/lib/esm/domains/GenericElementProps.js.map +1 -1
  773. package/lib/esm/geometry/AdditionalTransform.d.ts +84 -84
  774. package/lib/esm/geometry/AdditionalTransform.js +80 -80
  775. package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
  776. package/lib/esm/geometry/AreaPattern.d.ts +82 -82
  777. package/lib/esm/geometry/AreaPattern.js +200 -200
  778. package/lib/esm/geometry/AreaPattern.js.map +1 -1
  779. package/lib/esm/geometry/BoundingSphere.d.ts +27 -27
  780. package/lib/esm/geometry/BoundingSphere.js +40 -40
  781. package/lib/esm/geometry/BoundingSphere.js.map +1 -1
  782. package/lib/esm/geometry/Cartographic.d.ts +137 -137
  783. package/lib/esm/geometry/Cartographic.js +340 -340
  784. package/lib/esm/geometry/Cartographic.js.map +1 -1
  785. package/lib/esm/geometry/CoordinateReferenceSystem.d.ts +269 -269
  786. package/lib/esm/geometry/CoordinateReferenceSystem.js +253 -253
  787. package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
  788. package/lib/esm/geometry/ElementGeometry.d.ts +402 -402
  789. package/lib/esm/geometry/ElementGeometry.js +1716 -1716
  790. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  791. package/lib/esm/geometry/ElementGeometryFB.d.ts +2372 -2372
  792. package/lib/esm/geometry/ElementGeometryFB.js +3811 -3811
  793. package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
  794. package/lib/esm/geometry/FrustumPlanes.d.ts +81 -81
  795. package/lib/esm/geometry/FrustumPlanes.js +185 -185
  796. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  797. package/lib/esm/geometry/GeodeticDatum.d.ts +409 -409
  798. package/lib/esm/geometry/GeodeticDatum.js +389 -389
  799. package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
  800. package/lib/esm/geometry/GeodeticEllipsoid.d.ts +72 -72
  801. package/lib/esm/geometry/GeodeticEllipsoid.js +67 -67
  802. package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
  803. package/lib/esm/geometry/GeometryStream.d.ts +347 -347
  804. package/lib/esm/geometry/GeometryStream.js +463 -463
  805. package/lib/esm/geometry/GeometryStream.js.map +1 -1
  806. package/lib/esm/geometry/ImageGraphic.d.ts +74 -74
  807. package/lib/esm/geometry/ImageGraphic.js +93 -93
  808. package/lib/esm/geometry/ImageGraphic.js.map +1 -1
  809. package/lib/esm/geometry/LineStyle.d.ts +71 -71
  810. package/lib/esm/geometry/LineStyle.js +126 -126
  811. package/lib/esm/geometry/LineStyle.js.map +1 -1
  812. package/lib/esm/geometry/Placement.d.ts +95 -95
  813. package/lib/esm/geometry/Placement.js +126 -126
  814. package/lib/esm/geometry/Placement.js.map +1 -1
  815. package/lib/esm/geometry/Projection.d.ts +251 -251
  816. package/lib/esm/geometry/Projection.js +192 -192
  817. package/lib/esm/geometry/Projection.js.map +1 -1
  818. package/lib/esm/geometry/TextString.d.ts +55 -55
  819. package/lib/esm/geometry/TextString.js +61 -61
  820. package/lib/esm/geometry/TextString.js.map +1 -1
  821. package/lib/esm/ipc/IpcSession.d.ts +23 -23
  822. package/lib/esm/ipc/IpcSession.js +23 -23
  823. package/lib/esm/ipc/IpcSession.js.map +1 -1
  824. package/lib/esm/ipc/IpcSocket.d.ts +96 -96
  825. package/lib/esm/ipc/IpcSocket.js +12 -12
  826. package/lib/esm/ipc/IpcSocket.js.map +1 -1
  827. package/lib/esm/ipc/IpcWebSocket.d.ts +61 -61
  828. package/lib/esm/ipc/IpcWebSocket.js +144 -144
  829. package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
  830. package/lib/esm/ipc/IpcWebSocketTransport.d.ts +15 -15
  831. package/lib/esm/ipc/IpcWebSocketTransport.js +156 -156
  832. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  833. package/lib/esm/rpc/DevToolsRpcInterface.d.ts +32 -32
  834. package/lib/esm/rpc/DevToolsRpcInterface.js +48 -48
  835. package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
  836. package/lib/esm/rpc/IModelReadRpcInterface.d.ts +99 -99
  837. package/lib/esm/rpc/IModelReadRpcInterface.js +117 -117
  838. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  839. package/lib/esm/rpc/IModelTileRpcInterface.d.ts +61 -61
  840. package/lib/esm/rpc/IModelTileRpcInterface.js +92 -92
  841. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  842. package/lib/esm/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  843. package/lib/esm/rpc/SnapshotIModelRpcInterface.js +44 -44
  844. package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  845. package/lib/esm/rpc/TestRpcManager.d.ts +20 -20
  846. package/lib/esm/rpc/TestRpcManager.js +36 -36
  847. package/lib/esm/rpc/TestRpcManager.js.map +1 -1
  848. package/lib/esm/rpc/WipRpcInterface.d.ts +29 -29
  849. package/lib/esm/rpc/WipRpcInterface.js +36 -36
  850. package/lib/esm/rpc/WipRpcInterface.js.map +1 -1
  851. package/lib/esm/rpc/core/RpcConfiguration.d.ts +111 -111
  852. package/lib/esm/rpc/core/RpcConfiguration.js +184 -184
  853. package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
  854. package/lib/esm/rpc/core/RpcConstants.d.ts +90 -90
  855. package/lib/esm/rpc/core/RpcConstants.js +106 -106
  856. package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
  857. package/lib/esm/rpc/core/RpcControl.d.ts +54 -54
  858. package/lib/esm/rpc/core/RpcControl.js +138 -138
  859. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  860. package/lib/esm/rpc/core/RpcInvocation.d.ts +89 -89
  861. package/lib/esm/rpc/core/RpcInvocation.js +252 -252
  862. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  863. package/lib/esm/rpc/core/RpcMarshaling.d.ts +35 -35
  864. package/lib/esm/rpc/core/RpcMarshaling.js +152 -152
  865. package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
  866. package/lib/esm/rpc/core/RpcOperation.d.ts +67 -67
  867. package/lib/esm/rpc/core/RpcOperation.js +129 -129
  868. package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
  869. package/lib/esm/rpc/core/RpcPendingQueue.d.ts +21 -21
  870. package/lib/esm/rpc/core/RpcPendingQueue.js +90 -90
  871. package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
  872. package/lib/esm/rpc/core/RpcProtocol.d.ts +132 -132
  873. package/lib/esm/rpc/core/RpcProtocol.js +123 -123
  874. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  875. package/lib/esm/rpc/core/RpcPush.d.ts +68 -68
  876. package/lib/esm/rpc/core/RpcPush.js +119 -119
  877. package/lib/esm/rpc/core/RpcPush.js.map +1 -1
  878. package/lib/esm/rpc/core/RpcRegistry.d.ts +48 -48
  879. package/lib/esm/rpc/core/RpcRegistry.js +194 -194
  880. package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
  881. package/lib/esm/rpc/core/RpcRequest.d.ts +186 -186
  882. package/lib/esm/rpc/core/RpcRequest.js +473 -473
  883. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  884. package/lib/esm/rpc/core/RpcRequestContext.d.ts +14 -14
  885. package/lib/esm/rpc/core/RpcRequestContext.js +1 -1
  886. package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
  887. package/lib/esm/rpc/core/RpcRoutingToken.d.ts +12 -12
  888. package/lib/esm/rpc/core/RpcRoutingToken.js +20 -20
  889. package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
  890. package/lib/esm/rpc/core/RpcSessionInvocation.d.ts +10 -10
  891. package/lib/esm/rpc/core/RpcSessionInvocation.js +56 -56
  892. package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
  893. package/lib/esm/rpc/web/BentleyCloudRpcManager.d.ts +46 -46
  894. package/lib/esm/rpc/web/BentleyCloudRpcManager.js +68 -68
  895. package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  896. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  897. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +137 -137
  898. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  899. package/lib/esm/rpc/web/OpenAPI.d.ts +140 -140
  900. package/lib/esm/rpc/web/OpenAPI.js +56 -56
  901. package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
  902. package/lib/esm/rpc/web/RpcMultipart.d.ts +35 -35
  903. package/lib/esm/rpc/web/RpcMultipart.js +46 -46
  904. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  905. package/lib/esm/rpc/web/WebAppRpcLogging.d.ts +28 -28
  906. package/lib/esm/rpc/web/WebAppRpcLogging.js +136 -136
  907. package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
  908. package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +89 -89
  909. package/lib/esm/rpc/web/WebAppRpcProtocol.js +112 -112
  910. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  911. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +67 -67
  912. package/lib/esm/rpc/web/WebAppRpcRequest.js +235 -235
  913. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  914. package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
  915. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js +369 -369
  916. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  917. package/lib/esm/tile/B3dmTileIO.d.ts +19 -19
  918. package/lib/esm/tile/B3dmTileIO.js +62 -62
  919. package/lib/esm/tile/B3dmTileIO.js.map +1 -1
  920. package/lib/esm/tile/CompositeTileIO.d.ts +15 -15
  921. package/lib/esm/tile/CompositeTileIO.js +22 -22
  922. package/lib/esm/tile/CompositeTileIO.js.map +1 -1
  923. package/lib/esm/tile/ElementGraphics.d.ts +145 -145
  924. package/lib/esm/tile/ElementGraphics.js +8 -8
  925. package/lib/esm/tile/ElementGraphics.js.map +1 -1
  926. package/lib/esm/tile/GltfTileIO.d.ts +45 -45
  927. package/lib/esm/tile/GltfTileIO.js +105 -105
  928. package/lib/esm/tile/GltfTileIO.js.map +1 -1
  929. package/lib/esm/tile/I3dmTileIO.d.ts +20 -20
  930. package/lib/esm/tile/I3dmTileIO.js +36 -36
  931. package/lib/esm/tile/I3dmTileIO.js.map +1 -1
  932. package/lib/esm/tile/IModelTileIO.d.ts +75 -75
  933. package/lib/esm/tile/IModelTileIO.js +90 -90
  934. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  935. package/lib/esm/tile/PntsTileIO.d.ts +17 -17
  936. package/lib/esm/tile/PntsTileIO.js +22 -22
  937. package/lib/esm/tile/PntsTileIO.js.map +1 -1
  938. package/lib/esm/tile/TileIO.d.ts +66 -66
  939. package/lib/esm/tile/TileIO.js +110 -110
  940. package/lib/esm/tile/TileIO.js.map +1 -1
  941. package/lib/esm/tile/TileMetadata.d.ts +228 -228
  942. package/lib/esm/tile/TileMetadata.js +660 -660
  943. package/lib/esm/tile/TileMetadata.js.map +1 -1
  944. package/lib/esm/tile/Tileset3dSchema.d.ts +96 -96
  945. package/lib/esm/tile/Tileset3dSchema.js +8 -8
  946. package/lib/esm/tile/Tileset3dSchema.js.map +1 -1
  947. package/package.json +6 -6
@@ -1,661 +1,661 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- /** @packageDocumentation
6
- * @module Tile
7
- */
8
- import { assert, compareBooleans, compareBooleansOrUndefined, compareNumbers, compareStringsOrUndefined, Id64, } from "@itwin/core-bentley";
9
- import { Range3d, Vector3d } from "@itwin/core-geometry";
10
- import { BatchType } from "../FeatureTable";
11
- import { CurrentImdlVersion, FeatureTableHeader, ImdlFlags, ImdlHeader } from "./IModelTileIO";
12
- import { TileReadError, TileReadStatus } from "./TileIO";
13
- // cspell:ignore imdl mult bitfield
14
- // NB: These constants correspond to those defined in Tile.cpp.
15
- var Constants;
16
- (function (Constants) {
17
- Constants.minToleranceRatioMultiplier = 2;
18
- })(Constants || (Constants = {}));
19
- /** @internal */
20
- export var TileOptions;
21
- (function (TileOptions) {
22
- /** Given the string representation of an [[IModelTileTreeId]] and the contentId of a [Tile]($frontend) belonging to that [TileTree]($frontend),
23
- * compute the [[TileOptions]] that were used to generate the Ids.
24
- * @throws Error if `treeId` or `contentId` are not valid Ids.
25
- * @note `treeId` and `contentId` are assumed to be valid Ids. They are not fully parsed and validated - only the information required by this function is extracted.
26
- * @note `treeId` and `contentId` are assumed to have been produced for version 4 or later of the iMdl tile format.
27
- */
28
- function fromTreeIdAndContentId(treeId, contentId) {
29
- const tree = treeFlagsAndFormatVersionFromId(treeId);
30
- const contentFlags = contentFlagsFromId(contentId);
31
- const edgeOptions = edgeOptionsFromTreeId(treeId);
32
- return {
33
- maximumMajorTileFormatVersion: tree.version,
34
- enableInstancing: 0 !== (contentFlags & ContentFlags.AllowInstancing),
35
- enableImprovedElision: 0 !== (contentFlags & ContentFlags.ImprovedElision),
36
- ignoreAreaPatterns: 0 !== (contentFlags & ContentFlags.IgnoreAreaPatterns),
37
- enableExternalTextures: 0 !== (contentFlags & ContentFlags.ExternalTextures),
38
- useProjectExtents: 0 !== (tree.flags & TreeFlags.UseProjectExtents),
39
- optimizeBRepProcessing: 0 !== (tree.flags & TreeFlags.OptimizeBRepProcessing),
40
- useLargerTiles: 0 !== (tree.flags & TreeFlags.UseLargerTiles),
41
- disableMagnification: false,
42
- alwaysSubdivideIncompleteTiles: false,
43
- enableIndexedEdges: edgeOptions && edgeOptions.indexed,
44
- generateAllPolyfaceEdges: edgeOptions && edgeOptions.smooth,
45
- };
46
- }
47
- TileOptions.fromTreeIdAndContentId = fromTreeIdAndContentId;
48
- })(TileOptions || (TileOptions = {}));
49
- class Parser {
50
- constructor(input) {
51
- this.curPos = 0;
52
- this.input = input;
53
- }
54
- parse(contentId) {
55
- this.require(this.input.length > 0);
56
- // Skip version and flags, they're handled by TileOptions.fromTreeIdAndContentId
57
- while (this.curPos < this.input.length && this.cur() !== "-")
58
- this.advance();
59
- this.eat("-");
60
- this.require(this.curPos < this.input.length);
61
- const classifier = this.cur() === "C" ? this.parseClassifier() : undefined;
62
- const animationId = this.parseAnimation();
63
- const primary = classifier ? undefined : this.parsePrimary();
64
- this.require((undefined === classifier) !== (undefined === primary));
65
- const modelId = this.input.substr(this.curPos);
66
- this.require(Id64.isId64(modelId));
67
- const { flags: treeFlags } = treeFlagsAndFormatVersionFromId(this.input);
68
- const options = TileOptions.fromTreeIdAndContentId(this.input, contentId);
69
- let parsedContentId;
70
- try {
71
- parsedContentId = ContentIdProvider.create(true, options).specFromId(contentId);
72
- }
73
- catch (e) {
74
- this.reject("Invalid content Id");
75
- }
76
- if (Object.keys(parsedContentId).some((key) => parsedContentId.hasOwnProperty(key) && typeof parsedContentId[key] === "number" && !Number.isFinite(parsedContentId[key])))
77
- throw new Error("Invalid content Id");
78
- let treeId;
79
- if (classifier) {
80
- treeId = { ...classifier, animationId };
81
- }
82
- else {
83
- assert(undefined !== primary);
84
- const enforceDisplayPriority = (treeFlags & TreeFlags.EnforceDisplayPriority) !== 0 ? true : undefined;
85
- treeId = { ...primary, animationId, type: BatchType.Primary, enforceDisplayPriority };
86
- }
87
- return {
88
- contentId: parsedContentId,
89
- modelId,
90
- options,
91
- treeId,
92
- };
93
- }
94
- cur() {
95
- this.require(this.curPos < this.input.length);
96
- return this.input[this.curPos];
97
- }
98
- advance() {
99
- this.require(this.curPos < this.input.length);
100
- ++this.curPos;
101
- }
102
- eat(expectedChar) {
103
- this.require(this.cur() === expectedChar);
104
- this.advance();
105
- }
106
- reject(message = "Invalid tree Id") {
107
- throw new Error(message);
108
- }
109
- require(condition, message = "Invalid tree Id") {
110
- if (!condition)
111
- this.reject(message);
112
- }
113
- parseClassifier() {
114
- this.eat("C");
115
- let type = BatchType.VolumeClassifier;
116
- if (this.cur() === "P") {
117
- type = BatchType.PlanarClassifier;
118
- this.advance();
119
- }
120
- this.eat(":");
121
- // C: or CP: is always folowed by expansion then an underscore.
122
- let expansionStr = "";
123
- while (this.curPos < this.input.length && (this.cur() >= "0" && this.cur() <= "9" || this.cur() === ".")) {
124
- expansionStr += this.cur();
125
- this.advance();
126
- }
127
- this.eat("_");
128
- const expansion = Number.parseFloat(expansionStr);
129
- this.require(!Number.isNaN(expansion));
130
- return { type, expansion };
131
- }
132
- parseAnimation() {
133
- if (this.cur() !== "A")
134
- return undefined;
135
- this.eat("A");
136
- this.eat(":");
137
- const termPos = this.input.indexOf("_", this.curPos);
138
- this.require(termPos > this.curPos);
139
- const animationId = this.input.substring(this.curPos, termPos);
140
- this.require(Id64.isId64(animationId));
141
- this.curPos = termPos + 1; // Skip "_"
142
- return animationId;
143
- }
144
- parsePrimary() {
145
- const edges = this.parseEdges();
146
- const sectionCut = this.parseSectionCut();
147
- return { edges, sectionCut };
148
- }
149
- parseEdges() {
150
- if ("E" !== this.cur())
151
- return { indexed: false, smooth: false };
152
- this.eat("E");
153
- this.eat(":");
154
- const typeStr = this.cur();
155
- this.eat(typeStr);
156
- this.eat("_");
157
- switch (typeStr) {
158
- case "0": return false;
159
- case "2": return { indexed: true, smooth: false };
160
- case "3": return { indexed: false, smooth: true };
161
- case "4": return { indexed: true, smooth: true };
162
- default: this.reject();
163
- }
164
- }
165
- parseSectionCut() {
166
- if ("S" !== this.cur())
167
- return undefined;
168
- this.eat("S");
169
- const termPos = this.input.indexOf("s", this.curPos);
170
- this.require(termPos > this.curPos);
171
- const sectionCut = this.input.substring(this.curPos, termPos);
172
- this.curPos = termPos + 1; // Skip "_";
173
- return sectionCut;
174
- }
175
- }
176
- /** @internal */
177
- export function parseTileTreeIdAndContentId(treeId, contentId) {
178
- const parser = new Parser(treeId);
179
- return parser.parse(contentId);
180
- }
181
- /** @internal */
182
- export const defaultTileOptions = Object.freeze({
183
- maximumMajorTileFormatVersion: CurrentImdlVersion.Major,
184
- enableInstancing: true,
185
- enableImprovedElision: true,
186
- ignoreAreaPatterns: false,
187
- enableExternalTextures: true,
188
- useProjectExtents: true,
189
- optimizeBRepProcessing: true,
190
- useLargerTiles: true,
191
- disableMagnification: false,
192
- alwaysSubdivideIncompleteTiles: false,
193
- enableIndexedEdges: true,
194
- generateAllPolyfaceEdges: true,
195
- });
196
- function contentFlagsFromId(id) {
197
- if (0 === id.length || "-" !== id[0])
198
- throw new Error("Invalid content Id");
199
- // V4: -flags-d-i-j-k-m - version in tree Id
200
- const end = id.indexOf("-", 1);
201
- if (-1 !== end) {
202
- const flags = Number.parseInt(id.substring(1, end), 16);
203
- if (!Number.isNaN(flags))
204
- return flags;
205
- }
206
- throw new Error("Invalid content Id");
207
- }
208
- function treeFlagsAndFormatVersionFromId(id) {
209
- if (0 === id.length)
210
- throw new Error("Invalid tree Id");
211
- let parts = id.split("-");
212
- if (parts.length > 0) {
213
- parts = parts[0].split("_");
214
- if (parts.length === 2) {
215
- const version = Number.parseInt(parts[0], 16);
216
- const flags = Number.parseInt(parts[1], 16);
217
- if (!Number.isNaN(version) || !Number.isNaN(flags))
218
- return { version, flags };
219
- }
220
- }
221
- throw new Error("Invalid tree Id");
222
- }
223
- function edgeOptionsFromTreeId(id) {
224
- const pos = id.indexOf("E:");
225
- if (pos <= 0)
226
- return { indexed: false, smooth: false };
227
- switch (id[pos + 2]) {
228
- case "0": return { indexed: defaultTileOptions.enableIndexedEdges, smooth: defaultTileOptions.generateAllPolyfaceEdges };
229
- case "2": return { indexed: true, smooth: false };
230
- case "3": return { indexed: false, smooth: true };
231
- case "4": return { indexed: true, smooth: true };
232
- }
233
- throw new Error("Invalid tree Id");
234
- }
235
- /** @internal */
236
- export function getMaximumMajorTileFormatVersion(maxMajorVersion, formatVersion) {
237
- // The `formatVersion` input is from the backend, telling us precisely the maximum major+minor version it can produce.
238
- // Ensure we do not request tiles of a newer major version than backend can supply or it can read; and also limit major version
239
- // to that optionally configured by the app.
240
- let majorVersion = maxMajorVersion;
241
- if (undefined !== formatVersion)
242
- majorVersion = Math.min((formatVersion >>> 0x10), majorVersion);
243
- // Version number less than 1 is invalid - ignore
244
- majorVersion = Math.max(majorVersion, 1);
245
- // Version number greater than current known version ignored
246
- majorVersion = Math.min(majorVersion, CurrentImdlVersion.Major);
247
- // Version numbers are integers - round down
248
- return Math.max(Math.floor(majorVersion), 1);
249
- }
250
- /** Flags controlling the structure of a tile tree. The flags are part of the tile tree's Id.
251
- * @alpha
252
- */
253
- export var TreeFlags;
254
- (function (TreeFlags) {
255
- TreeFlags[TreeFlags["None"] = 0] = "None";
256
- TreeFlags[TreeFlags["UseProjectExtents"] = 1] = "UseProjectExtents";
257
- TreeFlags[TreeFlags["EnforceDisplayPriority"] = 2] = "EnforceDisplayPriority";
258
- TreeFlags[TreeFlags["OptimizeBRepProcessing"] = 4] = "OptimizeBRepProcessing";
259
- TreeFlags[TreeFlags["UseLargerTiles"] = 8] = "UseLargerTiles";
260
- })(TreeFlags || (TreeFlags = {}));
261
- function compareEdgeOptions(a, b) {
262
- if (typeof a !== typeof b)
263
- return a ? 1 : -1;
264
- if (typeof a === "boolean") {
265
- assert(typeof b === "boolean");
266
- return compareBooleans(a, b);
267
- }
268
- assert(typeof b === "object");
269
- let cmp = compareBooleans(a.indexed, b.indexed);
270
- if (0 === cmp)
271
- cmp = compareBooleans(a.smooth, b.smooth);
272
- return cmp;
273
- }
274
- function animationIdToString(animationId) {
275
- return `A:${animationId}_`;
276
- }
277
- /** Convert a tile tree Id to its string representation.
278
- * @internal
279
- */
280
- export function iModelTileTreeIdToString(modelId, treeId, options) {
281
- let idStr = "";
282
- let flags = options.useProjectExtents ? TreeFlags.UseProjectExtents : TreeFlags.None;
283
- if (options.optimizeBRepProcessing)
284
- flags |= TreeFlags.OptimizeBRepProcessing;
285
- if (options.useLargerTiles)
286
- flags |= TreeFlags.UseLargerTiles;
287
- if (BatchType.Primary === treeId.type) {
288
- if (undefined !== treeId.animationId)
289
- idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
290
- else if (treeId.enforceDisplayPriority) // animation and priority are currently mutually exclusive
291
- flags |= TreeFlags.EnforceDisplayPriority;
292
- let edges;
293
- if (!treeId.edges) {
294
- edges = "E:0_";
295
- }
296
- else {
297
- if (!treeId.edges.smooth)
298
- edges = treeId.edges.indexed ? "E:2_" : "";
299
- else
300
- edges = treeId.edges.indexed ? "E:4_" : "E:3_";
301
- }
302
- const sectionCut = treeId.sectionCut ? `S${treeId.sectionCut}s` : "";
303
- idStr = `${idStr}${edges}${sectionCut}`;
304
- }
305
- else {
306
- const typeStr = BatchType.PlanarClassifier === treeId.type ? "CP" : "C";
307
- idStr = `${idStr + typeStr}:${treeId.expansion.toFixed(6)}_`;
308
- if (BatchType.VolumeClassifier === treeId.type)
309
- flags |= TreeFlags.UseProjectExtents;
310
- if (undefined !== treeId.animationId)
311
- idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
312
- }
313
- const version = getMaximumMajorTileFormatVersion(options.maximumMajorTileFormatVersion);
314
- if (version >= 4) {
315
- const prefix = `${version.toString(16)}_${flags.toString(16)}-`;
316
- idStr = prefix + idStr;
317
- }
318
- return idStr + modelId;
319
- }
320
- /** Ordinal comparison of two tile tree Ids, e.g., for use in sorted containers.
321
- * @internal
322
- */
323
- export function compareIModelTileTreeIds(lhs, rhs) {
324
- let cmp = compareNumbers(lhs.type, rhs.type);
325
- if (0 === cmp)
326
- cmp = compareStringsOrUndefined(lhs.animationId, rhs.animationId);
327
- if (0 !== cmp)
328
- return cmp;
329
- // NB: The redundant checks on BatchType below are to satisfy compiler.
330
- assert(lhs.type === rhs.type);
331
- if (BatchType.Primary === lhs.type && BatchType.Primary === rhs.type) {
332
- cmp = compareEdgeOptions(lhs.edges, rhs.edges);
333
- if (0 === cmp) {
334
- cmp = compareBooleansOrUndefined(lhs.enforceDisplayPriority, rhs.enforceDisplayPriority);
335
- if (0 === cmp)
336
- cmp = compareStringsOrUndefined(lhs.sectionCut, rhs.sectionCut);
337
- }
338
- }
339
- else if (BatchType.Primary !== lhs.type && BatchType.Primary !== rhs.type) {
340
- cmp = compareNumbers(lhs.expansion, rhs.expansion);
341
- }
342
- return cmp;
343
- }
344
- /** Flags controlling how tile content is produced. The flags are part of the ContentId.
345
- * @alpha
346
- */
347
- export var ContentFlags;
348
- (function (ContentFlags) {
349
- ContentFlags[ContentFlags["None"] = 0] = "None";
350
- ContentFlags[ContentFlags["AllowInstancing"] = 1] = "AllowInstancing";
351
- ContentFlags[ContentFlags["ImprovedElision"] = 2] = "ImprovedElision";
352
- ContentFlags[ContentFlags["IgnoreAreaPatterns"] = 4] = "IgnoreAreaPatterns";
353
- ContentFlags[ContentFlags["ExternalTextures"] = 8] = "ExternalTextures";
354
- })(ContentFlags || (ContentFlags = {}));
355
- /** Contains logic for working with tile content Ids according to a specific content Id scheme. Which scheme is used depends on
356
- * the major version of the tile format.
357
- * @internal
358
- */
359
- export class ContentIdProvider {
360
- constructor(formatVersion, contentFlags) {
361
- this.majorFormatVersion = formatVersion;
362
- this.contentFlags = contentFlags;
363
- }
364
- get rootContentId() {
365
- return this.computeId(0, 0, 0, 0, 1);
366
- }
367
- idFromParentAndMultiplier(parentId, multiplier) {
368
- const lastSepPos = parentId.lastIndexOf(this._separator);
369
- assert(-1 !== lastSepPos);
370
- return parentId.substring(0, lastSepPos + 1) + multiplier.toString(16);
371
- }
372
- specFromId(id) {
373
- const parts = id.split(this._separator);
374
- const len = parts.length;
375
- assert(len >= 5);
376
- return {
377
- depth: parseInt(parts[len - 5], 16),
378
- i: parseInt(parts[len - 4], 16),
379
- j: parseInt(parts[len - 3], 16),
380
- k: parseInt(parts[len - 2], 16),
381
- multiplier: parseInt(parts[len - 1], 16),
382
- };
383
- }
384
- idFromSpec(spec) {
385
- return this.computeId(spec.depth, spec.i, spec.j, spec.k, spec.multiplier);
386
- }
387
- join(depth, i, j, k, mult) {
388
- const sep = this._separator;
389
- return depth.toString(16) + sep + i.toString(16) + sep + j.toString(16) + sep + k.toString(16) + sep + mult.toString(16);
390
- }
391
- /** formatVersion is the maximum major version supported by the back-end supplying the tile tree.
392
- * Must ensure front-end does not request tiles of a format the back-end cannot supply, and back-end does
393
- * not supply tiles of a format the front-end doesn't recognize.
394
- */
395
- static create(allowInstancing, options, formatVersion) {
396
- const majorVersion = getMaximumMajorTileFormatVersion(options.maximumMajorTileFormatVersion, formatVersion);
397
- assert(majorVersion > 0);
398
- assert(Math.floor(majorVersion) === majorVersion);
399
- switch (majorVersion) {
400
- case 0:
401
- case 1:
402
- return new ContentIdV1Provider(majorVersion);
403
- case 2:
404
- case 3:
405
- return new ContentIdV2Provider(majorVersion, allowInstancing, options);
406
- default:
407
- return new ContentIdV4Provider(allowInstancing, options, majorVersion);
408
- }
409
- }
410
- }
411
- /** The original (major version 1) tile format used a content Id scheme of the format
412
- * `depth/i/j/k/multiplier`.
413
- * @internal
414
- */
415
- class ContentIdV1Provider extends ContentIdProvider {
416
- constructor(majorVersion) {
417
- super(majorVersion, ContentFlags.None);
418
- }
419
- get _separator() { return "/"; }
420
- computeId(depth, i, j, k, mult) {
421
- return this.join(depth, i, j, k, mult);
422
- }
423
- }
424
- /** Tile formats 2 and 3 use a content Id scheme encoding styling flags and the major format version
425
- * into the content Id, of the format `_majorVersion_flags_depth_i_j_k_multiplier`.
426
- * @internal
427
- */
428
- class ContentIdV2Provider extends ContentIdProvider {
429
- constructor(majorVersion, allowInstancing, options) {
430
- const flags = (allowInstancing && options.enableInstancing) ? ContentFlags.AllowInstancing : ContentFlags.None;
431
- super(majorVersion, flags);
432
- this._prefix = this._separator + majorVersion.toString(16) + this._separator + flags.toString(16) + this._separator;
433
- }
434
- get _separator() { return "_"; }
435
- computeId(depth, i, j, k, mult) {
436
- return this._prefix + this.join(depth, i, j, k, mult);
437
- }
438
- }
439
- /** Tile formats 4+ encode styling flags but not major format version. (The version is specified by the tile tree's Id).
440
- * Format: `-flags-depth-i-j-k-multiplier`.
441
- * @internal
442
- */
443
- class ContentIdV4Provider extends ContentIdProvider {
444
- constructor(allowInstancing, options, majorVersion) {
445
- let flags = (allowInstancing && options.enableInstancing) ? ContentFlags.AllowInstancing : ContentFlags.None;
446
- if (options.enableImprovedElision)
447
- flags = flags | ContentFlags.ImprovedElision;
448
- if (options.ignoreAreaPatterns)
449
- flags = flags | ContentFlags.IgnoreAreaPatterns;
450
- if (options.enableExternalTextures)
451
- flags = flags | ContentFlags.ExternalTextures;
452
- super(majorVersion, flags);
453
- this._prefix = this._separator + flags.toString(16) + this._separator;
454
- }
455
- get _separator() { return "-"; }
456
- computeId(depth, i, j, k, mult) {
457
- return this._prefix + this.join(depth, i, j, k, mult);
458
- }
459
- }
460
- /** @internal */
461
- export function bisectTileRange3d(range, takeUpper) {
462
- const diag = range.diagonal();
463
- const pt = takeUpper ? range.high : range.low;
464
- if (diag.x > diag.y && diag.x > diag.z)
465
- pt.x = (range.low.x + range.high.x) / 2.0;
466
- else if (diag.y > diag.z)
467
- pt.y = (range.low.y + range.high.y) / 2.0;
468
- else
469
- pt.z = (range.low.z + range.high.z) / 2.0;
470
- }
471
- /** @internal */
472
- export function bisectTileRange2d(range, takeUpper) {
473
- const diag = range.diagonal();
474
- const pt = takeUpper ? range.high : range.low;
475
- if (diag.x > diag.y)
476
- pt.x = (range.low.x + range.high.x) / 2.0;
477
- else
478
- pt.y = (range.low.y + range.high.y) / 2.0;
479
- }
480
- /** Given a description of a tile, compute the ranges which would result from sub-dividing its range into 4 or 8 sub-volumes.
481
- * @internal
482
- */
483
- export function computeChildTileRanges(tile, root) {
484
- const emptyMask = tile.emptySubRangeMask;
485
- const is2d = root.is2d;
486
- const bisectRange = is2d ? bisectTileRange2d : bisectTileRange3d;
487
- const ranges = [];
488
- for (let i = 0; i < 2; i++) {
489
- for (let j = 0; j < 2; j++) {
490
- for (let k = 0; k < (is2d ? 1 : 2); k++) {
491
- const emptyBit = 1 << (i + j * 2 + k * 4);
492
- const isEmpty = 0 !== (emptyMask & emptyBit);
493
- const range = tile.range.clone();
494
- bisectRange(range, 0 === i);
495
- bisectRange(range, 0 === j);
496
- if (!is2d)
497
- bisectRange(range, 0 === k);
498
- ranges.push({ range, isEmpty });
499
- }
500
- }
501
- }
502
- return ranges;
503
- }
504
- /** Given a description of the parent tile, obtain the properties of its child tiles, and the number of empty children.
505
- * @internal
506
- */
507
- export function computeChildTileProps(parent, idProvider, root) {
508
- let numEmpty = 0;
509
- const children = [];
510
- // Leaf nodes have no children
511
- if (parent.isLeaf)
512
- return { children, numEmpty };
513
- // One child, same volume as parent, but higher-resolution.
514
- if (undefined !== parent.sizeMultiplier) {
515
- const sizeMultiplier = parent.sizeMultiplier * 2;
516
- const contentId = idProvider.idFromParentAndMultiplier(parent.contentId, sizeMultiplier);
517
- children.push({
518
- contentId,
519
- range: parent.range,
520
- contentRange: parent.contentRange,
521
- sizeMultiplier,
522
- isLeaf: false,
523
- maximumSize: root.tileScreenSize,
524
- });
525
- return { children, numEmpty };
526
- }
527
- // Sub-divide parent's range into 4 (for 2d trees) or 8 (for 3d trees) child tiles.
528
- const parentSpec = idProvider.specFromId(parent.contentId);
529
- const childSpec = { ...parentSpec };
530
- childSpec.depth = parentSpec.depth + 1;
531
- // This mask is a bitfield in which an 'on' bit indicates sub-volume containing no geometry.
532
- // Don't bother creating children or requesting content for such empty volumes.
533
- const emptyMask = parent.emptySubRangeMask;
534
- // Spatial tree range == project extents; content range == model range.
535
- // Trivially reject children whose ranges are entirely outside model range.
536
- let treeContentRange = root.contentRange;
537
- if (undefined !== treeContentRange && treeContentRange.containsRange(parent.range)) {
538
- // Parent is wholly within model range - don't bother testing child ranges against it.
539
- treeContentRange = undefined;
540
- }
541
- const is2d = root.is2d;
542
- const bisectRange = is2d ? bisectTileRange2d : bisectTileRange3d;
543
- for (let i = 0; i < 2; i++) {
544
- for (let j = 0; j < 2; j++) {
545
- for (let k = 0; k < (is2d ? 1 : 2); k++) {
546
- const emptyBit = 1 << (i + j * 2 + k * 4);
547
- if (0 !== (emptyMask & emptyBit)) {
548
- // volume is known to contain no geometry.
549
- ++numEmpty;
550
- continue;
551
- }
552
- const range = parent.range.clone();
553
- bisectRange(range, 0 === i);
554
- bisectRange(range, 0 === j);
555
- if (!is2d)
556
- bisectRange(range, 0 === k);
557
- if (undefined !== treeContentRange && !range.intersectsRange(treeContentRange)) {
558
- // volume is within project extents but entirely outside model range
559
- ++numEmpty;
560
- continue;
561
- }
562
- childSpec.i = parentSpec.i * 2 + i;
563
- childSpec.j = parentSpec.j * 2 + j;
564
- childSpec.k = parentSpec.k * 2 + k;
565
- const childId = idProvider.idFromSpec(childSpec);
566
- children.push({ contentId: childId, range, maximumSize: root.tileScreenSize });
567
- }
568
- }
569
- }
570
- return { children, numEmpty };
571
- }
572
- /** Deserializes tile content metadata.
573
- * @throws [[TileReadError]]
574
- * @internal
575
- */
576
- export function readTileContentDescription(stream, sizeMultiplier, is2d, options, isVolumeClassifier) {
577
- stream.reset();
578
- const header = new ImdlHeader(stream);
579
- if (!header.isValid)
580
- throw new TileReadError(TileReadStatus.InvalidHeader);
581
- else if (!header.isReadableVersion)
582
- throw new TileReadError(TileReadStatus.NewerMajorVersion);
583
- // Skip the feature table.
584
- const featureTableStartPos = stream.curPos;
585
- const ftHeader = FeatureTableHeader.readFrom(stream);
586
- if (undefined === ftHeader)
587
- throw new TileReadError(TileReadStatus.InvalidFeatureTable);
588
- stream.curPos = featureTableStartPos + ftHeader.length;
589
- // Determine subdivision based on header data.
590
- const completeTile = 0 === (header.flags & ImdlFlags.Incomplete);
591
- const emptyTile = completeTile && 0 === header.numElementsIncluded && 0 === header.numElementsExcluded;
592
- let isLeaf = (emptyTile || isVolumeClassifier); // Current classifier algorithm supports only a single tile.
593
- if (!isLeaf) {
594
- // Non-spatial (2d) models are of arbitrary scale and contain geometry like line work and especially text which
595
- // can be adversely affected by quantization issues when zooming in closely.
596
- const maxLeafTolerance = 1.0;
597
- // Must sub-divide if tile explicitly specifies...
598
- let canSkipSubdivision = 0 === (header.flags & ImdlFlags.DisallowMagnification);
599
- // ...or in 2d, or if app explicitly disabled magnification, or tolerance large enough to risk quantization error...
600
- canSkipSubdivision = canSkipSubdivision && !is2d && !options.disableMagnification && header.tolerance <= maxLeafTolerance;
601
- // ...or app specifies incomplete tiles must always be sub-divided.
602
- canSkipSubdivision = canSkipSubdivision && (completeTile || !options.alwaysSubdivideIncompleteTiles);
603
- if (canSkipSubdivision) {
604
- const minElementsPerTile = 100;
605
- if (completeTile && 0 === header.numElementsExcluded && header.numElementsIncluded <= minElementsPerTile) {
606
- const containsCurves = 0 !== (header.flags & ImdlFlags.ContainsCurves);
607
- if (!containsCurves)
608
- isLeaf = true;
609
- else if (undefined === sizeMultiplier)
610
- sizeMultiplier = 1.0;
611
- }
612
- else if (undefined === sizeMultiplier && header.numElementsIncluded + header.numElementsExcluded <= minElementsPerTile) {
613
- sizeMultiplier = 1.0;
614
- }
615
- }
616
- }
617
- return {
618
- featureTableStartPos,
619
- contentRange: header.contentRange,
620
- isLeaf,
621
- sizeMultiplier,
622
- emptySubRangeMask: header.emptySubRanges,
623
- };
624
- }
625
- const scratchRangeDiagonal = new Vector3d();
626
- /** Compute the chord tolerance for the specified tile of the given range with the specified size multiplier.
627
- * @internal
628
- */
629
- export function computeTileChordTolerance(tile, is3d, tileScreenSize) {
630
- if (tile.range.isNull)
631
- return 0;
632
- const diagonal = tile.range.diagonal(scratchRangeDiagonal);
633
- const diagDist = is3d ? diagonal.magnitude() : diagonal.magnitudeXY();
634
- const mult = Math.max(tile.sizeMultiplier ?? 1, 1);
635
- return diagDist / (tileScreenSize * Constants.minToleranceRatioMultiplier * Math.max(1, mult));
636
- }
637
- /** Deserializes tile metadata.
638
- * @internal
639
- */
640
- export class TileMetadataReader {
641
- constructor(type, is2d, options) {
642
- this._is2d = is2d;
643
- this._isVolumeClassifier = BatchType.VolumeClassifier === type;
644
- this._options = options;
645
- }
646
- /** Produce metadata from the specified tile content.
647
- * @throws [[TileReadError]]
648
- */
649
- read(stream, props) {
650
- const content = readTileContentDescription(stream, props.sizeMultiplier, this._is2d, this._options, this._isVolumeClassifier);
651
- return {
652
- contentRange: content.contentRange,
653
- isLeaf: content.isLeaf,
654
- sizeMultiplier: content.sizeMultiplier,
655
- emptySubRangeMask: content.emptySubRangeMask,
656
- range: Range3d.fromJSON(props.range),
657
- contentId: props.contentId,
658
- };
659
- }
660
- }
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Tile
7
+ */
8
+ import { assert, compareBooleans, compareBooleansOrUndefined, compareNumbers, compareStringsOrUndefined, Id64, } from "@itwin/core-bentley";
9
+ import { Range3d, Vector3d } from "@itwin/core-geometry";
10
+ import { BatchType } from "../FeatureTable";
11
+ import { CurrentImdlVersion, FeatureTableHeader, ImdlFlags, ImdlHeader } from "./IModelTileIO";
12
+ import { TileReadError, TileReadStatus } from "./TileIO";
13
+ // cspell:ignore imdl mult bitfield
14
+ // NB: These constants correspond to those defined in Tile.cpp.
15
+ var Constants;
16
+ (function (Constants) {
17
+ Constants.minToleranceRatioMultiplier = 2;
18
+ })(Constants || (Constants = {}));
19
+ /** @internal */
20
+ export var TileOptions;
21
+ (function (TileOptions) {
22
+ /** Given the string representation of an [[IModelTileTreeId]] and the contentId of a [Tile]($frontend) belonging to that [TileTree]($frontend),
23
+ * compute the [[TileOptions]] that were used to generate the Ids.
24
+ * @throws Error if `treeId` or `contentId` are not valid Ids.
25
+ * @note `treeId` and `contentId` are assumed to be valid Ids. They are not fully parsed and validated - only the information required by this function is extracted.
26
+ * @note `treeId` and `contentId` are assumed to have been produced for version 4 or later of the iMdl tile format.
27
+ */
28
+ function fromTreeIdAndContentId(treeId, contentId) {
29
+ const tree = treeFlagsAndFormatVersionFromId(treeId);
30
+ const contentFlags = contentFlagsFromId(contentId);
31
+ const edgeOptions = edgeOptionsFromTreeId(treeId);
32
+ return {
33
+ maximumMajorTileFormatVersion: tree.version,
34
+ enableInstancing: 0 !== (contentFlags & ContentFlags.AllowInstancing),
35
+ enableImprovedElision: 0 !== (contentFlags & ContentFlags.ImprovedElision),
36
+ ignoreAreaPatterns: 0 !== (contentFlags & ContentFlags.IgnoreAreaPatterns),
37
+ enableExternalTextures: 0 !== (contentFlags & ContentFlags.ExternalTextures),
38
+ useProjectExtents: 0 !== (tree.flags & TreeFlags.UseProjectExtents),
39
+ optimizeBRepProcessing: 0 !== (tree.flags & TreeFlags.OptimizeBRepProcessing),
40
+ useLargerTiles: 0 !== (tree.flags & TreeFlags.UseLargerTiles),
41
+ disableMagnification: false,
42
+ alwaysSubdivideIncompleteTiles: false,
43
+ enableIndexedEdges: edgeOptions && edgeOptions.indexed,
44
+ generateAllPolyfaceEdges: edgeOptions && edgeOptions.smooth,
45
+ };
46
+ }
47
+ TileOptions.fromTreeIdAndContentId = fromTreeIdAndContentId;
48
+ })(TileOptions || (TileOptions = {}));
49
+ class Parser {
50
+ constructor(input) {
51
+ this.curPos = 0;
52
+ this.input = input;
53
+ }
54
+ parse(contentId) {
55
+ this.require(this.input.length > 0);
56
+ // Skip version and flags, they're handled by TileOptions.fromTreeIdAndContentId
57
+ while (this.curPos < this.input.length && this.cur() !== "-")
58
+ this.advance();
59
+ this.eat("-");
60
+ this.require(this.curPos < this.input.length);
61
+ const classifier = this.cur() === "C" ? this.parseClassifier() : undefined;
62
+ const animationId = this.parseAnimation();
63
+ const primary = classifier ? undefined : this.parsePrimary();
64
+ this.require((undefined === classifier) !== (undefined === primary));
65
+ const modelId = this.input.substr(this.curPos);
66
+ this.require(Id64.isId64(modelId));
67
+ const { flags: treeFlags } = treeFlagsAndFormatVersionFromId(this.input);
68
+ const options = TileOptions.fromTreeIdAndContentId(this.input, contentId);
69
+ let parsedContentId;
70
+ try {
71
+ parsedContentId = ContentIdProvider.create(true, options).specFromId(contentId);
72
+ }
73
+ catch (e) {
74
+ this.reject("Invalid content Id");
75
+ }
76
+ if (Object.keys(parsedContentId).some((key) => parsedContentId.hasOwnProperty(key) && typeof parsedContentId[key] === "number" && !Number.isFinite(parsedContentId[key])))
77
+ throw new Error("Invalid content Id");
78
+ let treeId;
79
+ if (classifier) {
80
+ treeId = { ...classifier, animationId };
81
+ }
82
+ else {
83
+ assert(undefined !== primary);
84
+ const enforceDisplayPriority = (treeFlags & TreeFlags.EnforceDisplayPriority) !== 0 ? true : undefined;
85
+ treeId = { ...primary, animationId, type: BatchType.Primary, enforceDisplayPriority };
86
+ }
87
+ return {
88
+ contentId: parsedContentId,
89
+ modelId,
90
+ options,
91
+ treeId,
92
+ };
93
+ }
94
+ cur() {
95
+ this.require(this.curPos < this.input.length);
96
+ return this.input[this.curPos];
97
+ }
98
+ advance() {
99
+ this.require(this.curPos < this.input.length);
100
+ ++this.curPos;
101
+ }
102
+ eat(expectedChar) {
103
+ this.require(this.cur() === expectedChar);
104
+ this.advance();
105
+ }
106
+ reject(message = "Invalid tree Id") {
107
+ throw new Error(message);
108
+ }
109
+ require(condition, message = "Invalid tree Id") {
110
+ if (!condition)
111
+ this.reject(message);
112
+ }
113
+ parseClassifier() {
114
+ this.eat("C");
115
+ let type = BatchType.VolumeClassifier;
116
+ if (this.cur() === "P") {
117
+ type = BatchType.PlanarClassifier;
118
+ this.advance();
119
+ }
120
+ this.eat(":");
121
+ // C: or CP: is always folowed by expansion then an underscore.
122
+ let expansionStr = "";
123
+ while (this.curPos < this.input.length && (this.cur() >= "0" && this.cur() <= "9" || this.cur() === ".")) {
124
+ expansionStr += this.cur();
125
+ this.advance();
126
+ }
127
+ this.eat("_");
128
+ const expansion = Number.parseFloat(expansionStr);
129
+ this.require(!Number.isNaN(expansion));
130
+ return { type, expansion };
131
+ }
132
+ parseAnimation() {
133
+ if (this.cur() !== "A")
134
+ return undefined;
135
+ this.eat("A");
136
+ this.eat(":");
137
+ const termPos = this.input.indexOf("_", this.curPos);
138
+ this.require(termPos > this.curPos);
139
+ const animationId = this.input.substring(this.curPos, termPos);
140
+ this.require(Id64.isId64(animationId));
141
+ this.curPos = termPos + 1; // Skip "_"
142
+ return animationId;
143
+ }
144
+ parsePrimary() {
145
+ const edges = this.parseEdges();
146
+ const sectionCut = this.parseSectionCut();
147
+ return { edges, sectionCut };
148
+ }
149
+ parseEdges() {
150
+ if ("E" !== this.cur())
151
+ return { indexed: false, smooth: false };
152
+ this.eat("E");
153
+ this.eat(":");
154
+ const typeStr = this.cur();
155
+ this.eat(typeStr);
156
+ this.eat("_");
157
+ switch (typeStr) {
158
+ case "0": return false;
159
+ case "2": return { indexed: true, smooth: false };
160
+ case "3": return { indexed: false, smooth: true };
161
+ case "4": return { indexed: true, smooth: true };
162
+ default: this.reject();
163
+ }
164
+ }
165
+ parseSectionCut() {
166
+ if ("S" !== this.cur())
167
+ return undefined;
168
+ this.eat("S");
169
+ const termPos = this.input.indexOf("s", this.curPos);
170
+ this.require(termPos > this.curPos);
171
+ const sectionCut = this.input.substring(this.curPos, termPos);
172
+ this.curPos = termPos + 1; // Skip "_";
173
+ return sectionCut;
174
+ }
175
+ }
176
+ /** @internal */
177
+ export function parseTileTreeIdAndContentId(treeId, contentId) {
178
+ const parser = new Parser(treeId);
179
+ return parser.parse(contentId);
180
+ }
181
+ /** @internal */
182
+ export const defaultTileOptions = Object.freeze({
183
+ maximumMajorTileFormatVersion: CurrentImdlVersion.Major,
184
+ enableInstancing: true,
185
+ enableImprovedElision: true,
186
+ ignoreAreaPatterns: false,
187
+ enableExternalTextures: true,
188
+ useProjectExtents: true,
189
+ optimizeBRepProcessing: true,
190
+ useLargerTiles: true,
191
+ disableMagnification: false,
192
+ alwaysSubdivideIncompleteTiles: false,
193
+ enableIndexedEdges: true,
194
+ generateAllPolyfaceEdges: true,
195
+ });
196
+ function contentFlagsFromId(id) {
197
+ if (0 === id.length || "-" !== id[0])
198
+ throw new Error("Invalid content Id");
199
+ // V4: -flags-d-i-j-k-m - version in tree Id
200
+ const end = id.indexOf("-", 1);
201
+ if (-1 !== end) {
202
+ const flags = Number.parseInt(id.substring(1, end), 16);
203
+ if (!Number.isNaN(flags))
204
+ return flags;
205
+ }
206
+ throw new Error("Invalid content Id");
207
+ }
208
+ function treeFlagsAndFormatVersionFromId(id) {
209
+ if (0 === id.length)
210
+ throw new Error("Invalid tree Id");
211
+ let parts = id.split("-");
212
+ if (parts.length > 0) {
213
+ parts = parts[0].split("_");
214
+ if (parts.length === 2) {
215
+ const version = Number.parseInt(parts[0], 16);
216
+ const flags = Number.parseInt(parts[1], 16);
217
+ if (!Number.isNaN(version) || !Number.isNaN(flags))
218
+ return { version, flags };
219
+ }
220
+ }
221
+ throw new Error("Invalid tree Id");
222
+ }
223
+ function edgeOptionsFromTreeId(id) {
224
+ const pos = id.indexOf("E:");
225
+ if (pos <= 0)
226
+ return { indexed: false, smooth: false };
227
+ switch (id[pos + 2]) {
228
+ case "0": return { indexed: defaultTileOptions.enableIndexedEdges, smooth: defaultTileOptions.generateAllPolyfaceEdges };
229
+ case "2": return { indexed: true, smooth: false };
230
+ case "3": return { indexed: false, smooth: true };
231
+ case "4": return { indexed: true, smooth: true };
232
+ }
233
+ throw new Error("Invalid tree Id");
234
+ }
235
+ /** @internal */
236
+ export function getMaximumMajorTileFormatVersion(maxMajorVersion, formatVersion) {
237
+ // The `formatVersion` input is from the backend, telling us precisely the maximum major+minor version it can produce.
238
+ // Ensure we do not request tiles of a newer major version than backend can supply or it can read; and also limit major version
239
+ // to that optionally configured by the app.
240
+ let majorVersion = maxMajorVersion;
241
+ if (undefined !== formatVersion)
242
+ majorVersion = Math.min((formatVersion >>> 0x10), majorVersion);
243
+ // Version number less than 1 is invalid - ignore
244
+ majorVersion = Math.max(majorVersion, 1);
245
+ // Version number greater than current known version ignored
246
+ majorVersion = Math.min(majorVersion, CurrentImdlVersion.Major);
247
+ // Version numbers are integers - round down
248
+ return Math.max(Math.floor(majorVersion), 1);
249
+ }
250
+ /** Flags controlling the structure of a tile tree. The flags are part of the tile tree's Id.
251
+ * @alpha
252
+ */
253
+ export var TreeFlags;
254
+ (function (TreeFlags) {
255
+ TreeFlags[TreeFlags["None"] = 0] = "None";
256
+ TreeFlags[TreeFlags["UseProjectExtents"] = 1] = "UseProjectExtents";
257
+ TreeFlags[TreeFlags["EnforceDisplayPriority"] = 2] = "EnforceDisplayPriority";
258
+ TreeFlags[TreeFlags["OptimizeBRepProcessing"] = 4] = "OptimizeBRepProcessing";
259
+ TreeFlags[TreeFlags["UseLargerTiles"] = 8] = "UseLargerTiles";
260
+ })(TreeFlags || (TreeFlags = {}));
261
+ function compareEdgeOptions(a, b) {
262
+ if (typeof a !== typeof b)
263
+ return a ? 1 : -1;
264
+ if (typeof a === "boolean") {
265
+ assert(typeof b === "boolean");
266
+ return compareBooleans(a, b);
267
+ }
268
+ assert(typeof b === "object");
269
+ let cmp = compareBooleans(a.indexed, b.indexed);
270
+ if (0 === cmp)
271
+ cmp = compareBooleans(a.smooth, b.smooth);
272
+ return cmp;
273
+ }
274
+ function animationIdToString(animationId) {
275
+ return `A:${animationId}_`;
276
+ }
277
+ /** Convert a tile tree Id to its string representation.
278
+ * @internal
279
+ */
280
+ export function iModelTileTreeIdToString(modelId, treeId, options) {
281
+ let idStr = "";
282
+ let flags = options.useProjectExtents ? TreeFlags.UseProjectExtents : TreeFlags.None;
283
+ if (options.optimizeBRepProcessing)
284
+ flags |= TreeFlags.OptimizeBRepProcessing;
285
+ if (options.useLargerTiles)
286
+ flags |= TreeFlags.UseLargerTiles;
287
+ if (BatchType.Primary === treeId.type) {
288
+ if (undefined !== treeId.animationId)
289
+ idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
290
+ else if (treeId.enforceDisplayPriority) // animation and priority are currently mutually exclusive
291
+ flags |= TreeFlags.EnforceDisplayPriority;
292
+ let edges;
293
+ if (!treeId.edges) {
294
+ edges = "E:0_";
295
+ }
296
+ else {
297
+ if (!treeId.edges.smooth)
298
+ edges = treeId.edges.indexed ? "E:2_" : "";
299
+ else
300
+ edges = treeId.edges.indexed ? "E:4_" : "E:3_";
301
+ }
302
+ const sectionCut = treeId.sectionCut ? `S${treeId.sectionCut}s` : "";
303
+ idStr = `${idStr}${edges}${sectionCut}`;
304
+ }
305
+ else {
306
+ const typeStr = BatchType.PlanarClassifier === treeId.type ? "CP" : "C";
307
+ idStr = `${idStr + typeStr}:${treeId.expansion.toFixed(6)}_`;
308
+ if (BatchType.VolumeClassifier === treeId.type)
309
+ flags |= TreeFlags.UseProjectExtents;
310
+ if (undefined !== treeId.animationId)
311
+ idStr = `${idStr}${animationIdToString(treeId.animationId)}`;
312
+ }
313
+ const version = getMaximumMajorTileFormatVersion(options.maximumMajorTileFormatVersion);
314
+ if (version >= 4) {
315
+ const prefix = `${version.toString(16)}_${flags.toString(16)}-`;
316
+ idStr = prefix + idStr;
317
+ }
318
+ return idStr + modelId;
319
+ }
320
+ /** Ordinal comparison of two tile tree Ids, e.g., for use in sorted containers.
321
+ * @internal
322
+ */
323
+ export function compareIModelTileTreeIds(lhs, rhs) {
324
+ let cmp = compareNumbers(lhs.type, rhs.type);
325
+ if (0 === cmp)
326
+ cmp = compareStringsOrUndefined(lhs.animationId, rhs.animationId);
327
+ if (0 !== cmp)
328
+ return cmp;
329
+ // NB: The redundant checks on BatchType below are to satisfy compiler.
330
+ assert(lhs.type === rhs.type);
331
+ if (BatchType.Primary === lhs.type && BatchType.Primary === rhs.type) {
332
+ cmp = compareEdgeOptions(lhs.edges, rhs.edges);
333
+ if (0 === cmp) {
334
+ cmp = compareBooleansOrUndefined(lhs.enforceDisplayPriority, rhs.enforceDisplayPriority);
335
+ if (0 === cmp)
336
+ cmp = compareStringsOrUndefined(lhs.sectionCut, rhs.sectionCut);
337
+ }
338
+ }
339
+ else if (BatchType.Primary !== lhs.type && BatchType.Primary !== rhs.type) {
340
+ cmp = compareNumbers(lhs.expansion, rhs.expansion);
341
+ }
342
+ return cmp;
343
+ }
344
+ /** Flags controlling how tile content is produced. The flags are part of the ContentId.
345
+ * @alpha
346
+ */
347
+ export var ContentFlags;
348
+ (function (ContentFlags) {
349
+ ContentFlags[ContentFlags["None"] = 0] = "None";
350
+ ContentFlags[ContentFlags["AllowInstancing"] = 1] = "AllowInstancing";
351
+ ContentFlags[ContentFlags["ImprovedElision"] = 2] = "ImprovedElision";
352
+ ContentFlags[ContentFlags["IgnoreAreaPatterns"] = 4] = "IgnoreAreaPatterns";
353
+ ContentFlags[ContentFlags["ExternalTextures"] = 8] = "ExternalTextures";
354
+ })(ContentFlags || (ContentFlags = {}));
355
+ /** Contains logic for working with tile content Ids according to a specific content Id scheme. Which scheme is used depends on
356
+ * the major version of the tile format.
357
+ * @internal
358
+ */
359
+ export class ContentIdProvider {
360
+ constructor(formatVersion, contentFlags) {
361
+ this.majorFormatVersion = formatVersion;
362
+ this.contentFlags = contentFlags;
363
+ }
364
+ get rootContentId() {
365
+ return this.computeId(0, 0, 0, 0, 1);
366
+ }
367
+ idFromParentAndMultiplier(parentId, multiplier) {
368
+ const lastSepPos = parentId.lastIndexOf(this._separator);
369
+ assert(-1 !== lastSepPos);
370
+ return parentId.substring(0, lastSepPos + 1) + multiplier.toString(16);
371
+ }
372
+ specFromId(id) {
373
+ const parts = id.split(this._separator);
374
+ const len = parts.length;
375
+ assert(len >= 5);
376
+ return {
377
+ depth: parseInt(parts[len - 5], 16),
378
+ i: parseInt(parts[len - 4], 16),
379
+ j: parseInt(parts[len - 3], 16),
380
+ k: parseInt(parts[len - 2], 16),
381
+ multiplier: parseInt(parts[len - 1], 16),
382
+ };
383
+ }
384
+ idFromSpec(spec) {
385
+ return this.computeId(spec.depth, spec.i, spec.j, spec.k, spec.multiplier);
386
+ }
387
+ join(depth, i, j, k, mult) {
388
+ const sep = this._separator;
389
+ return depth.toString(16) + sep + i.toString(16) + sep + j.toString(16) + sep + k.toString(16) + sep + mult.toString(16);
390
+ }
391
+ /** formatVersion is the maximum major version supported by the back-end supplying the tile tree.
392
+ * Must ensure front-end does not request tiles of a format the back-end cannot supply, and back-end does
393
+ * not supply tiles of a format the front-end doesn't recognize.
394
+ */
395
+ static create(allowInstancing, options, formatVersion) {
396
+ const majorVersion = getMaximumMajorTileFormatVersion(options.maximumMajorTileFormatVersion, formatVersion);
397
+ assert(majorVersion > 0);
398
+ assert(Math.floor(majorVersion) === majorVersion);
399
+ switch (majorVersion) {
400
+ case 0:
401
+ case 1:
402
+ return new ContentIdV1Provider(majorVersion);
403
+ case 2:
404
+ case 3:
405
+ return new ContentIdV2Provider(majorVersion, allowInstancing, options);
406
+ default:
407
+ return new ContentIdV4Provider(allowInstancing, options, majorVersion);
408
+ }
409
+ }
410
+ }
411
+ /** The original (major version 1) tile format used a content Id scheme of the format
412
+ * `depth/i/j/k/multiplier`.
413
+ * @internal
414
+ */
415
+ class ContentIdV1Provider extends ContentIdProvider {
416
+ constructor(majorVersion) {
417
+ super(majorVersion, ContentFlags.None);
418
+ }
419
+ get _separator() { return "/"; }
420
+ computeId(depth, i, j, k, mult) {
421
+ return this.join(depth, i, j, k, mult);
422
+ }
423
+ }
424
+ /** Tile formats 2 and 3 use a content Id scheme encoding styling flags and the major format version
425
+ * into the content Id, of the format `_majorVersion_flags_depth_i_j_k_multiplier`.
426
+ * @internal
427
+ */
428
+ class ContentIdV2Provider extends ContentIdProvider {
429
+ constructor(majorVersion, allowInstancing, options) {
430
+ const flags = (allowInstancing && options.enableInstancing) ? ContentFlags.AllowInstancing : ContentFlags.None;
431
+ super(majorVersion, flags);
432
+ this._prefix = this._separator + majorVersion.toString(16) + this._separator + flags.toString(16) + this._separator;
433
+ }
434
+ get _separator() { return "_"; }
435
+ computeId(depth, i, j, k, mult) {
436
+ return this._prefix + this.join(depth, i, j, k, mult);
437
+ }
438
+ }
439
+ /** Tile formats 4+ encode styling flags but not major format version. (The version is specified by the tile tree's Id).
440
+ * Format: `-flags-depth-i-j-k-multiplier`.
441
+ * @internal
442
+ */
443
+ class ContentIdV4Provider extends ContentIdProvider {
444
+ constructor(allowInstancing, options, majorVersion) {
445
+ let flags = (allowInstancing && options.enableInstancing) ? ContentFlags.AllowInstancing : ContentFlags.None;
446
+ if (options.enableImprovedElision)
447
+ flags = flags | ContentFlags.ImprovedElision;
448
+ if (options.ignoreAreaPatterns)
449
+ flags = flags | ContentFlags.IgnoreAreaPatterns;
450
+ if (options.enableExternalTextures)
451
+ flags = flags | ContentFlags.ExternalTextures;
452
+ super(majorVersion, flags);
453
+ this._prefix = this._separator + flags.toString(16) + this._separator;
454
+ }
455
+ get _separator() { return "-"; }
456
+ computeId(depth, i, j, k, mult) {
457
+ return this._prefix + this.join(depth, i, j, k, mult);
458
+ }
459
+ }
460
+ /** @internal */
461
+ export function bisectTileRange3d(range, takeUpper) {
462
+ const diag = range.diagonal();
463
+ const pt = takeUpper ? range.high : range.low;
464
+ if (diag.x > diag.y && diag.x > diag.z)
465
+ pt.x = (range.low.x + range.high.x) / 2.0;
466
+ else if (diag.y > diag.z)
467
+ pt.y = (range.low.y + range.high.y) / 2.0;
468
+ else
469
+ pt.z = (range.low.z + range.high.z) / 2.0;
470
+ }
471
+ /** @internal */
472
+ export function bisectTileRange2d(range, takeUpper) {
473
+ const diag = range.diagonal();
474
+ const pt = takeUpper ? range.high : range.low;
475
+ if (diag.x > diag.y)
476
+ pt.x = (range.low.x + range.high.x) / 2.0;
477
+ else
478
+ pt.y = (range.low.y + range.high.y) / 2.0;
479
+ }
480
+ /** Given a description of a tile, compute the ranges which would result from sub-dividing its range into 4 or 8 sub-volumes.
481
+ * @internal
482
+ */
483
+ export function computeChildTileRanges(tile, root) {
484
+ const emptyMask = tile.emptySubRangeMask;
485
+ const is2d = root.is2d;
486
+ const bisectRange = is2d ? bisectTileRange2d : bisectTileRange3d;
487
+ const ranges = [];
488
+ for (let i = 0; i < 2; i++) {
489
+ for (let j = 0; j < 2; j++) {
490
+ for (let k = 0; k < (is2d ? 1 : 2); k++) {
491
+ const emptyBit = 1 << (i + j * 2 + k * 4);
492
+ const isEmpty = 0 !== (emptyMask & emptyBit);
493
+ const range = tile.range.clone();
494
+ bisectRange(range, 0 === i);
495
+ bisectRange(range, 0 === j);
496
+ if (!is2d)
497
+ bisectRange(range, 0 === k);
498
+ ranges.push({ range, isEmpty });
499
+ }
500
+ }
501
+ }
502
+ return ranges;
503
+ }
504
+ /** Given a description of the parent tile, obtain the properties of its child tiles, and the number of empty children.
505
+ * @internal
506
+ */
507
+ export function computeChildTileProps(parent, idProvider, root) {
508
+ let numEmpty = 0;
509
+ const children = [];
510
+ // Leaf nodes have no children
511
+ if (parent.isLeaf)
512
+ return { children, numEmpty };
513
+ // One child, same volume as parent, but higher-resolution.
514
+ if (undefined !== parent.sizeMultiplier) {
515
+ const sizeMultiplier = parent.sizeMultiplier * 2;
516
+ const contentId = idProvider.idFromParentAndMultiplier(parent.contentId, sizeMultiplier);
517
+ children.push({
518
+ contentId,
519
+ range: parent.range,
520
+ contentRange: parent.contentRange,
521
+ sizeMultiplier,
522
+ isLeaf: false,
523
+ maximumSize: root.tileScreenSize,
524
+ });
525
+ return { children, numEmpty };
526
+ }
527
+ // Sub-divide parent's range into 4 (for 2d trees) or 8 (for 3d trees) child tiles.
528
+ const parentSpec = idProvider.specFromId(parent.contentId);
529
+ const childSpec = { ...parentSpec };
530
+ childSpec.depth = parentSpec.depth + 1;
531
+ // This mask is a bitfield in which an 'on' bit indicates sub-volume containing no geometry.
532
+ // Don't bother creating children or requesting content for such empty volumes.
533
+ const emptyMask = parent.emptySubRangeMask;
534
+ // Spatial tree range == project extents; content range == model range.
535
+ // Trivially reject children whose ranges are entirely outside model range.
536
+ let treeContentRange = root.contentRange;
537
+ if (undefined !== treeContentRange && treeContentRange.containsRange(parent.range)) {
538
+ // Parent is wholly within model range - don't bother testing child ranges against it.
539
+ treeContentRange = undefined;
540
+ }
541
+ const is2d = root.is2d;
542
+ const bisectRange = is2d ? bisectTileRange2d : bisectTileRange3d;
543
+ for (let i = 0; i < 2; i++) {
544
+ for (let j = 0; j < 2; j++) {
545
+ for (let k = 0; k < (is2d ? 1 : 2); k++) {
546
+ const emptyBit = 1 << (i + j * 2 + k * 4);
547
+ if (0 !== (emptyMask & emptyBit)) {
548
+ // volume is known to contain no geometry.
549
+ ++numEmpty;
550
+ continue;
551
+ }
552
+ const range = parent.range.clone();
553
+ bisectRange(range, 0 === i);
554
+ bisectRange(range, 0 === j);
555
+ if (!is2d)
556
+ bisectRange(range, 0 === k);
557
+ if (undefined !== treeContentRange && !range.intersectsRange(treeContentRange)) {
558
+ // volume is within project extents but entirely outside model range
559
+ ++numEmpty;
560
+ continue;
561
+ }
562
+ childSpec.i = parentSpec.i * 2 + i;
563
+ childSpec.j = parentSpec.j * 2 + j;
564
+ childSpec.k = parentSpec.k * 2 + k;
565
+ const childId = idProvider.idFromSpec(childSpec);
566
+ children.push({ contentId: childId, range, maximumSize: root.tileScreenSize });
567
+ }
568
+ }
569
+ }
570
+ return { children, numEmpty };
571
+ }
572
+ /** Deserializes tile content metadata.
573
+ * @throws [[TileReadError]]
574
+ * @internal
575
+ */
576
+ export function readTileContentDescription(stream, sizeMultiplier, is2d, options, isVolumeClassifier) {
577
+ stream.reset();
578
+ const header = new ImdlHeader(stream);
579
+ if (!header.isValid)
580
+ throw new TileReadError(TileReadStatus.InvalidHeader);
581
+ else if (!header.isReadableVersion)
582
+ throw new TileReadError(TileReadStatus.NewerMajorVersion);
583
+ // Skip the feature table.
584
+ const featureTableStartPos = stream.curPos;
585
+ const ftHeader = FeatureTableHeader.readFrom(stream);
586
+ if (undefined === ftHeader)
587
+ throw new TileReadError(TileReadStatus.InvalidFeatureTable);
588
+ stream.curPos = featureTableStartPos + ftHeader.length;
589
+ // Determine subdivision based on header data.
590
+ const completeTile = 0 === (header.flags & ImdlFlags.Incomplete);
591
+ const emptyTile = completeTile && 0 === header.numElementsIncluded && 0 === header.numElementsExcluded;
592
+ let isLeaf = (emptyTile || isVolumeClassifier); // Current classifier algorithm supports only a single tile.
593
+ if (!isLeaf) {
594
+ // Non-spatial (2d) models are of arbitrary scale and contain geometry like line work and especially text which
595
+ // can be adversely affected by quantization issues when zooming in closely.
596
+ const maxLeafTolerance = 1.0;
597
+ // Must sub-divide if tile explicitly specifies...
598
+ let canSkipSubdivision = 0 === (header.flags & ImdlFlags.DisallowMagnification);
599
+ // ...or in 2d, or if app explicitly disabled magnification, or tolerance large enough to risk quantization error...
600
+ canSkipSubdivision = canSkipSubdivision && !is2d && !options.disableMagnification && header.tolerance <= maxLeafTolerance;
601
+ // ...or app specifies incomplete tiles must always be sub-divided.
602
+ canSkipSubdivision = canSkipSubdivision && (completeTile || !options.alwaysSubdivideIncompleteTiles);
603
+ if (canSkipSubdivision) {
604
+ const minElementsPerTile = 100;
605
+ if (completeTile && 0 === header.numElementsExcluded && header.numElementsIncluded <= minElementsPerTile) {
606
+ const containsCurves = 0 !== (header.flags & ImdlFlags.ContainsCurves);
607
+ if (!containsCurves)
608
+ isLeaf = true;
609
+ else if (undefined === sizeMultiplier)
610
+ sizeMultiplier = 1.0;
611
+ }
612
+ else if (undefined === sizeMultiplier && header.numElementsIncluded + header.numElementsExcluded <= minElementsPerTile) {
613
+ sizeMultiplier = 1.0;
614
+ }
615
+ }
616
+ }
617
+ return {
618
+ featureTableStartPos,
619
+ contentRange: header.contentRange,
620
+ isLeaf,
621
+ sizeMultiplier,
622
+ emptySubRangeMask: header.emptySubRanges,
623
+ };
624
+ }
625
+ const scratchRangeDiagonal = new Vector3d();
626
+ /** Compute the chord tolerance for the specified tile of the given range with the specified size multiplier.
627
+ * @internal
628
+ */
629
+ export function computeTileChordTolerance(tile, is3d, tileScreenSize) {
630
+ if (tile.range.isNull)
631
+ return 0;
632
+ const diagonal = tile.range.diagonal(scratchRangeDiagonal);
633
+ const diagDist = is3d ? diagonal.magnitude() : diagonal.magnitudeXY();
634
+ const mult = Math.max(tile.sizeMultiplier ?? 1, 1);
635
+ return diagDist / (tileScreenSize * Constants.minToleranceRatioMultiplier * Math.max(1, mult));
636
+ }
637
+ /** Deserializes tile metadata.
638
+ * @internal
639
+ */
640
+ export class TileMetadataReader {
641
+ constructor(type, is2d, options) {
642
+ this._is2d = is2d;
643
+ this._isVolumeClassifier = BatchType.VolumeClassifier === type;
644
+ this._options = options;
645
+ }
646
+ /** Produce metadata from the specified tile content.
647
+ * @throws [[TileReadError]]
648
+ */
649
+ read(stream, props) {
650
+ const content = readTileContentDescription(stream, props.sizeMultiplier, this._is2d, this._options, this._isVolumeClassifier);
651
+ return {
652
+ contentRange: content.contentRange,
653
+ isLeaf: content.isLeaf,
654
+ sizeMultiplier: content.sizeMultiplier,
655
+ emptySubRangeMask: content.emptySubRangeMask,
656
+ range: Range3d.fromJSON(props.range),
657
+ contentId: props.contentId,
658
+ };
659
+ }
660
+ }
661
661
  //# sourceMappingURL=TileMetadata.js.map