@itwin/core-common 4.0.0-dev.1 → 4.0.0-dev.100

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 (994) hide show
  1. package/CHANGELOG.md +64 -1
  2. package/lib/cjs/AmbientOcclusion.d.ts +49 -49
  3. package/lib/cjs/AmbientOcclusion.js +55 -55
  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/Atmosphere.d.ts +99 -0
  8. package/lib/cjs/Atmosphere.d.ts.map +1 -0
  9. package/lib/cjs/Atmosphere.js +134 -0
  10. package/lib/cjs/Atmosphere.js.map +1 -0
  11. package/lib/cjs/AuthorizationClient.d.ts +17 -17
  12. package/lib/cjs/AuthorizationClient.js +9 -9
  13. package/lib/cjs/BackendTypes.d.ts +13 -12
  14. package/lib/cjs/BackendTypes.d.ts.map +1 -1
  15. package/lib/cjs/BackendTypes.js +9 -9
  16. package/lib/cjs/BackendTypes.js.map +1 -1
  17. package/lib/cjs/BackgroundMapProvider.d.ts +51 -51
  18. package/lib/cjs/BackgroundMapProvider.d.ts.map +1 -1
  19. package/lib/cjs/BackgroundMapProvider.js +67 -68
  20. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  21. package/lib/cjs/BackgroundMapSettings.d.ts +136 -136
  22. package/lib/cjs/BackgroundMapSettings.d.ts.map +1 -1
  23. package/lib/cjs/BackgroundMapSettings.js +154 -156
  24. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  25. package/lib/cjs/Base64EncodedString.d.ts +32 -32
  26. package/lib/cjs/Base64EncodedString.d.ts.map +1 -1
  27. package/lib/cjs/Base64EncodedString.js +66 -66
  28. package/lib/cjs/Base64EncodedString.js.map +1 -1
  29. package/lib/cjs/BlobReader.d.ts +31 -31
  30. package/lib/cjs/BlobReader.js +84 -84
  31. package/lib/cjs/BriefcaseTypes.d.ts +191 -189
  32. package/lib/cjs/BriefcaseTypes.d.ts.map +1 -1
  33. package/lib/cjs/BriefcaseTypes.js +95 -95
  34. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  35. package/lib/cjs/Camera.d.ts +42 -42
  36. package/lib/cjs/Camera.js +62 -62
  37. package/lib/cjs/Camera.js.map +1 -1
  38. package/lib/cjs/ChangedElements.d.ts +85 -85
  39. package/lib/cjs/ChangedElements.js +23 -23
  40. package/lib/cjs/ChangedEntities.d.ts +45 -45
  41. package/lib/cjs/ChangedEntities.d.ts.map +1 -1
  42. package/lib/cjs/ChangedEntities.js +9 -9
  43. package/lib/cjs/ChangesetProps.d.ts +98 -98
  44. package/lib/cjs/ChangesetProps.d.ts.map +1 -1
  45. package/lib/cjs/ChangesetProps.js +22 -22
  46. package/lib/cjs/ChangesetProps.js.map +1 -1
  47. package/lib/cjs/ClipStyle.d.ts +89 -89
  48. package/lib/cjs/ClipStyle.js +121 -123
  49. package/lib/cjs/ClipStyle.js.map +1 -1
  50. package/lib/cjs/Code.d.ts +278 -277
  51. package/lib/cjs/Code.d.ts.map +1 -1
  52. package/lib/cjs/Code.js +271 -269
  53. package/lib/cjs/Code.js.map +1 -1
  54. package/lib/cjs/ColorByName.d.ts +161 -161
  55. package/lib/cjs/ColorByName.js +169 -169
  56. package/lib/cjs/ColorDef.d.ts +210 -208
  57. package/lib/cjs/ColorDef.d.ts.map +1 -1
  58. package/lib/cjs/ColorDef.js +572 -571
  59. package/lib/cjs/ColorDef.js.map +1 -1
  60. package/lib/cjs/CommonLoggerCategory.d.ts +18 -18
  61. package/lib/cjs/CommonLoggerCategory.js +26 -26
  62. package/lib/cjs/ConcurrentQuery.d.ts +421 -421
  63. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  64. package/lib/cjs/ConcurrentQuery.js +552 -552
  65. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  66. package/lib/cjs/ContextRealityModel.d.ts +303 -303
  67. package/lib/cjs/ContextRealityModel.js +371 -373
  68. package/lib/cjs/ContextRealityModel.js.map +1 -1
  69. package/lib/cjs/DisplayStyleSettings.d.ts +593 -588
  70. package/lib/cjs/DisplayStyleSettings.d.ts.map +1 -1
  71. package/lib/cjs/DisplayStyleSettings.js +990 -985
  72. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  73. package/lib/cjs/ECSchemaProps.d.ts +39 -39
  74. package/lib/cjs/ECSchemaProps.js +9 -9
  75. package/lib/cjs/ECSqlReader.d.ts +72 -70
  76. package/lib/cjs/ECSqlReader.d.ts.map +1 -1
  77. package/lib/cjs/ECSqlReader.js +297 -280
  78. package/lib/cjs/ECSqlReader.js.map +1 -1
  79. package/lib/cjs/ECSqlTypes.d.ts +128 -128
  80. package/lib/cjs/ECSqlTypes.js +189 -189
  81. package/lib/cjs/ElementMesh.d.ts +39 -39
  82. package/lib/cjs/ElementMesh.js +56 -56
  83. package/lib/cjs/ElementProps.d.ts +483 -483
  84. package/lib/cjs/ElementProps.d.ts.map +1 -1
  85. package/lib/cjs/ElementProps.js +99 -99
  86. package/lib/cjs/ElementProps.js.map +1 -1
  87. package/lib/cjs/EmphasizeElementsProps.d.ts +55 -55
  88. package/lib/cjs/EmphasizeElementsProps.js +25 -25
  89. package/lib/cjs/EntityProps.d.ts +177 -177
  90. package/lib/cjs/EntityProps.d.ts.map +1 -1
  91. package/lib/cjs/EntityProps.js +113 -113
  92. package/lib/cjs/EntityReference.d.ts +51 -51
  93. package/lib/cjs/EntityReference.d.ts.map +1 -1
  94. package/lib/cjs/EntityReference.js +56 -56
  95. package/lib/cjs/Environment.d.ts +74 -61
  96. package/lib/cjs/Environment.d.ts.map +1 -1
  97. package/lib/cjs/Environment.js +78 -73
  98. package/lib/cjs/Environment.js.map +1 -1
  99. package/lib/cjs/FeatureIndex.d.ts +39 -39
  100. package/lib/cjs/FeatureIndex.js +63 -63
  101. package/lib/cjs/FeatureIndex.js.map +1 -1
  102. package/lib/cjs/FeatureSymbology.d.ts +449 -444
  103. package/lib/cjs/FeatureSymbology.d.ts.map +1 -1
  104. package/lib/cjs/FeatureSymbology.js +618 -614
  105. package/lib/cjs/FeatureSymbology.js.map +1 -1
  106. package/lib/cjs/FeatureTable.d.ts +255 -141
  107. package/lib/cjs/FeatureTable.d.ts.map +1 -1
  108. package/lib/cjs/FeatureTable.js +484 -278
  109. package/lib/cjs/FeatureTable.js.map +1 -1
  110. package/lib/cjs/Fonts.d.ts +51 -51
  111. package/lib/cjs/Fonts.d.ts.map +1 -1
  112. package/lib/cjs/Fonts.js +53 -53
  113. package/lib/cjs/Frustum.d.ts +114 -114
  114. package/lib/cjs/Frustum.js +292 -292
  115. package/lib/cjs/GeoCoordinateServices.d.ts +123 -119
  116. package/lib/cjs/GeoCoordinateServices.d.ts.map +1 -1
  117. package/lib/cjs/GeoCoordinateServices.js +81 -80
  118. package/lib/cjs/GeoCoordinateServices.js.map +1 -1
  119. package/lib/cjs/GeometryContainment.d.ts +28 -28
  120. package/lib/cjs/GeometryContainment.js +9 -9
  121. package/lib/cjs/GeometryParams.d.ts +130 -130
  122. package/lib/cjs/GeometryParams.js +174 -174
  123. package/lib/cjs/GeometrySummary.d.ts +45 -45
  124. package/lib/cjs/GeometrySummary.js +23 -23
  125. package/lib/cjs/Gradient.d.ts +139 -139
  126. package/lib/cjs/Gradient.js +453 -455
  127. package/lib/cjs/Gradient.js.map +1 -1
  128. package/lib/cjs/GraphicParams.d.ts +58 -58
  129. package/lib/cjs/GraphicParams.js +85 -85
  130. package/lib/cjs/GraphicParams.js.map +1 -1
  131. package/lib/cjs/GroundPlane.d.ts +52 -52
  132. package/lib/cjs/GroundPlane.d.ts.map +1 -1
  133. package/lib/cjs/GroundPlane.js +63 -64
  134. package/lib/cjs/GroundPlane.js.map +1 -1
  135. package/lib/cjs/HSLColor.d.ts +20 -20
  136. package/lib/cjs/HSLColor.js +32 -32
  137. package/lib/cjs/HSLColor.js.map +1 -1
  138. package/lib/cjs/HSVColor.d.ts +30 -30
  139. package/lib/cjs/HSVColor.js +59 -59
  140. package/lib/cjs/HSVColor.js.map +1 -1
  141. package/lib/cjs/HiddenLine.d.ts +97 -97
  142. package/lib/cjs/HiddenLine.js +160 -162
  143. package/lib/cjs/HiddenLine.js.map +1 -1
  144. package/lib/cjs/Hilite.d.ts +50 -50
  145. package/lib/cjs/Hilite.js +64 -64
  146. package/lib/cjs/Hilite.js.map +1 -1
  147. package/lib/cjs/IModel.d.ts +358 -359
  148. package/lib/cjs/IModel.d.ts.map +1 -1
  149. package/lib/cjs/IModel.js +347 -347
  150. package/lib/cjs/IModel.js.map +1 -1
  151. package/lib/cjs/IModelError.d.ts +42 -42
  152. package/lib/cjs/IModelError.d.ts.map +1 -1
  153. package/lib/cjs/IModelError.js +71 -71
  154. package/lib/cjs/IModelError.js.map +1 -1
  155. package/lib/cjs/IModelVersion.d.ts +68 -68
  156. package/lib/cjs/IModelVersion.d.ts.map +1 -1
  157. package/lib/cjs/IModelVersion.js +79 -79
  158. package/lib/cjs/Image.d.ts +86 -86
  159. package/lib/cjs/Image.js +128 -128
  160. package/lib/cjs/Image.js.map +1 -1
  161. package/lib/cjs/IpcAppProps.d.ts +141 -141
  162. package/lib/cjs/IpcAppProps.js +23 -23
  163. package/lib/cjs/LightSettings.d.ts +224 -224
  164. package/lib/cjs/LightSettings.js +304 -309
  165. package/lib/cjs/LightSettings.js.map +1 -1
  166. package/lib/cjs/LinePixels.d.ts +34 -34
  167. package/lib/cjs/LinePixels.js +42 -42
  168. package/lib/cjs/Localization.d.ts +117 -113
  169. package/lib/cjs/Localization.d.ts.map +1 -1
  170. package/lib/cjs/Localization.js +33 -33
  171. package/lib/cjs/Localization.js.map +1 -1
  172. package/lib/cjs/MapImagerySettings.d.ts +62 -62
  173. package/lib/cjs/MapImagerySettings.d.ts.map +1 -1
  174. package/lib/cjs/MapImagerySettings.js +80 -80
  175. package/lib/cjs/MapImagerySettings.js.map +1 -1
  176. package/lib/cjs/MapLayerSettings.d.ts +272 -272
  177. package/lib/cjs/MapLayerSettings.d.ts.map +1 -1
  178. package/lib/cjs/MapLayerSettings.js +407 -411
  179. package/lib/cjs/MapLayerSettings.js.map +1 -1
  180. package/lib/cjs/MassProperties.d.ts +64 -64
  181. package/lib/cjs/MassProperties.js +23 -23
  182. package/lib/cjs/MaterialProps.d.ts +165 -153
  183. package/lib/cjs/MaterialProps.d.ts.map +1 -1
  184. package/lib/cjs/MaterialProps.js +37 -35
  185. package/lib/cjs/MaterialProps.js.map +1 -1
  186. package/lib/cjs/ModelClipGroup.d.ts +67 -67
  187. package/lib/cjs/ModelClipGroup.js +96 -98
  188. package/lib/cjs/ModelClipGroup.js.map +1 -1
  189. package/lib/cjs/ModelGeometryChanges.d.ts +107 -107
  190. package/lib/cjs/ModelGeometryChanges.d.ts.map +1 -1
  191. package/lib/cjs/ModelGeometryChanges.js +83 -83
  192. package/lib/cjs/ModelProps.d.ts +67 -67
  193. package/lib/cjs/ModelProps.js +9 -9
  194. package/lib/cjs/NativeAppProps.d.ts +122 -122
  195. package/lib/cjs/NativeAppProps.d.ts.map +1 -1
  196. package/lib/cjs/NativeAppProps.js +30 -30
  197. package/lib/cjs/OctEncodedNormal.d.ts +33 -33
  198. package/lib/cjs/OctEncodedNormal.js +98 -98
  199. package/lib/cjs/PlanProjectionSettings.d.ts +47 -47
  200. package/lib/cjs/PlanProjectionSettings.js +63 -63
  201. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  202. package/lib/cjs/PlanarClipMask.d.ts +177 -177
  203. package/lib/cjs/PlanarClipMask.js +136 -136
  204. package/lib/cjs/PlanarClipMask.js.map +1 -1
  205. package/lib/cjs/QPoint.d.ts +479 -479
  206. package/lib/cjs/QPoint.js +824 -826
  207. package/lib/cjs/QPoint.js.map +1 -1
  208. package/lib/cjs/RealityDataAccessProps.d.ts +41 -41
  209. package/lib/cjs/RealityDataAccessProps.js +19 -19
  210. package/lib/cjs/RealityModelDisplaySettings.d.ts +183 -183
  211. package/lib/cjs/RealityModelDisplaySettings.d.ts.map +1 -1
  212. package/lib/cjs/RealityModelDisplaySettings.js +141 -142
  213. package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
  214. package/lib/cjs/Render.d.ts +89 -89
  215. package/lib/cjs/Render.js +177 -177
  216. package/lib/cjs/RenderMaterial.d.ts +58 -58
  217. package/lib/cjs/RenderMaterial.js +75 -76
  218. package/lib/cjs/RenderMaterial.js.map +1 -1
  219. package/lib/cjs/RenderSchedule.d.ts +557 -543
  220. package/lib/cjs/RenderSchedule.d.ts.map +1 -1
  221. package/lib/cjs/RenderSchedule.js +1028 -1002
  222. package/lib/cjs/RenderSchedule.js.map +1 -1
  223. package/lib/cjs/RenderTexture.d.ts +70 -70
  224. package/lib/cjs/RenderTexture.d.ts.map +1 -1
  225. package/lib/cjs/RenderTexture.js +59 -59
  226. package/lib/cjs/RenderTexture.js.map +1 -1
  227. package/lib/cjs/RgbColor.d.ts +47 -47
  228. package/lib/cjs/RgbColor.js +77 -77
  229. package/lib/cjs/RpcInterface.d.ts +42 -33
  230. package/lib/cjs/RpcInterface.d.ts.map +1 -1
  231. package/lib/cjs/RpcInterface.js +158 -137
  232. package/lib/cjs/RpcInterface.js.map +1 -1
  233. package/lib/cjs/RpcManager.d.ts +40 -40
  234. package/lib/cjs/RpcManager.js +55 -55
  235. package/lib/cjs/RpcManager.js.map +1 -1
  236. package/lib/cjs/SessionProps.d.ts +16 -16
  237. package/lib/cjs/SessionProps.js +9 -9
  238. package/lib/cjs/SkyBox.d.ts +217 -215
  239. package/lib/cjs/SkyBox.d.ts.map +1 -1
  240. package/lib/cjs/SkyBox.js +209 -210
  241. package/lib/cjs/SkyBox.js.map +1 -1
  242. package/lib/cjs/Snapping.d.ts +49 -49
  243. package/lib/cjs/Snapping.js +9 -9
  244. package/lib/cjs/SolarCalculate.d.ts +27 -27
  245. package/lib/cjs/SolarCalculate.js +211 -211
  246. package/lib/cjs/SolarShadows.d.ts +35 -35
  247. package/lib/cjs/SolarShadows.js +61 -62
  248. package/lib/cjs/SolarShadows.js.map +1 -1
  249. package/lib/cjs/SpatialClassification.d.ts +208 -208
  250. package/lib/cjs/SpatialClassification.js +339 -340
  251. package/lib/cjs/SpatialClassification.js.map +1 -1
  252. package/lib/cjs/SubCategoryAppearance.d.ts +91 -91
  253. package/lib/cjs/SubCategoryAppearance.js +96 -96
  254. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  255. package/lib/cjs/SubCategoryOverride.d.ts +46 -46
  256. package/lib/cjs/SubCategoryOverride.js +104 -104
  257. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  258. package/lib/cjs/TerrainSettings.d.ts +82 -82
  259. package/lib/cjs/TerrainSettings.d.ts.map +1 -1
  260. package/lib/cjs/TerrainSettings.js +100 -102
  261. package/lib/cjs/TerrainSettings.js.map +1 -1
  262. package/lib/cjs/TextureMapping.d.ts +151 -118
  263. package/lib/cjs/TextureMapping.d.ts.map +1 -1
  264. package/lib/cjs/TextureMapping.js +180 -174
  265. package/lib/cjs/TextureMapping.js.map +1 -1
  266. package/lib/cjs/TextureProps.d.ts +65 -65
  267. package/lib/cjs/TextureProps.js +28 -28
  268. package/lib/cjs/ThematicDisplay.d.ts +230 -230
  269. package/lib/cjs/ThematicDisplay.js +343 -344
  270. package/lib/cjs/ThematicDisplay.js.map +1 -1
  271. package/lib/cjs/Thumbnail.d.ts +26 -26
  272. package/lib/cjs/Thumbnail.js +9 -9
  273. package/lib/cjs/TileProps.d.ts +88 -82
  274. package/lib/cjs/TileProps.d.ts.map +1 -1
  275. package/lib/cjs/TileProps.js +29 -29
  276. package/lib/cjs/TileProps.js.map +1 -1
  277. package/lib/cjs/Tween.d.ts +191 -191
  278. package/lib/cjs/Tween.d.ts.map +1 -1
  279. package/lib/cjs/Tween.js +570 -570
  280. package/lib/cjs/TxnAction.d.ts +21 -21
  281. package/lib/cjs/TxnAction.js +29 -29
  282. package/lib/cjs/ViewDetails.d.ts +125 -125
  283. package/lib/cjs/ViewDetails.js +166 -166
  284. package/lib/cjs/ViewDetails.js.map +1 -1
  285. package/lib/cjs/ViewFlags.d.ts +287 -287
  286. package/lib/cjs/ViewFlags.d.ts.map +1 -1
  287. package/lib/cjs/ViewFlags.js +367 -368
  288. package/lib/cjs/ViewFlags.js.map +1 -1
  289. package/lib/cjs/ViewProps.d.ts +205 -205
  290. package/lib/cjs/ViewProps.js +9 -9
  291. package/lib/cjs/WhiteOnWhiteReversalSettings.d.ts +36 -36
  292. package/lib/cjs/WhiteOnWhiteReversalSettings.js +37 -37
  293. package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
  294. package/lib/cjs/core-common.d.ts +244 -244
  295. package/lib/cjs/core-common.d.ts.map +1 -1
  296. package/lib/cjs/core-common.js +264 -260
  297. package/lib/cjs/core-common.js.map +1 -1
  298. package/lib/cjs/domains/FunctionalElementProps.d.ts +11 -11
  299. package/lib/cjs/domains/FunctionalElementProps.js +9 -9
  300. package/lib/cjs/domains/GenericElementProps.d.ts +18 -18
  301. package/lib/cjs/domains/GenericElementProps.js +9 -9
  302. package/lib/cjs/geometry/AdditionalTransform.d.ts +84 -84
  303. package/lib/cjs/geometry/AdditionalTransform.js +85 -85
  304. package/lib/cjs/geometry/AreaPattern.d.ts +82 -82
  305. package/lib/cjs/geometry/AreaPattern.js +203 -204
  306. package/lib/cjs/geometry/AreaPattern.js.map +1 -1
  307. package/lib/cjs/geometry/BoundingSphere.d.ts +27 -27
  308. package/lib/cjs/geometry/BoundingSphere.js +44 -44
  309. package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
  310. package/lib/cjs/geometry/Cartographic.d.ts +137 -137
  311. package/lib/cjs/geometry/Cartographic.js +345 -345
  312. package/lib/cjs/geometry/Cartographic.js.map +1 -1
  313. package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts +269 -269
  314. package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts.map +1 -1
  315. package/lib/cjs/geometry/CoordinateReferenceSystem.js +260 -261
  316. package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
  317. package/lib/cjs/geometry/ElementGeometry.d.ts +402 -402
  318. package/lib/cjs/geometry/ElementGeometry.d.ts.map +1 -1
  319. package/lib/cjs/geometry/ElementGeometry.js +1719 -1719
  320. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  321. package/lib/cjs/geometry/ElementGeometryFB.d.ts +2372 -2372
  322. package/lib/cjs/geometry/ElementGeometryFB.js +3814 -3814
  323. package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
  324. package/lib/cjs/geometry/FrustumPlanes.d.ts +83 -81
  325. package/lib/cjs/geometry/FrustumPlanes.d.ts.map +1 -1
  326. package/lib/cjs/geometry/FrustumPlanes.js +227 -193
  327. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  328. package/lib/cjs/geometry/GeodeticDatum.d.ts +409 -409
  329. package/lib/cjs/geometry/GeodeticDatum.d.ts.map +1 -1
  330. package/lib/cjs/geometry/GeodeticDatum.js +400 -401
  331. package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
  332. package/lib/cjs/geometry/GeodeticEllipsoid.d.ts +72 -72
  333. package/lib/cjs/geometry/GeodeticEllipsoid.js +71 -72
  334. package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
  335. package/lib/cjs/geometry/GeometryStream.d.ts +347 -347
  336. package/lib/cjs/geometry/GeometryStream.d.ts.map +1 -1
  337. package/lib/cjs/geometry/GeometryStream.js +468 -469
  338. package/lib/cjs/geometry/GeometryStream.js.map +1 -1
  339. package/lib/cjs/geometry/ImageGraphic.d.ts +74 -74
  340. package/lib/cjs/geometry/ImageGraphic.d.ts.map +1 -1
  341. package/lib/cjs/geometry/ImageGraphic.js +98 -98
  342. package/lib/cjs/geometry/LineStyle.d.ts +71 -71
  343. package/lib/cjs/geometry/LineStyle.js +129 -129
  344. package/lib/cjs/geometry/Placement.d.ts +95 -95
  345. package/lib/cjs/geometry/Placement.d.ts.map +1 -1
  346. package/lib/cjs/geometry/Placement.js +131 -131
  347. package/lib/cjs/geometry/Projection.d.ts +251 -251
  348. package/lib/cjs/geometry/Projection.d.ts.map +1 -1
  349. package/lib/cjs/geometry/Projection.js +198 -198
  350. package/lib/cjs/geometry/Projection.js.map +1 -1
  351. package/lib/cjs/geometry/TextString.d.ts +55 -55
  352. package/lib/cjs/geometry/TextString.js +65 -65
  353. package/lib/cjs/geometry/TextString.js.map +1 -1
  354. package/lib/cjs/ipc/IpcSession.d.ts +23 -23
  355. package/lib/cjs/ipc/IpcSession.js +27 -27
  356. package/lib/cjs/ipc/IpcSocket.d.ts +96 -96
  357. package/lib/cjs/ipc/IpcSocket.d.ts.map +1 -1
  358. package/lib/cjs/ipc/IpcSocket.js +16 -16
  359. package/lib/cjs/ipc/IpcWebSocket.d.ts +60 -61
  360. package/lib/cjs/ipc/IpcWebSocket.d.ts.map +1 -1
  361. package/lib/cjs/ipc/IpcWebSocket.js +148 -151
  362. package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
  363. package/lib/cjs/ipc/IpcWebSocketTransport.d.ts +15 -15
  364. package/lib/cjs/ipc/IpcWebSocketTransport.js +160 -160
  365. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  366. package/lib/cjs/rpc/DevToolsRpcInterface.d.ts +32 -32
  367. package/lib/cjs/rpc/DevToolsRpcInterface.d.ts.map +1 -1
  368. package/lib/cjs/rpc/DevToolsRpcInterface.js +52 -48
  369. package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
  370. package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +99 -99
  371. package/lib/cjs/rpc/IModelReadRpcInterface.d.ts.map +1 -1
  372. package/lib/cjs/rpc/IModelReadRpcInterface.js +122 -122
  373. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  374. package/lib/cjs/rpc/IModelTileRpcInterface.d.ts +49 -61
  375. package/lib/cjs/rpc/IModelTileRpcInterface.d.ts.map +1 -1
  376. package/lib/cjs/rpc/IModelTileRpcInterface.js +79 -96
  377. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  378. package/lib/cjs/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  379. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js +48 -48
  380. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  381. package/lib/cjs/rpc/TestRpcManager.d.ts +20 -20
  382. package/lib/cjs/rpc/TestRpcManager.js +40 -40
  383. package/lib/cjs/rpc/WipRpcInterface.d.ts +29 -29
  384. package/lib/cjs/rpc/WipRpcInterface.js +40 -40
  385. package/lib/cjs/rpc/WipRpcInterface.js.map +1 -1
  386. package/lib/cjs/rpc/core/RpcConfiguration.d.ts +111 -111
  387. package/lib/cjs/rpc/core/RpcConfiguration.d.ts.map +1 -1
  388. package/lib/cjs/rpc/core/RpcConfiguration.js +191 -191
  389. package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
  390. package/lib/cjs/rpc/core/RpcConstants.d.ts +90 -90
  391. package/lib/cjs/rpc/core/RpcConstants.js +109 -109
  392. package/lib/cjs/rpc/core/RpcControl.d.ts +54 -57
  393. package/lib/cjs/rpc/core/RpcControl.d.ts.map +1 -1
  394. package/lib/cjs/rpc/core/RpcControl.js +150 -148
  395. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  396. package/lib/cjs/rpc/core/RpcInvocation.d.ts +89 -89
  397. package/lib/cjs/rpc/core/RpcInvocation.d.ts.map +1 -1
  398. package/lib/cjs/rpc/core/RpcInvocation.js +256 -258
  399. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  400. package/lib/cjs/rpc/core/RpcMarshaling.d.ts +35 -35
  401. package/lib/cjs/rpc/core/RpcMarshaling.js +156 -156
  402. package/lib/cjs/rpc/core/RpcOperation.d.ts +67 -67
  403. package/lib/cjs/rpc/core/RpcOperation.d.ts.map +1 -1
  404. package/lib/cjs/rpc/core/RpcOperation.js +135 -134
  405. package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
  406. package/lib/cjs/rpc/core/RpcPendingQueue.d.ts +21 -21
  407. package/lib/cjs/rpc/core/RpcPendingQueue.js +94 -95
  408. package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
  409. package/lib/cjs/rpc/core/RpcProtocol.d.ts +132 -132
  410. package/lib/cjs/rpc/core/RpcProtocol.d.ts.map +1 -1
  411. package/lib/cjs/rpc/core/RpcProtocol.js +127 -127
  412. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  413. package/lib/cjs/rpc/core/RpcPush.d.ts +68 -68
  414. package/lib/cjs/rpc/core/RpcPush.d.ts.map +1 -1
  415. package/lib/cjs/rpc/core/RpcPush.js +127 -127
  416. package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
  417. package/lib/cjs/rpc/core/RpcRegistry.d.ts +48 -48
  418. package/lib/cjs/rpc/core/RpcRegistry.js +198 -199
  419. package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
  420. package/lib/cjs/rpc/core/RpcRequest.d.ts +186 -186
  421. package/lib/cjs/rpc/core/RpcRequest.d.ts.map +1 -1
  422. package/lib/cjs/rpc/core/RpcRequest.js +478 -478
  423. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  424. package/lib/cjs/rpc/core/RpcRequestContext.d.ts +14 -14
  425. package/lib/cjs/rpc/core/RpcRequestContext.js +2 -2
  426. package/lib/cjs/rpc/core/RpcRoutingToken.d.ts +12 -12
  427. package/lib/cjs/rpc/core/RpcRoutingToken.d.ts.map +1 -1
  428. package/lib/cjs/rpc/core/RpcRoutingToken.js +24 -24
  429. package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
  430. package/lib/cjs/rpc/core/RpcSessionInvocation.d.ts +10 -10
  431. package/lib/cjs/rpc/core/RpcSessionInvocation.js +60 -60
  432. package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
  433. package/lib/cjs/rpc/web/BentleyCloudRpcManager.d.ts +48 -46
  434. package/lib/cjs/rpc/web/BentleyCloudRpcManager.d.ts.map +1 -1
  435. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js +76 -73
  436. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  437. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  438. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +141 -143
  439. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  440. package/lib/cjs/rpc/web/OpenAPI.d.ts +140 -140
  441. package/lib/cjs/rpc/web/OpenAPI.js +60 -60
  442. package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
  443. package/lib/cjs/rpc/web/RpcMultipart.d.ts +35 -35
  444. package/lib/cjs/rpc/web/RpcMultipart.js +50 -50
  445. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  446. package/lib/cjs/rpc/web/WebAppRpcLogging.d.ts +28 -28
  447. package/lib/cjs/rpc/web/WebAppRpcLogging.js +140 -140
  448. package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +89 -89
  449. package/lib/cjs/rpc/web/WebAppRpcProtocol.js +116 -116
  450. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  451. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +67 -67
  452. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
  453. package/lib/cjs/rpc/web/WebAppRpcRequest.js +239 -239
  454. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  455. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
  456. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js +373 -373
  457. package/lib/cjs/tile/B3dmTileIO.d.ts +19 -19
  458. package/lib/cjs/tile/B3dmTileIO.js +66 -66
  459. package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
  460. package/lib/cjs/tile/CompositeTileIO.d.ts +15 -15
  461. package/lib/cjs/tile/CompositeTileIO.js +26 -26
  462. package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
  463. package/lib/cjs/tile/ElementGraphics.d.ts +145 -145
  464. package/lib/cjs/tile/ElementGraphics.d.ts.map +1 -1
  465. package/lib/cjs/tile/ElementGraphics.js +9 -9
  466. package/lib/cjs/tile/GltfTileIO.d.ts +45 -45
  467. package/lib/cjs/tile/GltfTileIO.d.ts.map +1 -1
  468. package/lib/cjs/tile/GltfTileIO.js +109 -109
  469. package/lib/cjs/tile/GltfTileIO.js.map +1 -1
  470. package/lib/cjs/tile/I3dmTileIO.d.ts +20 -20
  471. package/lib/cjs/tile/I3dmTileIO.js +40 -40
  472. package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
  473. package/lib/cjs/tile/IModelTileIO.d.ts +77 -75
  474. package/lib/cjs/tile/IModelTileIO.d.ts.map +1 -1
  475. package/lib/cjs/tile/IModelTileIO.js +97 -95
  476. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  477. package/lib/cjs/tile/PntsTileIO.d.ts +17 -17
  478. package/lib/cjs/tile/PntsTileIO.js +26 -26
  479. package/lib/cjs/tile/PntsTileIO.js.map +1 -1
  480. package/lib/cjs/tile/TileIO.d.ts +66 -66
  481. package/lib/cjs/tile/TileIO.js +118 -118
  482. package/lib/cjs/tile/TileMetadata.d.ts +240 -228
  483. package/lib/cjs/tile/TileMetadata.d.ts.map +1 -1
  484. package/lib/cjs/tile/TileMetadata.js +693 -676
  485. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  486. package/lib/cjs/tile/Tileset3dSchema.d.ts +97 -0
  487. package/lib/cjs/tile/Tileset3dSchema.d.ts.map +1 -0
  488. package/lib/cjs/tile/Tileset3dSchema.js +10 -0
  489. package/lib/cjs/tile/Tileset3dSchema.js.map +1 -0
  490. package/lib/esm/AmbientOcclusion.d.ts +49 -49
  491. package/lib/esm/AmbientOcclusion.js +52 -52
  492. package/lib/esm/AnalysisStyle.d.ts +134 -134
  493. package/lib/esm/AnalysisStyle.js +160 -159
  494. package/lib/esm/AnalysisStyle.js.map +1 -1
  495. package/lib/esm/Atmosphere.d.ts +99 -0
  496. package/lib/esm/Atmosphere.d.ts.map +1 -0
  497. package/lib/esm/Atmosphere.js +131 -0
  498. package/lib/esm/Atmosphere.js.map +1 -0
  499. package/lib/esm/AuthorizationClient.d.ts +17 -17
  500. package/lib/esm/AuthorizationClient.js +8 -8
  501. package/lib/esm/BackendTypes.d.ts +13 -12
  502. package/lib/esm/BackendTypes.d.ts.map +1 -1
  503. package/lib/esm/BackendTypes.js +8 -8
  504. package/lib/esm/BackendTypes.js.map +1 -1
  505. package/lib/esm/BackgroundMapProvider.d.ts +51 -51
  506. package/lib/esm/BackgroundMapProvider.d.ts.map +1 -1
  507. package/lib/esm/BackgroundMapProvider.js +63 -64
  508. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  509. package/lib/esm/BackgroundMapSettings.d.ts +136 -136
  510. package/lib/esm/BackgroundMapSettings.d.ts.map +1 -1
  511. package/lib/esm/BackgroundMapSettings.js +150 -152
  512. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  513. package/lib/esm/Base64EncodedString.d.ts +32 -32
  514. package/lib/esm/Base64EncodedString.d.ts.map +1 -1
  515. package/lib/esm/Base64EncodedString.js +63 -63
  516. package/lib/esm/Base64EncodedString.js.map +1 -1
  517. package/lib/esm/BlobReader.d.ts +31 -31
  518. package/lib/esm/BlobReader.js +79 -79
  519. package/lib/esm/BriefcaseTypes.d.ts +191 -189
  520. package/lib/esm/BriefcaseTypes.d.ts.map +1 -1
  521. package/lib/esm/BriefcaseTypes.js +92 -92
  522. package/lib/esm/BriefcaseTypes.js.map +1 -1
  523. package/lib/esm/Camera.d.ts +42 -42
  524. package/lib/esm/Camera.js +58 -58
  525. package/lib/esm/Camera.js.map +1 -1
  526. package/lib/esm/ChangedElements.d.ts +85 -85
  527. package/lib/esm/ChangedElements.js +20 -20
  528. package/lib/esm/ChangedEntities.d.ts +45 -45
  529. package/lib/esm/ChangedEntities.d.ts.map +1 -1
  530. package/lib/esm/ChangedEntities.js +8 -8
  531. package/lib/esm/ChangesetProps.d.ts +98 -98
  532. package/lib/esm/ChangesetProps.d.ts.map +1 -1
  533. package/lib/esm/ChangesetProps.js +19 -19
  534. package/lib/esm/ChangesetProps.js.map +1 -1
  535. package/lib/esm/ClipStyle.d.ts +89 -89
  536. package/lib/esm/ClipStyle.js +118 -118
  537. package/lib/esm/ClipStyle.js.map +1 -1
  538. package/lib/esm/Code.d.ts +278 -277
  539. package/lib/esm/Code.d.ts.map +1 -1
  540. package/lib/esm/Code.js +266 -264
  541. package/lib/esm/Code.js.map +1 -1
  542. package/lib/esm/ColorByName.d.ts +161 -161
  543. package/lib/esm/ColorByName.js +166 -166
  544. package/lib/esm/ColorDef.d.ts +210 -208
  545. package/lib/esm/ColorDef.d.ts.map +1 -1
  546. package/lib/esm/ColorDef.js +569 -567
  547. package/lib/esm/ColorDef.js.map +1 -1
  548. package/lib/esm/CommonLoggerCategory.d.ts +18 -18
  549. package/lib/esm/CommonLoggerCategory.js +23 -23
  550. package/lib/esm/ConcurrentQuery.d.ts +421 -421
  551. package/lib/esm/ConcurrentQuery.d.ts.map +1 -1
  552. package/lib/esm/ConcurrentQuery.js +545 -545
  553. package/lib/esm/ConcurrentQuery.js.map +1 -1
  554. package/lib/esm/ContextRealityModel.d.ts +303 -303
  555. package/lib/esm/ContextRealityModel.js +366 -368
  556. package/lib/esm/ContextRealityModel.js.map +1 -1
  557. package/lib/esm/DisplayStyleSettings.d.ts +593 -588
  558. package/lib/esm/DisplayStyleSettings.d.ts.map +1 -1
  559. package/lib/esm/DisplayStyleSettings.js +985 -980
  560. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  561. package/lib/esm/ECSchemaProps.d.ts +39 -39
  562. package/lib/esm/ECSchemaProps.js +8 -8
  563. package/lib/esm/ECSqlReader.d.ts +72 -70
  564. package/lib/esm/ECSqlReader.d.ts.map +1 -1
  565. package/lib/esm/ECSqlReader.js +293 -275
  566. package/lib/esm/ECSqlReader.js.map +1 -1
  567. package/lib/esm/ECSqlTypes.d.ts +128 -128
  568. package/lib/esm/ECSqlTypes.js +185 -185
  569. package/lib/esm/ElementMesh.d.ts +39 -39
  570. package/lib/esm/ElementMesh.js +52 -52
  571. package/lib/esm/ElementProps.d.ts +483 -483
  572. package/lib/esm/ElementProps.d.ts.map +1 -1
  573. package/lib/esm/ElementProps.js +93 -92
  574. package/lib/esm/ElementProps.js.map +1 -1
  575. package/lib/esm/EmphasizeElementsProps.d.ts +55 -55
  576. package/lib/esm/EmphasizeElementsProps.js +22 -22
  577. package/lib/esm/EntityProps.d.ts +177 -177
  578. package/lib/esm/EntityProps.d.ts.map +1 -1
  579. package/lib/esm/EntityProps.js +108 -108
  580. package/lib/esm/EntityReference.d.ts +51 -51
  581. package/lib/esm/EntityReference.d.ts.map +1 -1
  582. package/lib/esm/EntityReference.js +52 -52
  583. package/lib/esm/Environment.d.ts +74 -61
  584. package/lib/esm/Environment.d.ts.map +1 -1
  585. package/lib/esm/Environment.js +75 -69
  586. package/lib/esm/Environment.js.map +1 -1
  587. package/lib/esm/FeatureIndex.d.ts +39 -39
  588. package/lib/esm/FeatureIndex.js +57 -57
  589. package/lib/esm/FeatureIndex.js.map +1 -1
  590. package/lib/esm/FeatureSymbology.d.ts +449 -444
  591. package/lib/esm/FeatureSymbology.d.ts.map +1 -1
  592. package/lib/esm/FeatureSymbology.js +615 -609
  593. package/lib/esm/FeatureSymbology.js.map +1 -1
  594. package/lib/esm/FeatureTable.d.ts +255 -141
  595. package/lib/esm/FeatureTable.d.ts.map +1 -1
  596. package/lib/esm/FeatureTable.js +476 -272
  597. package/lib/esm/FeatureTable.js.map +1 -1
  598. package/lib/esm/Fonts.d.ts +51 -51
  599. package/lib/esm/Fonts.d.ts.map +1 -1
  600. package/lib/esm/Fonts.js +49 -49
  601. package/lib/esm/Frustum.d.ts +114 -114
  602. package/lib/esm/Frustum.js +288 -288
  603. package/lib/esm/GeoCoordinateServices.d.ts +123 -119
  604. package/lib/esm/GeoCoordinateServices.d.ts.map +1 -1
  605. package/lib/esm/GeoCoordinateServices.js +77 -76
  606. package/lib/esm/GeoCoordinateServices.js.map +1 -1
  607. package/lib/esm/GeometryContainment.d.ts +28 -28
  608. package/lib/esm/GeometryContainment.js +8 -8
  609. package/lib/esm/GeometryParams.d.ts +130 -130
  610. package/lib/esm/GeometryParams.js +170 -170
  611. package/lib/esm/GeometrySummary.d.ts +45 -45
  612. package/lib/esm/GeometrySummary.js +20 -20
  613. package/lib/esm/Gradient.d.ts +139 -139
  614. package/lib/esm/Gradient.js +450 -452
  615. package/lib/esm/Gradient.js.map +1 -1
  616. package/lib/esm/GraphicParams.d.ts +58 -58
  617. package/lib/esm/GraphicParams.js +81 -81
  618. package/lib/esm/GraphicParams.js.map +1 -1
  619. package/lib/esm/GroundPlane.d.ts +52 -52
  620. package/lib/esm/GroundPlane.d.ts.map +1 -1
  621. package/lib/esm/GroundPlane.js +60 -60
  622. package/lib/esm/GroundPlane.js.map +1 -1
  623. package/lib/esm/HSLColor.d.ts +20 -20
  624. package/lib/esm/HSLColor.js +28 -28
  625. package/lib/esm/HSLColor.js.map +1 -1
  626. package/lib/esm/HSVColor.d.ts +30 -30
  627. package/lib/esm/HSVColor.js +55 -55
  628. package/lib/esm/HSVColor.js.map +1 -1
  629. package/lib/esm/HiddenLine.d.ts +97 -97
  630. package/lib/esm/HiddenLine.js +157 -159
  631. package/lib/esm/HiddenLine.js.map +1 -1
  632. package/lib/esm/Hilite.d.ts +50 -50
  633. package/lib/esm/Hilite.js +61 -61
  634. package/lib/esm/Hilite.js.map +1 -1
  635. package/lib/esm/IModel.d.ts +358 -359
  636. package/lib/esm/IModel.d.ts.map +1 -1
  637. package/lib/esm/IModel.js +343 -342
  638. package/lib/esm/IModel.js.map +1 -1
  639. package/lib/esm/IModelError.d.ts +42 -42
  640. package/lib/esm/IModelError.d.ts.map +1 -1
  641. package/lib/esm/IModelError.js +56 -56
  642. package/lib/esm/IModelError.js.map +1 -1
  643. package/lib/esm/IModelVersion.d.ts +68 -68
  644. package/lib/esm/IModelVersion.d.ts.map +1 -1
  645. package/lib/esm/IModelVersion.js +75 -75
  646. package/lib/esm/Image.d.ts +86 -86
  647. package/lib/esm/Image.js +120 -120
  648. package/lib/esm/Image.js.map +1 -1
  649. package/lib/esm/IpcAppProps.d.ts +141 -141
  650. package/lib/esm/IpcAppProps.js +19 -19
  651. package/lib/esm/LightSettings.d.ts +224 -224
  652. package/lib/esm/LightSettings.js +297 -301
  653. package/lib/esm/LightSettings.js.map +1 -1
  654. package/lib/esm/LinePixels.d.ts +34 -34
  655. package/lib/esm/LinePixels.js +39 -39
  656. package/lib/esm/Localization.d.ts +117 -113
  657. package/lib/esm/Localization.d.ts.map +1 -1
  658. package/lib/esm/Localization.js +29 -29
  659. package/lib/esm/Localization.js.map +1 -1
  660. package/lib/esm/MapImagerySettings.d.ts +62 -62
  661. package/lib/esm/MapImagerySettings.d.ts.map +1 -1
  662. package/lib/esm/MapImagerySettings.js +76 -76
  663. package/lib/esm/MapImagerySettings.js.map +1 -1
  664. package/lib/esm/MapLayerSettings.d.ts +272 -272
  665. package/lib/esm/MapLayerSettings.d.ts.map +1 -1
  666. package/lib/esm/MapLayerSettings.js +399 -403
  667. package/lib/esm/MapLayerSettings.js.map +1 -1
  668. package/lib/esm/MassProperties.d.ts +64 -64
  669. package/lib/esm/MassProperties.js +20 -20
  670. package/lib/esm/MaterialProps.d.ts +165 -153
  671. package/lib/esm/MaterialProps.d.ts.map +1 -1
  672. package/lib/esm/MaterialProps.js +34 -32
  673. package/lib/esm/MaterialProps.js.map +1 -1
  674. package/lib/esm/ModelClipGroup.d.ts +67 -67
  675. package/lib/esm/ModelClipGroup.js +91 -93
  676. package/lib/esm/ModelClipGroup.js.map +1 -1
  677. package/lib/esm/ModelGeometryChanges.d.ts +107 -107
  678. package/lib/esm/ModelGeometryChanges.d.ts.map +1 -1
  679. package/lib/esm/ModelGeometryChanges.js +80 -80
  680. package/lib/esm/ModelProps.d.ts +67 -67
  681. package/lib/esm/ModelProps.js +8 -8
  682. package/lib/esm/NativeAppProps.d.ts +122 -122
  683. package/lib/esm/NativeAppProps.d.ts.map +1 -1
  684. package/lib/esm/NativeAppProps.js +27 -27
  685. package/lib/esm/OctEncodedNormal.d.ts +33 -33
  686. package/lib/esm/OctEncodedNormal.js +93 -93
  687. package/lib/esm/PlanProjectionSettings.d.ts +47 -47
  688. package/lib/esm/PlanProjectionSettings.js +59 -59
  689. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  690. package/lib/esm/PlanarClipMask.d.ts +177 -177
  691. package/lib/esm/PlanarClipMask.js +133 -132
  692. package/lib/esm/PlanarClipMask.js.map +1 -1
  693. package/lib/esm/QPoint.d.ts +479 -479
  694. package/lib/esm/QPoint.js +813 -815
  695. package/lib/esm/QPoint.js.map +1 -1
  696. package/lib/esm/RealityDataAccessProps.d.ts +41 -41
  697. package/lib/esm/RealityDataAccessProps.js +16 -16
  698. package/lib/esm/RealityModelDisplaySettings.d.ts +183 -183
  699. package/lib/esm/RealityModelDisplaySettings.d.ts.map +1 -1
  700. package/lib/esm/RealityModelDisplaySettings.js +138 -137
  701. package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
  702. package/lib/esm/Render.d.ts +89 -89
  703. package/lib/esm/Render.js +165 -165
  704. package/lib/esm/RenderMaterial.d.ts +58 -58
  705. package/lib/esm/RenderMaterial.js +71 -72
  706. package/lib/esm/RenderMaterial.js.map +1 -1
  707. package/lib/esm/RenderSchedule.d.ts +557 -543
  708. package/lib/esm/RenderSchedule.d.ts.map +1 -1
  709. package/lib/esm/RenderSchedule.js +1025 -999
  710. package/lib/esm/RenderSchedule.js.map +1 -1
  711. package/lib/esm/RenderTexture.d.ts +70 -70
  712. package/lib/esm/RenderTexture.d.ts.map +1 -1
  713. package/lib/esm/RenderTexture.js +55 -55
  714. package/lib/esm/RenderTexture.js.map +1 -1
  715. package/lib/esm/RgbColor.d.ts +47 -47
  716. package/lib/esm/RgbColor.js +73 -73
  717. package/lib/esm/RpcInterface.d.ts +42 -33
  718. package/lib/esm/RpcInterface.d.ts.map +1 -1
  719. package/lib/esm/RpcInterface.js +154 -133
  720. package/lib/esm/RpcInterface.js.map +1 -1
  721. package/lib/esm/RpcManager.d.ts +40 -40
  722. package/lib/esm/RpcManager.js +51 -51
  723. package/lib/esm/RpcManager.js.map +1 -1
  724. package/lib/esm/SessionProps.d.ts +16 -16
  725. package/lib/esm/SessionProps.js +8 -8
  726. package/lib/esm/SkyBox.d.ts +217 -215
  727. package/lib/esm/SkyBox.d.ts.map +1 -1
  728. package/lib/esm/SkyBox.js +204 -203
  729. package/lib/esm/SkyBox.js.map +1 -1
  730. package/lib/esm/Snapping.d.ts +49 -49
  731. package/lib/esm/Snapping.js +8 -8
  732. package/lib/esm/SolarCalculate.d.ts +27 -27
  733. package/lib/esm/SolarCalculate.js +204 -204
  734. package/lib/esm/SolarShadows.d.ts +35 -35
  735. package/lib/esm/SolarShadows.js +58 -58
  736. package/lib/esm/SolarShadows.js.map +1 -1
  737. package/lib/esm/SpatialClassification.d.ts +208 -208
  738. package/lib/esm/SpatialClassification.js +333 -334
  739. package/lib/esm/SpatialClassification.js.map +1 -1
  740. package/lib/esm/SubCategoryAppearance.d.ts +91 -91
  741. package/lib/esm/SubCategoryAppearance.js +93 -92
  742. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  743. package/lib/esm/SubCategoryOverride.d.ts +46 -46
  744. package/lib/esm/SubCategoryOverride.js +101 -100
  745. package/lib/esm/SubCategoryOverride.js.map +1 -1
  746. package/lib/esm/TerrainSettings.d.ts +82 -82
  747. package/lib/esm/TerrainSettings.d.ts.map +1 -1
  748. package/lib/esm/TerrainSettings.js +96 -98
  749. package/lib/esm/TerrainSettings.js.map +1 -1
  750. package/lib/esm/TextureMapping.d.ts +151 -118
  751. package/lib/esm/TextureMapping.d.ts.map +1 -1
  752. package/lib/esm/TextureMapping.js +176 -170
  753. package/lib/esm/TextureMapping.js.map +1 -1
  754. package/lib/esm/TextureProps.d.ts +65 -65
  755. package/lib/esm/TextureProps.js +25 -25
  756. package/lib/esm/ThematicDisplay.d.ts +230 -230
  757. package/lib/esm/ThematicDisplay.js +337 -337
  758. package/lib/esm/ThematicDisplay.js.map +1 -1
  759. package/lib/esm/Thumbnail.d.ts +26 -26
  760. package/lib/esm/Thumbnail.js +8 -8
  761. package/lib/esm/TileProps.d.ts +88 -82
  762. package/lib/esm/TileProps.d.ts.map +1 -1
  763. package/lib/esm/TileProps.js +25 -25
  764. package/lib/esm/TileProps.js.map +1 -1
  765. package/lib/esm/Tween.d.ts +191 -191
  766. package/lib/esm/Tween.d.ts.map +1 -1
  767. package/lib/esm/Tween.js +565 -565
  768. package/lib/esm/TxnAction.d.ts +21 -21
  769. package/lib/esm/TxnAction.js +26 -26
  770. package/lib/esm/ViewDetails.d.ts +125 -125
  771. package/lib/esm/ViewDetails.js +162 -161
  772. package/lib/esm/ViewDetails.js.map +1 -1
  773. package/lib/esm/ViewFlags.d.ts +287 -287
  774. package/lib/esm/ViewFlags.d.ts.map +1 -1
  775. package/lib/esm/ViewFlags.js +364 -364
  776. package/lib/esm/ViewFlags.js.map +1 -1
  777. package/lib/esm/ViewProps.d.ts +205 -205
  778. package/lib/esm/ViewProps.js +8 -8
  779. package/lib/esm/WhiteOnWhiteReversalSettings.d.ts +36 -36
  780. package/lib/esm/WhiteOnWhiteReversalSettings.js +34 -33
  781. package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
  782. package/lib/esm/core-common.d.ts +244 -244
  783. package/lib/esm/core-common.d.ts.map +1 -1
  784. package/lib/esm/core-common.js +248 -248
  785. package/lib/esm/core-common.js.map +1 -1
  786. package/lib/esm/domains/FunctionalElementProps.d.ts +11 -11
  787. package/lib/esm/domains/FunctionalElementProps.js +8 -8
  788. package/lib/esm/domains/GenericElementProps.d.ts +18 -18
  789. package/lib/esm/domains/GenericElementProps.js +8 -8
  790. package/lib/esm/geometry/AdditionalTransform.d.ts +84 -84
  791. package/lib/esm/geometry/AdditionalTransform.js +80 -80
  792. package/lib/esm/geometry/AreaPattern.d.ts +82 -82
  793. package/lib/esm/geometry/AreaPattern.js +200 -201
  794. package/lib/esm/geometry/AreaPattern.js.map +1 -1
  795. package/lib/esm/geometry/BoundingSphere.d.ts +27 -27
  796. package/lib/esm/geometry/BoundingSphere.js +40 -40
  797. package/lib/esm/geometry/BoundingSphere.js.map +1 -1
  798. package/lib/esm/geometry/Cartographic.d.ts +137 -137
  799. package/lib/esm/geometry/Cartographic.js +341 -340
  800. package/lib/esm/geometry/Cartographic.js.map +1 -1
  801. package/lib/esm/geometry/CoordinateReferenceSystem.d.ts +269 -269
  802. package/lib/esm/geometry/CoordinateReferenceSystem.d.ts.map +1 -1
  803. package/lib/esm/geometry/CoordinateReferenceSystem.js +253 -254
  804. package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
  805. package/lib/esm/geometry/ElementGeometry.d.ts +402 -402
  806. package/lib/esm/geometry/ElementGeometry.d.ts.map +1 -1
  807. package/lib/esm/geometry/ElementGeometry.js +1716 -1716
  808. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  809. package/lib/esm/geometry/ElementGeometryFB.d.ts +2372 -2372
  810. package/lib/esm/geometry/ElementGeometryFB.js +3811 -3811
  811. package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
  812. package/lib/esm/geometry/FrustumPlanes.d.ts +83 -81
  813. package/lib/esm/geometry/FrustumPlanes.d.ts.map +1 -1
  814. package/lib/esm/geometry/FrustumPlanes.js +223 -189
  815. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  816. package/lib/esm/geometry/GeodeticDatum.d.ts +409 -409
  817. package/lib/esm/geometry/GeodeticDatum.d.ts.map +1 -1
  818. package/lib/esm/geometry/GeodeticDatum.js +389 -390
  819. package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
  820. package/lib/esm/geometry/GeodeticEllipsoid.d.ts +72 -72
  821. package/lib/esm/geometry/GeodeticEllipsoid.js +67 -68
  822. package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
  823. package/lib/esm/geometry/GeometryStream.d.ts +347 -347
  824. package/lib/esm/geometry/GeometryStream.d.ts.map +1 -1
  825. package/lib/esm/geometry/GeometryStream.js +463 -464
  826. package/lib/esm/geometry/GeometryStream.js.map +1 -1
  827. package/lib/esm/geometry/ImageGraphic.d.ts +74 -74
  828. package/lib/esm/geometry/ImageGraphic.d.ts.map +1 -1
  829. package/lib/esm/geometry/ImageGraphic.js +93 -93
  830. package/lib/esm/geometry/LineStyle.d.ts +71 -71
  831. package/lib/esm/geometry/LineStyle.js +126 -126
  832. package/lib/esm/geometry/Placement.d.ts +95 -95
  833. package/lib/esm/geometry/Placement.d.ts.map +1 -1
  834. package/lib/esm/geometry/Placement.js +126 -126
  835. package/lib/esm/geometry/Projection.d.ts +251 -251
  836. package/lib/esm/geometry/Projection.d.ts.map +1 -1
  837. package/lib/esm/geometry/Projection.js +192 -192
  838. package/lib/esm/geometry/Projection.js.map +1 -1
  839. package/lib/esm/geometry/TextString.d.ts +55 -55
  840. package/lib/esm/geometry/TextString.js +61 -61
  841. package/lib/esm/geometry/TextString.js.map +1 -1
  842. package/lib/esm/ipc/IpcSession.d.ts +23 -23
  843. package/lib/esm/ipc/IpcSession.js +23 -23
  844. package/lib/esm/ipc/IpcSocket.d.ts +96 -96
  845. package/lib/esm/ipc/IpcSocket.d.ts.map +1 -1
  846. package/lib/esm/ipc/IpcSocket.js +12 -12
  847. package/lib/esm/ipc/IpcWebSocket.d.ts +60 -61
  848. package/lib/esm/ipc/IpcWebSocket.d.ts.map +1 -1
  849. package/lib/esm/ipc/IpcWebSocket.js +143 -145
  850. package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
  851. package/lib/esm/ipc/IpcWebSocketTransport.d.ts +15 -15
  852. package/lib/esm/ipc/IpcWebSocketTransport.js +156 -156
  853. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  854. package/lib/esm/rpc/DevToolsRpcInterface.d.ts +32 -32
  855. package/lib/esm/rpc/DevToolsRpcInterface.d.ts.map +1 -1
  856. package/lib/esm/rpc/DevToolsRpcInterface.js +49 -44
  857. package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
  858. package/lib/esm/rpc/IModelReadRpcInterface.d.ts +99 -99
  859. package/lib/esm/rpc/IModelReadRpcInterface.d.ts.map +1 -1
  860. package/lib/esm/rpc/IModelReadRpcInterface.js +118 -117
  861. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  862. package/lib/esm/rpc/IModelTileRpcInterface.d.ts +49 -61
  863. package/lib/esm/rpc/IModelTileRpcInterface.d.ts.map +1 -1
  864. package/lib/esm/rpc/IModelTileRpcInterface.js +76 -92
  865. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  866. package/lib/esm/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  867. package/lib/esm/rpc/SnapshotIModelRpcInterface.js +45 -44
  868. package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  869. package/lib/esm/rpc/TestRpcManager.d.ts +20 -20
  870. package/lib/esm/rpc/TestRpcManager.js +36 -36
  871. package/lib/esm/rpc/WipRpcInterface.d.ts +29 -29
  872. package/lib/esm/rpc/WipRpcInterface.js +37 -36
  873. package/lib/esm/rpc/WipRpcInterface.js.map +1 -1
  874. package/lib/esm/rpc/core/RpcConfiguration.d.ts +111 -111
  875. package/lib/esm/rpc/core/RpcConfiguration.d.ts.map +1 -1
  876. package/lib/esm/rpc/core/RpcConfiguration.js +185 -184
  877. package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
  878. package/lib/esm/rpc/core/RpcConstants.d.ts +90 -90
  879. package/lib/esm/rpc/core/RpcConstants.js +106 -106
  880. package/lib/esm/rpc/core/RpcControl.d.ts +54 -57
  881. package/lib/esm/rpc/core/RpcControl.d.ts.map +1 -1
  882. package/lib/esm/rpc/core/RpcControl.js +144 -141
  883. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  884. package/lib/esm/rpc/core/RpcInvocation.d.ts +89 -89
  885. package/lib/esm/rpc/core/RpcInvocation.d.ts.map +1 -1
  886. package/lib/esm/rpc/core/RpcInvocation.js +253 -254
  887. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  888. package/lib/esm/rpc/core/RpcMarshaling.d.ts +35 -35
  889. package/lib/esm/rpc/core/RpcMarshaling.js +152 -152
  890. package/lib/esm/rpc/core/RpcOperation.d.ts +67 -67
  891. package/lib/esm/rpc/core/RpcOperation.d.ts.map +1 -1
  892. package/lib/esm/rpc/core/RpcOperation.js +130 -129
  893. package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
  894. package/lib/esm/rpc/core/RpcPendingQueue.d.ts +21 -21
  895. package/lib/esm/rpc/core/RpcPendingQueue.js +90 -91
  896. package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
  897. package/lib/esm/rpc/core/RpcProtocol.d.ts +132 -132
  898. package/lib/esm/rpc/core/RpcProtocol.d.ts.map +1 -1
  899. package/lib/esm/rpc/core/RpcProtocol.js +124 -123
  900. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  901. package/lib/esm/rpc/core/RpcPush.d.ts +68 -68
  902. package/lib/esm/rpc/core/RpcPush.d.ts.map +1 -1
  903. package/lib/esm/rpc/core/RpcPush.js +121 -119
  904. package/lib/esm/rpc/core/RpcPush.js.map +1 -1
  905. package/lib/esm/rpc/core/RpcRegistry.d.ts +48 -48
  906. package/lib/esm/rpc/core/RpcRegistry.js +194 -195
  907. package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
  908. package/lib/esm/rpc/core/RpcRequest.d.ts +186 -186
  909. package/lib/esm/rpc/core/RpcRequest.d.ts.map +1 -1
  910. package/lib/esm/rpc/core/RpcRequest.js +474 -473
  911. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  912. package/lib/esm/rpc/core/RpcRequestContext.d.ts +14 -14
  913. package/lib/esm/rpc/core/RpcRequestContext.js +1 -1
  914. package/lib/esm/rpc/core/RpcRoutingToken.d.ts +12 -12
  915. package/lib/esm/rpc/core/RpcRoutingToken.d.ts.map +1 -1
  916. package/lib/esm/rpc/core/RpcRoutingToken.js +21 -20
  917. package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
  918. package/lib/esm/rpc/core/RpcSessionInvocation.d.ts +10 -10
  919. package/lib/esm/rpc/core/RpcSessionInvocation.js +56 -56
  920. package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
  921. package/lib/esm/rpc/web/BentleyCloudRpcManager.d.ts +48 -46
  922. package/lib/esm/rpc/web/BentleyCloudRpcManager.d.ts.map +1 -1
  923. package/lib/esm/rpc/web/BentleyCloudRpcManager.js +72 -68
  924. package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  925. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  926. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +137 -139
  927. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  928. package/lib/esm/rpc/web/OpenAPI.d.ts +140 -140
  929. package/lib/esm/rpc/web/OpenAPI.js +56 -56
  930. package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
  931. package/lib/esm/rpc/web/RpcMultipart.d.ts +35 -35
  932. package/lib/esm/rpc/web/RpcMultipart.js +47 -46
  933. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  934. package/lib/esm/rpc/web/WebAppRpcLogging.d.ts +28 -28
  935. package/lib/esm/rpc/web/WebAppRpcLogging.js +136 -136
  936. package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +89 -89
  937. package/lib/esm/rpc/web/WebAppRpcProtocol.js +112 -112
  938. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  939. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +67 -67
  940. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts.map +1 -1
  941. package/lib/esm/rpc/web/WebAppRpcRequest.js +236 -235
  942. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  943. package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
  944. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js +369 -369
  945. package/lib/esm/tile/B3dmTileIO.d.ts +19 -19
  946. package/lib/esm/tile/B3dmTileIO.js +62 -62
  947. package/lib/esm/tile/B3dmTileIO.js.map +1 -1
  948. package/lib/esm/tile/CompositeTileIO.d.ts +15 -15
  949. package/lib/esm/tile/CompositeTileIO.js +22 -22
  950. package/lib/esm/tile/CompositeTileIO.js.map +1 -1
  951. package/lib/esm/tile/ElementGraphics.d.ts +145 -145
  952. package/lib/esm/tile/ElementGraphics.d.ts.map +1 -1
  953. package/lib/esm/tile/ElementGraphics.js +8 -8
  954. package/lib/esm/tile/GltfTileIO.d.ts +45 -45
  955. package/lib/esm/tile/GltfTileIO.d.ts.map +1 -1
  956. package/lib/esm/tile/GltfTileIO.js +105 -105
  957. package/lib/esm/tile/GltfTileIO.js.map +1 -1
  958. package/lib/esm/tile/I3dmTileIO.d.ts +20 -20
  959. package/lib/esm/tile/I3dmTileIO.js +36 -36
  960. package/lib/esm/tile/I3dmTileIO.js.map +1 -1
  961. package/lib/esm/tile/IModelTileIO.d.ts +77 -75
  962. package/lib/esm/tile/IModelTileIO.d.ts.map +1 -1
  963. package/lib/esm/tile/IModelTileIO.js +93 -90
  964. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  965. package/lib/esm/tile/PntsTileIO.d.ts +17 -17
  966. package/lib/esm/tile/PntsTileIO.js +22 -22
  967. package/lib/esm/tile/PntsTileIO.js.map +1 -1
  968. package/lib/esm/tile/TileIO.d.ts +66 -66
  969. package/lib/esm/tile/TileIO.js +110 -110
  970. package/lib/esm/tile/TileMetadata.d.ts +240 -228
  971. package/lib/esm/tile/TileMetadata.d.ts.map +1 -1
  972. package/lib/esm/tile/TileMetadata.js +677 -661
  973. package/lib/esm/tile/TileMetadata.js.map +1 -1
  974. package/lib/esm/tile/Tileset3dSchema.d.ts +97 -0
  975. package/lib/esm/tile/Tileset3dSchema.d.ts.map +1 -0
  976. package/lib/esm/tile/Tileset3dSchema.js +9 -0
  977. package/lib/esm/tile/Tileset3dSchema.js.map +1 -0
  978. package/package.json +15 -18
  979. package/lib/cjs/CloudStorage.d.ts +0 -63
  980. package/lib/cjs/CloudStorage.d.ts.map +0 -1
  981. package/lib/cjs/CloudStorage.js +0 -114
  982. package/lib/cjs/CloudStorage.js.map +0 -1
  983. package/lib/cjs/CloudStorageTileCache.d.ts +0 -28
  984. package/lib/cjs/CloudStorageTileCache.d.ts.map +0 -1
  985. package/lib/cjs/CloudStorageTileCache.js +0 -67
  986. package/lib/cjs/CloudStorageTileCache.js.map +0 -1
  987. package/lib/esm/CloudStorage.d.ts +0 -63
  988. package/lib/esm/CloudStorage.d.ts.map +0 -1
  989. package/lib/esm/CloudStorage.js +0 -110
  990. package/lib/esm/CloudStorage.js.map +0 -1
  991. package/lib/esm/CloudStorageTileCache.d.ts +0 -28
  992. package/lib/esm/CloudStorageTileCache.d.ts.map +0 -1
  993. package/lib/esm/CloudStorageTileCache.js +0 -63
  994. package/lib/esm/CloudStorageTileCache.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureTable.js","sourceRoot":"","sources":["../../src/FeatureTable.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert, compareNumbers, compareStrings, Id64, Id64String, IndexedValue, IndexMap } from \"@itwin/core-bentley\";\r\nimport { GeometryClass } from \"./GeometryParams\";\r\n\r\n/** Describes a discrete entity within a batched [RenderGraphic]($frontend) that can be\r\n * grouped with other such entities in a [[FeatureTable]].\r\n * Features roughly correlate to elements: a [Tile]($frontend)'s graphics combines geometry from every\r\n * [GeometricElement]($backend) that intersects the tile's volume, so each element produces at least one feature.\r\n * However, an element's geometry stream can contain geometry belonging to multiple different combinations of [SubCategory]($backend) and\r\n * [[GeometryClass]], so an individual element may produce more than one feature.\r\n * @see [[FeatureOverrides]] for customizing the appearance of individual features.\r\n * @public\r\n */\r\nexport class Feature {\r\n public readonly elementId: string;\r\n public readonly subCategoryId: string;\r\n public readonly geometryClass: GeometryClass;\r\n\r\n public constructor(elementId: Id64String = Id64.invalid, subCategoryId: Id64String = Id64.invalid, geometryClass: GeometryClass = GeometryClass.Primary) {\r\n this.elementId = elementId;\r\n this.subCategoryId = subCategoryId;\r\n this.geometryClass = geometryClass;\r\n }\r\n\r\n public get isDefined(): boolean { return !Id64.isInvalid(this.elementId) || !Id64.isInvalid(this.subCategoryId) || this.geometryClass !== GeometryClass.Primary; }\r\n public get isUndefined(): boolean { return !this.isDefined; }\r\n\r\n /** Returns true if this feature is equivalent to the supplied feature. */\r\n public equals(other: Feature): boolean { return 0 === this.compare(other); }\r\n\r\n /** Performs ordinal comparison of this feature with another.\r\n * @param rhs The feature to compare with.\r\n * @returns zero if the features are equivalent, a negative value if this feature compares as \"less than\" `rhs`, or a positive value if this feature compares \"greater than\" `rhs`.\r\n */\r\n public compare(rhs: Feature): number {\r\n if (this === rhs)\r\n return 0;\r\n\r\n let cmp = compareNumbers(this.geometryClass, rhs.geometryClass);\r\n if (0 === cmp) {\r\n cmp = compareStrings(this.elementId, rhs.elementId);\r\n if (0 === cmp) {\r\n cmp = compareStrings(this.subCategoryId, rhs.subCategoryId);\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface PackedFeature {\r\n elementId: Id64.Uint32Pair;\r\n subCategoryId: Id64.Uint32Pair;\r\n geometryClass: GeometryClass;\r\n animationNodeId: number;\r\n}\r\n\r\n/** Describes the type of a 'batch' of graphics representing multiple [[Feature]]s.\r\n * The most commonly-encountered batches are Tiles, which can be of either Primary or\r\n * Classifier type.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum BatchType {\r\n /** This batch contains graphics derived from a model's visible geometry. */\r\n Primary,\r\n /**\r\n * This batch contains color volumes which are used to classify a model's visible geometry.\r\n * The graphics themselves are not rendered to the screen; instead they are rendered to the stencil buffer\r\n * to resymbolize the primary geometry.\r\n */\r\n VolumeClassifier,\r\n /**\r\n * This batch contains planar graphics which are used to classify a model's visible geometry.\r\n * The graphics themselves are not rendered to the screen; instead they are rendered to a texture buffer\r\n * to resymbolize the primary geometry.\r\n */\r\n PlanarClassifier,\r\n}\r\n\r\n/** Defines a look-up table for [[Feature]]s within a batched [RenderGraphic]($frontend). Consecutive 32-bit\r\n * indices are assigned to each unique Feature. Primitives within the RenderGraphic can\r\n * use per-vertex indices to specify the distribution of Features within the primitive. The appearance of individual\r\n * features can be customized using [[FeatureOverrides]]. Typically a [Tile]($frontend) will contain a feature table\r\n * identifying the elements whose geometry appears within that tile.\r\n * @see [[FeatureOverrides]] for customizing the appearance of individual features.\r\n * @public\r\n */\r\nexport class FeatureTable extends IndexMap<Feature> {\r\n public readonly modelId: Id64String;\r\n public readonly type: BatchType;\r\n\r\n /** Construct an empty FeatureTable. */\r\n public constructor(maxFeatures: number, modelId: Id64String = Id64.invalid, type: BatchType = BatchType.Primary) {\r\n super((lhs, rhs) => lhs.compare(rhs), maxFeatures);\r\n this.modelId = modelId;\r\n this.type = type;\r\n }\r\n\r\n /** Returns the maximum number of [[Feature]]s this FeatureTable can contain. */\r\n public get maxFeatures(): number { return this._maximumSize; }\r\n /** @internal */\r\n public get anyDefined(): boolean { return this.length > 1 || (1 === this.length && this._array[0].value.isDefined); }\r\n /** Returns true if this FeatureTable contains exactly one [[Feature]]. */\r\n public get isUniform(): boolean { return 1 === this.length; }\r\n /** If this FeatureTable contains exactly one [[Feature]], returns that Feature; otherwise returns undefined. */\r\n public get uniform(): Feature | undefined { return 1 === this.length ? this._array[0].value : undefined; }\r\n /** Returns true if this FeatureTable is associated with [[BatchType.VolumeClassifier]] geometry. */\r\n public get isVolumeClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\r\n /** Returns true if this FeatureTable is associated with [[BatchType.PlanarClassifier]] geometry. */\r\n public get isPlanarClassifier(): boolean { return BatchType.PlanarClassifier === this.type; }\r\n\r\n /** Returns the Feature corresponding to the specified index, or undefined if the index is not present. */\r\n public findFeature(index: number): Feature | undefined {\r\n for (const entry of this._array)\r\n if (entry.index === index)\r\n return entry.value;\r\n\r\n return undefined;\r\n }\r\n\r\n /** @internal */\r\n public insertWithIndex(feature: Feature, index: number): void {\r\n const bound = this.lowerBound(feature);\r\n assert(!bound.equal);\r\n assert(!this.isFull);\r\n const entry = new IndexedValue<Feature>(feature, index);\r\n this._array.splice(bound.index, 0, entry);\r\n }\r\n\r\n /** @internal */\r\n public getArray(): Array<IndexedValue<Feature>> { return this._array; }\r\n}\r\n\r\n/** @alpha */\r\nexport type ComputeNodeId = (elementId: Id64.Uint32Pair, featureIndex: number) => number;\r\n\r\n/**\r\n * An immutable, packed representation of a [[FeatureTable]]. The features are packed into a single array of 32-bit integer values,\r\n * wherein each feature occupies 3 32-bit integers.\r\n * @internal\r\n */\r\nexport class PackedFeatureTable {\r\n private readonly _data: Uint32Array;\r\n public readonly modelId: Id64String;\r\n public readonly maxFeatures: number;\r\n public readonly numFeatures: number;\r\n public readonly anyDefined: boolean;\r\n public readonly type: BatchType;\r\n private _animationNodeIds?: Uint8Array | Uint16Array | Uint32Array;\r\n\r\n public get byteLength(): number { return this._data.byteLength; }\r\n public get animationNodeIds(): Readonly<Uint8Array | Uint16Array | Uint32Array> | undefined { return this._animationNodeIds; }\r\n\r\n /** Construct a PackedFeatureTable from the packed binary data.\r\n * This is used internally when deserializing Tiles in iMdl format.\r\n * @internal\r\n */\r\n public constructor(data: Uint32Array, modelId: Id64String, numFeatures: number, maxFeatures: number, type: BatchType, animationNodeIds?: Uint8Array | Uint16Array | Uint32Array) {\r\n this._data = data;\r\n this.modelId = modelId;\r\n this.maxFeatures = maxFeatures;\r\n this.numFeatures = numFeatures;\r\n this.type = type;\r\n this._animationNodeIds = animationNodeIds;\r\n\r\n switch (this.numFeatures) {\r\n case 0:\r\n this.anyDefined = false;\r\n break;\r\n case 1:\r\n this.anyDefined = this.getFeature(0).isDefined;\r\n break;\r\n default:\r\n this.anyDefined = true;\r\n break;\r\n }\r\n\r\n assert(this._data.length >= this._subCategoriesOffset);\r\n assert(this.maxFeatures >= this.numFeatures);\r\n assert(undefined === this._animationNodeIds || this._animationNodeIds.length === this.numFeatures);\r\n }\r\n\r\n /** Create a packed feature table from a [[FeatureTable]]. */\r\n public static pack(featureTable: FeatureTable): PackedFeatureTable {\r\n // We must determine how many subcategories we have ahead of time to compute the size of the Uint32Array, as\r\n // the array cannot be resized after it is created.\r\n // We are not too worried about this as FeatureTables created on the front-end will contain few if any features; those obtained from the\r\n // back-end arrive within tiles already in the packed format.\r\n const subcategories = new Map<string, number>();\r\n for (const iv of featureTable.getArray()) {\r\n const found = subcategories.get(iv.value.subCategoryId.toString());\r\n if (undefined === found)\r\n subcategories.set(iv.value.subCategoryId, subcategories.size);\r\n }\r\n\r\n // We need 3 32-bit integers per feature, plus 2 32-bit integers per subcategory.\r\n const subCategoriesOffset = 3 * featureTable.length;\r\n const nUint32s = subCategoriesOffset + 2 * subcategories.size;\r\n const uint32s = new Uint32Array(nUint32s);\r\n\r\n for (const iv of featureTable.getArray()) {\r\n const feature = iv.value;\r\n const index = iv.index * 3;\r\n\r\n let subCategoryIndex = subcategories.get(feature.subCategoryId)!;\r\n assert(undefined !== subCategoryIndex); // we inserted it above...\r\n subCategoryIndex |= (feature.geometryClass << 24);\r\n\r\n uint32s[index + 0] = Id64.getLowerUint32(feature.elementId);\r\n uint32s[index + 1] = Id64.getUpperUint32(feature.elementId);\r\n uint32s[index + 2] = subCategoryIndex;\r\n }\r\n\r\n subcategories.forEach((index: number, id: string, _map) => {\r\n const index32 = subCategoriesOffset + 2 * index;\r\n uint32s[index32 + 0] = Id64.getLowerUint32(id);\r\n uint32s[index32 + 1] = Id64.getUpperUint32(id);\r\n });\r\n\r\n return new PackedFeatureTable(uint32s, featureTable.modelId, featureTable.length, featureTable.maxFeatures, featureTable.type);\r\n }\r\n\r\n /** Retrieve the Feature associated with the specified index. */\r\n public getFeature(featureIndex: number): Feature {\r\n const packed = this.getPackedFeature(featureIndex);\r\n const elemId = Id64.fromUint32Pair(packed.elementId.lower, packed.elementId.upper);\r\n const subcatId = Id64.fromUint32Pair(packed.subCategoryId.lower, packed.subCategoryId.upper);\r\n return new Feature(elemId, subcatId, packed.geometryClass);\r\n }\r\n\r\n /** Returns the Feature associated with the specified index, or undefined if the index is out of range. */\r\n public findFeature(featureIndex: number): Feature | undefined {\r\n return featureIndex < this.numFeatures ? this.getFeature(featureIndex) : undefined;\r\n }\r\n\r\n /** @internal */\r\n public getElementIdPair(featureIndex: number, out?: Id64.Uint32Pair): Id64.Uint32Pair {\r\n out = out ?? { lower: 0, upper: 0 };\r\n assert(featureIndex < this.numFeatures);\r\n const offset = 3 * featureIndex;\r\n out.lower = this._data[offset];\r\n out.upper = this._data[offset + 1];\r\n return out;\r\n }\r\n\r\n /** @internal */\r\n public getSubCategoryIdPair(featureIndex: number): Id64.Uint32Pair {\r\n const index = 3 * featureIndex;\r\n let subCatIndex = this._data[index + 2];\r\n subCatIndex = (subCatIndex & 0x00ffffff) >>> 0;\r\n subCatIndex = subCatIndex * 2 + this._subCategoriesOffset;\r\n return { lower: this._data[subCatIndex], upper: this._data[subCatIndex + 1] };\r\n }\r\n\r\n /** @internal */\r\n public getAnimationNodeId(featureIndex: number): number {\r\n return undefined !== this._animationNodeIds && featureIndex < this.numFeatures ? this._animationNodeIds[featureIndex] : 0;\r\n }\r\n\r\n /** @internal */\r\n public getPackedFeature(featureIndex: number): PackedFeature {\r\n assert(featureIndex < this.numFeatures);\r\n\r\n const index32 = 3 * featureIndex;\r\n const elementId = { lower: this._data[index32], upper: this._data[index32 + 1] };\r\n\r\n const subCatIndexAndClass = this._data[index32 + 2];\r\n const geometryClass = (subCatIndexAndClass >>> 24) & 0xff;\r\n\r\n let subCatIndex = (subCatIndexAndClass & 0x00ffffff) >>> 0;\r\n subCatIndex = subCatIndex * 2 + this._subCategoriesOffset;\r\n const subCategoryId = { lower: this._data[subCatIndex], upper: this._data[subCatIndex + 1] };\r\n\r\n const animationNodeId = this.getAnimationNodeId(featureIndex);\r\n return { elementId, subCategoryId, geometryClass, animationNodeId };\r\n }\r\n\r\n /** Returns the element ID of the Feature associated with the specified index, or undefined if the index is out of range. */\r\n public findElementId(featureIndex: number): Id64String | undefined {\r\n if (featureIndex >= this.numFeatures)\r\n return undefined;\r\n else\r\n return this.readId(3 * featureIndex);\r\n }\r\n\r\n /** Return true if this table contains exactly 1 feature. */\r\n public get isUniform(): boolean { return 1 === this.numFeatures; }\r\n\r\n /** If this table contains exactly 1 feature, return it. */\r\n public get uniform(): Feature | undefined { return this.isUniform ? this.getFeature(0) : undefined; }\r\n\r\n public get isVolumeClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\r\n public get isPlanarClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\r\n public get isClassifier(): boolean { return this.isVolumeClassifier || this.isPlanarClassifier; }\r\n\r\n /** Unpack the features into a [[FeatureTable]]. */\r\n public unpack(): FeatureTable {\r\n const table = new FeatureTable(this.maxFeatures, this.modelId);\r\n for (let i = 0; i < this.numFeatures; i++) {\r\n const feature = this.getFeature(i);\r\n table.insertWithIndex(feature, i);\r\n }\r\n\r\n return table;\r\n }\r\n\r\n public populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void {\r\n assert(undefined === this._animationNodeIds);\r\n assert(maxNodeId > 0);\r\n\r\n const pair = { lower: 0, upper: 0 };\r\n let haveNodes = false;\r\n const size = this.numFeatures;\r\n const nodeIds = maxNodeId < 0x100 ? new Uint8Array(size) : (maxNodeId < 0x10000 ? new Uint16Array(size) : new Uint32Array(size));\r\n for (let i = 0; i < this.numFeatures; i++) {\r\n this.getElementIdPair(i, pair);\r\n const nodeId = computeNodeId(pair, i);\r\n assert(nodeId <= maxNodeId);\r\n if (0 !== nodeId) {\r\n nodeIds[i] = nodeId;\r\n haveNodes = true;\r\n }\r\n }\r\n\r\n if (haveNodes)\r\n this._animationNodeIds = nodeIds;\r\n }\r\n\r\n private get _subCategoriesOffset(): number { return this.numFeatures * 3; }\r\n\r\n private readId(offset32: number): Id64String {\r\n return Id64.fromUint32Pair(this._data[offset32], this._data[offset32 + 1]);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureTable.js","sourceRoot":"","sources":["../../src/FeatureTable.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport {\r\n assert, compareNumbers, compareStrings, Id64, Id64String, IndexedValue, IndexMap, UintArray,\r\n} from \"@itwin/core-bentley\";\r\nimport { GeometryClass } from \"./GeometryParams\";\r\n\r\n/** Describes a discrete entity within a batched [RenderGraphic]($frontend) that can be\r\n * grouped with other such entities in a [[FeatureTable]].\r\n * Features roughly correlate to elements: a [Tile]($frontend)'s graphics combines geometry from every\r\n * [GeometricElement]($backend) that intersects the tile's volume, so each element produces at least one feature.\r\n * However, an element's geometry stream can contain geometry belonging to multiple different combinations of [SubCategory]($backend) and\r\n * [[GeometryClass]], so an individual element may produce more than one feature.\r\n * @see [[FeatureOverrides]] for customizing the appearance of individual features.\r\n * @public\r\n */\r\nexport class Feature {\r\n public readonly elementId: Id64String;\r\n public readonly subCategoryId: Id64String;\r\n public readonly geometryClass: GeometryClass;\r\n\r\n public constructor(elementId: Id64String = Id64.invalid, subCategoryId: Id64String = Id64.invalid, geometryClass: GeometryClass = GeometryClass.Primary) {\r\n this.elementId = elementId;\r\n this.subCategoryId = subCategoryId;\r\n this.geometryClass = geometryClass;\r\n }\r\n\r\n public get isDefined(): boolean { return !Id64.isInvalid(this.elementId) || !Id64.isInvalid(this.subCategoryId) || this.geometryClass !== GeometryClass.Primary; }\r\n public get isUndefined(): boolean { return !this.isDefined; }\r\n\r\n /** Returns true if this feature is equivalent to the supplied feature. */\r\n public equals(other: Feature): boolean { return 0 === this.compare(other); }\r\n\r\n /** Performs ordinal comparison of this feature with another.\r\n * @param rhs The feature to compare with.\r\n * @returns zero if the features are equivalent, a negative value if this feature compares as \"less than\" `rhs`, or a positive value if this feature compares \"greater than\" `rhs`.\r\n */\r\n public compare(rhs: Feature): number {\r\n if (this === rhs)\r\n return 0;\r\n\r\n let cmp = compareNumbers(this.geometryClass, rhs.geometryClass);\r\n if (0 === cmp) {\r\n cmp = compareStrings(this.elementId, rhs.elementId);\r\n if (0 === cmp) {\r\n cmp = compareStrings(this.subCategoryId, rhs.subCategoryId);\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n}\r\n\r\n/** A [[Feature]] with a modelId identifying the model containing the feature.\r\n * Typically produced from a PackedFeature.\r\n * Prior to the introduction of MultiModelPackedFeatureTable, every (Packed)FeatureTable was associated with exactly one model.\r\n * Now, each feature in a table may be associated with a different model.\r\n * @internal\r\n */\r\nexport interface ModelFeature {\r\n modelId: Id64String;\r\n elementId: Id64String;\r\n subCategoryId: Id64String;\r\n geometryClass: GeometryClass;\r\n}\r\n\r\n/** @internal */\r\nexport namespace ModelFeature {\r\n export function create(): ModelFeature {\r\n return {\r\n modelId: Id64.invalid,\r\n elementId: Id64.invalid,\r\n subCategoryId: Id64.invalid,\r\n geometryClass: GeometryClass.Primary,\r\n };\r\n }\r\n\r\n export function isDefined(feature: ModelFeature): boolean {\r\n return !Id64.isInvalid(feature.modelId) || !Id64.isInvalid(feature.elementId) || !Id64.isInvalid(feature.subCategoryId) || feature.geometryClass !== GeometryClass.Primary;\r\n }\r\n\r\n export function unpack(packed: PackedFeature, result: ModelFeature, unpackedModelId?: Id64String): ModelFeature {\r\n result.modelId = unpackedModelId ?? Id64.fromUint32PairObject(packed.modelId);\r\n result.elementId = Id64.fromUint32PairObject(packed.elementId);\r\n result.subCategoryId = Id64.fromUint32PairObject(packed.subCategoryId);\r\n result.geometryClass = packed.geometryClass;\r\n return result;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface PackedFeature {\r\n modelId: Id64.Uint32Pair;\r\n elementId: Id64.Uint32Pair;\r\n subCategoryId: Id64.Uint32Pair;\r\n geometryClass: GeometryClass;\r\n animationNodeId: number;\r\n}\r\n\r\n/** @internal */\r\nexport interface PackedFeatureWithIndex extends PackedFeature {\r\n index: number;\r\n}\r\n\r\n/** @internal */\r\nexport namespace PackedFeature {\r\n export function create(): PackedFeature {\r\n const pair = { upper: 0, lower: 0 };\r\n return {\r\n modelId: { ...pair },\r\n elementId: { ...pair },\r\n subCategoryId: { ...pair },\r\n geometryClass: GeometryClass.Primary,\r\n animationNodeId: 0,\r\n };\r\n }\r\n\r\n export function createWithIndex(): PackedFeatureWithIndex {\r\n const result = create() as PackedFeatureWithIndex;\r\n result.index = 0;\r\n return result;\r\n }\r\n}\r\n\r\n/** Describes the type of a 'batch' of graphics representing multiple [[Feature]]s.\r\n * The most commonly-encountered batches are Tiles, which can be of either Primary or\r\n * Classifier type.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum BatchType {\r\n /** This batch contains graphics derived from a model's visible geometry. */\r\n Primary,\r\n /**\r\n * This batch contains color volumes which are used to classify a model's visible geometry.\r\n * The graphics themselves are not rendered to the screen; instead they are rendered to the stencil buffer\r\n * to resymbolize the primary geometry.\r\n */\r\n VolumeClassifier,\r\n /**\r\n * This batch contains planar graphics which are used to classify a model's visible geometry.\r\n * The graphics themselves are not rendered to the screen; instead they are rendered to a texture buffer\r\n * to resymbolize the primary geometry.\r\n */\r\n PlanarClassifier,\r\n}\r\n\r\n/** Defines a look-up table for [[Feature]]s within a batched [RenderGraphic]($frontend). Consecutive 32-bit\r\n * indices are assigned to each unique Feature. Primitives within the RenderGraphic can\r\n * use per-vertex indices to specify the distribution of Features within the primitive. The appearance of individual\r\n * features can be customized using [[FeatureOverrides]]. Typically a [Tile]($frontend) will contain a feature table\r\n * identifying the elements whose geometry appears within that tile.\r\n * @see [[FeatureOverrides]] for customizing the appearance of individual features.\r\n * @public\r\n */\r\nexport class FeatureTable extends IndexMap<Feature> {\r\n public readonly modelId: Id64String;\r\n public readonly type: BatchType;\r\n\r\n /** Construct an empty FeatureTable. */\r\n public constructor(maxFeatures: number, modelId: Id64String = Id64.invalid, type: BatchType = BatchType.Primary) {\r\n super((lhs, rhs) => lhs.compare(rhs), maxFeatures);\r\n this.modelId = modelId;\r\n this.type = type;\r\n }\r\n\r\n /** Returns the maximum number of [[Feature]]s this FeatureTable can contain. */\r\n public get maxFeatures(): number { return this._maximumSize; }\r\n /** @internal */\r\n public get anyDefined(): boolean { return this.length > 1 || (1 === this.length && this._array[0].value.isDefined); }\r\n /** Returns true if this FeatureTable contains exactly one [[Feature]]. */\r\n public get isUniform(): boolean { return 1 === this.length; }\r\n /** If this FeatureTable contains exactly one [[Feature]], returns that Feature; otherwise returns undefined. */\r\n public get uniform(): Feature | undefined { return 1 === this.length ? this._array[0].value : undefined; }\r\n /** Returns true if this FeatureTable is associated with [[BatchType.VolumeClassifier]] geometry. */\r\n public get isVolumeClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\r\n /** Returns true if this FeatureTable is associated with [[BatchType.PlanarClassifier]] geometry. */\r\n public get isPlanarClassifier(): boolean { return BatchType.PlanarClassifier === this.type; }\r\n\r\n /** Returns the Feature corresponding to the specified index, or undefined if the index is not present. */\r\n public findFeature(index: number): Feature | undefined {\r\n for (const entry of this._array)\r\n if (entry.index === index)\r\n return entry.value;\r\n\r\n return undefined;\r\n }\r\n\r\n /** @internal */\r\n public insertWithIndex(feature: Feature, index: number): void {\r\n const bound = this.lowerBound(feature);\r\n assert(!bound.equal);\r\n assert(!this.isFull);\r\n const entry = new IndexedValue<Feature>(feature, index);\r\n this._array.splice(bound.index, 0, entry);\r\n }\r\n\r\n /** @internal */\r\n public getArray(): Array<IndexedValue<Feature>> { return this._array; }\r\n}\r\n\r\n/** @internal */\r\nexport type ComputeNodeId = (feature: PackedFeatureWithIndex) => number;\r\n\r\n/** Interface common to PackedFeatureTable and MultiModelPackedFeatureTable.\r\n * @internal\r\n */\r\nexport interface RenderFeatureTable {\r\n /** The \"model Id\" of the tile tree containing the tile from which this feature table originated.\r\n * It may be a transient Id if, for example, the tile tree represents a reality model or represents the geometry of multiple\r\n * persistent models batched together.\r\n */\r\n readonly batchModelId: Id64String;\r\n /** Split representation of batchModelId, so we're not constantly having to parse the string. */\r\n readonly batchModelIdPair: Id64.Uint32Pair;\r\n /** The number of features in the table; equivalently, one more than the largest feature index. */\r\n readonly numFeatures: number;\r\n /** Strictly for reporting memory usage. */\r\n readonly byteLength: number;\r\n readonly type: BatchType;\r\n\r\n /** Get the feature at the specified index. Caller is responsible for validating featureIndex less than numFeatures. */\r\n getFeature(featureIndex: number, result: ModelFeature): ModelFeature;\r\n /** Find the specified feature. Returns undefined if featureIndex >= numFeatures. */\r\n findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined;\r\n /** Find the Id of the element of the specified feature. */\r\n findElementId(featureIndex: number): Id64String | undefined;\r\n /** Get the Id of the element of the specified feature as a pair of 32-bit integers, asserting that feature index < numFeatures. */\r\n getElementIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair;\r\n /** Get the feature at the specified index. Caller is responsible for validating featureIndex less than numFeatures. */\r\n getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature;\r\n /** Get an object that provides iteration over all features, in order. `output` is reused as the current value on each iteration. */\r\n iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex>;\r\n populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void;\r\n getAnimationNodeId(featureIndex: number): number;\r\n}\r\n\r\nconst scratchPackedFeature = PackedFeature.create();\r\n\r\nfunction populateAnimationNodeIds(table: RenderFeatureTable, computeNodeId: ComputeNodeId, maxNodeId: number): UintArray | undefined {\r\n assert(maxNodeId > 0);\r\n\r\n let nodeIds;\r\n const outputFeature = PackedFeature.createWithIndex();\r\n for (const feature of table.iterable(outputFeature)) {\r\n const nodeId = computeNodeId(feature);\r\n assert(nodeId <= maxNodeId);\r\n if (0 !== nodeId) {\r\n if (!nodeIds) {\r\n const size = table.numFeatures;\r\n nodeIds = maxNodeId < 0x100 ? new Uint8Array(size) : (maxNodeId < 0x10000 ? new Uint16Array(size) : new Uint32Array(size));\r\n }\r\n\r\n nodeIds[feature.index] = nodeId;\r\n }\r\n }\r\n\r\n return nodeIds;\r\n}\r\n\r\n/**\r\n * An immutable, packed representation of a [[FeatureTable]]. The features are packed into a single array of 32-bit integer values,\r\n * wherein each feature occupies 3 32-bit integers.\r\n * @internal\r\n */\r\nexport class PackedFeatureTable implements RenderFeatureTable {\r\n private readonly _data: Uint32Array;\r\n public readonly batchModelId: Id64String;\r\n public readonly batchModelIdPair: Id64.Uint32Pair;\r\n public readonly numFeatures: number;\r\n public readonly anyDefined: boolean;\r\n public readonly type: BatchType;\r\n private _animationNodeIds?: UintArray;\r\n\r\n public get byteLength(): number { return this._data.byteLength; }\r\n public get animationNodeIds(): Readonly<UintArray> | undefined { return this._animationNodeIds; }\r\n\r\n /** @internal for use by MultiModelPackedFeatureTable */\r\n public setAnimationNodeIds(nodeIds: UintArray | undefined): void {\r\n assert(undefined === this._animationNodeIds);\r\n this._animationNodeIds = nodeIds;\r\n }\r\n\r\n /** Construct a PackedFeatureTable from the packed binary data.\r\n * This is used internally when deserializing Tiles in iMdl format.\r\n * @internal\r\n */\r\n public constructor(data: Uint32Array, modelId: Id64String, numFeatures: number, type: BatchType, animationNodeIds?: UintArray) {\r\n this._data = data;\r\n this.batchModelId = modelId;\r\n this.batchModelIdPair = Id64.getUint32Pair(modelId);\r\n this.numFeatures = numFeatures;\r\n this.type = type;\r\n this._animationNodeIds = animationNodeIds;\r\n\r\n switch (this.numFeatures) {\r\n case 0:\r\n this.anyDefined = false;\r\n break;\r\n case 1:\r\n this.anyDefined = ModelFeature.isDefined(this.getFeature(0, ModelFeature.create()));\r\n break;\r\n default:\r\n this.anyDefined = true;\r\n break;\r\n }\r\n\r\n assert(this._data.length >= this._subCategoriesOffset);\r\n assert(undefined === this._animationNodeIds || this._animationNodeIds.length === this.numFeatures);\r\n }\r\n\r\n /** Create a packed feature table from a [[FeatureTable]]. */\r\n public static pack(featureTable: FeatureTable): PackedFeatureTable {\r\n // We must determine how many subcategories we have ahead of time to compute the size of the Uint32Array, as\r\n // the array cannot be resized after it is created.\r\n // We are not too worried about this as FeatureTables created on the front-end will contain few if any features; those obtained from the\r\n // back-end arrive within tiles already in the packed format.\r\n const subcategories = new Map<string, number>();\r\n for (const iv of featureTable.getArray()) {\r\n const found = subcategories.get(iv.value.subCategoryId.toString());\r\n if (undefined === found)\r\n subcategories.set(iv.value.subCategoryId, subcategories.size);\r\n }\r\n\r\n // We need 3 32-bit integers per feature, plus 2 32-bit integers per subcategory.\r\n const subCategoriesOffset = 3 * featureTable.length;\r\n const nUint32s = subCategoriesOffset + 2 * subcategories.size;\r\n const uint32s = new Uint32Array(nUint32s);\r\n\r\n for (const iv of featureTable.getArray()) {\r\n const feature = iv.value;\r\n const index = iv.index * 3;\r\n\r\n let subCategoryIndex = subcategories.get(feature.subCategoryId)!;\r\n assert(undefined !== subCategoryIndex); // we inserted it above...\r\n subCategoryIndex |= (feature.geometryClass << 24);\r\n\r\n uint32s[index + 0] = Id64.getLowerUint32(feature.elementId);\r\n uint32s[index + 1] = Id64.getUpperUint32(feature.elementId);\r\n uint32s[index + 2] = subCategoryIndex;\r\n }\r\n\r\n subcategories.forEach((index: number, id: string, _map) => {\r\n const index32 = subCategoriesOffset + 2 * index;\r\n uint32s[index32 + 0] = Id64.getLowerUint32(id);\r\n uint32s[index32 + 1] = Id64.getUpperUint32(id);\r\n });\r\n\r\n return new PackedFeatureTable(uint32s, featureTable.modelId, featureTable.length, featureTable.type);\r\n }\r\n\r\n /** Retrieve the Feature associated with the specified index. */\r\n public getFeature(featureIndex: number, result: ModelFeature): ModelFeature {\r\n const packed = this.getPackedFeature(featureIndex, scratchPackedFeature);\r\n return ModelFeature.unpack(packed, result, this.batchModelId);\r\n }\r\n\r\n /** Returns the Feature associated with the specified index, or undefined if the index is out of range. */\r\n public findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined {\r\n return featureIndex < this.numFeatures ? this.getFeature(featureIndex, result) : undefined;\r\n }\r\n\r\n /** @internal */\r\n public getElementIdPair(featureIndex: number, out?: Id64.Uint32Pair): Id64.Uint32Pair {\r\n out = out ?? { lower: 0, upper: 0 };\r\n assert(featureIndex < this.numFeatures);\r\n const offset = 3 * featureIndex;\r\n out.lower = this._data[offset];\r\n out.upper = this._data[offset + 1];\r\n return out;\r\n }\r\n\r\n /** @internal */\r\n public getSubCategoryIdPair(featureIndex: number): Id64.Uint32Pair {\r\n const index = 3 * featureIndex;\r\n let subCatIndex = this._data[index + 2];\r\n subCatIndex = (subCatIndex & 0x00ffffff) >>> 0;\r\n subCatIndex = subCatIndex * 2 + this._subCategoriesOffset;\r\n return { lower: this._data[subCatIndex], upper: this._data[subCatIndex + 1] };\r\n }\r\n\r\n /** @internal */\r\n public getAnimationNodeId(featureIndex: number): number {\r\n return undefined !== this._animationNodeIds && featureIndex < this.numFeatures ? this._animationNodeIds[featureIndex] : 0;\r\n }\r\n\r\n /** @internal */\r\n public getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature {\r\n assert(featureIndex < this.numFeatures);\r\n\r\n const index32 = 3 * featureIndex;\r\n result.elementId.lower = this._data[index32];\r\n result.elementId.upper = this._data[index32 + 1];\r\n\r\n const subCatIndexAndClass = this._data[index32 + 2];\r\n result.geometryClass = (subCatIndexAndClass >>> 24) & 0xff;\r\n\r\n let subCatIndex = (subCatIndexAndClass & 0x00ffffff) >>> 0;\r\n subCatIndex = subCatIndex * 2 + this._subCategoriesOffset;\r\n result.subCategoryId.lower = this._data[subCatIndex];\r\n result.subCategoryId.upper = this._data[subCatIndex + 1];\r\n\r\n result.animationNodeId = this.getAnimationNodeId(featureIndex);\r\n result.modelId.lower = this.batchModelIdPair.lower;\r\n result.modelId.upper = this.batchModelIdPair.upper;\r\n\r\n return result;\r\n }\r\n\r\n /** Returns the element ID of the Feature associated with the specified index, or undefined if the index is out of range. */\r\n public findElementId(featureIndex: number): Id64String | undefined {\r\n if (featureIndex >= this.numFeatures)\r\n return undefined;\r\n else\r\n return this.readId(3 * featureIndex);\r\n }\r\n\r\n /** Return true if this table contains exactly 1 feature. */\r\n public get isUniform(): boolean { return 1 === this.numFeatures; }\r\n\r\n /** If this table contains exactly 1 feature, return it. */\r\n public getUniform(result: ModelFeature): ModelFeature | undefined {\r\n return this.isUniform ? this.getFeature(0, result) : undefined;\r\n }\r\n\r\n public get isVolumeClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\r\n public get isPlanarClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\r\n public get isClassifier(): boolean { return this.isVolumeClassifier || this.isPlanarClassifier; }\r\n\r\n /** Unpack the features into a [[FeatureTable]]. */\r\n public unpack(): FeatureTable {\r\n const table = new FeatureTable(this.numFeatures, this.batchModelId);\r\n const feature = ModelFeature.create();\r\n for (let i = 0; i < this.numFeatures; i++) {\r\n this.getFeature(i, feature);\r\n table.insertWithIndex(new Feature(feature.elementId, feature.subCategoryId, feature.geometryClass), i);\r\n }\r\n\r\n return table;\r\n }\r\n\r\n public populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void {\r\n assert(undefined === this._animationNodeIds);\r\n this._animationNodeIds = populateAnimationNodeIds(this, computeNodeId, maxNodeId);\r\n }\r\n\r\n public * iterator(output: PackedFeatureWithIndex): Iterator<PackedFeatureWithIndex> {\r\n for (let i = 0; i < this.numFeatures; i++) {\r\n this.getPackedFeature(i, output);\r\n output.index = i;\r\n yield output;\r\n }\r\n }\r\n\r\n public iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex> {\r\n return {\r\n [Symbol.iterator]: () => this.iterator(output),\r\n };\r\n }\r\n\r\n private get _subCategoriesOffset(): number { return this.numFeatures * 3; }\r\n\r\n private readId(offset32: number): Id64String {\r\n return Id64.fromUint32Pair(this._data[offset32], this._data[offset32 + 1]);\r\n }\r\n}\r\n\r\ninterface PackedFeatureModelEntry {\r\n lastFeatureIndex: number;\r\n idLower: number;\r\n idUpper: number;\r\n}\r\n\r\nconst scratchPackedFeatureModelEntry = { lastFeatureIndex: -1, idLower: -1, idUpper: -1 };\r\n\r\n/** A table of model Ids associated with a [[MultiModelPackedFeatureTable]].\r\n * The feature indices in the packed feature table are grouped together by model, such that the first N features belong to model 1, the next M features to model 2, and so on.\r\n * The model table itself consists of one entry per model, where each entry looks like:\r\n * indexOfLastFeatureInModel: u32\r\n * modelId: u64\r\n * The modelId associated with a feature can therefore be derived by finding the entry in the model table with the highest indexOfLastFeatureInModel no greater than the feature index.\r\n * This lookup can be optimized using binary search.\r\n * Moreover, while iterating the feature table in sequence, the model table can be iterated in parallel so that no per-feature lookup of model Id is required.\r\n * @internal\r\n */\r\nexport class PackedFeatureModelTable {\r\n private readonly _data: Uint32Array;\r\n\r\n public constructor(data: Uint32Array) {\r\n this._data = data;\r\n assert(this._data.length % 3 === 0);\r\n }\r\n\r\n /** The number of models in the table. */\r\n public get length(): number {\r\n return this._data.length / 3;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._data.byteLength;\r\n }\r\n\r\n private getLastFeatureIndex(modelIndex: number): number {\r\n return this._data[modelIndex * 3];\r\n }\r\n\r\n public getEntry(modelIndex: number, result: PackedFeatureModelEntry): PackedFeatureModelEntry {\r\n if (modelIndex >= this.length) {\r\n result.idLower = result.idUpper = 0;\r\n result.lastFeatureIndex = Number.MAX_SAFE_INTEGER;\r\n return result;\r\n }\r\n\r\n const index = modelIndex * 3;\r\n result.lastFeatureIndex = this._data[index + 0];\r\n result.idLower = this._data[index + 1];\r\n result.idUpper = this._data[index + 2];\r\n return result;\r\n }\r\n\r\n /** Get the Id of the model associated with the specified feature, or an invalid Id if the feature is not associated with any model. */\r\n public getModelIdPair(featureIndex: number, result?: Id64.Uint32Pair): Id64.Uint32Pair {\r\n if (!result)\r\n result = { lower: 0, upper: 0 };\r\n else\r\n result.lower = result.upper = 0;\r\n\r\n let first = 0;\r\n const last = this.length;\r\n let count = last;\r\n while (count > 0) {\r\n const step = Math.floor(count / 2);\r\n const mid = first + step;\r\n const lastFeatureIndex = this.getLastFeatureIndex(mid);\r\n if (featureIndex > lastFeatureIndex) {\r\n first = mid + 1;\r\n count -= step + 1;\r\n } else {\r\n count = step;\r\n }\r\n }\r\n\r\n if (first < last) {\r\n result.lower = this._data[first * 3 + 1];\r\n result.upper = this._data[first * 3 + 2];\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\n/** A PackedFeatureTable with a PackedFeatureModelTable appended to it, capable of storing features belonging to more than one model.\r\n * @internal\r\n */\r\nexport class MultiModelPackedFeatureTable implements RenderFeatureTable {\r\n private readonly _features: PackedFeatureTable;\r\n private readonly _models: PackedFeatureModelTable;\r\n\r\n public constructor(features: PackedFeatureTable, models: PackedFeatureModelTable) {\r\n this._features = features;\r\n this._models = models;\r\n }\r\n\r\n public static create(data: Uint32Array, batchModelId: Id64String, numFeatures: number, type: BatchType, numSubCategories: number): MultiModelPackedFeatureTable {\r\n const modelTableOffset = 3 * numFeatures + 2 * numSubCategories;\r\n const featureData = data.subarray(0, modelTableOffset);\r\n const features = new PackedFeatureTable(featureData, batchModelId, numFeatures, type);\r\n\r\n const modelData = data.subarray(modelTableOffset);\r\n const models = new PackedFeatureModelTable(modelData);\r\n\r\n return new MultiModelPackedFeatureTable(features, models);\r\n }\r\n\r\n public get batchModelId() { return this._features.batchModelId; }\r\n public get batchModelIdPair() { return this._features.batchModelIdPair; }\r\n public get numFeatures() { return this._features.numFeatures; }\r\n public get type() { return this._features.type; }\r\n public get animationNodeIds(): Readonly<UintArray> | undefined { return this._features.animationNodeIds; }\r\n\r\n public get byteLength() {\r\n return this._features.byteLength + this._models.byteLength;\r\n }\r\n\r\n public getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature {\r\n this._features.getPackedFeature(featureIndex, result);\r\n this._models.getModelIdPair(featureIndex, result.modelId);\r\n return result;\r\n }\r\n\r\n public getFeature(featureIndex: number, result: ModelFeature): ModelFeature {\r\n const packed = this.getPackedFeature(featureIndex, scratchPackedFeature);\r\n return ModelFeature.unpack(packed, result);\r\n }\r\n\r\n public findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined {\r\n return featureIndex < this.numFeatures ? this.getFeature(featureIndex, result) : undefined;\r\n }\r\n\r\n public getElementIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair {\r\n return this._features.getElementIdPair(featureIndex, out);\r\n }\r\n\r\n public findElementId(featureIndex: number): Id64String | undefined {\r\n return this._features.findElementId(featureIndex);\r\n }\r\n\r\n public * iterator(output: PackedFeatureWithIndex): Iterator<PackedFeatureWithIndex> {\r\n // Rather than perform a binary search on the model table to find each feature's model Id, traverse the model table in parallel with the feature table.\r\n let modelIndex = 0;\r\n const modelEntry = this._models.getEntry(modelIndex, scratchPackedFeatureModelEntry);\r\n\r\n for (let featureIndex = 0; featureIndex < this.numFeatures; featureIndex++) {\r\n if (featureIndex > modelEntry.lastFeatureIndex)\r\n this._models.getEntry(++modelIndex, modelEntry);\r\n\r\n this._features.getPackedFeature(featureIndex, output);\r\n output.modelId.lower = modelEntry.idLower;\r\n output.modelId.upper = modelEntry.idUpper;\r\n output.index = featureIndex;\r\n yield output;\r\n }\r\n }\r\n\r\n public iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex> {\r\n return {\r\n [Symbol.iterator]: () => this.iterator(output),\r\n };\r\n }\r\n\r\n public getAnimationNodeId(featureIndex: number): number {\r\n return this._features.getAnimationNodeId(featureIndex);\r\n }\r\n\r\n public populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void {\r\n this._features.setAnimationNodeIds(populateAnimationNodeIds(this, computeNodeId, maxNodeId));\r\n }\r\n}\r\n"]}
@@ -1,52 +1,52 @@
1
- /** @packageDocumentation
2
- * @module Symbology
3
- */
4
- /** The type of a font.
5
- * @public
6
- * @extensions
7
- */
8
- export declare enum FontType {
9
- TrueType = 1,
10
- Rsc = 2,
11
- Shx = 3
12
- }
13
- /** An iModel-local identifier for a font.
14
- * @public
15
- * @extensions
16
- */
17
- export declare type FontId = number;
18
- /** The properties of a Font.
19
- * @public
20
- */
21
- export interface FontProps {
22
- /** the Id, within an iModel, of this font. */
23
- id: FontId;
24
- /** The type of font */
25
- type: FontType;
26
- /** The name of the font. */
27
- name: string;
28
- }
29
- /** The properties of a FontMap
30
- * @public
31
- * @extensions
32
- */
33
- export interface FontMapProps {
34
- fonts: FontProps[];
35
- }
36
- /**
37
- * A FontMap holds the set of font names available in an iModel.
38
- * Within the GeometryStream of an Element, a specific font is referenced by its FontId that is local to the iModel.
39
- * This class maps FontIds to FontProps.
40
- * @note The font map is generally established when the iModel is first created to specify the set of fonts available
41
- * for editors. Adding new entries requires that the schema lock be held.
42
- * @public
43
- */
44
- export declare class FontMap {
45
- readonly fonts: Map<number, FontProps>;
46
- constructor(props?: FontMapProps);
47
- addFonts(fonts: FontProps[]): void;
48
- toJSON(): FontMapProps;
49
- /** look up a font by name or number and return its FontProps */
50
- getFont(arg: string | FontId): FontProps | undefined;
51
- }
1
+ /** @packageDocumentation
2
+ * @module Symbology
3
+ */
4
+ /** The type of a font.
5
+ * @public
6
+ * @extensions
7
+ */
8
+ export declare enum FontType {
9
+ TrueType = 1,
10
+ Rsc = 2,
11
+ Shx = 3
12
+ }
13
+ /** An iModel-local identifier for a font.
14
+ * @public
15
+ * @extensions
16
+ */
17
+ export type FontId = number;
18
+ /** The properties of a Font.
19
+ * @public
20
+ */
21
+ export interface FontProps {
22
+ /** the Id, within an iModel, of this font. */
23
+ id: FontId;
24
+ /** The type of font */
25
+ type: FontType;
26
+ /** The name of the font. */
27
+ name: string;
28
+ }
29
+ /** The properties of a FontMap
30
+ * @public
31
+ * @extensions
32
+ */
33
+ export interface FontMapProps {
34
+ fonts: FontProps[];
35
+ }
36
+ /**
37
+ * A FontMap holds the set of font names available in an iModel.
38
+ * Within the GeometryStream of an Element, a specific font is referenced by its FontId that is local to the iModel.
39
+ * This class maps FontIds to FontProps.
40
+ * @note The font map is generally established when the iModel is first created to specify the set of fonts available
41
+ * for editors. Adding new entries requires that the schema lock be held.
42
+ * @public
43
+ */
44
+ export declare class FontMap {
45
+ readonly fonts: Map<number, FontProps>;
46
+ constructor(props?: FontMapProps);
47
+ addFonts(fonts: FontProps[]): void;
48
+ toJSON(): FontMapProps;
49
+ /** look up a font by name or number and return its FontProps */
50
+ getFont(arg: string | FontId): FontProps | undefined;
51
+ }
52
52
  //# sourceMappingURL=Fonts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Fonts.d.ts","sourceRoot":"","sources":["../../src/Fonts.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,oBAAY,QAAQ;IAAG,QAAQ,IAAI;IAAE,GAAG,IAAI;IAAE,GAAG,IAAI;CAAE;AAEvD;;;GAGG;AACH,oBAAY,MAAM,GAAG,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE;AAEpD;;;;;;;GAOG;AACH,qBAAa,OAAO;IAClB,SAAgB,KAAK,yBAAgC;gBACzC,KAAK,CAAC,EAAE,YAAY;IAIzB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE;IAG3B,MAAM,IAAI,YAAY;IAK7B,gEAAgE;IACzD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS;CAU5D"}
1
+ {"version":3,"file":"Fonts.d.ts","sourceRoot":"","sources":["../../src/Fonts.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,oBAAY,QAAQ;IAAG,QAAQ,IAAI;IAAE,GAAG,IAAI;IAAE,GAAG,IAAI;CAAE;AAEvD;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE;AAEpD;;;;;;;GAOG;AACH,qBAAa,OAAO;IAClB,SAAgB,KAAK,yBAAgC;gBACzC,KAAK,CAAC,EAAE,YAAY;IAIzB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE;IAG3B,MAAM,IAAI,YAAY;IAK7B,gEAAgE;IACzD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS;CAU5D"}
package/lib/esm/Fonts.js CHANGED
@@ -1,50 +1,50 @@
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 Symbology
7
- */
8
- /** The type of a font.
9
- * @public
10
- * @extensions
11
- */
12
- export var FontType;
13
- (function (FontType) {
14
- FontType[FontType["TrueType"] = 1] = "TrueType";
15
- FontType[FontType["Rsc"] = 2] = "Rsc";
16
- FontType[FontType["Shx"] = 3] = "Shx";
17
- })(FontType || (FontType = {}));
18
- /**
19
- * A FontMap holds the set of font names available in an iModel.
20
- * Within the GeometryStream of an Element, a specific font is referenced by its FontId that is local to the iModel.
21
- * This class maps FontIds to FontProps.
22
- * @note The font map is generally established when the iModel is first created to specify the set of fonts available
23
- * for editors. Adding new entries requires that the schema lock be held.
24
- * @public
25
- */
26
- export class FontMap {
27
- constructor(props) {
28
- this.fonts = new Map();
29
- if (undefined !== props)
30
- this.addFonts(props.fonts);
31
- }
32
- addFonts(fonts) {
33
- fonts.forEach((font) => this.fonts.set(font.id, font));
34
- }
35
- toJSON() {
36
- const fonts = [];
37
- this.fonts.forEach((font) => fonts.push(font));
38
- return { fonts };
39
- }
40
- /** look up a font by name or number and return its FontProps */
41
- getFont(arg) {
42
- if (typeof arg === "number")
43
- return this.fonts.get(arg);
44
- for (const font of this.fonts.values())
45
- if (font.name === arg)
46
- return font;
47
- return undefined;
48
- }
49
- }
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 Symbology
7
+ */
8
+ /** The type of a font.
9
+ * @public
10
+ * @extensions
11
+ */
12
+ export var FontType;
13
+ (function (FontType) {
14
+ FontType[FontType["TrueType"] = 1] = "TrueType";
15
+ FontType[FontType["Rsc"] = 2] = "Rsc";
16
+ FontType[FontType["Shx"] = 3] = "Shx";
17
+ })(FontType || (FontType = {}));
18
+ /**
19
+ * A FontMap holds the set of font names available in an iModel.
20
+ * Within the GeometryStream of an Element, a specific font is referenced by its FontId that is local to the iModel.
21
+ * This class maps FontIds to FontProps.
22
+ * @note The font map is generally established when the iModel is first created to specify the set of fonts available
23
+ * for editors. Adding new entries requires that the schema lock be held.
24
+ * @public
25
+ */
26
+ export class FontMap {
27
+ constructor(props) {
28
+ this.fonts = new Map();
29
+ if (undefined !== props)
30
+ this.addFonts(props.fonts);
31
+ }
32
+ addFonts(fonts) {
33
+ fonts.forEach((font) => this.fonts.set(font.id, font));
34
+ }
35
+ toJSON() {
36
+ const fonts = [];
37
+ this.fonts.forEach((font) => fonts.push(font));
38
+ return { fonts };
39
+ }
40
+ /** look up a font by name or number and return its FontProps */
41
+ getFont(arg) {
42
+ if (typeof arg === "number")
43
+ return this.fonts.get(arg);
44
+ for (const font of this.fonts.values())
45
+ if (font.name === arg)
46
+ return font;
47
+ return undefined;
48
+ }
49
+ }
50
50
  //# sourceMappingURL=Fonts.js.map
@@ -1,115 +1,115 @@
1
- /** @packageDocumentation
2
- * @module Views
3
- */
4
- import { ConvexClipPlaneSet, LowAndHighXY, LowAndHighXYZ, Map4d, Matrix3d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Transform, XYAndZ } from "@itwin/core-geometry";
5
- /** The 8 corners of the [Normalized Plane Coordinate]($docs/learning/glossary.md#npc) cube.
6
- * @public
7
- * @extensions
8
- */
9
- export declare enum Npc {
10
- /** Left bottom rear */
11
- _000 = 0,
12
- /** Right bottom rear */
13
- _100 = 1,
14
- /** Left top rear */
15
- _010 = 2,
16
- /** Right top rear */
17
- _110 = 3,
18
- /** Left bottom front */
19
- _001 = 4,
20
- /** Right bottom front */
21
- _101 = 5,
22
- /** Left top front */
23
- _011 = 6,
24
- /** Right top front */
25
- _111 = 7,
26
- LeftBottomRear = 0,
27
- RightBottomRear = 1,
28
- LeftTopRear = 2,
29
- RightTopRear = 3,
30
- LeftBottomFront = 4,
31
- RightBottomFront = 5,
32
- LeftTopFront = 6,
33
- RightTopFront = 7,
34
- /** useful for sizing arrays */
35
- CORNER_COUNT = 8
36
- }
37
- /** The 8 corners of an [[Npc]] Frustum.
38
- * @public
39
- */
40
- export declare const NpcCorners: Point3d[];
41
- /** The center point of the [Normalized Plane Coordinate]($docs/learning/glossary.md#npc) cube.
42
- * @public
43
- */
44
- export declare const NpcCenter: Point3d;
45
- /** The region of physical (3d) space that appears in a view. It forms the field-of-view of a camera.
46
- * It is stored as 8 points, in [[Npc]] order, that must define a truncated pyramid.
47
- * @public
48
- */
49
- export declare class Frustum {
50
- /** Array of the 8 points of this Frustum. */
51
- readonly points: Point3d[];
52
- /** Constructor for Frustum. Members are initialized to the Npc cube. */
53
- constructor();
54
- /** Initialize this Frustum to the 8 corners of the NPC cube. */
55
- initNpc(): this;
56
- /** Get a corner Point from this Frustum. */
57
- getCorner(i: number): Point3d;
58
- /** Get the point at the center of this Frustum (halfway between RightTopFront and LeftBottomRear. */
59
- getCenter(): Point3d;
60
- /** Get the distance between two corners of this Frustum. */
61
- distance(corner1: number, corner2: number): number;
62
- /** Get the ratio of the length of the diagonal of the front plane to the diagonal of the back plane. */
63
- getFraction(): number;
64
- /** Multiply all the points of this Frustum by a Transform, in place. */
65
- multiply(trans: Transform): void;
66
- /** Offset all of the points of this Frustum by a vector. */
67
- translate(offset: XYAndZ): void;
68
- /** Transform all the points of this Frustum and return the result in another Frustum. */
69
- transformBy(trans: Transform, result?: Frustum): Frustum;
70
- /** Calculate a bounding range from the 8 points in this Frustum. */
71
- toRange(range?: Range3d): Range3d;
72
- /** Make a copy of this Frustum.
73
- * @param result Optional Frustum for copy. If undefined allocate a new Frustum.
74
- */
75
- clone(result?: Frustum): Frustum;
76
- /** Set the points of this Frustum to be copies of the points in another Frustum. */
77
- setFrom(other: Frustum): void;
78
- /** Set the points of this frustum from array of corner points in NPC order. */
79
- setFromCorners(corners: Point3d[]): void;
80
- /** Scale this Frustum, in place, about its center by a scale factor. */
81
- scaleAboutCenter(scale: number): void;
82
- /** The point at the center of the front face of this frustum */
83
- get frontCenter(): Point3d;
84
- /** The point at the center of the rear face of this frustum */
85
- get rearCenter(): Point3d;
86
- /** Scale this frustum's XY (viewing) plane about its center */
87
- scaleXYAboutCenter(scale: number): void;
88
- /** Create a Map4d that converts world coordinates to/from [[Npc]] coordinates of this Frustum. */
89
- toMap4d(): Map4d | undefined;
90
- /** Get the rotation matrix to the frame of this frustum. This is equivalent to the view rotation matrix. */
91
- getRotation(result?: Matrix3d): Matrix3d | undefined;
92
- /** Get the eye point - undefined if parallel projection */
93
- getEyePoint(result?: Point3d): Point3d | undefined;
94
- /** Invalidate this Frustum by setting all 8 points to zero. */
95
- invalidate(): void;
96
- /** Return true if this Frustum is equal to another Frustum */
97
- equals(rhs: Frustum): boolean;
98
- /** Return true if all of the points in this Frustum are *almost* the same as the points in another Frustum.
99
- * @see [[equals]], [XYZ.isAlmostEqual]($geometry)
100
- */
101
- isSame(other: Frustum): boolean;
102
- /** Initialize this Frustum from a Range */
103
- initFromRange(range: LowAndHighXYZ | LowAndHighXY): void;
104
- /** Create a new Frustum from a Range3d */
105
- static fromRange(range: LowAndHighXYZ | LowAndHighXY, out?: Frustum): Frustum;
106
- /** Return true if this Frustum has a mirror (is not in the correct order.) */
107
- get hasMirror(): boolean;
108
- /** Make sure the frustum point order does not include mirroring. If so, reverse the order. */
109
- fixPointOrder(): void;
110
- /** Get a convex set of clipping planes bounding the region contained by this Frustum. */
111
- getRangePlanes(clipFront: boolean, clipBack: boolean, expandPlaneDistance: number): ConvexClipPlaneSet;
112
- /** Get a (convex) polygon that represents the intersection of this frustum with a plane, or undefined if no intersection exists */
113
- getIntersectionWithPlane(plane: Plane3dByOriginAndUnitNormal): Point3d[] | undefined;
114
- }
1
+ /** @packageDocumentation
2
+ * @module Views
3
+ */
4
+ import { ConvexClipPlaneSet, LowAndHighXY, LowAndHighXYZ, Map4d, Matrix3d, Plane3dByOriginAndUnitNormal, Point3d, Range3d, Transform, XYAndZ } from "@itwin/core-geometry";
5
+ /** The 8 corners of the [Normalized Plane Coordinate]($docs/learning/glossary.md#npc) cube.
6
+ * @public
7
+ * @extensions
8
+ */
9
+ export declare enum Npc {
10
+ /** Left bottom rear */
11
+ _000 = 0,
12
+ /** Right bottom rear */
13
+ _100 = 1,
14
+ /** Left top rear */
15
+ _010 = 2,
16
+ /** Right top rear */
17
+ _110 = 3,
18
+ /** Left bottom front */
19
+ _001 = 4,
20
+ /** Right bottom front */
21
+ _101 = 5,
22
+ /** Left top front */
23
+ _011 = 6,
24
+ /** Right top front */
25
+ _111 = 7,
26
+ LeftBottomRear = 0,
27
+ RightBottomRear = 1,
28
+ LeftTopRear = 2,
29
+ RightTopRear = 3,
30
+ LeftBottomFront = 4,
31
+ RightBottomFront = 5,
32
+ LeftTopFront = 6,
33
+ RightTopFront = 7,
34
+ /** useful for sizing arrays */
35
+ CORNER_COUNT = 8
36
+ }
37
+ /** The 8 corners of an [[Npc]] Frustum.
38
+ * @public
39
+ */
40
+ export declare const NpcCorners: Point3d[];
41
+ /** The center point of the [Normalized Plane Coordinate]($docs/learning/glossary.md#npc) cube.
42
+ * @public
43
+ */
44
+ export declare const NpcCenter: Point3d;
45
+ /** The region of physical (3d) space that appears in a view. It forms the field-of-view of a camera.
46
+ * It is stored as 8 points, in [[Npc]] order, that must define a truncated pyramid.
47
+ * @public
48
+ */
49
+ export declare class Frustum {
50
+ /** Array of the 8 points of this Frustum. */
51
+ readonly points: Point3d[];
52
+ /** Constructor for Frustum. Members are initialized to the Npc cube. */
53
+ constructor();
54
+ /** Initialize this Frustum to the 8 corners of the NPC cube. */
55
+ initNpc(): this;
56
+ /** Get a corner Point from this Frustum. */
57
+ getCorner(i: number): Point3d;
58
+ /** Get the point at the center of this Frustum (halfway between RightTopFront and LeftBottomRear. */
59
+ getCenter(): Point3d;
60
+ /** Get the distance between two corners of this Frustum. */
61
+ distance(corner1: number, corner2: number): number;
62
+ /** Get the ratio of the length of the diagonal of the front plane to the diagonal of the back plane. */
63
+ getFraction(): number;
64
+ /** Multiply all the points of this Frustum by a Transform, in place. */
65
+ multiply(trans: Transform): void;
66
+ /** Offset all of the points of this Frustum by a vector. */
67
+ translate(offset: XYAndZ): void;
68
+ /** Transform all the points of this Frustum and return the result in another Frustum. */
69
+ transformBy(trans: Transform, result?: Frustum): Frustum;
70
+ /** Calculate a bounding range from the 8 points in this Frustum. */
71
+ toRange(range?: Range3d): Range3d;
72
+ /** Make a copy of this Frustum.
73
+ * @param result Optional Frustum for copy. If undefined allocate a new Frustum.
74
+ */
75
+ clone(result?: Frustum): Frustum;
76
+ /** Set the points of this Frustum to be copies of the points in another Frustum. */
77
+ setFrom(other: Frustum): void;
78
+ /** Set the points of this frustum from array of corner points in NPC order. */
79
+ setFromCorners(corners: Point3d[]): void;
80
+ /** Scale this Frustum, in place, about its center by a scale factor. */
81
+ scaleAboutCenter(scale: number): void;
82
+ /** The point at the center of the front face of this frustum */
83
+ get frontCenter(): Point3d;
84
+ /** The point at the center of the rear face of this frustum */
85
+ get rearCenter(): Point3d;
86
+ /** Scale this frustum's XY (viewing) plane about its center */
87
+ scaleXYAboutCenter(scale: number): void;
88
+ /** Create a Map4d that converts world coordinates to/from [[Npc]] coordinates of this Frustum. */
89
+ toMap4d(): Map4d | undefined;
90
+ /** Get the rotation matrix to the frame of this frustum. This is equivalent to the view rotation matrix. */
91
+ getRotation(result?: Matrix3d): Matrix3d | undefined;
92
+ /** Get the eye point - undefined if parallel projection */
93
+ getEyePoint(result?: Point3d): Point3d | undefined;
94
+ /** Invalidate this Frustum by setting all 8 points to zero. */
95
+ invalidate(): void;
96
+ /** Return true if this Frustum is equal to another Frustum */
97
+ equals(rhs: Frustum): boolean;
98
+ /** Return true if all of the points in this Frustum are *almost* the same as the points in another Frustum.
99
+ * @see [[equals]], [XYZ.isAlmostEqual]($geometry)
100
+ */
101
+ isSame(other: Frustum): boolean;
102
+ /** Initialize this Frustum from a Range */
103
+ initFromRange(range: LowAndHighXYZ | LowAndHighXY): void;
104
+ /** Create a new Frustum from a Range3d */
105
+ static fromRange(range: LowAndHighXYZ | LowAndHighXY, out?: Frustum): Frustum;
106
+ /** Return true if this Frustum has a mirror (is not in the correct order.) */
107
+ get hasMirror(): boolean;
108
+ /** Make sure the frustum point order does not include mirroring. If so, reverse the order. */
109
+ fixPointOrder(): void;
110
+ /** Get a convex set of clipping planes bounding the region contained by this Frustum. */
111
+ getRangePlanes(clipFront: boolean, clipBack: boolean, expandPlaneDistance: number): ConvexClipPlaneSet;
112
+ /** Get a (convex) polygon that represents the intersection of this frustum with a plane, or undefined if no intersection exists */
113
+ getIntersectionWithPlane(plane: Plane3dByOriginAndUnitNormal): Point3d[] | undefined;
114
+ }
115
115
  //# sourceMappingURL=Frustum.d.ts.map