@itwin/core-common 3.5.0-dev.26 → 3.5.0-dev.28

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 (937) hide show
  1. package/lib/cjs/AmbientOcclusion.d.ts +49 -49
  2. package/lib/cjs/AmbientOcclusion.js +55 -55
  3. package/lib/cjs/AmbientOcclusion.js.map +1 -1
  4. package/lib/cjs/AnalysisStyle.d.ts +134 -134
  5. package/lib/cjs/AnalysisStyle.js +165 -165
  6. package/lib/cjs/AnalysisStyle.js.map +1 -1
  7. package/lib/cjs/AuthorizationClient.d.ts +11 -11
  8. package/lib/cjs/AuthorizationClient.js +9 -9
  9. package/lib/cjs/AuthorizationClient.js.map +1 -1
  10. package/lib/cjs/BackgroundMapProvider.d.ts +51 -51
  11. package/lib/cjs/BackgroundMapProvider.js +68 -68
  12. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  13. package/lib/cjs/BackgroundMapSettings.d.ts +136 -136
  14. package/lib/cjs/BackgroundMapSettings.js +156 -156
  15. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  16. package/lib/cjs/Base64EncodedString.d.ts +30 -30
  17. package/lib/cjs/Base64EncodedString.js +56 -56
  18. package/lib/cjs/Base64EncodedString.js.map +1 -1
  19. package/lib/cjs/BlobReader.d.ts +31 -31
  20. package/lib/cjs/BlobReader.js +84 -84
  21. package/lib/cjs/BlobReader.js.map +1 -1
  22. package/lib/cjs/BriefcaseTypes.d.ts +189 -189
  23. package/lib/cjs/BriefcaseTypes.js +95 -95
  24. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  25. package/lib/cjs/Camera.d.ts +42 -42
  26. package/lib/cjs/Camera.js +62 -62
  27. package/lib/cjs/Camera.js.map +1 -1
  28. package/lib/cjs/ChangedElements.d.ts +83 -83
  29. package/lib/cjs/ChangedElements.js +21 -21
  30. package/lib/cjs/ChangedElements.js.map +1 -1
  31. package/lib/cjs/ChangedEntities.d.ts +45 -45
  32. package/lib/cjs/ChangedEntities.js +9 -9
  33. package/lib/cjs/ChangedEntities.js.map +1 -1
  34. package/lib/cjs/ChangesetProps.d.ts +98 -98
  35. package/lib/cjs/ChangesetProps.js +22 -22
  36. package/lib/cjs/ChangesetProps.js.map +1 -1
  37. package/lib/cjs/ClipStyle.d.ts +89 -89
  38. package/lib/cjs/ClipStyle.js +123 -123
  39. package/lib/cjs/ClipStyle.js.map +1 -1
  40. package/lib/cjs/CloudStorage.d.ts +62 -62
  41. package/lib/cjs/CloudStorage.js +113 -113
  42. package/lib/cjs/CloudStorage.js.map +1 -1
  43. package/lib/cjs/CloudStorageTileCache.d.ts +27 -27
  44. package/lib/cjs/CloudStorageTileCache.js +66 -66
  45. package/lib/cjs/CloudStorageTileCache.js.map +1 -1
  46. package/lib/cjs/Code.d.ts +256 -256
  47. package/lib/cjs/Code.js +281 -281
  48. package/lib/cjs/Code.js.map +1 -1
  49. package/lib/cjs/ColorByName.d.ts +161 -161
  50. package/lib/cjs/ColorByName.js +169 -169
  51. package/lib/cjs/ColorByName.js.map +1 -1
  52. package/lib/cjs/ColorDef.d.ts +208 -208
  53. package/lib/cjs/ColorDef.js +571 -571
  54. package/lib/cjs/ColorDef.js.map +1 -1
  55. package/lib/cjs/CommonLoggerCategory.d.ts +18 -18
  56. package/lib/cjs/CommonLoggerCategory.js +26 -26
  57. package/lib/cjs/CommonLoggerCategory.js.map +1 -1
  58. package/lib/cjs/ConcurrentQuery.d.ts +241 -241
  59. package/lib/cjs/ConcurrentQuery.js +380 -380
  60. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  61. package/lib/cjs/ContextRealityModel.d.ts +276 -276
  62. package/lib/cjs/ContextRealityModel.js +358 -358
  63. package/lib/cjs/ContextRealityModel.js.map +1 -1
  64. package/lib/cjs/DisplayStyleSettings.d.ts +584 -584
  65. package/lib/cjs/DisplayStyleSettings.js +981 -981
  66. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  67. package/lib/cjs/ECSchemaProps.d.ts +39 -39
  68. package/lib/cjs/ECSchemaProps.js +9 -9
  69. package/lib/cjs/ECSchemaProps.js.map +1 -1
  70. package/lib/cjs/ECSqlReader.d.ts +70 -70
  71. package/lib/cjs/ECSqlReader.js +280 -280
  72. package/lib/cjs/ECSqlReader.js.map +1 -1
  73. package/lib/cjs/ECSqlTypes.d.ts +128 -128
  74. package/lib/cjs/ECSqlTypes.js +189 -189
  75. package/lib/cjs/ECSqlTypes.js.map +1 -1
  76. package/lib/cjs/ElementProps.d.ts +476 -476
  77. package/lib/cjs/ElementProps.js +99 -99
  78. package/lib/cjs/ElementProps.js.map +1 -1
  79. package/lib/cjs/EmphasizeElementsProps.d.ts +55 -55
  80. package/lib/cjs/EmphasizeElementsProps.js +25 -25
  81. package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
  82. package/lib/cjs/EntityProps.d.ts +176 -176
  83. package/lib/cjs/EntityProps.js +112 -112
  84. package/lib/cjs/EntityProps.js.map +1 -1
  85. package/lib/cjs/EntityReference.d.ts +51 -51
  86. package/lib/cjs/EntityReference.js +56 -56
  87. package/lib/cjs/EntityReference.js.map +1 -1
  88. package/lib/cjs/Environment.d.ts +61 -61
  89. package/lib/cjs/Environment.js +73 -73
  90. package/lib/cjs/Environment.js.map +1 -1
  91. package/lib/cjs/FeatureGates.d.ts +31 -31
  92. package/lib/cjs/FeatureGates.js +55 -55
  93. package/lib/cjs/FeatureGates.js.map +1 -1
  94. package/lib/cjs/FeatureIndex.d.ts +39 -39
  95. package/lib/cjs/FeatureIndex.js +63 -63
  96. package/lib/cjs/FeatureIndex.js.map +1 -1
  97. package/lib/cjs/FeatureSymbology.d.ts +444 -444
  98. package/lib/cjs/FeatureSymbology.js +614 -614
  99. package/lib/cjs/FeatureSymbology.js.map +1 -1
  100. package/lib/cjs/FeatureTable.d.ts +141 -141
  101. package/lib/cjs/FeatureTable.js +278 -278
  102. package/lib/cjs/FeatureTable.js.map +1 -1
  103. package/lib/cjs/Fonts.d.ts +51 -51
  104. package/lib/cjs/Fonts.js +53 -53
  105. package/lib/cjs/Fonts.js.map +1 -1
  106. package/lib/cjs/Frustum.d.ts +114 -114
  107. package/lib/cjs/Frustum.js +292 -292
  108. package/lib/cjs/Frustum.js.map +1 -1
  109. package/lib/cjs/GeoCoordinateServices.d.ts +119 -119
  110. package/lib/cjs/GeoCoordinateServices.js +80 -80
  111. package/lib/cjs/GeoCoordinateServices.js.map +1 -1
  112. package/lib/cjs/GeometryContainment.d.ts +28 -28
  113. package/lib/cjs/GeometryContainment.js +9 -9
  114. package/lib/cjs/GeometryContainment.js.map +1 -1
  115. package/lib/cjs/GeometryParams.d.ts +130 -130
  116. package/lib/cjs/GeometryParams.js +174 -174
  117. package/lib/cjs/GeometryParams.js.map +1 -1
  118. package/lib/cjs/GeometrySummary.d.ts +45 -45
  119. package/lib/cjs/GeometrySummary.js +23 -23
  120. package/lib/cjs/GeometrySummary.js.map +1 -1
  121. package/lib/cjs/Gradient.d.ts +139 -139
  122. package/lib/cjs/Gradient.js +455 -455
  123. package/lib/cjs/Gradient.js.map +1 -1
  124. package/lib/cjs/GraphicParams.d.ts +58 -58
  125. package/lib/cjs/GraphicParams.js +85 -85
  126. package/lib/cjs/GraphicParams.js.map +1 -1
  127. package/lib/cjs/GroundPlane.d.ts +52 -52
  128. package/lib/cjs/GroundPlane.js +64 -64
  129. package/lib/cjs/GroundPlane.js.map +1 -1
  130. package/lib/cjs/HSLColor.d.ts +20 -20
  131. package/lib/cjs/HSLColor.js +32 -32
  132. package/lib/cjs/HSLColor.js.map +1 -1
  133. package/lib/cjs/HSVColor.d.ts +30 -30
  134. package/lib/cjs/HSVColor.js +59 -59
  135. package/lib/cjs/HSVColor.js.map +1 -1
  136. package/lib/cjs/HiddenLine.d.ts +97 -97
  137. package/lib/cjs/HiddenLine.js +162 -162
  138. package/lib/cjs/HiddenLine.js.map +1 -1
  139. package/lib/cjs/Hilite.d.ts +50 -50
  140. package/lib/cjs/Hilite.js +64 -64
  141. package/lib/cjs/Hilite.js.map +1 -1
  142. package/lib/cjs/IModel.d.ts +359 -359
  143. package/lib/cjs/IModel.js +347 -347
  144. package/lib/cjs/IModel.js.map +1 -1
  145. package/lib/cjs/IModelError.d.ts +36 -36
  146. package/lib/cjs/IModelError.js +72 -72
  147. package/lib/cjs/IModelError.js.map +1 -1
  148. package/lib/cjs/IModelVersion.d.ts +68 -68
  149. package/lib/cjs/IModelVersion.js +79 -79
  150. package/lib/cjs/IModelVersion.js.map +1 -1
  151. package/lib/cjs/Image.d.ts +86 -86
  152. package/lib/cjs/Image.js +128 -128
  153. package/lib/cjs/Image.js.map +1 -1
  154. package/lib/cjs/IpcAppProps.d.ts +141 -124
  155. package/lib/cjs/IpcAppProps.d.ts.map +1 -1
  156. package/lib/cjs/IpcAppProps.js +23 -18
  157. package/lib/cjs/IpcAppProps.js.map +1 -1
  158. package/lib/cjs/LightSettings.d.ts +224 -224
  159. package/lib/cjs/LightSettings.js +309 -309
  160. package/lib/cjs/LightSettings.js.map +1 -1
  161. package/lib/cjs/LinePixels.d.ts +34 -34
  162. package/lib/cjs/LinePixels.js +42 -42
  163. package/lib/cjs/LinePixels.js.map +1 -1
  164. package/lib/cjs/Localization.d.ts +111 -111
  165. package/lib/cjs/Localization.js +26 -26
  166. package/lib/cjs/Localization.js.map +1 -1
  167. package/lib/cjs/MapImagerySettings.d.ts +62 -62
  168. package/lib/cjs/MapImagerySettings.js +80 -80
  169. package/lib/cjs/MapImagerySettings.js.map +1 -1
  170. package/lib/cjs/MapLayerSettings.d.ts +272 -272
  171. package/lib/cjs/MapLayerSettings.js +411 -411
  172. package/lib/cjs/MapLayerSettings.js.map +1 -1
  173. package/lib/cjs/MassProperties.d.ts +64 -64
  174. package/lib/cjs/MassProperties.js +23 -23
  175. package/lib/cjs/MassProperties.js.map +1 -1
  176. package/lib/cjs/MaterialProps.d.ts +118 -118
  177. package/lib/cjs/MaterialProps.js +23 -23
  178. package/lib/cjs/MaterialProps.js.map +1 -1
  179. package/lib/cjs/ModelClipGroup.d.ts +67 -67
  180. package/lib/cjs/ModelClipGroup.js +98 -98
  181. package/lib/cjs/ModelClipGroup.js.map +1 -1
  182. package/lib/cjs/ModelGeometryChanges.d.ts +107 -107
  183. package/lib/cjs/ModelGeometryChanges.js +83 -83
  184. package/lib/cjs/ModelGeometryChanges.js.map +1 -1
  185. package/lib/cjs/ModelProps.d.ts +67 -67
  186. package/lib/cjs/ModelProps.js +9 -9
  187. package/lib/cjs/ModelProps.js.map +1 -1
  188. package/lib/cjs/NativeAppProps.d.ts +122 -122
  189. package/lib/cjs/NativeAppProps.js +30 -30
  190. package/lib/cjs/NativeAppProps.js.map +1 -1
  191. package/lib/cjs/OctEncodedNormal.d.ts +33 -33
  192. package/lib/cjs/OctEncodedNormal.js +98 -98
  193. package/lib/cjs/OctEncodedNormal.js.map +1 -1
  194. package/lib/cjs/PlanProjectionSettings.d.ts +47 -47
  195. package/lib/cjs/PlanProjectionSettings.js +63 -63
  196. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  197. package/lib/cjs/PlanarClipMask.d.ts +177 -177
  198. package/lib/cjs/PlanarClipMask.js +136 -136
  199. package/lib/cjs/PlanarClipMask.js.map +1 -1
  200. package/lib/cjs/QPoint.d.ts +479 -479
  201. package/lib/cjs/QPoint.js +826 -826
  202. package/lib/cjs/QPoint.js.map +1 -1
  203. package/lib/cjs/RealityDataAccessProps.d.ts +41 -41
  204. package/lib/cjs/RealityDataAccessProps.js +19 -19
  205. package/lib/cjs/RealityDataAccessProps.js.map +1 -1
  206. package/lib/cjs/RealityModelDisplaySettings.d.ts +118 -118
  207. package/lib/cjs/RealityModelDisplaySettings.js +114 -114
  208. package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
  209. package/lib/cjs/Render.d.ts +89 -89
  210. package/lib/cjs/Render.js +177 -177
  211. package/lib/cjs/Render.js.map +1 -1
  212. package/lib/cjs/RenderMaterial.d.ts +58 -58
  213. package/lib/cjs/RenderMaterial.js +76 -76
  214. package/lib/cjs/RenderMaterial.js.map +1 -1
  215. package/lib/cjs/RenderSchedule.d.ts +541 -541
  216. package/lib/cjs/RenderSchedule.js +1000 -1000
  217. package/lib/cjs/RenderTexture.d.ts +70 -70
  218. package/lib/cjs/RenderTexture.js +59 -59
  219. package/lib/cjs/RenderTexture.js.map +1 -1
  220. package/lib/cjs/RgbColor.d.ts +47 -47
  221. package/lib/cjs/RgbColor.js +77 -77
  222. package/lib/cjs/RgbColor.js.map +1 -1
  223. package/lib/cjs/RpcInterface.d.ts +33 -33
  224. package/lib/cjs/RpcInterface.js +137 -137
  225. package/lib/cjs/RpcInterface.js.map +1 -1
  226. package/lib/cjs/RpcManager.d.ts +40 -40
  227. package/lib/cjs/RpcManager.js +55 -55
  228. package/lib/cjs/RpcManager.js.map +1 -1
  229. package/lib/cjs/SessionProps.d.ts +16 -16
  230. package/lib/cjs/SessionProps.js +9 -9
  231. package/lib/cjs/SessionProps.js.map +1 -1
  232. package/lib/cjs/SkyBox.d.ts +215 -215
  233. package/lib/cjs/SkyBox.js +210 -210
  234. package/lib/cjs/SkyBox.js.map +1 -1
  235. package/lib/cjs/Snapping.d.ts +49 -49
  236. package/lib/cjs/Snapping.js +9 -9
  237. package/lib/cjs/Snapping.js.map +1 -1
  238. package/lib/cjs/SolarCalculate.d.ts +27 -27
  239. package/lib/cjs/SolarCalculate.js +211 -211
  240. package/lib/cjs/SolarCalculate.js.map +1 -1
  241. package/lib/cjs/SolarShadows.d.ts +35 -35
  242. package/lib/cjs/SolarShadows.js +62 -62
  243. package/lib/cjs/SolarShadows.js.map +1 -1
  244. package/lib/cjs/SpatialClassification.d.ts +208 -208
  245. package/lib/cjs/SpatialClassification.js +340 -340
  246. package/lib/cjs/SpatialClassification.js.map +1 -1
  247. package/lib/cjs/SubCategoryAppearance.d.ts +91 -91
  248. package/lib/cjs/SubCategoryAppearance.js +96 -96
  249. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  250. package/lib/cjs/SubCategoryOverride.d.ts +46 -46
  251. package/lib/cjs/SubCategoryOverride.js +104 -104
  252. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  253. package/lib/cjs/TerrainSettings.d.ts +82 -82
  254. package/lib/cjs/TerrainSettings.js +102 -102
  255. package/lib/cjs/TerrainSettings.js.map +1 -1
  256. package/lib/cjs/TextureMapping.d.ts +101 -101
  257. package/lib/cjs/TextureMapping.js +174 -174
  258. package/lib/cjs/TextureMapping.js.map +1 -1
  259. package/lib/cjs/TextureProps.d.ts +65 -65
  260. package/lib/cjs/TextureProps.js +28 -28
  261. package/lib/cjs/TextureProps.js.map +1 -1
  262. package/lib/cjs/ThematicDisplay.d.ts +230 -230
  263. package/lib/cjs/ThematicDisplay.js +344 -344
  264. package/lib/cjs/ThematicDisplay.js.map +1 -1
  265. package/lib/cjs/Thumbnail.d.ts +26 -26
  266. package/lib/cjs/Thumbnail.js +9 -9
  267. package/lib/cjs/Thumbnail.js.map +1 -1
  268. package/lib/cjs/TileProps.d.ts +82 -82
  269. package/lib/cjs/TileProps.js +29 -29
  270. package/lib/cjs/TileProps.js.map +1 -1
  271. package/lib/cjs/Tween.d.ts +191 -191
  272. package/lib/cjs/Tween.js +570 -570
  273. package/lib/cjs/Tween.js.map +1 -1
  274. package/lib/cjs/TxnAction.d.ts +21 -21
  275. package/lib/cjs/TxnAction.js +29 -29
  276. package/lib/cjs/TxnAction.js.map +1 -1
  277. package/lib/cjs/ViewDetails.d.ts +125 -125
  278. package/lib/cjs/ViewDetails.js +158 -158
  279. package/lib/cjs/ViewDetails.js.map +1 -1
  280. package/lib/cjs/ViewFlags.d.ts +291 -291
  281. package/lib/cjs/ViewFlags.js +368 -368
  282. package/lib/cjs/ViewFlags.js.map +1 -1
  283. package/lib/cjs/ViewProps.d.ts +205 -205
  284. package/lib/cjs/ViewProps.js +9 -9
  285. package/lib/cjs/ViewProps.js.map +1 -1
  286. package/lib/cjs/WhiteOnWhiteReversalSettings.d.ts +36 -36
  287. package/lib/cjs/WhiteOnWhiteReversalSettings.js +37 -37
  288. package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
  289. package/lib/cjs/core-common.d.ts +242 -242
  290. package/lib/cjs/core-common.js +258 -258
  291. package/lib/cjs/core-common.js.map +1 -1
  292. package/lib/cjs/domains/FunctionalElementProps.d.ts +11 -11
  293. package/lib/cjs/domains/FunctionalElementProps.js +9 -9
  294. package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
  295. package/lib/cjs/domains/GenericElementProps.d.ts +18 -18
  296. package/lib/cjs/domains/GenericElementProps.js +9 -9
  297. package/lib/cjs/domains/GenericElementProps.js.map +1 -1
  298. package/lib/cjs/geometry/AdditionalTransform.d.ts +84 -84
  299. package/lib/cjs/geometry/AdditionalTransform.js +85 -85
  300. package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
  301. package/lib/cjs/geometry/AreaPattern.d.ts +82 -82
  302. package/lib/cjs/geometry/AreaPattern.js +204 -204
  303. package/lib/cjs/geometry/AreaPattern.js.map +1 -1
  304. package/lib/cjs/geometry/BoundingSphere.d.ts +14 -14
  305. package/lib/cjs/geometry/BoundingSphere.js +30 -30
  306. package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
  307. package/lib/cjs/geometry/Cartographic.d.ts +137 -137
  308. package/lib/cjs/geometry/Cartographic.js +345 -345
  309. package/lib/cjs/geometry/Cartographic.js.map +1 -1
  310. package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts +269 -269
  311. package/lib/cjs/geometry/CoordinateReferenceSystem.js +261 -261
  312. package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
  313. package/lib/cjs/geometry/ElementGeometry.d.ts +402 -402
  314. package/lib/cjs/geometry/ElementGeometry.js +1719 -1719
  315. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  316. package/lib/cjs/geometry/ElementGeometryFB.d.ts +2372 -2372
  317. package/lib/cjs/geometry/ElementGeometryFB.js +3814 -3814
  318. package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
  319. package/lib/cjs/geometry/FrustumPlanes.d.ts +32 -32
  320. package/lib/cjs/geometry/FrustumPlanes.js +132 -132
  321. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  322. package/lib/cjs/geometry/GeodeticDatum.d.ts +409 -409
  323. package/lib/cjs/geometry/GeodeticDatum.js +401 -401
  324. package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
  325. package/lib/cjs/geometry/GeodeticEllipsoid.d.ts +72 -72
  326. package/lib/cjs/geometry/GeodeticEllipsoid.js +72 -72
  327. package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
  328. package/lib/cjs/geometry/GeometryStream.d.ts +347 -347
  329. package/lib/cjs/geometry/GeometryStream.js +469 -469
  330. package/lib/cjs/geometry/GeometryStream.js.map +1 -1
  331. package/lib/cjs/geometry/ImageGraphic.d.ts +74 -74
  332. package/lib/cjs/geometry/ImageGraphic.js +98 -98
  333. package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
  334. package/lib/cjs/geometry/LineStyle.d.ts +71 -71
  335. package/lib/cjs/geometry/LineStyle.js +129 -129
  336. package/lib/cjs/geometry/LineStyle.js.map +1 -1
  337. package/lib/cjs/geometry/Placement.d.ts +95 -95
  338. package/lib/cjs/geometry/Placement.js +131 -131
  339. package/lib/cjs/geometry/Placement.js.map +1 -1
  340. package/lib/cjs/geometry/Projection.d.ts +251 -251
  341. package/lib/cjs/geometry/Projection.js +198 -198
  342. package/lib/cjs/geometry/Projection.js.map +1 -1
  343. package/lib/cjs/geometry/TextString.d.ts +55 -55
  344. package/lib/cjs/geometry/TextString.js +65 -65
  345. package/lib/cjs/geometry/TextString.js.map +1 -1
  346. package/lib/cjs/ipc/IpcSession.d.ts +23 -23
  347. package/lib/cjs/ipc/IpcSession.js +27 -27
  348. package/lib/cjs/ipc/IpcSession.js.map +1 -1
  349. package/lib/cjs/ipc/IpcSocket.d.ts +96 -96
  350. package/lib/cjs/ipc/IpcSocket.js +16 -16
  351. package/lib/cjs/ipc/IpcSocket.js.map +1 -1
  352. package/lib/cjs/ipc/IpcWebSocket.d.ts +61 -61
  353. package/lib/cjs/ipc/IpcWebSocket.js +151 -151
  354. package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
  355. package/lib/cjs/ipc/IpcWebSocketTransport.d.ts +15 -15
  356. package/lib/cjs/ipc/IpcWebSocketTransport.js +158 -158
  357. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  358. package/lib/cjs/rpc/DevToolsRpcInterface.d.ts +32 -32
  359. package/lib/cjs/rpc/DevToolsRpcInterface.js +48 -48
  360. package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
  361. package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +97 -97
  362. package/lib/cjs/rpc/IModelReadRpcInterface.js +119 -119
  363. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  364. package/lib/cjs/rpc/IModelTileRpcInterface.d.ts +61 -61
  365. package/lib/cjs/rpc/IModelTileRpcInterface.js +96 -96
  366. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  367. package/lib/cjs/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  368. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js +48 -48
  369. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  370. package/lib/cjs/rpc/TestRpcManager.d.ts +20 -20
  371. package/lib/cjs/rpc/TestRpcManager.js +39 -39
  372. package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
  373. package/lib/cjs/rpc/WipRpcInterface.d.ts +29 -29
  374. package/lib/cjs/rpc/WipRpcInterface.js +40 -40
  375. package/lib/cjs/rpc/WipRpcInterface.js.map +1 -1
  376. package/lib/cjs/rpc/core/RpcConfiguration.d.ts +111 -111
  377. package/lib/cjs/rpc/core/RpcConfiguration.js +192 -192
  378. package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
  379. package/lib/cjs/rpc/core/RpcConstants.d.ts +85 -85
  380. package/lib/cjs/rpc/core/RpcConstants.js +103 -103
  381. package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
  382. package/lib/cjs/rpc/core/RpcControl.d.ts +52 -52
  383. package/lib/cjs/rpc/core/RpcControl.js +149 -149
  384. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  385. package/lib/cjs/rpc/core/RpcInvocation.d.ts +89 -89
  386. package/lib/cjs/rpc/core/RpcInvocation.js +257 -257
  387. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  388. package/lib/cjs/rpc/core/RpcMarshaling.d.ts +36 -36
  389. package/lib/cjs/rpc/core/RpcMarshaling.js +153 -153
  390. package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
  391. package/lib/cjs/rpc/core/RpcOperation.d.ts +67 -67
  392. package/lib/cjs/rpc/core/RpcOperation.js +133 -133
  393. package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
  394. package/lib/cjs/rpc/core/RpcPendingQueue.d.ts +21 -21
  395. package/lib/cjs/rpc/core/RpcPendingQueue.js +94 -94
  396. package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
  397. package/lib/cjs/rpc/core/RpcProtocol.d.ts +132 -132
  398. package/lib/cjs/rpc/core/RpcProtocol.js +127 -127
  399. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  400. package/lib/cjs/rpc/core/RpcPush.d.ts +68 -68
  401. package/lib/cjs/rpc/core/RpcPush.js +127 -127
  402. package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
  403. package/lib/cjs/rpc/core/RpcRegistry.d.ts +48 -48
  404. package/lib/cjs/rpc/core/RpcRegistry.js +198 -198
  405. package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
  406. package/lib/cjs/rpc/core/RpcRequest.d.ts +186 -186
  407. package/lib/cjs/rpc/core/RpcRequest.js +477 -477
  408. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  409. package/lib/cjs/rpc/core/RpcRequestContext.d.ts +14 -14
  410. package/lib/cjs/rpc/core/RpcRequestContext.js +2 -2
  411. package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
  412. package/lib/cjs/rpc/core/RpcRoutingToken.d.ts +12 -12
  413. package/lib/cjs/rpc/core/RpcRoutingToken.js +23 -23
  414. package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
  415. package/lib/cjs/rpc/core/RpcSessionInvocation.d.ts +10 -10
  416. package/lib/cjs/rpc/core/RpcSessionInvocation.js +59 -59
  417. package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
  418. package/lib/cjs/rpc/web/BentleyCloudRpcManager.d.ts +46 -46
  419. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js +73 -73
  420. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  421. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  422. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +142 -142
  423. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  424. package/lib/cjs/rpc/web/OpenAPI.d.ts +139 -139
  425. package/lib/cjs/rpc/web/OpenAPI.js +60 -60
  426. package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
  427. package/lib/cjs/rpc/web/RpcMultipart.d.ts +31 -31
  428. package/lib/cjs/rpc/web/RpcMultipart.js +45 -45
  429. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  430. package/lib/cjs/rpc/web/WebAppRpcLogging.d.ts +17 -17
  431. package/lib/cjs/rpc/web/WebAppRpcLogging.js +140 -140
  432. package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
  433. package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +86 -86
  434. package/lib/cjs/rpc/web/WebAppRpcProtocol.js +116 -116
  435. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  436. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +71 -71
  437. package/lib/cjs/rpc/web/WebAppRpcRequest.js +374 -374
  438. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  439. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts +33 -33
  440. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js +359 -359
  441. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  442. package/lib/cjs/tile/B3dmTileIO.d.ts +19 -19
  443. package/lib/cjs/tile/B3dmTileIO.js +66 -66
  444. package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
  445. package/lib/cjs/tile/CompositeTileIO.d.ts +15 -15
  446. package/lib/cjs/tile/CompositeTileIO.js +26 -26
  447. package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
  448. package/lib/cjs/tile/ElementGraphics.d.ts +145 -145
  449. package/lib/cjs/tile/ElementGraphics.js +9 -9
  450. package/lib/cjs/tile/ElementGraphics.js.map +1 -1
  451. package/lib/cjs/tile/GltfTileIO.d.ts +45 -45
  452. package/lib/cjs/tile/GltfTileIO.js +109 -109
  453. package/lib/cjs/tile/GltfTileIO.js.map +1 -1
  454. package/lib/cjs/tile/I3dmTileIO.d.ts +20 -20
  455. package/lib/cjs/tile/I3dmTileIO.js +40 -40
  456. package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
  457. package/lib/cjs/tile/IModelTileIO.d.ts +75 -75
  458. package/lib/cjs/tile/IModelTileIO.js +95 -95
  459. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  460. package/lib/cjs/tile/PntsTileIO.d.ts +17 -17
  461. package/lib/cjs/tile/PntsTileIO.js +26 -26
  462. package/lib/cjs/tile/PntsTileIO.js.map +1 -1
  463. package/lib/cjs/tile/TileIO.d.ts +66 -66
  464. package/lib/cjs/tile/TileIO.js +118 -118
  465. package/lib/cjs/tile/TileIO.js.map +1 -1
  466. package/lib/cjs/tile/TileMetadata.d.ts +228 -228
  467. package/lib/cjs/tile/TileMetadata.js +676 -676
  468. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  469. package/lib/esm/AmbientOcclusion.d.ts +49 -49
  470. package/lib/esm/AmbientOcclusion.js +52 -52
  471. package/lib/esm/AmbientOcclusion.js.map +1 -1
  472. package/lib/esm/AnalysisStyle.d.ts +134 -134
  473. package/lib/esm/AnalysisStyle.js +159 -159
  474. package/lib/esm/AnalysisStyle.js.map +1 -1
  475. package/lib/esm/AuthorizationClient.d.ts +11 -11
  476. package/lib/esm/AuthorizationClient.js +8 -8
  477. package/lib/esm/AuthorizationClient.js.map +1 -1
  478. package/lib/esm/BackgroundMapProvider.d.ts +51 -51
  479. package/lib/esm/BackgroundMapProvider.js +64 -64
  480. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  481. package/lib/esm/BackgroundMapSettings.d.ts +136 -136
  482. package/lib/esm/BackgroundMapSettings.js +152 -152
  483. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  484. package/lib/esm/Base64EncodedString.d.ts +30 -30
  485. package/lib/esm/Base64EncodedString.js +53 -53
  486. package/lib/esm/Base64EncodedString.js.map +1 -1
  487. package/lib/esm/BlobReader.d.ts +31 -31
  488. package/lib/esm/BlobReader.js +79 -79
  489. package/lib/esm/BlobReader.js.map +1 -1
  490. package/lib/esm/BriefcaseTypes.d.ts +189 -189
  491. package/lib/esm/BriefcaseTypes.js +92 -92
  492. package/lib/esm/BriefcaseTypes.js.map +1 -1
  493. package/lib/esm/Camera.d.ts +42 -42
  494. package/lib/esm/Camera.js +58 -58
  495. package/lib/esm/Camera.js.map +1 -1
  496. package/lib/esm/ChangedElements.d.ts +83 -83
  497. package/lib/esm/ChangedElements.js +18 -18
  498. package/lib/esm/ChangedElements.js.map +1 -1
  499. package/lib/esm/ChangedEntities.d.ts +45 -45
  500. package/lib/esm/ChangedEntities.js +8 -8
  501. package/lib/esm/ChangedEntities.js.map +1 -1
  502. package/lib/esm/ChangesetProps.d.ts +98 -98
  503. package/lib/esm/ChangesetProps.js +19 -19
  504. package/lib/esm/ChangesetProps.js.map +1 -1
  505. package/lib/esm/ClipStyle.d.ts +89 -89
  506. package/lib/esm/ClipStyle.js +118 -118
  507. package/lib/esm/ClipStyle.js.map +1 -1
  508. package/lib/esm/CloudStorage.d.ts +62 -62
  509. package/lib/esm/CloudStorage.js +109 -109
  510. package/lib/esm/CloudStorage.js.map +1 -1
  511. package/lib/esm/CloudStorageTileCache.d.ts +27 -27
  512. package/lib/esm/CloudStorageTileCache.js +62 -62
  513. package/lib/esm/CloudStorageTileCache.js.map +1 -1
  514. package/lib/esm/Code.d.ts +256 -256
  515. package/lib/esm/Code.js +276 -276
  516. package/lib/esm/Code.js.map +1 -1
  517. package/lib/esm/ColorByName.d.ts +161 -161
  518. package/lib/esm/ColorByName.js +166 -166
  519. package/lib/esm/ColorByName.js.map +1 -1
  520. package/lib/esm/ColorDef.d.ts +208 -208
  521. package/lib/esm/ColorDef.js +567 -567
  522. package/lib/esm/ColorDef.js.map +1 -1
  523. package/lib/esm/CommonLoggerCategory.d.ts +18 -18
  524. package/lib/esm/CommonLoggerCategory.js +23 -23
  525. package/lib/esm/CommonLoggerCategory.js.map +1 -1
  526. package/lib/esm/ConcurrentQuery.d.ts +241 -241
  527. package/lib/esm/ConcurrentQuery.js +373 -373
  528. package/lib/esm/ConcurrentQuery.js.map +1 -1
  529. package/lib/esm/ContextRealityModel.d.ts +276 -276
  530. package/lib/esm/ContextRealityModel.js +353 -353
  531. package/lib/esm/ContextRealityModel.js.map +1 -1
  532. package/lib/esm/DisplayStyleSettings.d.ts +584 -584
  533. package/lib/esm/DisplayStyleSettings.js +976 -976
  534. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  535. package/lib/esm/ECSchemaProps.d.ts +39 -39
  536. package/lib/esm/ECSchemaProps.js +8 -8
  537. package/lib/esm/ECSchemaProps.js.map +1 -1
  538. package/lib/esm/ECSqlReader.d.ts +70 -70
  539. package/lib/esm/ECSqlReader.js +275 -275
  540. package/lib/esm/ECSqlReader.js.map +1 -1
  541. package/lib/esm/ECSqlTypes.d.ts +128 -128
  542. package/lib/esm/ECSqlTypes.js +185 -185
  543. package/lib/esm/ECSqlTypes.js.map +1 -1
  544. package/lib/esm/ElementProps.d.ts +476 -476
  545. package/lib/esm/ElementProps.js +92 -92
  546. package/lib/esm/ElementProps.js.map +1 -1
  547. package/lib/esm/EmphasizeElementsProps.d.ts +55 -55
  548. package/lib/esm/EmphasizeElementsProps.js +22 -22
  549. package/lib/esm/EmphasizeElementsProps.js.map +1 -1
  550. package/lib/esm/EntityProps.d.ts +176 -176
  551. package/lib/esm/EntityProps.js +107 -107
  552. package/lib/esm/EntityProps.js.map +1 -1
  553. package/lib/esm/EntityReference.d.ts +51 -51
  554. package/lib/esm/EntityReference.js +52 -52
  555. package/lib/esm/EntityReference.js.map +1 -1
  556. package/lib/esm/Environment.d.ts +61 -61
  557. package/lib/esm/Environment.js +69 -69
  558. package/lib/esm/Environment.js.map +1 -1
  559. package/lib/esm/FeatureGates.d.ts +31 -31
  560. package/lib/esm/FeatureGates.js +51 -51
  561. package/lib/esm/FeatureGates.js.map +1 -1
  562. package/lib/esm/FeatureIndex.d.ts +39 -39
  563. package/lib/esm/FeatureIndex.js +57 -57
  564. package/lib/esm/FeatureIndex.js.map +1 -1
  565. package/lib/esm/FeatureSymbology.d.ts +444 -444
  566. package/lib/esm/FeatureSymbology.js +609 -609
  567. package/lib/esm/FeatureSymbology.js.map +1 -1
  568. package/lib/esm/FeatureTable.d.ts +141 -141
  569. package/lib/esm/FeatureTable.js +272 -272
  570. package/lib/esm/FeatureTable.js.map +1 -1
  571. package/lib/esm/Fonts.d.ts +51 -51
  572. package/lib/esm/Fonts.js +49 -49
  573. package/lib/esm/Fonts.js.map +1 -1
  574. package/lib/esm/Frustum.d.ts +114 -114
  575. package/lib/esm/Frustum.js +288 -288
  576. package/lib/esm/Frustum.js.map +1 -1
  577. package/lib/esm/GeoCoordinateServices.d.ts +119 -119
  578. package/lib/esm/GeoCoordinateServices.js +76 -76
  579. package/lib/esm/GeoCoordinateServices.js.map +1 -1
  580. package/lib/esm/GeometryContainment.d.ts +28 -28
  581. package/lib/esm/GeometryContainment.js +8 -8
  582. package/lib/esm/GeometryContainment.js.map +1 -1
  583. package/lib/esm/GeometryParams.d.ts +130 -130
  584. package/lib/esm/GeometryParams.js +170 -170
  585. package/lib/esm/GeometryParams.js.map +1 -1
  586. package/lib/esm/GeometrySummary.d.ts +45 -45
  587. package/lib/esm/GeometrySummary.js +20 -20
  588. package/lib/esm/GeometrySummary.js.map +1 -1
  589. package/lib/esm/Gradient.d.ts +139 -139
  590. package/lib/esm/Gradient.js +452 -452
  591. package/lib/esm/Gradient.js.map +1 -1
  592. package/lib/esm/GraphicParams.d.ts +58 -58
  593. package/lib/esm/GraphicParams.js +81 -81
  594. package/lib/esm/GraphicParams.js.map +1 -1
  595. package/lib/esm/GroundPlane.d.ts +52 -52
  596. package/lib/esm/GroundPlane.js +60 -60
  597. package/lib/esm/GroundPlane.js.map +1 -1
  598. package/lib/esm/HSLColor.d.ts +20 -20
  599. package/lib/esm/HSLColor.js +28 -28
  600. package/lib/esm/HSLColor.js.map +1 -1
  601. package/lib/esm/HSVColor.d.ts +30 -30
  602. package/lib/esm/HSVColor.js +55 -55
  603. package/lib/esm/HSVColor.js.map +1 -1
  604. package/lib/esm/HiddenLine.d.ts +97 -97
  605. package/lib/esm/HiddenLine.js +159 -159
  606. package/lib/esm/HiddenLine.js.map +1 -1
  607. package/lib/esm/Hilite.d.ts +50 -50
  608. package/lib/esm/Hilite.js +61 -61
  609. package/lib/esm/Hilite.js.map +1 -1
  610. package/lib/esm/IModel.d.ts +359 -359
  611. package/lib/esm/IModel.js +342 -342
  612. package/lib/esm/IModel.js.map +1 -1
  613. package/lib/esm/IModelError.d.ts +36 -36
  614. package/lib/esm/IModelError.js +55 -55
  615. package/lib/esm/IModelError.js.map +1 -1
  616. package/lib/esm/IModelVersion.d.ts +68 -68
  617. package/lib/esm/IModelVersion.js +75 -75
  618. package/lib/esm/IModelVersion.js.map +1 -1
  619. package/lib/esm/Image.d.ts +86 -86
  620. package/lib/esm/Image.js +120 -120
  621. package/lib/esm/Image.js.map +1 -1
  622. package/lib/esm/IpcAppProps.d.ts +141 -124
  623. package/lib/esm/IpcAppProps.d.ts.map +1 -1
  624. package/lib/esm/IpcAppProps.js +19 -15
  625. package/lib/esm/IpcAppProps.js.map +1 -1
  626. package/lib/esm/LightSettings.d.ts +224 -224
  627. package/lib/esm/LightSettings.js +301 -301
  628. package/lib/esm/LightSettings.js.map +1 -1
  629. package/lib/esm/LinePixels.d.ts +34 -34
  630. package/lib/esm/LinePixels.js +39 -39
  631. package/lib/esm/LinePixels.js.map +1 -1
  632. package/lib/esm/Localization.d.ts +111 -111
  633. package/lib/esm/Localization.js +22 -22
  634. package/lib/esm/Localization.js.map +1 -1
  635. package/lib/esm/MapImagerySettings.d.ts +62 -62
  636. package/lib/esm/MapImagerySettings.js +76 -76
  637. package/lib/esm/MapImagerySettings.js.map +1 -1
  638. package/lib/esm/MapLayerSettings.d.ts +272 -272
  639. package/lib/esm/MapLayerSettings.js +403 -403
  640. package/lib/esm/MapLayerSettings.js.map +1 -1
  641. package/lib/esm/MassProperties.d.ts +64 -64
  642. package/lib/esm/MassProperties.js +20 -20
  643. package/lib/esm/MassProperties.js.map +1 -1
  644. package/lib/esm/MaterialProps.d.ts +118 -118
  645. package/lib/esm/MaterialProps.js +20 -20
  646. package/lib/esm/MaterialProps.js.map +1 -1
  647. package/lib/esm/ModelClipGroup.d.ts +67 -67
  648. package/lib/esm/ModelClipGroup.js +93 -93
  649. package/lib/esm/ModelClipGroup.js.map +1 -1
  650. package/lib/esm/ModelGeometryChanges.d.ts +107 -107
  651. package/lib/esm/ModelGeometryChanges.js +80 -80
  652. package/lib/esm/ModelGeometryChanges.js.map +1 -1
  653. package/lib/esm/ModelProps.d.ts +67 -67
  654. package/lib/esm/ModelProps.js +8 -8
  655. package/lib/esm/ModelProps.js.map +1 -1
  656. package/lib/esm/NativeAppProps.d.ts +122 -122
  657. package/lib/esm/NativeAppProps.js +27 -27
  658. package/lib/esm/NativeAppProps.js.map +1 -1
  659. package/lib/esm/OctEncodedNormal.d.ts +33 -33
  660. package/lib/esm/OctEncodedNormal.js +93 -93
  661. package/lib/esm/OctEncodedNormal.js.map +1 -1
  662. package/lib/esm/PlanProjectionSettings.d.ts +47 -47
  663. package/lib/esm/PlanProjectionSettings.js +59 -59
  664. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  665. package/lib/esm/PlanarClipMask.d.ts +177 -177
  666. package/lib/esm/PlanarClipMask.js +132 -132
  667. package/lib/esm/PlanarClipMask.js.map +1 -1
  668. package/lib/esm/QPoint.d.ts +479 -479
  669. package/lib/esm/QPoint.js +815 -815
  670. package/lib/esm/QPoint.js.map +1 -1
  671. package/lib/esm/RealityDataAccessProps.d.ts +41 -41
  672. package/lib/esm/RealityDataAccessProps.js +16 -16
  673. package/lib/esm/RealityDataAccessProps.js.map +1 -1
  674. package/lib/esm/RealityModelDisplaySettings.d.ts +118 -118
  675. package/lib/esm/RealityModelDisplaySettings.js +109 -109
  676. package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
  677. package/lib/esm/Render.d.ts +89 -89
  678. package/lib/esm/Render.js +165 -165
  679. package/lib/esm/Render.js.map +1 -1
  680. package/lib/esm/RenderMaterial.d.ts +58 -58
  681. package/lib/esm/RenderMaterial.js +72 -72
  682. package/lib/esm/RenderMaterial.js.map +1 -1
  683. package/lib/esm/RenderSchedule.d.ts +541 -541
  684. package/lib/esm/RenderSchedule.js +997 -997
  685. package/lib/esm/RenderTexture.d.ts +70 -70
  686. package/lib/esm/RenderTexture.js +55 -55
  687. package/lib/esm/RenderTexture.js.map +1 -1
  688. package/lib/esm/RgbColor.d.ts +47 -47
  689. package/lib/esm/RgbColor.js +73 -73
  690. package/lib/esm/RgbColor.js.map +1 -1
  691. package/lib/esm/RpcInterface.d.ts +33 -33
  692. package/lib/esm/RpcInterface.js +133 -133
  693. package/lib/esm/RpcInterface.js.map +1 -1
  694. package/lib/esm/RpcManager.d.ts +40 -40
  695. package/lib/esm/RpcManager.js +51 -51
  696. package/lib/esm/RpcManager.js.map +1 -1
  697. package/lib/esm/SessionProps.d.ts +16 -16
  698. package/lib/esm/SessionProps.js +8 -8
  699. package/lib/esm/SessionProps.js.map +1 -1
  700. package/lib/esm/SkyBox.d.ts +215 -215
  701. package/lib/esm/SkyBox.js +203 -203
  702. package/lib/esm/SkyBox.js.map +1 -1
  703. package/lib/esm/Snapping.d.ts +49 -49
  704. package/lib/esm/Snapping.js +8 -8
  705. package/lib/esm/Snapping.js.map +1 -1
  706. package/lib/esm/SolarCalculate.d.ts +27 -27
  707. package/lib/esm/SolarCalculate.js +204 -204
  708. package/lib/esm/SolarCalculate.js.map +1 -1
  709. package/lib/esm/SolarShadows.d.ts +35 -35
  710. package/lib/esm/SolarShadows.js +58 -58
  711. package/lib/esm/SolarShadows.js.map +1 -1
  712. package/lib/esm/SpatialClassification.d.ts +208 -208
  713. package/lib/esm/SpatialClassification.js +334 -334
  714. package/lib/esm/SpatialClassification.js.map +1 -1
  715. package/lib/esm/SubCategoryAppearance.d.ts +91 -91
  716. package/lib/esm/SubCategoryAppearance.js +92 -92
  717. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  718. package/lib/esm/SubCategoryOverride.d.ts +46 -46
  719. package/lib/esm/SubCategoryOverride.js +100 -100
  720. package/lib/esm/SubCategoryOverride.js.map +1 -1
  721. package/lib/esm/TerrainSettings.d.ts +82 -82
  722. package/lib/esm/TerrainSettings.js +98 -98
  723. package/lib/esm/TerrainSettings.js.map +1 -1
  724. package/lib/esm/TextureMapping.d.ts +101 -101
  725. package/lib/esm/TextureMapping.js +170 -170
  726. package/lib/esm/TextureMapping.js.map +1 -1
  727. package/lib/esm/TextureProps.d.ts +65 -65
  728. package/lib/esm/TextureProps.js +25 -25
  729. package/lib/esm/TextureProps.js.map +1 -1
  730. package/lib/esm/ThematicDisplay.d.ts +230 -230
  731. package/lib/esm/ThematicDisplay.js +337 -337
  732. package/lib/esm/ThematicDisplay.js.map +1 -1
  733. package/lib/esm/Thumbnail.d.ts +26 -26
  734. package/lib/esm/Thumbnail.js +8 -8
  735. package/lib/esm/Thumbnail.js.map +1 -1
  736. package/lib/esm/TileProps.d.ts +82 -82
  737. package/lib/esm/TileProps.js +25 -25
  738. package/lib/esm/TileProps.js.map +1 -1
  739. package/lib/esm/Tween.d.ts +191 -191
  740. package/lib/esm/Tween.js +565 -565
  741. package/lib/esm/Tween.js.map +1 -1
  742. package/lib/esm/TxnAction.d.ts +21 -21
  743. package/lib/esm/TxnAction.js +26 -26
  744. package/lib/esm/TxnAction.js.map +1 -1
  745. package/lib/esm/ViewDetails.d.ts +125 -125
  746. package/lib/esm/ViewDetails.js +153 -153
  747. package/lib/esm/ViewDetails.js.map +1 -1
  748. package/lib/esm/ViewFlags.d.ts +291 -291
  749. package/lib/esm/ViewFlags.js +364 -364
  750. package/lib/esm/ViewFlags.js.map +1 -1
  751. package/lib/esm/ViewProps.d.ts +205 -205
  752. package/lib/esm/ViewProps.js +8 -8
  753. package/lib/esm/ViewProps.js.map +1 -1
  754. package/lib/esm/WhiteOnWhiteReversalSettings.d.ts +36 -36
  755. package/lib/esm/WhiteOnWhiteReversalSettings.js +33 -33
  756. package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
  757. package/lib/esm/core-common.d.ts +242 -242
  758. package/lib/esm/core-common.js +246 -246
  759. package/lib/esm/core-common.js.map +1 -1
  760. package/lib/esm/domains/FunctionalElementProps.d.ts +11 -11
  761. package/lib/esm/domains/FunctionalElementProps.js +8 -8
  762. package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
  763. package/lib/esm/domains/GenericElementProps.d.ts +18 -18
  764. package/lib/esm/domains/GenericElementProps.js +8 -8
  765. package/lib/esm/domains/GenericElementProps.js.map +1 -1
  766. package/lib/esm/geometry/AdditionalTransform.d.ts +84 -84
  767. package/lib/esm/geometry/AdditionalTransform.js +80 -80
  768. package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
  769. package/lib/esm/geometry/AreaPattern.d.ts +82 -82
  770. package/lib/esm/geometry/AreaPattern.js +201 -201
  771. package/lib/esm/geometry/AreaPattern.js.map +1 -1
  772. package/lib/esm/geometry/BoundingSphere.d.ts +14 -14
  773. package/lib/esm/geometry/BoundingSphere.js +26 -26
  774. package/lib/esm/geometry/BoundingSphere.js.map +1 -1
  775. package/lib/esm/geometry/Cartographic.d.ts +137 -137
  776. package/lib/esm/geometry/Cartographic.js +340 -340
  777. package/lib/esm/geometry/Cartographic.js.map +1 -1
  778. package/lib/esm/geometry/CoordinateReferenceSystem.d.ts +269 -269
  779. package/lib/esm/geometry/CoordinateReferenceSystem.js +254 -254
  780. package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
  781. package/lib/esm/geometry/ElementGeometry.d.ts +402 -402
  782. package/lib/esm/geometry/ElementGeometry.js +1716 -1716
  783. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  784. package/lib/esm/geometry/ElementGeometryFB.d.ts +2372 -2372
  785. package/lib/esm/geometry/ElementGeometryFB.js +3811 -3811
  786. package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
  787. package/lib/esm/geometry/FrustumPlanes.d.ts +32 -32
  788. package/lib/esm/geometry/FrustumPlanes.js +128 -128
  789. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  790. package/lib/esm/geometry/GeodeticDatum.d.ts +409 -409
  791. package/lib/esm/geometry/GeodeticDatum.js +390 -390
  792. package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
  793. package/lib/esm/geometry/GeodeticEllipsoid.d.ts +72 -72
  794. package/lib/esm/geometry/GeodeticEllipsoid.js +68 -68
  795. package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
  796. package/lib/esm/geometry/GeometryStream.d.ts +347 -347
  797. package/lib/esm/geometry/GeometryStream.js +464 -464
  798. package/lib/esm/geometry/GeometryStream.js.map +1 -1
  799. package/lib/esm/geometry/ImageGraphic.d.ts +74 -74
  800. package/lib/esm/geometry/ImageGraphic.js +93 -93
  801. package/lib/esm/geometry/ImageGraphic.js.map +1 -1
  802. package/lib/esm/geometry/LineStyle.d.ts +71 -71
  803. package/lib/esm/geometry/LineStyle.js +126 -126
  804. package/lib/esm/geometry/LineStyle.js.map +1 -1
  805. package/lib/esm/geometry/Placement.d.ts +95 -95
  806. package/lib/esm/geometry/Placement.js +126 -126
  807. package/lib/esm/geometry/Placement.js.map +1 -1
  808. package/lib/esm/geometry/Projection.d.ts +251 -251
  809. package/lib/esm/geometry/Projection.js +192 -192
  810. package/lib/esm/geometry/Projection.js.map +1 -1
  811. package/lib/esm/geometry/TextString.d.ts +55 -55
  812. package/lib/esm/geometry/TextString.js +61 -61
  813. package/lib/esm/geometry/TextString.js.map +1 -1
  814. package/lib/esm/ipc/IpcSession.d.ts +23 -23
  815. package/lib/esm/ipc/IpcSession.js +23 -23
  816. package/lib/esm/ipc/IpcSession.js.map +1 -1
  817. package/lib/esm/ipc/IpcSocket.d.ts +96 -96
  818. package/lib/esm/ipc/IpcSocket.js +12 -12
  819. package/lib/esm/ipc/IpcSocket.js.map +1 -1
  820. package/lib/esm/ipc/IpcWebSocket.d.ts +61 -61
  821. package/lib/esm/ipc/IpcWebSocket.js +145 -145
  822. package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
  823. package/lib/esm/ipc/IpcWebSocketTransport.d.ts +15 -15
  824. package/lib/esm/ipc/IpcWebSocketTransport.js +154 -154
  825. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  826. package/lib/esm/rpc/DevToolsRpcInterface.d.ts +32 -32
  827. package/lib/esm/rpc/DevToolsRpcInterface.js +44 -44
  828. package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
  829. package/lib/esm/rpc/IModelReadRpcInterface.d.ts +97 -97
  830. package/lib/esm/rpc/IModelReadRpcInterface.js +114 -114
  831. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  832. package/lib/esm/rpc/IModelTileRpcInterface.d.ts +61 -61
  833. package/lib/esm/rpc/IModelTileRpcInterface.js +92 -92
  834. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  835. package/lib/esm/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  836. package/lib/esm/rpc/SnapshotIModelRpcInterface.js +44 -44
  837. package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  838. package/lib/esm/rpc/TestRpcManager.d.ts +20 -20
  839. package/lib/esm/rpc/TestRpcManager.js +35 -35
  840. package/lib/esm/rpc/TestRpcManager.js.map +1 -1
  841. package/lib/esm/rpc/WipRpcInterface.d.ts +29 -29
  842. package/lib/esm/rpc/WipRpcInterface.js +36 -36
  843. package/lib/esm/rpc/WipRpcInterface.js.map +1 -1
  844. package/lib/esm/rpc/core/RpcConfiguration.d.ts +111 -111
  845. package/lib/esm/rpc/core/RpcConfiguration.js +185 -185
  846. package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
  847. package/lib/esm/rpc/core/RpcConstants.d.ts +85 -85
  848. package/lib/esm/rpc/core/RpcConstants.js +100 -100
  849. package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
  850. package/lib/esm/rpc/core/RpcControl.d.ts +52 -52
  851. package/lib/esm/rpc/core/RpcControl.js +142 -142
  852. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  853. package/lib/esm/rpc/core/RpcInvocation.d.ts +89 -89
  854. package/lib/esm/rpc/core/RpcInvocation.js +253 -253
  855. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  856. package/lib/esm/rpc/core/RpcMarshaling.d.ts +36 -36
  857. package/lib/esm/rpc/core/RpcMarshaling.js +149 -149
  858. package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
  859. package/lib/esm/rpc/core/RpcOperation.d.ts +67 -67
  860. package/lib/esm/rpc/core/RpcOperation.js +128 -128
  861. package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
  862. package/lib/esm/rpc/core/RpcPendingQueue.d.ts +21 -21
  863. package/lib/esm/rpc/core/RpcPendingQueue.js +90 -90
  864. package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
  865. package/lib/esm/rpc/core/RpcProtocol.d.ts +132 -132
  866. package/lib/esm/rpc/core/RpcProtocol.js +123 -123
  867. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  868. package/lib/esm/rpc/core/RpcPush.d.ts +68 -68
  869. package/lib/esm/rpc/core/RpcPush.js +119 -119
  870. package/lib/esm/rpc/core/RpcPush.js.map +1 -1
  871. package/lib/esm/rpc/core/RpcRegistry.d.ts +48 -48
  872. package/lib/esm/rpc/core/RpcRegistry.js +194 -194
  873. package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
  874. package/lib/esm/rpc/core/RpcRequest.d.ts +186 -186
  875. package/lib/esm/rpc/core/RpcRequest.js +472 -472
  876. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  877. package/lib/esm/rpc/core/RpcRequestContext.d.ts +14 -14
  878. package/lib/esm/rpc/core/RpcRequestContext.js +1 -1
  879. package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
  880. package/lib/esm/rpc/core/RpcRoutingToken.d.ts +12 -12
  881. package/lib/esm/rpc/core/RpcRoutingToken.js +19 -19
  882. package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
  883. package/lib/esm/rpc/core/RpcSessionInvocation.d.ts +10 -10
  884. package/lib/esm/rpc/core/RpcSessionInvocation.js +55 -55
  885. package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
  886. package/lib/esm/rpc/web/BentleyCloudRpcManager.d.ts +46 -46
  887. package/lib/esm/rpc/web/BentleyCloudRpcManager.js +68 -68
  888. package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  889. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  890. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +138 -138
  891. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  892. package/lib/esm/rpc/web/OpenAPI.d.ts +139 -139
  893. package/lib/esm/rpc/web/OpenAPI.js +56 -56
  894. package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
  895. package/lib/esm/rpc/web/RpcMultipart.d.ts +31 -31
  896. package/lib/esm/rpc/web/RpcMultipart.js +41 -41
  897. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  898. package/lib/esm/rpc/web/WebAppRpcLogging.d.ts +17 -17
  899. package/lib/esm/rpc/web/WebAppRpcLogging.js +136 -136
  900. package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
  901. package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +86 -86
  902. package/lib/esm/rpc/web/WebAppRpcProtocol.js +112 -112
  903. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  904. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +71 -71
  905. package/lib/esm/rpc/web/WebAppRpcRequest.js +370 -370
  906. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  907. package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts +33 -33
  908. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js +355 -355
  909. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  910. package/lib/esm/tile/B3dmTileIO.d.ts +19 -19
  911. package/lib/esm/tile/B3dmTileIO.js +62 -62
  912. package/lib/esm/tile/B3dmTileIO.js.map +1 -1
  913. package/lib/esm/tile/CompositeTileIO.d.ts +15 -15
  914. package/lib/esm/tile/CompositeTileIO.js +22 -22
  915. package/lib/esm/tile/CompositeTileIO.js.map +1 -1
  916. package/lib/esm/tile/ElementGraphics.d.ts +145 -145
  917. package/lib/esm/tile/ElementGraphics.js +8 -8
  918. package/lib/esm/tile/ElementGraphics.js.map +1 -1
  919. package/lib/esm/tile/GltfTileIO.d.ts +45 -45
  920. package/lib/esm/tile/GltfTileIO.js +105 -105
  921. package/lib/esm/tile/GltfTileIO.js.map +1 -1
  922. package/lib/esm/tile/I3dmTileIO.d.ts +20 -20
  923. package/lib/esm/tile/I3dmTileIO.js +36 -36
  924. package/lib/esm/tile/I3dmTileIO.js.map +1 -1
  925. package/lib/esm/tile/IModelTileIO.d.ts +75 -75
  926. package/lib/esm/tile/IModelTileIO.js +90 -90
  927. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  928. package/lib/esm/tile/PntsTileIO.d.ts +17 -17
  929. package/lib/esm/tile/PntsTileIO.js +22 -22
  930. package/lib/esm/tile/PntsTileIO.js.map +1 -1
  931. package/lib/esm/tile/TileIO.d.ts +66 -66
  932. package/lib/esm/tile/TileIO.js +110 -110
  933. package/lib/esm/tile/TileIO.js.map +1 -1
  934. package/lib/esm/tile/TileMetadata.d.ts +228 -228
  935. package/lib/esm/tile/TileMetadata.js +661 -661
  936. package/lib/esm/tile/TileMetadata.js.map +1 -1
  937. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureSymbology.js","sourceRoot":"","sources":["../../src/FeatureSymbology.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA+D;AAC/D,iDAAoD;AAEpD,qDAAiD;AAEjD,yCAAqD;AAGrD,SAAS,oBAAoB,CAAC,GAAmB,EAAE,GAAqB;IACtE,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAChB;SAAM;QACL,KAAK,MAAM,EAAE,IAAI,GAAG;YAClB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KACjB;AACH,CAAC;AA2BD;;;;GAIG;AACH,MAAa,iBAAiB;IAwL5B,YAAsB,KAA6B;QACjD,IAAI,CAAC,GAAG,GAAG,SAAS,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEnC,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvD,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,KAAK,CAAC,yBAAyB;gBACjC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YAExC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;YAEhE,4BAA4B;YAC5B,MAAM,UAAU,GAAG,MAAM,CAAC;YAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,UAAU;gBACtC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;iBACrB,IAAI,IAAI,CAAC,YAAY,GAAG,UAAU;gBACrC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;SAC3B;IACH,CAAC;IAvLM,MAAM,CAAC,QAAQ,CAAC,KAA8B;QACnD,IAAI,SAAS,KAAK,KAAK,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,GAAG,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY,IAAI,SAAS,KAAK,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YAC5N,OAAO,IAAI,CAAC,QAAQ,CAAC;;YAErB,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,OAAO,CAAC,KAAe;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,mBAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAQ,CAAC,KAAe,EAAE,yBAAyB,GAAG,KAAK;QACvE,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnB,GAAG,EAAE,mBAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;YACjC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG;YAClC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC,CAAC;IACL,CAAC;IACD,sEAAsE;IAC/D,MAAM,CAAC,gBAAgB,CAAC,iBAAyB,EAAE,aAAa,GAAG,KAAK;QAC7E,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnB,YAAY,EAAE,iBAAiB;YAC/B,yBAAyB,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAC5D,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,uBAAuB,CAAC,GAAwB;QAC5D,MAAM,GAAG,GAAG,SAAS,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,eAAe,GAAG,SAAS,KAAK,GAAG,CAAC,QAAQ,IAAI,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACpG,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;IACxG,CAAC;IAED,kFAAkF;IAClF,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,IAAW,YAAY,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,IAAW,qBAAqB,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACvF,IAAW,mBAAmB,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnF,IAAW,eAAe,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,IAAW,kBAAkB;QAC3B,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe;eAC/H,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,CAAC;IACrD,CAAC;IACD,IAAW,qBAAqB,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACvF,IAAW,kBAAkB,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC;IAChH,yGAAyG;IACzG,IAAW,aAAa,KAAc,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE9F,MAAM,CAAC,KAAwB;QACpC,IAAI,IAAI,KAAK,KAAK;YAChB,OAAO,IAAI,CAAC;QAEd,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;eAC5B,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;eAC5B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;eAC5C,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;eACpC,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;eAC9C,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;eACxC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;eACpC,IAAI,CAAC,yBAAyB,KAAK,KAAK,CAAC,yBAAyB,CAAC;IAC1E,CAAC;IAEM,MAAM;QACX,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,GAAG;YACV,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAEhC,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM;YAC3B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE7B,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE;YACnC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACvC,IAAI,IAAI,CAAC,yBAAyB;gBAChC,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC;SAC1C;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU;YAC/B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAErC,IAAI,IAAI,KAAK,IAAI,CAAC,eAAe;YAC/B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAE/B,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY;YAC5B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAE5B,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU;YAC1B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAE1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACI,UAAU,CAAC,YAAoC;QACpD,OAAO;YACL,GAAG,IAAI,CAAC,MAAM,EAAE;YAChB,GAAG,YAAY;SAChB,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,YAAoC;QAC/C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,wJAAwJ;IACjJ,gBAAgB,CAAC,IAAuB;QAC7C,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAC1B,OAAO,IAAI,CAAC;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,SAAS,KAAK,KAAK,CAAC,GAAG;YACzB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACvB,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY;YAClC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACzC,IAAI,SAAS,KAAK,KAAK,CAAC,UAAU;YAChC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACrC,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM;YAC5B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,SAAS,KAAK,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;YAC7D,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC/B,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;YACvD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC5B,IAAI,SAAS,KAAK,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;YACnD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAE1B,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,yBAAyB;YACpE,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC;QAEzC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IA6BO,UAAU,CAAC,GAAc;QAC/B,IAAI,SAAS,KAAK,IAAI,CAAC,GAAG;YACxB,OAAO,SAAS,KAAK,GAAG,CAAC;aACtB,IAAI,SAAS,KAAK,GAAG;YACxB,OAAO,KAAK,CAAC;;YAEb,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,mBAAmB,CAAC,MAAe;QACzC,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY;YACjC,OAAO,SAAS,KAAK,MAAM,CAAC;aACzB,IAAI,SAAS,KAAK,MAAM;YAC3B,OAAO,KAAK,CAAC;;YAEb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9E,CAAC;;AAnOH,8CAoOC;AA7MC,4CAA4C;AACrB,0BAAQ,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAsT9D,MAAM,mCAAmC,GAAG;IAC1C,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IACjC,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,gBAAgB;IAsW3B;;OAEG;IACH;QAxWA,gBAAgB;QACG,8BAAyB,GAA+B,EAAE,CAAC;QAC9E,wGAAwG;QACrF,gBAAW,GAAG,IAAI,mBAAI,CAAC,SAAS,EAAE,CAAC;QACtD,4GAA4G;QACzF,iBAAY,GAAG,IAAI,mBAAI,CAAC,SAAS,EAAE,CAAC;QACvD;;WAEG;QACI,2BAAsB,GAAG,KAAK,CAAC;QACtC;;WAEG;QACI,kCAA6B,GAAG,IAAI,CAAC;QAC5C;;WAEG;QACI,sBAAiB,GAAG,KAAK,CAAC;QAEjC,4EAA4E;QAClE,sBAAiB,GAAG,iBAAiB,CAAC,QAAQ,CAAC;QACzD,+DAA+D;QACrD,mBAAc,GAAG,KAAK,CAAC;QACjC,oDAAoD;QAC1C,gBAAW,GAAG,KAAK,CAAC;QAC9B,uDAAuD;QAC7C,cAAS,GAAG,KAAK,CAAC;QAC5B,uGAAuG;QAC7F,iBAAY,GAAG,IAAI,CAAC;QAE9B,2EAA2E;QACxD,oBAAe,GAAG,IAAI,mBAAI,CAAC,SAAS,EAAqB,CAAC;QAC7E,wDAAwD;QACrC,sBAAiB,GAAG,IAAI,mBAAI,CAAC,SAAS,EAAqB,CAAC;QAC/E,6EAA6E;QAC1D,0BAAqB,GAAG,IAAI,mBAAI,CAAC,SAAS,EAAqB,CAAC;QACnF,oIAAoI;QACjH,0BAAqB,GAAG,IAAI,mBAAI,CAAC,SAAS,EAAE,CAAC;QAChE,gJAAgJ;QAC7H,2BAAsB,GAAG,IAAI,mBAAI,CAAC,SAAS,EAAU,CAAC;QAEzE;;;WAGG;QACgB,+BAA0B,GAAG,IAAI,mBAAI,CAAC,SAAS,EAAkB,CAAC;QAErF;;WAEG;QACa,6BAAwB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7D;;WAEG;QACa,2BAAsB,GAAG,IAAI,GAAG,EAA6B,CAAC;QAmT5E,EAAE;IACJ,CAAC;IAlTD;;;;;;;OAOG;IACI,wBAAwB,CAAC,MAAgC;QAC9D,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,6EAA6E;IAC7E,IAAW,gBAAgB,KAAwB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACnF,iGAAiG;IACjG,IAAW,WAAW,KAAc,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAE/D,gBAAgB;IAChB,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,gBAAgB;IAChB,IAAW,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEtD,gBAAgB;IACN,YAAY,CAAC,QAAgB,EAAE,QAAgB,EAAE,eAAuB;QAChF,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC1C,OAAO,IAAI,CAAC;;YAEZ,OAAO,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9D,CAAC;IACD,gBAAgB;IACN,aAAa,CAAC,IAAY,EAAE,IAAY,IAAa,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1G,oHAAoH;IAC7G,oBAAoB,CAAC,IAAY,EAAE,IAAY,IAAa,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACvH,gBAAgB;IACT,2BAA2B,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAAe,EAAE,OAAe;QACrG,IAAI,IAAI,CAAC,iBAAiB;YACxB,OAAO,IAAI,CAAC;QAEd,IAAI,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvE,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC5D,GAAG,GAAG,CAAC,GAAG,CAAC;QAEb,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gBAAgB;IACN,iBAAiB,CAAC,IAAY,EAAE,IAAY;QACpD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,4BAA4B,CAAC,IAAY,EAAE,IAAY,EAAE,eAAuB;QACtF,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC;YACxC,OAAO,SAAS,CAAC;QAEnB,wJAAwJ;QACxJ,4BAA4B;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,eAAe,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,KAAK,CAAC;YAC9E,OAAO,GAAG,CAAC;QAEb,MAAM,IAAI,GAAG,mCAAmC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IACzF,CAAC;IAED,gBAAgB;IACN,mBAAmB,CAAC,IAAY,EAAE,IAAY,EAAE,eAAuB;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;QAC/E,IAAI,OAAO;YACT,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAE/D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB;IACN,uBAAuB,CAAC,IAAY,EAAE,IAAY,IAAmC,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnJ,yEAAyE;IAClE,qBAAqB,CAAC,EAAc,IAAU,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5F,+DAA+D;IACxD,aAAa,CAAC,EAAc,IAAU,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,gEAAgE;IACzD,cAAc,CAAC,EAAc,IAAU,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,qEAAqE;IAC9D,0BAA0B,CAAC,EAAU,IAAU,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9F,8DAA8D;IACvD,gBAAgB,CAAC,GAAyB,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACnG,+DAA+D;IACxD,iBAAiB,CAAC,GAAyB,EAAE,SAAkB,EAAE,iBAAiB,GAAG,IAAI;QAC9F,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;QACxC,IAAI,CAAC,6BAA6B,GAAG,iBAAiB,CAAC;IACzD,CAAC;IAED,8FAA8F;IACvF,oBAAoB,CAAC,OAAgB,EAAE,OAAmB,EAAE,OAAkB,wBAAS,CAAC,OAAO,EAAE,eAAe,GAAG,CAAC;QACzH,OAAO,IAAI,CAAC,aAAa,CACvB,mBAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,mBAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAC9E,mBAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,mBAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EACtF,OAAO,CAAC,aAAa,EACrB,mBAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,mBAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAC1D,IAAI,EAAE,eAAe,CAAC,CAAC;IAC3B,CAAC;IAID;;;OAGG;IACI,aAAa,CAAC,MAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAwB,EAAE,OAAe,EAAE,OAAe,EAAE,IAAe,EAAE,eAAuB;QAC3L,IAAI,wBAAS,CAAC,gBAAgB,KAAK,IAAI,IAAI,wBAAS,CAAC,gBAAgB,KAAK,IAAI;YAC5E,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QAE7G,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAChG,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,SAAS,KAAK,QAAQ;YACxB,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEvC,0BAA0B;QAC1B,IAAI,OAAO,EAAE,WAAW,GAAG,KAAK,CAAC;QAEjC,IAAI,mBAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YAC1C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;gBACpD,OAAO,SAAS,CAAC;YAEnB,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,sBAAsB;gBAC7C,OAAO,SAAS,CAAC;YAEnB,oCAAoC;YACpC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;YACpE,IAAI,SAAS,KAAK,OAAO;gBACvB,GAAG,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAC1E;QAED,IAAI,SAAS,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,mBAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACzE,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;gBAClI,OAAO,SAAS,CAAC;YAEnB,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,SAAS,KAAK,SAAS;gBACzB,GAAG,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SACzC;QAED,gJAAgJ;QAChJ,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,SAAS;YAC5E,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAErD,IAAI,OAAO,GAAG,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,OAAO,IAAI,GAAG,CAAC,kBAAkB;YACnC,OAAO,GAAG,KAAK,CAAC,CAAC,6DAA6D;QAEhF,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACnC,CAAC;IAED;;OAEG;IACO,uBAAuB,CAAC,MAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,OAAe,EAAE,OAAe,EAAE,eAAuB;QAC7J,IAAI,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,SAAS,KAAK,QAAQ;YACxB,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC1E,IAAI,SAAS,KAAK,OAAO;YACvB,GAAG,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAEzE,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,mBAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACzE,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChE,IAAI,SAAS,KAAK,MAAM;gBACtB,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SACtC;QAED,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,QAAQ;YACjD,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAErD,gHAAgH;QAChH,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,SAAwB;QAC5C,QAAQ,SAAS,EAAE;YACjB,KAAK,8BAAa,CAAC,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC;YAC5D,KAAK,8BAAa,CAAC,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC;YACtD,KAAK,8BAAa,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC;YAClD,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;SACtB;IACH,CAAC;IAED,gMAAgM;IACzL,QAAQ,CAAC,IAAmC;QACjD,IAAI,EAAc,CAAC;QACnB,IAAI,GAAsC,CAAC;QAC3C,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;YAChC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;YACpB,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAC9B;aAAM,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;YACrC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAClB,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;SAC5B;aAAM;YACL,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YACxB,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC;SAClC;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,IAAI,GAAG,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO;QAET,MAAM,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,QAAQ,EAAE;YACZ,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,QAAQ,IAAI,CAAC,UAAU,EAAE;gBACvB,KAAK,MAAM;oBACT,OAAO;gBACT,KAAK,QAAQ;oBACX,GAAG,GAAG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACrC,MAAM;gBACR;oBACE,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACrC,MAAM;aACT;SACF;QAED,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACI,aAAa,CAAC,EAAc,EAAE,GAAsB,EAAE,kBAA2B,IAAI;QAC1F,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACpG,CAAC;IAED;;;;;;;OAOG;IACI,mBAAmB,CAAC,EAAc,EAAE,GAAsB,EAAE,kBAA2B,IAAI;QAChG,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED;;;;;;;OAOG;IACI,eAAe,CAAC,EAAc,EAAE,GAAsB,EAAE,kBAA2B,IAAI;QAC5F,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACtG,CAAC;IAED;;;;OAIG;IACI,qBAAqB,CAAC,EAAU,EAAE,GAAsB;QAC7D,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,UAA6B,EAAE,kBAA2B,IAAI;QACvF,IAAI,eAAe,IAAI,CAAC,UAAU,CAAC,kBAAkB;YACnD,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,IAAY,EAAE,IAAY;;QACtD,OAAO,MAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,mCAAI,CAAC,CAAC;IAC1D,CAAC;IASD,qFAAqF;IAC9E,sBAAsB,CAAC,EAAc,IAAa,OAAO,IAAI,CAAC,oBAAoB,CAAC,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9I,2GAA2G;IACpG,qBAAqB,CAAC,EAAc,IAAmC,OAAO,IAAI,CAAC,iBAAiB,CAAC,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChK,6GAA6G;IACtG,uBAAuB,CAAC,EAAc,IAAmC,OAAO,IAAI,CAAC,mBAAmB,CAAC,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvK,iHAAiH;IAC1G,2BAA2B,CAAC,EAAc,IAAmC,OAAO,IAAI,CAAC,uBAAuB,CAAC,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,mBAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5K,2DAA2D;IACpD,gBAAgB,CAAC,OAAgB;QACtC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;QAC5D,MAAM,aAAa,GAAG,CAAC,mBAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,mBAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9E,IAAI,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;YACzF,OAAO,KAAK,CAAC;QAEf,MAAM,WAAW,GAAG,SAAS,KAAK,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1G,IAAI,WAAW,IAAI,IAAI,CAAC,sBAAsB;YAC5C,OAAO,WAAW,CAAC;QAErB,uGAAuG;QACvG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;YAC7C,OAAO,KAAK,CAAC;QAEf,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;;AAxYH,4CAyYC;AApOyB,mCAAkB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAiQzF,cAAc;AACd,IAAiB,yBAAyB,CAqCzC;AArCD,WAAiB,yBAAyB;IACxC,sJAAsJ;IACtJ,SAAS,IAAI,CAAC,MAA+B,EAAE,QAAmC;QAChF,OAAO;YACL,aAAa,EAAE,CAAC,MAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAwB,EAAE,OAAe,EAAE,OAAe,EAAE,IAAe,EAAE,eAAuB,EAAE,EAAE;gBAC1L,OAAO,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;YACvI,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,SAAgB,UAAU,CAAC,oBAA0E;QACnG,OAAO;YACL,oBAAoB,EAAE,CAAC,MAA+B,EAAE,MAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAwB,EAAE,OAAe,EAAE,OAAe,EAAE,IAAe,EAAE,eAAuB,EAAE,EAAE;gBAClO,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;gBACzH,OAAO,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/C,CAAC;SACF,CAAC;IACJ,CAAC;IAPe,oCAAU,aAOzB,CAAA;IAED;;;OAGG;IACH,SAAgB,KAAK,CAAC,KAAgC,EAAE,MAAiC;QACvF,IAAI,KAAK,KAAK,MAAM;YAClB,OAAO,KAAK,CAAC;QAEf,OAAO;YACL,oBAAoB,EAAE,CAAC,MAA+B,EAAE,MAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAwB,EAAE,OAAe,EAAE,OAAe,EAAE,IAAe,EAAE,eAAuB,EAAE,EAAE;gBAClO,OAAO,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;YAClJ,CAAC;SACF,CAAC;IACJ,CAAC;IATe,+BAAK,QASpB,CAAA;AACH,CAAC,EArCgB,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QAqCzC","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, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BatchType, Feature } from \"./FeatureTable\";\r\nimport { ColorDef } from \"./ColorDef\";\r\nimport { GeometryClass } from \"./GeometryParams\";\r\nimport { LinePixels } from \"./LinePixels\";\r\nimport { RgbColor, RgbColorProps } from \"./RgbColor\";\r\nimport { SubCategoryOverride } from \"./SubCategoryOverride\";\r\n\r\nfunction copyIdSetToUint32Set(dst: Id64.Uint32Set, src: Iterable<string>): void {\r\n dst.clear();\r\n if (typeof src === \"string\") {\r\n dst.addId(src);\r\n } else {\r\n for (const id of src)\r\n dst.addId(id);\r\n }\r\n}\r\n\r\n// cspell:ignore subcat subcats\r\n\r\n/** JSON representation of a [[FeatureAppearance]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface FeatureAppearanceProps {\r\n /** See [[FeatureAppearance.rgb]]. */\r\n rgb?: RgbColorProps;\r\n /** See [[FeatureAppearance.weight]]. */\r\n weight?: number;\r\n /** See [[FeatureAppearance.transparency]]. */\r\n transparency?: number;\r\n /** See [[FeatureAppearance.viewDependentTransparency]]. */\r\n viewDependentTransparency?: true;\r\n /** See [[FeatureAppearance.linePixels]]. */\r\n linePixels?: LinePixels;\r\n /** See [[FeatureAppearance.ignoresMaterial]]. */\r\n ignoresMaterial?: true;\r\n /** See [[FeatureAppearance.nonLocatable]]. */\r\n nonLocatable?: true;\r\n /** See [[FeatureAppearance.emphasized]]. */\r\n emphasized?: true;\r\n}\r\n\r\n/** Defines overrides for selected aspects of a [[Feature]]'s symbology.\r\n * Any member defined in the appearance overrides that aspect of symbology for all [[Feature]]s to which the appearance is applied.\r\n * @see [[FeatureOverrides]] to customize the appearance of multiple features.\r\n * @public\r\n */\r\nexport class FeatureAppearance {\r\n /** Overrides the feature's color. */\r\n public readonly rgb?: RgbColor;\r\n /** The width of lines and edges in pixels as an integer in [1, 31]. */\r\n public readonly weight?: number;\r\n /** The transparency in the range [0, 1] where 0 indicates fully opaque and 1 indicates fully transparent.\r\n * @see [[viewDependentTransparency]] for details on how this override interacts with the [DisplayStyle]($backend).\r\n */\r\n public readonly transparency?: number;\r\n /** The pixel pattern applied to lines and edges. */\r\n public readonly linePixels?: LinePixels;\r\n /** If true, don't apply the [[RenderMaterial]] to the feature's surfaces. */\r\n public readonly ignoresMaterial?: true;\r\n /** If true, the feature will not be drawn when using [Viewport.readPixels]($frontend), meaning [Tool]($frontend)s will not be able to interact with it. */\r\n public readonly nonLocatable?: true;\r\n /** If true, the feature will be rendered using the [[Hilite.Settings]] defined by [Viewport.emphasisSettings]($frontend) to make it stand out. */\r\n public readonly emphasized?: true;\r\n /** If true, then [[transparency]] will only be applied if [[ViewFlags.transparency]] is enabled and the current [[RenderMode]] supports transparency.\r\n * Default: false, meaning the transparency will be applied regardless of view flags or render mode.\r\n * This property has no effect if [[transparency]] is `undefined`.\r\n */\r\n public readonly viewDependentTransparency?: true;\r\n\r\n /** An appearance that overrides nothing. */\r\n public static readonly defaults = new FeatureAppearance({});\r\n\r\n public static fromJSON(props?: FeatureAppearanceProps) {\r\n if (undefined === props || (undefined === props.rgb && undefined === props.weight && undefined === props.transparency && undefined === props.linePixels && !props.ignoresMaterial && !props.nonLocatable && !props.emphasized))\r\n return this.defaults;\r\n else\r\n return new FeatureAppearance(props);\r\n }\r\n\r\n /** Create a FeatureAppearance that overrides only the RGB color.\r\n * @note The transparency component of the ColorDef is ignored.\r\n */\r\n public static fromRgb(color: ColorDef): FeatureAppearance {\r\n return this.fromJSON({ rgb: RgbColor.fromColorDef(color) });\r\n }\r\n\r\n /** Create a FeatureAppearance that overrides the RGB and transparency.\r\n * The appearance's transparency is derived from the transparency component of the ColorDef.\r\n */\r\n public static fromRgba(color: ColorDef, viewDependentTransparency = false): FeatureAppearance {\r\n return this.fromJSON({\r\n rgb: RgbColor.fromColorDef(color),\r\n transparency: color.colors.t / 255,\r\n viewDependentTransparency: viewDependentTransparency ? true : undefined,\r\n });\r\n }\r\n /** Create a FeatureAppearance that overrides only the transparency */\r\n public static fromTransparency(transparencyValue: number, viewDependent = false): FeatureAppearance {\r\n return this.fromJSON({\r\n transparency: transparencyValue,\r\n viewDependentTransparency: viewDependent ? true : undefined,\r\n });\r\n }\r\n\r\n /** Create a FeatureAppearance with overrides corresponding to those defined by the supplied SubCategoryOverride.\r\n * @note Subcategory overrides set [[viewDependentTransparency]] to `true`.\r\n */\r\n public static fromSubCategoryOverride(ovr: SubCategoryOverride): FeatureAppearance {\r\n const rgb = undefined !== ovr.color ? RgbColor.fromColorDef(ovr.color) : undefined;\r\n const transparency = ovr.transparency;\r\n const weight = ovr.weight;\r\n const ignoresMaterial = undefined !== ovr.material && Id64.isValid(ovr.material) ? true : undefined;\r\n return this.fromJSON({ rgb, transparency, weight, ignoresMaterial, viewDependentTransparency: true });\r\n }\r\n\r\n /** Returns true if this appearance does not override any aspects of symbology. */\r\n public get matchesDefaults(): boolean {\r\n return this.equals(FeatureAppearance.defaults);\r\n }\r\n\r\n public get overridesRgb(): boolean { return undefined !== this.rgb; }\r\n public get overridesTransparency(): boolean { return undefined !== this.transparency; }\r\n public get overridesLinePixels(): boolean { return undefined !== this.linePixels; }\r\n public get overridesWeight(): boolean { return undefined !== this.weight; }\r\n public get overridesSymbology(): boolean {\r\n return this.overridesRgb || this.overridesTransparency || this.overridesWeight || this.overridesLinePixels || !!this.ignoresMaterial\r\n || this.emphasized || this.overridesNonLocatable;\r\n }\r\n public get overridesNonLocatable(): boolean { return undefined !== this.nonLocatable; }\r\n public get isFullyTransparent(): boolean { return undefined !== this.transparency && this.transparency >= 1.0; }\r\n /** Returns true if any aspect of the appearance is overridden (i.e., if any member is not undefined). */\r\n public get anyOverridden(): boolean { return this.overridesSymbology || this.overridesNonLocatable; }\r\n\r\n public equals(other: FeatureAppearance): boolean {\r\n if (this === other)\r\n return true;\r\n\r\n return this.rgbIsEqual(other.rgb)\r\n && this.weight === other.weight\r\n && this.transparencyIsEqual(other.transparency)\r\n && this.linePixels === other.linePixels\r\n && this.ignoresMaterial === other.ignoresMaterial\r\n && this.nonLocatable === other.nonLocatable\r\n && this.emphasized === other.emphasized\r\n && this.viewDependentTransparency === other.viewDependentTransparency;\r\n }\r\n\r\n public toJSON(): FeatureAppearanceProps {\r\n const props: FeatureAppearanceProps = {};\r\n if (this.rgb)\r\n props.rgb = this.rgb.toJSON();\r\n\r\n if (undefined !== this.weight)\r\n props.weight = this.weight;\r\n\r\n if (undefined !== this.transparency) {\r\n props.transparency = this.transparency;\r\n if (this.viewDependentTransparency)\r\n props.viewDependentTransparency = true;\r\n }\r\n\r\n if (undefined !== this.linePixels)\r\n props.linePixels = this.linePixels;\r\n\r\n if (true === this.ignoresMaterial)\r\n props.ignoresMaterial = true;\r\n\r\n if (true === this.nonLocatable)\r\n props.nonLocatable = true;\r\n\r\n if (true === this.emphasized)\r\n props.emphasized = true;\r\n\r\n return props;\r\n }\r\n\r\n /** Convert this appearance to JSON, and override any properties explicitly specified by `changedProps` in the result.\r\n * Example:\r\n * ```ts\r\n * const base = FeatureAppearance.fromRgba(ColorDef.white); // transparency=0, rgb=white\r\n * const clone = base.cloneProps({ transparency: undefined, weight: 5 }); // transparency=undefined, rgb=white, weight=5\r\n * ```\r\n * @see [[FeatureAppearance.clone]].\r\n */\r\n public cloneProps(changedProps: FeatureAppearanceProps): FeatureAppearanceProps {\r\n return {\r\n ...this.toJSON(),\r\n ...changedProps,\r\n };\r\n }\r\n\r\n /** Create a copy of this appearance, overriding any properties explicitly specified by `changedProps`.\r\n * Example:\r\n * ```ts\r\n * const base = FeatureAppearance.fromRgba(ColorDef.white); // transparency=0, rgb=white\r\n * const clone = base.clone({ transparency: undefined, weight: 5 }); // transparency=undefined, rgb=white, weight=5\r\n * ```\r\n * @see [[FeatureAppearance.cloneProps]].\r\n */\r\n public clone(changedProps: FeatureAppearanceProps): FeatureAppearance {\r\n return FeatureAppearance.fromJSON(this.cloneProps(changedProps));\r\n }\r\n\r\n /** Produce a FeatureAppearance from the supplied appearance in which any aspect not defined by the base appearance is overridden by this appearance. */\r\n public extendAppearance(base: FeatureAppearance): FeatureAppearance {\r\n if (!this.overridesSymbology)\r\n return base;\r\n\r\n const props = base.toJSON();\r\n if (undefined === props.rgb)\r\n props.rgb = this.rgb;\r\n if (undefined === props.transparency)\r\n props.transparency = this.transparency;\r\n if (undefined === props.linePixels)\r\n props.linePixels = this.linePixels;\r\n if (undefined === props.weight)\r\n props.weight = this.weight;\r\n if (undefined === props.ignoresMaterial && this.ignoresMaterial)\r\n props.ignoresMaterial = true;\r\n if (undefined === props.nonLocatable && this.nonLocatable)\r\n props.nonLocatable = true;\r\n if (undefined === props.emphasized && this.emphasized)\r\n props.emphasized = true;\r\n\r\n if (undefined !== props.transparency && this.viewDependentTransparency)\r\n props.viewDependentTransparency = true;\r\n\r\n return FeatureAppearance.fromJSON(props);\r\n }\r\n\r\n protected constructor(props: FeatureAppearanceProps) {\r\n this.rgb = undefined !== props.rgb ? RgbColor.fromJSON(props.rgb) : undefined;\r\n this.weight = props.weight;\r\n this.transparency = props.transparency;\r\n this.linePixels = props.linePixels;\r\n this.ignoresMaterial = props.ignoresMaterial;\r\n this.nonLocatable = props.nonLocatable;\r\n this.emphasized = props.emphasized;\r\n\r\n if (undefined !== this.weight)\r\n this.weight = Math.max(1, Math.min(this.weight, 32));\r\n\r\n if (undefined !== this.transparency) {\r\n if (props.viewDependentTransparency)\r\n this.viewDependentTransparency = true;\r\n\r\n this.transparency = Math.max(0, Math.min(this.transparency, 1));\r\n\r\n // Fix up rounding errors...\r\n const smallDelta = 0.0001;\r\n if (1.0 - this.transparency < smallDelta)\r\n this.transparency = 1.0;\r\n else if (this.transparency < smallDelta)\r\n this.transparency = 0.0;\r\n }\r\n }\r\n\r\n private rgbIsEqual(rgb?: RgbColor): boolean {\r\n if (undefined === this.rgb)\r\n return undefined === rgb;\r\n else if (undefined === rgb)\r\n return false;\r\n else\r\n return this.rgb.equals(rgb);\r\n }\r\n\r\n private transparencyIsEqual(transp?: number): boolean {\r\n if (undefined === this.transparency)\r\n return undefined === transp;\r\n else if (undefined === transp)\r\n return false;\r\n else\r\n return Math.floor(this.transparency * 0xff) === Math.floor(transp * 0xff);\r\n }\r\n}\r\n\r\n/** Interface adopted by an object that can supply a [[FeatureAppearance]] given a low-level description of a [[Feature]].\r\n * @see [[FeatureOverrides]] for the commonly-used implementation.\r\n * @see [[FeatureAppearanceProvider]] to supplement the appearance supplied by this interface.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface FeatureAppearanceSource {\r\n /** Supplies the desired appearance overrides for the specified [[Feature]], or `undefined` if the feature should not be drawn.\r\n * The feature is described by its components for efficiency reasons.\r\n * @param elemLo The lower 32 bits of the feature's element Id.\r\n * @param elemHi The upper 32 bits of the feature's element Id.\r\n * @param subcatLo The lower 32 bits of the feature's subcategory Id.\r\n * @param subcatHi The upper 32 bits of the feature's subcategory Id.\r\n * @param geomClass The geometry class of the feature.\r\n * @param modelLo The lower 32 bits of the feature's model Id.\r\n * @param modelHi The upper 32 bits of the feature's model Id.\r\n * @param type The type of batch to which the feature belongs.\r\n * @param animationNodeId The Id of the corresponding node in the [[RenderSchedule]], or `0` if none.\r\n * @returns The desired appearance overrides, or `undefined` to indicate the feature should not be displayed.\r\n * @see [Id64.isValidUint32Pair]($core-bentley) to determine if the components of an [Id64String]($core-bentley) represent a valid Id.\r\n */\r\n getAppearance(elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined;\r\n}\r\n\r\n/** Common options for [[FeatureOverrides.override]].\r\n * @public\r\n */\r\nexport interface OverrideFeatureAppearanceOptions {\r\n /** Specifies the aspects of the [[Feature]]'s appearance to be overridden. */\r\n appearance: FeatureAppearance;\r\n /** Specifies what to do if a [[FeatureAppearance]] has already been configured for the specified element, model, or subcategory by a previous call to [[FeatureOverrides.override]].\r\n * - \"subsume\" (the default): Merge the two appearances using the logic described by [[FeatureAppearance.extendAppearance]] such that any aspect overridden by the existing appearance will be overwritten\r\n * if also overridden by [[appearance]].\r\n * - The resulting appearance is computed as `existingAppearance.extendAppearance(newAppearance)`.\r\n * - \"extend\": Merge the two appearances using the logic described by [[FeatureAppearance.extendAppearance]] such that any aspect overridden by [[appearance]] will only\r\n * apply if that aspect is not already overridden by a previous appearance.\r\n * - The resulting appearance is computed as `newAppearance.extendAppearance(existingAppearance)`.\r\n * - \"replace\": Completely replace the existing appearance with [[appearance]].\r\n * - \"skip\": Keep the existing appearance.\r\n */\r\n onConflict?: \"extend\" | \"subsume\" | \"replace\" | \"skip\";\r\n}\r\n\r\n/** Options for using [[FeatureOverrides.override]] to override the appearance of a [GeometricModel]($backend).\r\n * @public\r\n */\r\nexport interface OverrideModelAppearanceOptions extends OverrideFeatureAppearanceOptions {\r\n /** The Id of the model whose appearance is to be overridden. */\r\n modelId: Id64String;\r\n /** @internal */\r\n elementId?: never;\r\n /** @internal */\r\n subCategoryId?: never;\r\n}\r\n\r\n/** Options for using [[FeatureOverrides.override]] to override the appearance of a [GeometricElement]($backend).\r\n * @public\r\n */\r\nexport interface OverrideElementAppearanceOptions extends OverrideFeatureAppearanceOptions {\r\n /** The Id of the element whose appearance is to be overridden. */\r\n elementId: Id64String;\r\n /** @internal */\r\n modelId?: never;\r\n /** @internal */\r\n subCategoryId?: never;\r\n}\r\n\r\n/** Options for using [[FeatureOverrides.override]] to override the appearance of a [SubCategory]($backend).\r\n * @public\r\n */\r\nexport interface OverrideSubCategoryAppearanceOptions extends OverrideFeatureAppearanceOptions {\r\n /** The Id of the subcategory whose appearance is to be overridden. */\r\n subCategoryId: Id64String;\r\n /** @internal */\r\n modelId?: never;\r\n /** @internal */\r\n elementId?: never;\r\n}\r\n\r\n/** Arguments supplied to [[FeatureOverrides.override]].\r\n * @public\r\n */\r\nexport type OverrideFeatureAppearanceArgs = OverrideElementAppearanceOptions | OverrideModelAppearanceOptions | OverrideSubCategoryAppearanceOptions;\r\n\r\n/** Arguments provided to a function of type [[IgnoreAnimationOverrides]].\r\n * @see [[FeatureOverrides.ignoreAnimationOverrides]] to register such a function.\r\n * @public\r\n */\r\nexport interface IgnoreAnimationOverridesArgs {\r\n /** The Id of the element under consideration.\r\n * @see [Id64.fromUint32Pair]($bentley) to convert a Uint32Pair into an [Id64String]($bentley), if needed.\r\n */\r\n readonly elementId: Readonly<Id64.Uint32Pair>;\r\n /** The [[RenderSchedule.ElementTimeline.batchId]] identifying the [[RenderSchedule.ElementTimeline]] to which the element under consideration belongs. */\r\n readonly animationNodeId: number;\r\n}\r\n\r\n/** A function that can be supplied to [[FeatureOverrides.ignoreAnimationOverrides]] to indicate whether the color or transparency overrides defined\r\n * by the view's [[RenderSchedule.Script]] should be ignored. The arguments describe the element under consideration. The function should return true if that\r\n * element should not have its color or transparency modified by the schedule script.\r\n * @public\r\n */\r\nexport type IgnoreAnimationOverrides = (args: IgnoreAnimationOverridesArgs) => boolean;\r\n\r\nconst scratchIgnoreAnimationOverridesArgs = {\r\n elementId: { lower: 0, upper: 0 },\r\n animationNodeId: 0,\r\n};\r\n\r\n/** Specifies how to customize the appearance of individual [[Feature]]s, typically within the context of a [Viewport]($frontend).\r\n * Individual aspects of a feature's appearance - like visibility, color, and transparency - are overridden by supplying a [[FeatureAppearance]].\r\n * Those overrides can be specified on the basis of the feature's model, element, and/or subcategory. A default set of overrides can also be specified to\r\n * apply to the appearance of any feature not otherwise overridden.\r\n *\r\n * It is possible to override multiple aspects of a feature on different bases. For example, you might specify that all features belonging to subcategory \"A\" should be drawn in red,\r\n * and that all features belonging to model \"B\" should be drawn 50% transparent. In this case, a feature belonging to both subcategory \"A\" and model \"B\" will be drawn as 50% transparent red -\r\n * the separate overrides are combined to produce the feature's overall appearance.\r\n *\r\n * In the case of conflicts, there is an order of precedence:\r\n * - Model overrides take highest precedence.\r\n * - Element overrides are of higher precedence than subcategory and animation overrides.\r\n * - Overrides applied by a [[RenderSchedule.Script]]'s [[RenderSchedule.ElementTimeline]] are of higher precedence than subcategory overrides, but can be suppressed on a per-element basis via [[ignoreAnimationOverrides]].\r\n * - Subcategory overrides have lowest precedence.\r\n *\r\n * For example, you might specify that all features belonging to subcategory \"A\" should be drawn in red, and all those belonging to model \"B\" should be drawn in green.\r\n * Then a feature belonging to subcategory \"A\" and model \"B\" will be drawn in green, because the model overrides take precedence.\r\n *\r\n * Instances of this class are not typically instantiated by an application directly; instead, an application can implement a [FeatureOverrideProvider]($frontend)\r\n * that augments the overrides supplied by a viewport.\r\n *\r\n * @see [FeatureSymbology.Overrides]($frontend) to create overrides specific to a [Viewport]($frontend) or [ViewState]($frontend).\r\n * @see [FeatureOverrideProvider]($frontend) to customize the appearance of features within a [Viewport]($frontend).\r\n * @public\r\n */\r\nexport class FeatureOverrides implements FeatureAppearanceSource {\r\n /** @internal */\r\n protected readonly _ignoreAnimationOverrides: IgnoreAnimationOverrides[] = [];\r\n /** Ids of elements that should never be drawn. This takes precedence over [[alwaysDrawn]]. @internal */\r\n protected readonly _neverDrawn = new Id64.Uint32Set();\r\n /** Ids of elements that should always be drawn. [[neverDrawn]] takes precedence over this set. @internal */\r\n protected readonly _alwaysDrawn = new Id64.Uint32Set();\r\n /** If true, no elements *except* those defined in the \"always drawn\" set will be drawn.\r\n * @see [[setAlwaysDrawn]]\r\n */\r\n public isAlwaysDrawnExclusive = false;\r\n /** If true, the always-drawn elements are drawn even if their subcategories are not visible.\r\n * @see [[setAlwaysDrawn]]\r\n */\r\n public alwaysDrawnIgnoresSubCategory = true;\r\n /** If true, all subcategories are considered visible. This is used for drawing sheets via section callouts in the absence of an actual sheet view.\r\n * @internal\r\n */\r\n public ignoreSubCategory = false;\r\n\r\n /** Overrides applied to any feature not explicitly overridden. @internal */\r\n protected _defaultOverrides = FeatureAppearance.defaults;\r\n /** Whether construction geometry should be drawn. @internal */\r\n protected _constructions = false;\r\n /** Whether dimensions should be drawn. @internal */\r\n protected _dimensions = false;\r\n /** Whether area patterns should be drawn. @internal */\r\n protected _patterns = false;\r\n /** Whether line weights should be applied. If false, all lines are rendered 1-pixel wide. @internal */\r\n protected _lineWeights = true;\r\n\r\n /** Overrides applied to all elements belonging to each model. @internal */\r\n protected readonly _modelOverrides = new Id64.Uint32Map<FeatureAppearance>();\r\n /** Overrides applied to specific elements. @internal */\r\n protected readonly _elementOverrides = new Id64.Uint32Map<FeatureAppearance>();\r\n /** Overrides applied to geometry belonging to each subcategory. @internal */\r\n protected readonly _subCategoryOverrides = new Id64.Uint32Map<FeatureAppearance>();\r\n /** The set of displayed subcategories. Geometry belonging to subcategories not included in this set will not be drawn. @internal */\r\n protected readonly _visibleSubCategories = new Id64.Uint32Set();\r\n /** Display priorities assigned to subcategories, possibly overridden by display style. Only applicable for plan projection models. @internal */\r\n protected readonly _subCategoryPriorities = new Id64.Uint32Map<number>();\r\n\r\n /** Per-model, a set of subcategories whose visibility should be inverted for elements within that model.\r\n * Populated by Viewport.\r\n * @internal\r\n */\r\n protected readonly _modelSubCategoryOverrides = new Id64.Uint32Map<Id64.Uint32Set>();\r\n\r\n /** Ids of animation nodes that should never be drawn.\r\n * @internal\r\n */\r\n public readonly neverDrawnAnimationNodes = new Set<number>();\r\n /** Mapping of animation node Ids to overrides applied to the corresponding animation nodes.\r\n * @internal\r\n */\r\n public readonly animationNodeOverrides = new Map<number, FeatureAppearance>();\r\n\r\n /** Accepts a criterion that determines whether color and transparency overrides originating from the view's [[RenderSchedule.Script]] should be ignored for a given element.\r\n * The function receives a description of the element in question and returns `true` if the script's overrides should be ignored.\r\n * Any number of such functions can be registered; if any one of them returns `true`, the script's overrides are not applied to the specified element.\r\n *\r\n * For example, applications commonly emphasize a set of elements by applying a [[FeatureAppearance.emphasized]] override to them, and specifying a highly-transparent\r\n * default appearance to de-emphasize the rest of the elements in the view. If some of the de-emphasized elements' appearances are also being overridden by the schedule script, then\r\n * they won't appear de-emphasized, making it difficult for the emphasized elements to stand out. In situations like this, [FeatureOverrideProvider]($frontend)s like [EmphasizeElements]($frontend) can register an [[IgnoreAnimationOverrides]] function that returns true if the element in question is not in the set of emphasized elements.\r\n */\r\n public ignoreAnimationOverrides(ignore: IgnoreAnimationOverrides): void {\r\n this._ignoreAnimationOverrides.push(ignore);\r\n }\r\n\r\n /** Overrides applied to features for which no other overrides are defined */\r\n public get defaultOverrides(): FeatureAppearance { return this._defaultOverrides; }\r\n /** Whether or not line weights are applied. If false, all lines are drawn with a weight of 1. */\r\n public get lineWeights(): boolean { return this._lineWeights; }\r\n\r\n /** @internal */\r\n public get neverDrawn() { return this._neverDrawn; }\r\n /** @internal */\r\n public get alwaysDrawn() { return this._alwaysDrawn; }\r\n\r\n /** @internal */\r\n protected isNeverDrawn(elemIdLo: number, elemIdHi: number, animationNodeId: number): boolean {\r\n if (this._neverDrawn.has(elemIdLo, elemIdHi))\r\n return true;\r\n else\r\n return this.neverDrawnAnimationNodes.has(animationNodeId);\r\n }\r\n /** @internal */\r\n protected isAlwaysDrawn(idLo: number, idHi: number): boolean { return this._alwaysDrawn.has(idLo, idHi); }\r\n /** Returns true if the [SubCategory]($backend) specified by Id is in the set of visible subcategories. @internal */\r\n public isSubCategoryVisible(idLo: number, idHi: number): boolean { return this._visibleSubCategories.has(idLo, idHi); }\r\n /** @internal */\r\n public isSubCategoryVisibleInModel(subcatLo: number, subcatHi: number, modelLo: number, modelHi: number): boolean {\r\n if (this.ignoreSubCategory)\r\n return true;\r\n\r\n let vis = this.isSubCategoryVisible(subcatLo, subcatHi);\r\n const modelOvr = this._modelSubCategoryOverrides.get(modelLo, modelHi);\r\n if (undefined !== modelOvr && modelOvr.has(subcatLo, subcatHi))\r\n vis = !vis;\r\n\r\n return vis;\r\n }\r\n\r\n /** @internal */\r\n protected getModelOverrides(idLo: number, idHi: number): FeatureAppearance | undefined {\r\n return this._modelOverrides.get(idLo, idHi);\r\n }\r\n\r\n private getElementAnimationOverrides(idLo: number, idHi: number, animationNodeId: number): FeatureAppearance | undefined {\r\n if (this.animationNodeOverrides.size === 0)\r\n return undefined;\r\n\r\n // NB: An animation node Id of zero means \"not animated\". Some providers like EmphasizeElements may provide an appearance override for unanimated nodes.\r\n // That should be preserved.\r\n const app = this.animationNodeOverrides.get(animationNodeId);\r\n if (!app || 0 === animationNodeId || this._ignoreAnimationOverrides.length === 0)\r\n return app;\r\n\r\n const args = scratchIgnoreAnimationOverridesArgs;\r\n args.elementId.lower = idLo;\r\n args.elementId.upper = idHi;\r\n args.animationNodeId = animationNodeId;\r\n return this._ignoreAnimationOverrides.some((ignore) => ignore(args)) ? undefined : app;\r\n }\r\n\r\n /** @internal */\r\n protected getElementOverrides(idLo: number, idHi: number, animationNodeId: number): FeatureAppearance | undefined {\r\n const elemApp = this._elementOverrides.get(idLo, idHi);\r\n const nodeApp = this.getElementAnimationOverrides(idLo, idHi, animationNodeId);\r\n if (elemApp)\r\n return nodeApp ? nodeApp.extendAppearance(elemApp) : elemApp;\r\n\r\n return nodeApp;\r\n }\r\n\r\n /** @internal */\r\n protected getSubCategoryOverrides(idLo: number, idHi: number): FeatureAppearance | undefined { return this._subCategoryOverrides.get(idLo, idHi); }\r\n\r\n /** Add a [SubCategory]($backend) to the set of visible subcategories. */\r\n public setVisibleSubCategory(id: Id64String): void { this._visibleSubCategories.addId(id); }\r\n /** Specify the Id of an element that should never be drawn. */\r\n public setNeverDrawn(id: Id64String): void { this._neverDrawn.addId(id); }\r\n /** Specify the Id of an element that should always be drawn. */\r\n public setAlwaysDrawn(id: Id64String): void { this._alwaysDrawn.addId(id); }\r\n /** Specify the Id of a animation node that should never be drawn. */\r\n public setAnimationNodeNeverDrawn(id: number): void { this.neverDrawnAnimationNodes.add(id); }\r\n /** Specify the Ids of elements that should never be drawn. */\r\n public setNeverDrawnSet(ids: Iterable<Id64String>) { copyIdSetToUint32Set(this._neverDrawn, ids); }\r\n /** Specify the Ids of elements that should always be drawn. */\r\n public setAlwaysDrawnSet(ids: Iterable<Id64String>, exclusive: boolean, ignoreSubCategory = true) {\r\n copyIdSetToUint32Set(this._alwaysDrawn, ids);\r\n this.isAlwaysDrawnExclusive = exclusive;\r\n this.alwaysDrawnIgnoresSubCategory = ignoreSubCategory;\r\n }\r\n\r\n /** Returns the feature's appearance overrides, or undefined if the feature is not visible. */\r\n public getFeatureAppearance(feature: Feature, modelId: Id64String, type: BatchType = BatchType.Primary, animationNodeId = 0): FeatureAppearance | undefined {\r\n return this.getAppearance(\r\n Id64.getLowerUint32(feature.elementId), Id64.getUpperUint32(feature.elementId),\r\n Id64.getLowerUint32(feature.subCategoryId), Id64.getUpperUint32(feature.subCategoryId),\r\n feature.geometryClass,\r\n Id64.getLowerUint32(modelId), Id64.getUpperUint32(modelId),\r\n type, animationNodeId);\r\n }\r\n\r\n private static readonly _weight1Appearance = FeatureAppearance.fromJSON({ weight: 1 });\r\n\r\n /** Returns a feature's appearance overrides, or undefined if the feature is not visible.\r\n * Takes Id64s as pairs of unsigned 32-bit integers for efficiency, because that is how they are stored by the PackedFeatureTable associated with each batch of graphics.\r\n * @see [[getFeatureAppearance]] for an equivalent function that accepts [Id64String]($core-bentley)s instead of integer pairs.\r\n */\r\n public getAppearance(elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\r\n if (BatchType.VolumeClassifier === type || BatchType.PlanarClassifier === type)\r\n return this.getClassifierAppearance(elemLo, elemHi, subcatLo, subcatHi, modelLo, modelHi, animationNodeId);\r\n\r\n let app = !this._lineWeights ? FeatureOverrides._weight1Appearance : FeatureAppearance.defaults;\r\n const modelApp = this.getModelOverrides(modelLo, modelHi);\r\n if (undefined !== modelApp)\r\n app = modelApp.extendAppearance(app);\r\n\r\n // Is the element visible?\r\n let elemApp, alwaysDrawn = false;\r\n\r\n if (Id64.isValidUint32Pair(elemLo, elemHi)) {\r\n if (this.isNeverDrawn(elemLo, elemHi, animationNodeId))\r\n return undefined;\r\n\r\n alwaysDrawn = this.isAlwaysDrawn(elemLo, elemHi);\r\n if (!alwaysDrawn && this.isAlwaysDrawnExclusive)\r\n return undefined;\r\n\r\n // Element overrides take precedence\r\n elemApp = this.getElementOverrides(elemLo, elemHi, animationNodeId);\r\n if (undefined !== elemApp)\r\n app = undefined !== modelApp ? elemApp.extendAppearance(app) : elemApp;\r\n }\r\n\r\n let subCatApp;\r\n if (!this.ignoreSubCategory && Id64.isValidUint32Pair(subcatLo, subcatHi)) {\r\n if ((!alwaysDrawn || !this.alwaysDrawnIgnoresSubCategory) && !this.isSubCategoryVisibleInModel(subcatLo, subcatHi, modelLo, modelHi))\r\n return undefined;\r\n\r\n subCatApp = this.getSubCategoryOverrides(subcatLo, subcatHi);\r\n if (undefined !== subCatApp)\r\n app = subCatApp.extendAppearance(app);\r\n }\r\n\r\n // Only apply default if *no* appearance was explicitly registered (doesn't matter if registered appearance does not actually override anything)\r\n if (undefined === elemApp && undefined === modelApp && undefined === subCatApp)\r\n app = this._defaultOverrides.extendAppearance(app);\r\n\r\n let visible = alwaysDrawn || this.isClassVisible(geomClass);\r\n if (visible && app.isFullyTransparent)\r\n visible = false; // don't bother rendering something with full transparency...\r\n\r\n return visible ? app : undefined;\r\n }\r\n\r\n /** Classifiers behave totally differently...in particular they are never invisible unless fully-transparent.\r\n * @internal\r\n */\r\n protected getClassifierAppearance(elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, modelLo: number, modelHi: number, animationNodeId: number): FeatureAppearance | undefined {\r\n let app = FeatureAppearance.defaults;\r\n const modelApp = this.getModelOverrides(modelLo, modelHi);\r\n if (undefined !== modelApp)\r\n app = modelApp.extendAppearance(app);\r\n\r\n const elemApp = this.getElementOverrides(elemLo, elemHi, animationNodeId);\r\n if (undefined !== elemApp)\r\n app = undefined !== modelApp ? elemApp.extendAppearance(app) : elemApp;\r\n\r\n if (!this.ignoreSubCategory && Id64.isValidUint32Pair(subcatLo, subcatHi)) {\r\n const subCat = this.getSubCategoryOverrides(subcatLo, subcatHi);\r\n if (undefined !== subCat)\r\n app = subCat.extendAppearance(app);\r\n }\r\n\r\n if (undefined === elemApp && undefined === modelApp)\r\n app = this._defaultOverrides.extendAppearance(app);\r\n\r\n // NB: A fully-transparent classifier means the classifier is a clip mask - classified pixels will be discarded.\r\n return app;\r\n }\r\n\r\n /** Return whether geometry of the specified class should be drawn.\r\n * @see [[ViewFlags.constructions]], [[ViewFlags.dimensions]], and [[ViewFlags.patterns]].\r\n */\r\n public isClassVisible(geomClass: GeometryClass): boolean {\r\n switch (geomClass) {\r\n case GeometryClass.Construction: return this._constructions;\r\n case GeometryClass.Dimension: return this._dimensions;\r\n case GeometryClass.Pattern: return this._patterns;\r\n default: return true;\r\n }\r\n }\r\n\r\n /** Specify overrides for all elements belonging to a specified [GeometricModel]($backend), or all geometry belonging to a specified [GeometricElement]($backend) or [SubCategory]($backend). */\r\n public override(args: OverrideFeatureAppearanceArgs): void {\r\n let id: Id64String;\r\n let map: Id64.Uint32Map<FeatureAppearance>;\r\n if (undefined !== args.elementId) {\r\n id = args.elementId;\r\n map = this._elementOverrides;\r\n } else if (undefined !== args.modelId) {\r\n id = args.modelId;\r\n map = this._modelOverrides;\r\n } else {\r\n id = args.subCategoryId;\r\n map = this._subCategoryOverrides;\r\n }\r\n\r\n let app = args.appearance;\r\n const idLo = Id64.getLowerUint32(id);\r\n const idHi = Id64.getUpperUint32(id);\r\n\r\n if (undefined !== args.elementId && this.isNeverDrawn(idLo, idHi, 0))\r\n return;\r\n\r\n const replace = \"replace\" === args.onConflict;\r\n const existing = replace ? undefined : map.get(idLo, idHi);\r\n if (existing) {\r\n assert(\"replace\" !== args.onConflict);\r\n switch (args.onConflict) {\r\n case \"skip\":\r\n return;\r\n case \"extend\":\r\n app = app.extendAppearance(existing);\r\n break;\r\n default:\r\n app = existing.extendAppearance(app);\r\n break;\r\n }\r\n }\r\n\r\n map.set(idLo, idHi, app);\r\n }\r\n\r\n /** Specify overrides for all elements within the specified model.\r\n * @param id The Id of the model.\r\n * @param app The symbology overrides.\r\n * @param replaceExisting Specifies whether to replace a pre-existing override for the same model.\r\n * @note These overrides take priority over all other overrides.\r\n * @note If [[defaultOverrides]] are defined, they will not apply to any element within this model, even if the supplied appearance overrides nothing.\r\n * @deprecated Use [[FeatureOverrides.override]].\r\n */\r\n public overrideModel(id: Id64String, app: FeatureAppearance, replaceExisting: boolean = true): void {\r\n this.override({ modelId: id, appearance: app, onConflict: replaceExisting ? \"replace\" : \"skip\" });\r\n }\r\n\r\n /** Specify overrides for all geometry belonging to the specified [SubCategory]($backend).\r\n * @param id The Id of the subcategory.\r\n * @param app The symbology overrides.\r\n * @param replaceExisting Specifies whether to replace a pre-existing override for the same subcategory.\r\n * @note These overrides have lower priority than element and model overrides.\r\n * @note If [[defaultOverrides]] are defined, they will not apply to any geometry within this subcategory, even if the supplied appearance overrides nothing.\r\n * @deprecated Use [[FeatureOverrides.override]].\r\n */\r\n public overrideSubCategory(id: Id64String, app: FeatureAppearance, replaceExisting: boolean = true): void {\r\n this.override({ subCategoryId: id, appearance: app, onConflict: replaceExisting ? \"replace\" : \"skip\" });\r\n }\r\n\r\n /** Specify overrides for all geometry originating from the specified element.\r\n * @param id The Id of the element.\r\n * @param app The symbology overrides.\r\n * @param replaceExisting Specifies whether to replace a pre-existing override for the same element.\r\n * @note These overrides take precedence over subcategory overrides, but not over model overrides.\r\n * @note If [[defaultOverrides]] are defined, they will not apply to this element, even if the supplied appearance overrides nothing.\r\n * @deprecated Use [[FeatureOverrides.override]].\r\n */\r\n public overrideElement(id: Id64String, app: FeatureAppearance, replaceExisting: boolean = true): void {\r\n this.override({ elementId: id, appearance: app, onConflict: replaceExisting ? \"replace\" : \"skip\" });\r\n }\r\n\r\n /** Specify overrides for all geometry originating from the specified animation node.\r\n * @param id The Id of the animation node.\r\n * @param app The symbology overrides.\r\n * @note These overrides do not take precedence over element overrides.\r\n */\r\n public overrideAnimationNode(id: number, app: FeatureAppearance): void {\r\n this.animationNodeOverrides.set(id, app);\r\n }\r\n\r\n /** Defines a default appearance to be applied to any [[Feature]] *not* explicitly overridden.\r\n * @param appearance The symbology overrides.\r\n * @param replaceExisting Specifies whether to replace the current default overrides if they are already defined.\r\n */\r\n public setDefaultOverrides(appearance: FeatureAppearance, replaceExisting: boolean = true): void {\r\n if (replaceExisting || !appearance.overridesSymbology)\r\n this._defaultOverrides = appearance;\r\n }\r\n\r\n /** Get the display priority of a subcategory. This is only relevant when using [[PlanProjectionSettings]].\r\n * @internal\r\n */\r\n public getSubCategoryPriority(idLo: number, idHi: number): number {\r\n return this._subCategoryPriorities.get(idLo, idHi) ?? 0;\r\n }\r\n\r\n /** Construct a new Overrides that overrides nothing.\r\n * @see [FeatureSymbology.Overrides]($frontend) to construct overrides based on a [ViewState]($frontend) or [Viewport]($frontend).\r\n */\r\n public constructor() {\r\n //\r\n }\r\n\r\n /** Returns true if geometry belonging to the specified subcategory will be drawn. */\r\n public isSubCategoryIdVisible(id: Id64String): boolean { return this.isSubCategoryVisible(Id64.getLowerUint32(id), Id64.getUpperUint32(id)); }\r\n /** Returns the overrides applied to geometry belonging to the specified model, if any such are defined. */\r\n public getModelOverridesById(id: Id64String): FeatureAppearance | undefined { return this.getModelOverrides(Id64.getLowerUint32(id), Id64.getUpperUint32(id)); }\r\n /** Returns the overrides applied to geometry belonging to the specified element, if any such are defined. */\r\n public getElementOverridesById(id: Id64String): FeatureAppearance | undefined { return this.getElementOverrides(Id64.getLowerUint32(id), Id64.getUpperUint32(id), 0); }\r\n /** Returns the overrides applied to geometry belonging to the specified subcategory, if any such are defined. */\r\n public getSubCategoryOverridesById(id: Id64String): FeatureAppearance | undefined { return this.getSubCategoryOverrides(Id64.getLowerUint32(id), Id64.getUpperUint32(id)); }\r\n\r\n /** Returns true if the specified Feature will be drawn. */\r\n public isFeatureVisible(feature: Feature): boolean {\r\n const { elementId, subCategoryId, geometryClass } = feature;\r\n const isValidElemId = !Id64.isInvalid(elementId);\r\n const elemIdParts = isValidElemId ? Id64.getUint32Pair(elementId) : undefined;\r\n\r\n if (undefined !== elemIdParts && this.isNeverDrawn(elemIdParts.lower, elemIdParts.upper, 0))\r\n return false;\r\n\r\n const alwaysDrawn = undefined !== elemIdParts && this.isAlwaysDrawn(elemIdParts.lower, elemIdParts.upper);\r\n if (alwaysDrawn || this.isAlwaysDrawnExclusive)\r\n return alwaysDrawn;\r\n\r\n // NB: This ignores per-model subcategory visibility overrides, because caller did not specify a model.\r\n if (!this.isSubCategoryIdVisible(subCategoryId))\r\n return false;\r\n\r\n return this.isClassVisible(geometryClass);\r\n }\r\n}\r\n\r\n/** Interface adopted by an object that can supply the [[FeatureAppearance]] supplied by a [[FeatureAppearanceSource]].\r\n * This is useful for selectively overriding or agumenting a [Viewport]($frontend)'s symbology overrides.\r\n * A typical implementation will invoke [[FeatureAppearanceSource.getAppeaprance]] and customize the returned appearance.\r\n * @see [[FeatureAppearanceProvider.chain]] to chain two providers together.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface FeatureAppearanceProvider {\r\n /** Supply the desired appearance overrides for the specified [[Feature]], or `undefined` if the feature should not be drawn.\r\n * The feature is described by its components for efficiency reasons.\r\n * @param source The base symbology overrides, e.g., typically defined by a [Viewport]($frontend).\r\n * @param elemLo The lower 32 bits of the feature's element Id.\r\n * @param elemHi The upper 32 bits of the feature's element Id.\r\n * @param subcatLo The lower 32 bits of the feature's subcategory Id.\r\n * @param subcatHi The upper 32 bits of the feature's subcategory Id.\r\n * @param geomClass The geometry class of the feature.\r\n * @param modelLo The lower 32 bits of the feature's model Id.\r\n * @param modelHi The upper 32 bits of the feature's model Id.\r\n * @param type The type of batch to which the feature belongs.\r\n * @param animationNodeId The Id of the corresponding node in the [[RenderSchedule]], or `0` if none.\r\n * @returns The desired appearance overrides, or `undefined` to indicate the feature should not be displayed.\r\n * @see [[FeatureAppearanceSource.getAppearance]] to forward the request to the source.\r\n * @see [Id64.isValidUint32Pair]($core-bentley) to determine if the components of an [Id64String]($core-bentley) represent a valid Id.\r\n */\r\n getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined;\r\n}\r\n\r\n/** @public */\r\nexport namespace FeatureAppearanceProvider {\r\n /** Produce a FeatureAppearanceSource for which `getAppearance()` returns the appearance specified in `source`, potentially modified by `provider`. */\r\n function wrap(source: FeatureAppearanceSource, provider: FeatureAppearanceProvider): FeatureAppearanceSource {\r\n return {\r\n getAppearance: (elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number) => {\r\n return provider.getFeatureAppearance(source, elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n },\r\n };\r\n }\r\n\r\n /** Create a provider that obtains each feature's appearance from the source, and if the feature is visible, modifies the appearance.\r\n * @param supplementAppearance A function accepting the feature's base appearance and returning a supplemental appearance.\r\n * @public\r\n */\r\n export function supplement(supplementAppearance: (appearance: FeatureAppearance) => FeatureAppearance): FeatureAppearanceProvider {\r\n return {\r\n getFeatureAppearance: (source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number) => {\r\n const app = source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n return app ? supplementAppearance(app) : app;\r\n },\r\n };\r\n }\r\n\r\n /** Chain two FeatureAppearanceProviders together such that `first`'s `getFeatureAppearance` function is applied before `second`'s.\r\n * If `second` invokes `source.getAppearance()`, the returned appearance will include any modifications applied by `first`.\r\n * @public\r\n */\r\n export function chain(first: FeatureAppearanceProvider, second: FeatureAppearanceProvider): FeatureAppearanceProvider {\r\n if (first === second)\r\n return first;\r\n\r\n return {\r\n getFeatureAppearance: (source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number) => {\r\n return second.getFeatureAppearance(wrap(source, first), elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\r\n },\r\n };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureSymbology.js","sourceRoot":"","sources":["../../src/FeatureSymbology.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { BatchType, Feature } from \"./FeatureTable\";\nimport { ColorDef } from \"./ColorDef\";\nimport { GeometryClass } from \"./GeometryParams\";\nimport { LinePixels } from \"./LinePixels\";\nimport { RgbColor, RgbColorProps } from \"./RgbColor\";\nimport { SubCategoryOverride } from \"./SubCategoryOverride\";\n\nfunction copyIdSetToUint32Set(dst: Id64.Uint32Set, src: Iterable<string>): void {\n dst.clear();\n if (typeof src === \"string\") {\n dst.addId(src);\n } else {\n for (const id of src)\n dst.addId(id);\n }\n}\n\n// cspell:ignore subcat subcats\n\n/** JSON representation of a [[FeatureAppearance]].\n * @public\n * @extensions\n */\nexport interface FeatureAppearanceProps {\n /** See [[FeatureAppearance.rgb]]. */\n rgb?: RgbColorProps;\n /** See [[FeatureAppearance.weight]]. */\n weight?: number;\n /** See [[FeatureAppearance.transparency]]. */\n transparency?: number;\n /** See [[FeatureAppearance.viewDependentTransparency]]. */\n viewDependentTransparency?: true;\n /** See [[FeatureAppearance.linePixels]]. */\n linePixels?: LinePixels;\n /** See [[FeatureAppearance.ignoresMaterial]]. */\n ignoresMaterial?: true;\n /** See [[FeatureAppearance.nonLocatable]]. */\n nonLocatable?: true;\n /** See [[FeatureAppearance.emphasized]]. */\n emphasized?: true;\n}\n\n/** Defines overrides for selected aspects of a [[Feature]]'s symbology.\n * Any member defined in the appearance overrides that aspect of symbology for all [[Feature]]s to which the appearance is applied.\n * @see [[FeatureOverrides]] to customize the appearance of multiple features.\n * @public\n */\nexport class FeatureAppearance {\n /** Overrides the feature's color. */\n public readonly rgb?: RgbColor;\n /** The width of lines and edges in pixels as an integer in [1, 31]. */\n public readonly weight?: number;\n /** The transparency in the range [0, 1] where 0 indicates fully opaque and 1 indicates fully transparent.\n * @see [[viewDependentTransparency]] for details on how this override interacts with the [DisplayStyle]($backend).\n */\n public readonly transparency?: number;\n /** The pixel pattern applied to lines and edges. */\n public readonly linePixels?: LinePixels;\n /** If true, don't apply the [[RenderMaterial]] to the feature's surfaces. */\n public readonly ignoresMaterial?: true;\n /** If true, the feature will not be drawn when using [Viewport.readPixels]($frontend), meaning [Tool]($frontend)s will not be able to interact with it. */\n public readonly nonLocatable?: true;\n /** If true, the feature will be rendered using the [[Hilite.Settings]] defined by [Viewport.emphasisSettings]($frontend) to make it stand out. */\n public readonly emphasized?: true;\n /** If true, then [[transparency]] will only be applied if [[ViewFlags.transparency]] is enabled and the current [[RenderMode]] supports transparency.\n * Default: false, meaning the transparency will be applied regardless of view flags or render mode.\n * This property has no effect if [[transparency]] is `undefined`.\n */\n public readonly viewDependentTransparency?: true;\n\n /** An appearance that overrides nothing. */\n public static readonly defaults = new FeatureAppearance({});\n\n public static fromJSON(props?: FeatureAppearanceProps) {\n if (undefined === props || (undefined === props.rgb && undefined === props.weight && undefined === props.transparency && undefined === props.linePixels && !props.ignoresMaterial && !props.nonLocatable && !props.emphasized))\n return this.defaults;\n else\n return new FeatureAppearance(props);\n }\n\n /** Create a FeatureAppearance that overrides only the RGB color.\n * @note The transparency component of the ColorDef is ignored.\n */\n public static fromRgb(color: ColorDef): FeatureAppearance {\n return this.fromJSON({ rgb: RgbColor.fromColorDef(color) });\n }\n\n /** Create a FeatureAppearance that overrides the RGB and transparency.\n * The appearance's transparency is derived from the transparency component of the ColorDef.\n */\n public static fromRgba(color: ColorDef, viewDependentTransparency = false): FeatureAppearance {\n return this.fromJSON({\n rgb: RgbColor.fromColorDef(color),\n transparency: color.colors.t / 255,\n viewDependentTransparency: viewDependentTransparency ? true : undefined,\n });\n }\n /** Create a FeatureAppearance that overrides only the transparency */\n public static fromTransparency(transparencyValue: number, viewDependent = false): FeatureAppearance {\n return this.fromJSON({\n transparency: transparencyValue,\n viewDependentTransparency: viewDependent ? true : undefined,\n });\n }\n\n /** Create a FeatureAppearance with overrides corresponding to those defined by the supplied SubCategoryOverride.\n * @note Subcategory overrides set [[viewDependentTransparency]] to `true`.\n */\n public static fromSubCategoryOverride(ovr: SubCategoryOverride): FeatureAppearance {\n const rgb = undefined !== ovr.color ? RgbColor.fromColorDef(ovr.color) : undefined;\n const transparency = ovr.transparency;\n const weight = ovr.weight;\n const ignoresMaterial = undefined !== ovr.material && Id64.isValid(ovr.material) ? true : undefined;\n return this.fromJSON({ rgb, transparency, weight, ignoresMaterial, viewDependentTransparency: true });\n }\n\n /** Returns true if this appearance does not override any aspects of symbology. */\n public get matchesDefaults(): boolean {\n return this.equals(FeatureAppearance.defaults);\n }\n\n public get overridesRgb(): boolean { return undefined !== this.rgb; }\n public get overridesTransparency(): boolean { return undefined !== this.transparency; }\n public get overridesLinePixels(): boolean { return undefined !== this.linePixels; }\n public get overridesWeight(): boolean { return undefined !== this.weight; }\n public get overridesSymbology(): boolean {\n return this.overridesRgb || this.overridesTransparency || this.overridesWeight || this.overridesLinePixels || !!this.ignoresMaterial\n || this.emphasized || this.overridesNonLocatable;\n }\n public get overridesNonLocatable(): boolean { return undefined !== this.nonLocatable; }\n public get isFullyTransparent(): boolean { return undefined !== this.transparency && this.transparency >= 1.0; }\n /** Returns true if any aspect of the appearance is overridden (i.e., if any member is not undefined). */\n public get anyOverridden(): boolean { return this.overridesSymbology || this.overridesNonLocatable; }\n\n public equals(other: FeatureAppearance): boolean {\n if (this === other)\n return true;\n\n return this.rgbIsEqual(other.rgb)\n && this.weight === other.weight\n && this.transparencyIsEqual(other.transparency)\n && this.linePixels === other.linePixels\n && this.ignoresMaterial === other.ignoresMaterial\n && this.nonLocatable === other.nonLocatable\n && this.emphasized === other.emphasized\n && this.viewDependentTransparency === other.viewDependentTransparency;\n }\n\n public toJSON(): FeatureAppearanceProps {\n const props: FeatureAppearanceProps = {};\n if (this.rgb)\n props.rgb = this.rgb.toJSON();\n\n if (undefined !== this.weight)\n props.weight = this.weight;\n\n if (undefined !== this.transparency) {\n props.transparency = this.transparency;\n if (this.viewDependentTransparency)\n props.viewDependentTransparency = true;\n }\n\n if (undefined !== this.linePixels)\n props.linePixels = this.linePixels;\n\n if (true === this.ignoresMaterial)\n props.ignoresMaterial = true;\n\n if (true === this.nonLocatable)\n props.nonLocatable = true;\n\n if (true === this.emphasized)\n props.emphasized = true;\n\n return props;\n }\n\n /** Convert this appearance to JSON, and override any properties explicitly specified by `changedProps` in the result.\n * Example:\n * ```ts\n * const base = FeatureAppearance.fromRgba(ColorDef.white); // transparency=0, rgb=white\n * const clone = base.cloneProps({ transparency: undefined, weight: 5 }); // transparency=undefined, rgb=white, weight=5\n * ```\n * @see [[FeatureAppearance.clone]].\n */\n public cloneProps(changedProps: FeatureAppearanceProps): FeatureAppearanceProps {\n return {\n ...this.toJSON(),\n ...changedProps,\n };\n }\n\n /** Create a copy of this appearance, overriding any properties explicitly specified by `changedProps`.\n * Example:\n * ```ts\n * const base = FeatureAppearance.fromRgba(ColorDef.white); // transparency=0, rgb=white\n * const clone = base.clone({ transparency: undefined, weight: 5 }); // transparency=undefined, rgb=white, weight=5\n * ```\n * @see [[FeatureAppearance.cloneProps]].\n */\n public clone(changedProps: FeatureAppearanceProps): FeatureAppearance {\n return FeatureAppearance.fromJSON(this.cloneProps(changedProps));\n }\n\n /** Produce a FeatureAppearance from the supplied appearance in which any aspect not defined by the base appearance is overridden by this appearance. */\n public extendAppearance(base: FeatureAppearance): FeatureAppearance {\n if (!this.overridesSymbology)\n return base;\n\n const props = base.toJSON();\n if (undefined === props.rgb)\n props.rgb = this.rgb;\n if (undefined === props.transparency)\n props.transparency = this.transparency;\n if (undefined === props.linePixels)\n props.linePixels = this.linePixels;\n if (undefined === props.weight)\n props.weight = this.weight;\n if (undefined === props.ignoresMaterial && this.ignoresMaterial)\n props.ignoresMaterial = true;\n if (undefined === props.nonLocatable && this.nonLocatable)\n props.nonLocatable = true;\n if (undefined === props.emphasized && this.emphasized)\n props.emphasized = true;\n\n if (undefined !== props.transparency && this.viewDependentTransparency)\n props.viewDependentTransparency = true;\n\n return FeatureAppearance.fromJSON(props);\n }\n\n protected constructor(props: FeatureAppearanceProps) {\n this.rgb = undefined !== props.rgb ? RgbColor.fromJSON(props.rgb) : undefined;\n this.weight = props.weight;\n this.transparency = props.transparency;\n this.linePixels = props.linePixels;\n this.ignoresMaterial = props.ignoresMaterial;\n this.nonLocatable = props.nonLocatable;\n this.emphasized = props.emphasized;\n\n if (undefined !== this.weight)\n this.weight = Math.max(1, Math.min(this.weight, 32));\n\n if (undefined !== this.transparency) {\n if (props.viewDependentTransparency)\n this.viewDependentTransparency = true;\n\n this.transparency = Math.max(0, Math.min(this.transparency, 1));\n\n // Fix up rounding errors...\n const smallDelta = 0.0001;\n if (1.0 - this.transparency < smallDelta)\n this.transparency = 1.0;\n else if (this.transparency < smallDelta)\n this.transparency = 0.0;\n }\n }\n\n private rgbIsEqual(rgb?: RgbColor): boolean {\n if (undefined === this.rgb)\n return undefined === rgb;\n else if (undefined === rgb)\n return false;\n else\n return this.rgb.equals(rgb);\n }\n\n private transparencyIsEqual(transp?: number): boolean {\n if (undefined === this.transparency)\n return undefined === transp;\n else if (undefined === transp)\n return false;\n else\n return Math.floor(this.transparency * 0xff) === Math.floor(transp * 0xff);\n }\n}\n\n/** Interface adopted by an object that can supply a [[FeatureAppearance]] given a low-level description of a [[Feature]].\n * @see [[FeatureOverrides]] for the commonly-used implementation.\n * @see [[FeatureAppearanceProvider]] to supplement the appearance supplied by this interface.\n * @public\n * @extensions\n */\nexport interface FeatureAppearanceSource {\n /** Supplies the desired appearance overrides for the specified [[Feature]], or `undefined` if the feature should not be drawn.\n * The feature is described by its components for efficiency reasons.\n * @param elemLo The lower 32 bits of the feature's element Id.\n * @param elemHi The upper 32 bits of the feature's element Id.\n * @param subcatLo The lower 32 bits of the feature's subcategory Id.\n * @param subcatHi The upper 32 bits of the feature's subcategory Id.\n * @param geomClass The geometry class of the feature.\n * @param modelLo The lower 32 bits of the feature's model Id.\n * @param modelHi The upper 32 bits of the feature's model Id.\n * @param type The type of batch to which the feature belongs.\n * @param animationNodeId The Id of the corresponding node in the [[RenderSchedule]], or `0` if none.\n * @returns The desired appearance overrides, or `undefined` to indicate the feature should not be displayed.\n * @see [Id64.isValidUint32Pair]($core-bentley) to determine if the components of an [Id64String]($core-bentley) represent a valid Id.\n */\n getAppearance(elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined;\n}\n\n/** Common options for [[FeatureOverrides.override]].\n * @public\n */\nexport interface OverrideFeatureAppearanceOptions {\n /** Specifies the aspects of the [[Feature]]'s appearance to be overridden. */\n appearance: FeatureAppearance;\n /** Specifies what to do if a [[FeatureAppearance]] has already been configured for the specified element, model, or subcategory by a previous call to [[FeatureOverrides.override]].\n * - \"subsume\" (the default): Merge the two appearances using the logic described by [[FeatureAppearance.extendAppearance]] such that any aspect overridden by the existing appearance will be overwritten\n * if also overridden by [[appearance]].\n * - The resulting appearance is computed as `existingAppearance.extendAppearance(newAppearance)`.\n * - \"extend\": Merge the two appearances using the logic described by [[FeatureAppearance.extendAppearance]] such that any aspect overridden by [[appearance]] will only\n * apply if that aspect is not already overridden by a previous appearance.\n * - The resulting appearance is computed as `newAppearance.extendAppearance(existingAppearance)`.\n * - \"replace\": Completely replace the existing appearance with [[appearance]].\n * - \"skip\": Keep the existing appearance.\n */\n onConflict?: \"extend\" | \"subsume\" | \"replace\" | \"skip\";\n}\n\n/** Options for using [[FeatureOverrides.override]] to override the appearance of a [GeometricModel]($backend).\n * @public\n */\nexport interface OverrideModelAppearanceOptions extends OverrideFeatureAppearanceOptions {\n /** The Id of the model whose appearance is to be overridden. */\n modelId: Id64String;\n /** @internal */\n elementId?: never;\n /** @internal */\n subCategoryId?: never;\n}\n\n/** Options for using [[FeatureOverrides.override]] to override the appearance of a [GeometricElement]($backend).\n * @public\n */\nexport interface OverrideElementAppearanceOptions extends OverrideFeatureAppearanceOptions {\n /** The Id of the element whose appearance is to be overridden. */\n elementId: Id64String;\n /** @internal */\n modelId?: never;\n /** @internal */\n subCategoryId?: never;\n}\n\n/** Options for using [[FeatureOverrides.override]] to override the appearance of a [SubCategory]($backend).\n * @public\n */\nexport interface OverrideSubCategoryAppearanceOptions extends OverrideFeatureAppearanceOptions {\n /** The Id of the subcategory whose appearance is to be overridden. */\n subCategoryId: Id64String;\n /** @internal */\n modelId?: never;\n /** @internal */\n elementId?: never;\n}\n\n/** Arguments supplied to [[FeatureOverrides.override]].\n * @public\n */\nexport type OverrideFeatureAppearanceArgs = OverrideElementAppearanceOptions | OverrideModelAppearanceOptions | OverrideSubCategoryAppearanceOptions;\n\n/** Arguments provided to a function of type [[IgnoreAnimationOverrides]].\n * @see [[FeatureOverrides.ignoreAnimationOverrides]] to register such a function.\n * @public\n */\nexport interface IgnoreAnimationOverridesArgs {\n /** The Id of the element under consideration.\n * @see [Id64.fromUint32Pair]($bentley) to convert a Uint32Pair into an [Id64String]($bentley), if needed.\n */\n readonly elementId: Readonly<Id64.Uint32Pair>;\n /** The [[RenderSchedule.ElementTimeline.batchId]] identifying the [[RenderSchedule.ElementTimeline]] to which the element under consideration belongs. */\n readonly animationNodeId: number;\n}\n\n/** A function that can be supplied to [[FeatureOverrides.ignoreAnimationOverrides]] to indicate whether the color or transparency overrides defined\n * by the view's [[RenderSchedule.Script]] should be ignored. The arguments describe the element under consideration. The function should return true if that\n * element should not have its color or transparency modified by the schedule script.\n * @public\n */\nexport type IgnoreAnimationOverrides = (args: IgnoreAnimationOverridesArgs) => boolean;\n\nconst scratchIgnoreAnimationOverridesArgs = {\n elementId: { lower: 0, upper: 0 },\n animationNodeId: 0,\n};\n\n/** Specifies how to customize the appearance of individual [[Feature]]s, typically within the context of a [Viewport]($frontend).\n * Individual aspects of a feature's appearance - like visibility, color, and transparency - are overridden by supplying a [[FeatureAppearance]].\n * Those overrides can be specified on the basis of the feature's model, element, and/or subcategory. A default set of overrides can also be specified to\n * apply to the appearance of any feature not otherwise overridden.\n *\n * It is possible to override multiple aspects of a feature on different bases. For example, you might specify that all features belonging to subcategory \"A\" should be drawn in red,\n * and that all features belonging to model \"B\" should be drawn 50% transparent. In this case, a feature belonging to both subcategory \"A\" and model \"B\" will be drawn as 50% transparent red -\n * the separate overrides are combined to produce the feature's overall appearance.\n *\n * In the case of conflicts, there is an order of precedence:\n * - Model overrides take highest precedence.\n * - Element overrides are of higher precedence than subcategory and animation overrides.\n * - Overrides applied by a [[RenderSchedule.Script]]'s [[RenderSchedule.ElementTimeline]] are of higher precedence than subcategory overrides, but can be suppressed on a per-element basis via [[ignoreAnimationOverrides]].\n * - Subcategory overrides have lowest precedence.\n *\n * For example, you might specify that all features belonging to subcategory \"A\" should be drawn in red, and all those belonging to model \"B\" should be drawn in green.\n * Then a feature belonging to subcategory \"A\" and model \"B\" will be drawn in green, because the model overrides take precedence.\n *\n * Instances of this class are not typically instantiated by an application directly; instead, an application can implement a [FeatureOverrideProvider]($frontend)\n * that augments the overrides supplied by a viewport.\n *\n * @see [FeatureSymbology.Overrides]($frontend) to create overrides specific to a [Viewport]($frontend) or [ViewState]($frontend).\n * @see [FeatureOverrideProvider]($frontend) to customize the appearance of features within a [Viewport]($frontend).\n * @public\n */\nexport class FeatureOverrides implements FeatureAppearanceSource {\n /** @internal */\n protected readonly _ignoreAnimationOverrides: IgnoreAnimationOverrides[] = [];\n /** Ids of elements that should never be drawn. This takes precedence over [[alwaysDrawn]]. @internal */\n protected readonly _neverDrawn = new Id64.Uint32Set();\n /** Ids of elements that should always be drawn. [[neverDrawn]] takes precedence over this set. @internal */\n protected readonly _alwaysDrawn = new Id64.Uint32Set();\n /** If true, no elements *except* those defined in the \"always drawn\" set will be drawn.\n * @see [[setAlwaysDrawn]]\n */\n public isAlwaysDrawnExclusive = false;\n /** If true, the always-drawn elements are drawn even if their subcategories are not visible.\n * @see [[setAlwaysDrawn]]\n */\n public alwaysDrawnIgnoresSubCategory = true;\n /** If true, all subcategories are considered visible. This is used for drawing sheets via section callouts in the absence of an actual sheet view.\n * @internal\n */\n public ignoreSubCategory = false;\n\n /** Overrides applied to any feature not explicitly overridden. @internal */\n protected _defaultOverrides = FeatureAppearance.defaults;\n /** Whether construction geometry should be drawn. @internal */\n protected _constructions = false;\n /** Whether dimensions should be drawn. @internal */\n protected _dimensions = false;\n /** Whether area patterns should be drawn. @internal */\n protected _patterns = false;\n /** Whether line weights should be applied. If false, all lines are rendered 1-pixel wide. @internal */\n protected _lineWeights = true;\n\n /** Overrides applied to all elements belonging to each model. @internal */\n protected readonly _modelOverrides = new Id64.Uint32Map<FeatureAppearance>();\n /** Overrides applied to specific elements. @internal */\n protected readonly _elementOverrides = new Id64.Uint32Map<FeatureAppearance>();\n /** Overrides applied to geometry belonging to each subcategory. @internal */\n protected readonly _subCategoryOverrides = new Id64.Uint32Map<FeatureAppearance>();\n /** The set of displayed subcategories. Geometry belonging to subcategories not included in this set will not be drawn. @internal */\n protected readonly _visibleSubCategories = new Id64.Uint32Set();\n /** Display priorities assigned to subcategories, possibly overridden by display style. Only applicable for plan projection models. @internal */\n protected readonly _subCategoryPriorities = new Id64.Uint32Map<number>();\n\n /** Per-model, a set of subcategories whose visibility should be inverted for elements within that model.\n * Populated by Viewport.\n * @internal\n */\n protected readonly _modelSubCategoryOverrides = new Id64.Uint32Map<Id64.Uint32Set>();\n\n /** Ids of animation nodes that should never be drawn.\n * @internal\n */\n public readonly neverDrawnAnimationNodes = new Set<number>();\n /** Mapping of animation node Ids to overrides applied to the corresponding animation nodes.\n * @internal\n */\n public readonly animationNodeOverrides = new Map<number, FeatureAppearance>();\n\n /** Accepts a criterion that determines whether color and transparency overrides originating from the view's [[RenderSchedule.Script]] should be ignored for a given element.\n * The function receives a description of the element in question and returns `true` if the script's overrides should be ignored.\n * Any number of such functions can be registered; if any one of them returns `true`, the script's overrides are not applied to the specified element.\n *\n * For example, applications commonly emphasize a set of elements by applying a [[FeatureAppearance.emphasized]] override to them, and specifying a highly-transparent\n * default appearance to de-emphasize the rest of the elements in the view. If some of the de-emphasized elements' appearances are also being overridden by the schedule script, then\n * they won't appear de-emphasized, making it difficult for the emphasized elements to stand out. In situations like this, [FeatureOverrideProvider]($frontend)s like [EmphasizeElements]($frontend) can register an [[IgnoreAnimationOverrides]] function that returns true if the element in question is not in the set of emphasized elements.\n */\n public ignoreAnimationOverrides(ignore: IgnoreAnimationOverrides): void {\n this._ignoreAnimationOverrides.push(ignore);\n }\n\n /** Overrides applied to features for which no other overrides are defined */\n public get defaultOverrides(): FeatureAppearance { return this._defaultOverrides; }\n /** Whether or not line weights are applied. If false, all lines are drawn with a weight of 1. */\n public get lineWeights(): boolean { return this._lineWeights; }\n\n /** @internal */\n public get neverDrawn() { return this._neverDrawn; }\n /** @internal */\n public get alwaysDrawn() { return this._alwaysDrawn; }\n\n /** @internal */\n protected isNeverDrawn(elemIdLo: number, elemIdHi: number, animationNodeId: number): boolean {\n if (this._neverDrawn.has(elemIdLo, elemIdHi))\n return true;\n else\n return this.neverDrawnAnimationNodes.has(animationNodeId);\n }\n /** @internal */\n protected isAlwaysDrawn(idLo: number, idHi: number): boolean { return this._alwaysDrawn.has(idLo, idHi); }\n /** Returns true if the [SubCategory]($backend) specified by Id is in the set of visible subcategories. @internal */\n public isSubCategoryVisible(idLo: number, idHi: number): boolean { return this._visibleSubCategories.has(idLo, idHi); }\n /** @internal */\n public isSubCategoryVisibleInModel(subcatLo: number, subcatHi: number, modelLo: number, modelHi: number): boolean {\n if (this.ignoreSubCategory)\n return true;\n\n let vis = this.isSubCategoryVisible(subcatLo, subcatHi);\n const modelOvr = this._modelSubCategoryOverrides.get(modelLo, modelHi);\n if (undefined !== modelOvr && modelOvr.has(subcatLo, subcatHi))\n vis = !vis;\n\n return vis;\n }\n\n /** @internal */\n protected getModelOverrides(idLo: number, idHi: number): FeatureAppearance | undefined {\n return this._modelOverrides.get(idLo, idHi);\n }\n\n private getElementAnimationOverrides(idLo: number, idHi: number, animationNodeId: number): FeatureAppearance | undefined {\n if (this.animationNodeOverrides.size === 0)\n return undefined;\n\n // NB: An animation node Id of zero means \"not animated\". Some providers like EmphasizeElements may provide an appearance override for unanimated nodes.\n // That should be preserved.\n const app = this.animationNodeOverrides.get(animationNodeId);\n if (!app || 0 === animationNodeId || this._ignoreAnimationOverrides.length === 0)\n return app;\n\n const args = scratchIgnoreAnimationOverridesArgs;\n args.elementId.lower = idLo;\n args.elementId.upper = idHi;\n args.animationNodeId = animationNodeId;\n return this._ignoreAnimationOverrides.some((ignore) => ignore(args)) ? undefined : app;\n }\n\n /** @internal */\n protected getElementOverrides(idLo: number, idHi: number, animationNodeId: number): FeatureAppearance | undefined {\n const elemApp = this._elementOverrides.get(idLo, idHi);\n const nodeApp = this.getElementAnimationOverrides(idLo, idHi, animationNodeId);\n if (elemApp)\n return nodeApp ? nodeApp.extendAppearance(elemApp) : elemApp;\n\n return nodeApp;\n }\n\n /** @internal */\n protected getSubCategoryOverrides(idLo: number, idHi: number): FeatureAppearance | undefined { return this._subCategoryOverrides.get(idLo, idHi); }\n\n /** Add a [SubCategory]($backend) to the set of visible subcategories. */\n public setVisibleSubCategory(id: Id64String): void { this._visibleSubCategories.addId(id); }\n /** Specify the Id of an element that should never be drawn. */\n public setNeverDrawn(id: Id64String): void { this._neverDrawn.addId(id); }\n /** Specify the Id of an element that should always be drawn. */\n public setAlwaysDrawn(id: Id64String): void { this._alwaysDrawn.addId(id); }\n /** Specify the Id of a animation node that should never be drawn. */\n public setAnimationNodeNeverDrawn(id: number): void { this.neverDrawnAnimationNodes.add(id); }\n /** Specify the Ids of elements that should never be drawn. */\n public setNeverDrawnSet(ids: Iterable<Id64String>) { copyIdSetToUint32Set(this._neverDrawn, ids); }\n /** Specify the Ids of elements that should always be drawn. */\n public setAlwaysDrawnSet(ids: Iterable<Id64String>, exclusive: boolean, ignoreSubCategory = true) {\n copyIdSetToUint32Set(this._alwaysDrawn, ids);\n this.isAlwaysDrawnExclusive = exclusive;\n this.alwaysDrawnIgnoresSubCategory = ignoreSubCategory;\n }\n\n /** Returns the feature's appearance overrides, or undefined if the feature is not visible. */\n public getFeatureAppearance(feature: Feature, modelId: Id64String, type: BatchType = BatchType.Primary, animationNodeId = 0): FeatureAppearance | undefined {\n return this.getAppearance(\n Id64.getLowerUint32(feature.elementId), Id64.getUpperUint32(feature.elementId),\n Id64.getLowerUint32(feature.subCategoryId), Id64.getUpperUint32(feature.subCategoryId),\n feature.geometryClass,\n Id64.getLowerUint32(modelId), Id64.getUpperUint32(modelId),\n type, animationNodeId);\n }\n\n private static readonly _weight1Appearance = FeatureAppearance.fromJSON({ weight: 1 });\n\n /** Returns a feature's appearance overrides, or undefined if the feature is not visible.\n * Takes Id64s as pairs of unsigned 32-bit integers for efficiency, because that is how they are stored by the PackedFeatureTable associated with each batch of graphics.\n * @see [[getFeatureAppearance]] for an equivalent function that accepts [Id64String]($core-bentley)s instead of integer pairs.\n */\n public getAppearance(elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\n if (BatchType.VolumeClassifier === type || BatchType.PlanarClassifier === type)\n return this.getClassifierAppearance(elemLo, elemHi, subcatLo, subcatHi, modelLo, modelHi, animationNodeId);\n\n let app = !this._lineWeights ? FeatureOverrides._weight1Appearance : FeatureAppearance.defaults;\n const modelApp = this.getModelOverrides(modelLo, modelHi);\n if (undefined !== modelApp)\n app = modelApp.extendAppearance(app);\n\n // Is the element visible?\n let elemApp, alwaysDrawn = false;\n\n if (Id64.isValidUint32Pair(elemLo, elemHi)) {\n if (this.isNeverDrawn(elemLo, elemHi, animationNodeId))\n return undefined;\n\n alwaysDrawn = this.isAlwaysDrawn(elemLo, elemHi);\n if (!alwaysDrawn && this.isAlwaysDrawnExclusive)\n return undefined;\n\n // Element overrides take precedence\n elemApp = this.getElementOverrides(elemLo, elemHi, animationNodeId);\n if (undefined !== elemApp)\n app = undefined !== modelApp ? elemApp.extendAppearance(app) : elemApp;\n }\n\n let subCatApp;\n if (!this.ignoreSubCategory && Id64.isValidUint32Pair(subcatLo, subcatHi)) {\n if ((!alwaysDrawn || !this.alwaysDrawnIgnoresSubCategory) && !this.isSubCategoryVisibleInModel(subcatLo, subcatHi, modelLo, modelHi))\n return undefined;\n\n subCatApp = this.getSubCategoryOverrides(subcatLo, subcatHi);\n if (undefined !== subCatApp)\n app = subCatApp.extendAppearance(app);\n }\n\n // Only apply default if *no* appearance was explicitly registered (doesn't matter if registered appearance does not actually override anything)\n if (undefined === elemApp && undefined === modelApp && undefined === subCatApp)\n app = this._defaultOverrides.extendAppearance(app);\n\n let visible = alwaysDrawn || this.isClassVisible(geomClass);\n if (visible && app.isFullyTransparent)\n visible = false; // don't bother rendering something with full transparency...\n\n return visible ? app : undefined;\n }\n\n /** Classifiers behave totally differently...in particular they are never invisible unless fully-transparent.\n * @internal\n */\n protected getClassifierAppearance(elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, modelLo: number, modelHi: number, animationNodeId: number): FeatureAppearance | undefined {\n let app = FeatureAppearance.defaults;\n const modelApp = this.getModelOverrides(modelLo, modelHi);\n if (undefined !== modelApp)\n app = modelApp.extendAppearance(app);\n\n const elemApp = this.getElementOverrides(elemLo, elemHi, animationNodeId);\n if (undefined !== elemApp)\n app = undefined !== modelApp ? elemApp.extendAppearance(app) : elemApp;\n\n if (!this.ignoreSubCategory && Id64.isValidUint32Pair(subcatLo, subcatHi)) {\n const subCat = this.getSubCategoryOverrides(subcatLo, subcatHi);\n if (undefined !== subCat)\n app = subCat.extendAppearance(app);\n }\n\n if (undefined === elemApp && undefined === modelApp)\n app = this._defaultOverrides.extendAppearance(app);\n\n // NB: A fully-transparent classifier means the classifier is a clip mask - classified pixels will be discarded.\n return app;\n }\n\n /** Return whether geometry of the specified class should be drawn.\n * @see [[ViewFlags.constructions]], [[ViewFlags.dimensions]], and [[ViewFlags.patterns]].\n */\n public isClassVisible(geomClass: GeometryClass): boolean {\n switch (geomClass) {\n case GeometryClass.Construction: return this._constructions;\n case GeometryClass.Dimension: return this._dimensions;\n case GeometryClass.Pattern: return this._patterns;\n default: return true;\n }\n }\n\n /** Specify overrides for all elements belonging to a specified [GeometricModel]($backend), or all geometry belonging to a specified [GeometricElement]($backend) or [SubCategory]($backend). */\n public override(args: OverrideFeatureAppearanceArgs): void {\n let id: Id64String;\n let map: Id64.Uint32Map<FeatureAppearance>;\n if (undefined !== args.elementId) {\n id = args.elementId;\n map = this._elementOverrides;\n } else if (undefined !== args.modelId) {\n id = args.modelId;\n map = this._modelOverrides;\n } else {\n id = args.subCategoryId;\n map = this._subCategoryOverrides;\n }\n\n let app = args.appearance;\n const idLo = Id64.getLowerUint32(id);\n const idHi = Id64.getUpperUint32(id);\n\n if (undefined !== args.elementId && this.isNeverDrawn(idLo, idHi, 0))\n return;\n\n const replace = \"replace\" === args.onConflict;\n const existing = replace ? undefined : map.get(idLo, idHi);\n if (existing) {\n assert(\"replace\" !== args.onConflict);\n switch (args.onConflict) {\n case \"skip\":\n return;\n case \"extend\":\n app = app.extendAppearance(existing);\n break;\n default:\n app = existing.extendAppearance(app);\n break;\n }\n }\n\n map.set(idLo, idHi, app);\n }\n\n /** Specify overrides for all elements within the specified model.\n * @param id The Id of the model.\n * @param app The symbology overrides.\n * @param replaceExisting Specifies whether to replace a pre-existing override for the same model.\n * @note These overrides take priority over all other overrides.\n * @note If [[defaultOverrides]] are defined, they will not apply to any element within this model, even if the supplied appearance overrides nothing.\n * @deprecated Use [[FeatureOverrides.override]].\n */\n public overrideModel(id: Id64String, app: FeatureAppearance, replaceExisting: boolean = true): void {\n this.override({ modelId: id, appearance: app, onConflict: replaceExisting ? \"replace\" : \"skip\" });\n }\n\n /** Specify overrides for all geometry belonging to the specified [SubCategory]($backend).\n * @param id The Id of the subcategory.\n * @param app The symbology overrides.\n * @param replaceExisting Specifies whether to replace a pre-existing override for the same subcategory.\n * @note These overrides have lower priority than element and model overrides.\n * @note If [[defaultOverrides]] are defined, they will not apply to any geometry within this subcategory, even if the supplied appearance overrides nothing.\n * @deprecated Use [[FeatureOverrides.override]].\n */\n public overrideSubCategory(id: Id64String, app: FeatureAppearance, replaceExisting: boolean = true): void {\n this.override({ subCategoryId: id, appearance: app, onConflict: replaceExisting ? \"replace\" : \"skip\" });\n }\n\n /** Specify overrides for all geometry originating from the specified element.\n * @param id The Id of the element.\n * @param app The symbology overrides.\n * @param replaceExisting Specifies whether to replace a pre-existing override for the same element.\n * @note These overrides take precedence over subcategory overrides, but not over model overrides.\n * @note If [[defaultOverrides]] are defined, they will not apply to this element, even if the supplied appearance overrides nothing.\n * @deprecated Use [[FeatureOverrides.override]].\n */\n public overrideElement(id: Id64String, app: FeatureAppearance, replaceExisting: boolean = true): void {\n this.override({ elementId: id, appearance: app, onConflict: replaceExisting ? \"replace\" : \"skip\" });\n }\n\n /** Specify overrides for all geometry originating from the specified animation node.\n * @param id The Id of the animation node.\n * @param app The symbology overrides.\n * @note These overrides do not take precedence over element overrides.\n */\n public overrideAnimationNode(id: number, app: FeatureAppearance): void {\n this.animationNodeOverrides.set(id, app);\n }\n\n /** Defines a default appearance to be applied to any [[Feature]] *not* explicitly overridden.\n * @param appearance The symbology overrides.\n * @param replaceExisting Specifies whether to replace the current default overrides if they are already defined.\n */\n public setDefaultOverrides(appearance: FeatureAppearance, replaceExisting: boolean = true): void {\n if (replaceExisting || !appearance.overridesSymbology)\n this._defaultOverrides = appearance;\n }\n\n /** Get the display priority of a subcategory. This is only relevant when using [[PlanProjectionSettings]].\n * @internal\n */\n public getSubCategoryPriority(idLo: number, idHi: number): number {\n return this._subCategoryPriorities.get(idLo, idHi) ?? 0;\n }\n\n /** Construct a new Overrides that overrides nothing.\n * @see [FeatureSymbology.Overrides]($frontend) to construct overrides based on a [ViewState]($frontend) or [Viewport]($frontend).\n */\n public constructor() {\n //\n }\n\n /** Returns true if geometry belonging to the specified subcategory will be drawn. */\n public isSubCategoryIdVisible(id: Id64String): boolean { return this.isSubCategoryVisible(Id64.getLowerUint32(id), Id64.getUpperUint32(id)); }\n /** Returns the overrides applied to geometry belonging to the specified model, if any such are defined. */\n public getModelOverridesById(id: Id64String): FeatureAppearance | undefined { return this.getModelOverrides(Id64.getLowerUint32(id), Id64.getUpperUint32(id)); }\n /** Returns the overrides applied to geometry belonging to the specified element, if any such are defined. */\n public getElementOverridesById(id: Id64String): FeatureAppearance | undefined { return this.getElementOverrides(Id64.getLowerUint32(id), Id64.getUpperUint32(id), 0); }\n /** Returns the overrides applied to geometry belonging to the specified subcategory, if any such are defined. */\n public getSubCategoryOverridesById(id: Id64String): FeatureAppearance | undefined { return this.getSubCategoryOverrides(Id64.getLowerUint32(id), Id64.getUpperUint32(id)); }\n\n /** Returns true if the specified Feature will be drawn. */\n public isFeatureVisible(feature: Feature): boolean {\n const { elementId, subCategoryId, geometryClass } = feature;\n const isValidElemId = !Id64.isInvalid(elementId);\n const elemIdParts = isValidElemId ? Id64.getUint32Pair(elementId) : undefined;\n\n if (undefined !== elemIdParts && this.isNeverDrawn(elemIdParts.lower, elemIdParts.upper, 0))\n return false;\n\n const alwaysDrawn = undefined !== elemIdParts && this.isAlwaysDrawn(elemIdParts.lower, elemIdParts.upper);\n if (alwaysDrawn || this.isAlwaysDrawnExclusive)\n return alwaysDrawn;\n\n // NB: This ignores per-model subcategory visibility overrides, because caller did not specify a model.\n if (!this.isSubCategoryIdVisible(subCategoryId))\n return false;\n\n return this.isClassVisible(geometryClass);\n }\n}\n\n/** Interface adopted by an object that can supply the [[FeatureAppearance]] supplied by a [[FeatureAppearanceSource]].\n * This is useful for selectively overriding or agumenting a [Viewport]($frontend)'s symbology overrides.\n * A typical implementation will invoke [[FeatureAppearanceSource.getAppeaprance]] and customize the returned appearance.\n * @see [[FeatureAppearanceProvider.chain]] to chain two providers together.\n * @public\n * @extensions\n */\nexport interface FeatureAppearanceProvider {\n /** Supply the desired appearance overrides for the specified [[Feature]], or `undefined` if the feature should not be drawn.\n * The feature is described by its components for efficiency reasons.\n * @param source The base symbology overrides, e.g., typically defined by a [Viewport]($frontend).\n * @param elemLo The lower 32 bits of the feature's element Id.\n * @param elemHi The upper 32 bits of the feature's element Id.\n * @param subcatLo The lower 32 bits of the feature's subcategory Id.\n * @param subcatHi The upper 32 bits of the feature's subcategory Id.\n * @param geomClass The geometry class of the feature.\n * @param modelLo The lower 32 bits of the feature's model Id.\n * @param modelHi The upper 32 bits of the feature's model Id.\n * @param type The type of batch to which the feature belongs.\n * @param animationNodeId The Id of the corresponding node in the [[RenderSchedule]], or `0` if none.\n * @returns The desired appearance overrides, or `undefined` to indicate the feature should not be displayed.\n * @see [[FeatureAppearanceSource.getAppearance]] to forward the request to the source.\n * @see [Id64.isValidUint32Pair]($core-bentley) to determine if the components of an [Id64String]($core-bentley) represent a valid Id.\n */\n getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined;\n}\n\n/** @public */\nexport namespace FeatureAppearanceProvider {\n /** Produce a FeatureAppearanceSource for which `getAppearance()` returns the appearance specified in `source`, potentially modified by `provider`. */\n function wrap(source: FeatureAppearanceSource, provider: FeatureAppearanceProvider): FeatureAppearanceSource {\n return {\n getAppearance: (elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number) => {\n return provider.getFeatureAppearance(source, elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\n },\n };\n }\n\n /** Create a provider that obtains each feature's appearance from the source, and if the feature is visible, modifies the appearance.\n * @param supplementAppearance A function accepting the feature's base appearance and returning a supplemental appearance.\n * @public\n */\n export function supplement(supplementAppearance: (appearance: FeatureAppearance) => FeatureAppearance): FeatureAppearanceProvider {\n return {\n getFeatureAppearance: (source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number) => {\n const app = source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\n return app ? supplementAppearance(app) : app;\n },\n };\n }\n\n /** Chain two FeatureAppearanceProviders together such that `first`'s `getFeatureAppearance` function is applied before `second`'s.\n * If `second` invokes `source.getAppearance()`, the returned appearance will include any modifications applied by `first`.\n * @public\n */\n export function chain(first: FeatureAppearanceProvider, second: FeatureAppearanceProvider): FeatureAppearanceProvider {\n if (first === second)\n return first;\n\n return {\n getFeatureAppearance: (source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number) => {\n return second.getFeatureAppearance(wrap(source, first), elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\n },\n };\n }\n}\n"]}
@@ -1,142 +1,142 @@
1
- /** @packageDocumentation
2
- * @module Rendering
3
- */
4
- import { Id64, Id64String, IndexedValue, IndexMap } from "@itwin/core-bentley";
5
- import { GeometryClass } from "./GeometryParams";
6
- /** Describes a discrete entity within a batched [RenderGraphic]($frontend) that can be
7
- * grouped with other such entities in a [[FeatureTable]].
8
- * Features roughly correlate to elements: a [Tile]($frontend)'s graphics combines geometry from every
9
- * [GeometricElement]($backend) that intersects the tile's volume, so each element produces at least one feature.
10
- * However, an element's geometry stream can contain geometry belonging to multiple different combinations of [SubCategory]($backend) and
11
- * [[GeometryClass]], so an individual element may produce more than one feature.
12
- * @see [[FeatureOverrides]] for customizing the appearance of individual features.
13
- * @public
14
- */
15
- export declare class Feature {
16
- readonly elementId: string;
17
- readonly subCategoryId: string;
18
- readonly geometryClass: GeometryClass;
19
- constructor(elementId?: Id64String, subCategoryId?: Id64String, geometryClass?: GeometryClass);
20
- get isDefined(): boolean;
21
- get isUndefined(): boolean;
22
- /** Returns true if this feature is equivalent to the supplied feature. */
23
- equals(other: Feature): boolean;
24
- /** Performs ordinal comparison of this feature with another.
25
- * @param rhs The feature to compare with.
26
- * @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`.
27
- */
28
- compare(rhs: Feature): number;
29
- }
30
- /** @internal */
31
- export interface PackedFeature {
32
- elementId: Id64.Uint32Pair;
33
- subCategoryId: Id64.Uint32Pair;
34
- geometryClass: GeometryClass;
35
- animationNodeId: number;
36
- }
37
- /** Describes the type of a 'batch' of graphics representing multiple [[Feature]]s.
38
- * The most commonly-encountered batches are Tiles, which can be of either Primary or
39
- * Classifier type.
40
- * @public
41
- * @extensions
42
- */
43
- export declare enum BatchType {
44
- /** This batch contains graphics derived from a model's visible geometry. */
45
- Primary = 0,
46
- /**
47
- * This batch contains color volumes which are used to classify a model's visible geometry.
48
- * The graphics themselves are not rendered to the screen; instead they are rendered to the stencil buffer
49
- * to resymbolize the primary geometry.
50
- */
51
- VolumeClassifier = 1,
52
- /**
53
- * This batch contains planar graphics which are used to classify a model's visible geometry.
54
- * The graphics themselves are not rendered to the screen; instead they are rendered to a texture buffer
55
- * to resymbolize the primary geometry.
56
- */
57
- PlanarClassifier = 2
58
- }
59
- /** Defines a look-up table for [[Feature]]s within a batched [RenderGraphic]($frontend). Consecutive 32-bit
60
- * indices are assigned to each unique Feature. Primitives within the RenderGraphic can
61
- * use per-vertex indices to specify the distribution of Features within the primitive. The appearance of individual
62
- * features can be customized using [[FeatureOverrides]]. Typically a [Tile]($frontend) will contain a feature table
63
- * identifying the elements whose geometry appears within that tile.
64
- * @see [[FeatureOverrides]] for customizing the appearance of individual features.
65
- * @public
66
- */
67
- export declare class FeatureTable extends IndexMap<Feature> {
68
- readonly modelId: Id64String;
69
- readonly type: BatchType;
70
- /** Construct an empty FeatureTable. */
71
- constructor(maxFeatures: number, modelId?: Id64String, type?: BatchType);
72
- /** Returns the maximum number of [[Feature]]s this FeatureTable can contain. */
73
- get maxFeatures(): number;
74
- /** @internal */
75
- get anyDefined(): boolean;
76
- /** Returns true if this FeatureTable contains exactly one [[Feature]]. */
77
- get isUniform(): boolean;
78
- /** If this FeatureTable contains exactly one [[Feature]], returns that Feature; otherwise returns undefined. */
79
- get uniform(): Feature | undefined;
80
- /** Returns true if this FeatureTable is associated with [[BatchType.VolumeClassifier]] geometry. */
81
- get isVolumeClassifier(): boolean;
82
- /** Returns true if this FeatureTable is associated with [[BatchType.PlanarClassifier]] geometry. */
83
- get isPlanarClassifier(): boolean;
84
- /** Returns the Feature corresponding to the specified index, or undefined if the index is not present. */
85
- findFeature(index: number): Feature | undefined;
86
- /** @internal */
87
- insertWithIndex(feature: Feature, index: number): void;
88
- /** @internal */
89
- getArray(): Array<IndexedValue<Feature>>;
90
- }
91
- /** @alpha */
92
- export declare type ComputeNodeId = (elementId: Id64.Uint32Pair, featureIndex: number) => number;
93
- /**
94
- * An immutable, packed representation of a [[FeatureTable]]. The features are packed into a single array of 32-bit integer values,
95
- * wherein each feature occupies 3 32-bit integers.
96
- * @internal
97
- */
98
- export declare class PackedFeatureTable {
99
- private readonly _data;
100
- readonly modelId: Id64String;
101
- readonly maxFeatures: number;
102
- readonly numFeatures: number;
103
- readonly anyDefined: boolean;
104
- readonly type: BatchType;
105
- private _animationNodeIds?;
106
- get byteLength(): number;
107
- get animationNodeIds(): Readonly<Uint8Array | Uint16Array | Uint32Array> | undefined;
108
- /** Construct a PackedFeatureTable from the packed binary data.
109
- * This is used internally when deserializing Tiles in iMdl format.
110
- * @internal
111
- */
112
- constructor(data: Uint32Array, modelId: Id64String, numFeatures: number, maxFeatures: number, type: BatchType, animationNodeIds?: Uint8Array | Uint16Array | Uint32Array);
113
- /** Create a packed feature table from a [[FeatureTable]]. */
114
- static pack(featureTable: FeatureTable): PackedFeatureTable;
115
- /** Retrieve the Feature associated with the specified index. */
116
- getFeature(featureIndex: number): Feature;
117
- /** Returns the Feature associated with the specified index, or undefined if the index is out of range. */
118
- findFeature(featureIndex: number): Feature | undefined;
119
- /** @internal */
120
- getElementIdPair(featureIndex: number, out?: Id64.Uint32Pair): Id64.Uint32Pair;
121
- /** @internal */
122
- getSubCategoryIdPair(featureIndex: number): Id64.Uint32Pair;
123
- /** @internal */
124
- getAnimationNodeId(featureIndex: number): number;
125
- /** @internal */
126
- getPackedFeature(featureIndex: number): PackedFeature;
127
- /** Returns the element ID of the Feature associated with the specified index, or undefined if the index is out of range. */
128
- findElementId(featureIndex: number): Id64String | undefined;
129
- /** Return true if this table contains exactly 1 feature. */
130
- get isUniform(): boolean;
131
- /** If this table contains exactly 1 feature, return it. */
132
- get uniform(): Feature | undefined;
133
- get isVolumeClassifier(): boolean;
134
- get isPlanarClassifier(): boolean;
135
- get isClassifier(): boolean;
136
- /** Unpack the features into a [[FeatureTable]]. */
137
- unpack(): FeatureTable;
138
- populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void;
139
- private get _subCategoriesOffset();
140
- private readId;
141
- }
1
+ /** @packageDocumentation
2
+ * @module Rendering
3
+ */
4
+ import { Id64, Id64String, IndexedValue, IndexMap } from "@itwin/core-bentley";
5
+ import { GeometryClass } from "./GeometryParams";
6
+ /** Describes a discrete entity within a batched [RenderGraphic]($frontend) that can be
7
+ * grouped with other such entities in a [[FeatureTable]].
8
+ * Features roughly correlate to elements: a [Tile]($frontend)'s graphics combines geometry from every
9
+ * [GeometricElement]($backend) that intersects the tile's volume, so each element produces at least one feature.
10
+ * However, an element's geometry stream can contain geometry belonging to multiple different combinations of [SubCategory]($backend) and
11
+ * [[GeometryClass]], so an individual element may produce more than one feature.
12
+ * @see [[FeatureOverrides]] for customizing the appearance of individual features.
13
+ * @public
14
+ */
15
+ export declare class Feature {
16
+ readonly elementId: string;
17
+ readonly subCategoryId: string;
18
+ readonly geometryClass: GeometryClass;
19
+ constructor(elementId?: Id64String, subCategoryId?: Id64String, geometryClass?: GeometryClass);
20
+ get isDefined(): boolean;
21
+ get isUndefined(): boolean;
22
+ /** Returns true if this feature is equivalent to the supplied feature. */
23
+ equals(other: Feature): boolean;
24
+ /** Performs ordinal comparison of this feature with another.
25
+ * @param rhs The feature to compare with.
26
+ * @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`.
27
+ */
28
+ compare(rhs: Feature): number;
29
+ }
30
+ /** @internal */
31
+ export interface PackedFeature {
32
+ elementId: Id64.Uint32Pair;
33
+ subCategoryId: Id64.Uint32Pair;
34
+ geometryClass: GeometryClass;
35
+ animationNodeId: number;
36
+ }
37
+ /** Describes the type of a 'batch' of graphics representing multiple [[Feature]]s.
38
+ * The most commonly-encountered batches are Tiles, which can be of either Primary or
39
+ * Classifier type.
40
+ * @public
41
+ * @extensions
42
+ */
43
+ export declare enum BatchType {
44
+ /** This batch contains graphics derived from a model's visible geometry. */
45
+ Primary = 0,
46
+ /**
47
+ * This batch contains color volumes which are used to classify a model's visible geometry.
48
+ * The graphics themselves are not rendered to the screen; instead they are rendered to the stencil buffer
49
+ * to resymbolize the primary geometry.
50
+ */
51
+ VolumeClassifier = 1,
52
+ /**
53
+ * This batch contains planar graphics which are used to classify a model's visible geometry.
54
+ * The graphics themselves are not rendered to the screen; instead they are rendered to a texture buffer
55
+ * to resymbolize the primary geometry.
56
+ */
57
+ PlanarClassifier = 2
58
+ }
59
+ /** Defines a look-up table for [[Feature]]s within a batched [RenderGraphic]($frontend). Consecutive 32-bit
60
+ * indices are assigned to each unique Feature. Primitives within the RenderGraphic can
61
+ * use per-vertex indices to specify the distribution of Features within the primitive. The appearance of individual
62
+ * features can be customized using [[FeatureOverrides]]. Typically a [Tile]($frontend) will contain a feature table
63
+ * identifying the elements whose geometry appears within that tile.
64
+ * @see [[FeatureOverrides]] for customizing the appearance of individual features.
65
+ * @public
66
+ */
67
+ export declare class FeatureTable extends IndexMap<Feature> {
68
+ readonly modelId: Id64String;
69
+ readonly type: BatchType;
70
+ /** Construct an empty FeatureTable. */
71
+ constructor(maxFeatures: number, modelId?: Id64String, type?: BatchType);
72
+ /** Returns the maximum number of [[Feature]]s this FeatureTable can contain. */
73
+ get maxFeatures(): number;
74
+ /** @internal */
75
+ get anyDefined(): boolean;
76
+ /** Returns true if this FeatureTable contains exactly one [[Feature]]. */
77
+ get isUniform(): boolean;
78
+ /** If this FeatureTable contains exactly one [[Feature]], returns that Feature; otherwise returns undefined. */
79
+ get uniform(): Feature | undefined;
80
+ /** Returns true if this FeatureTable is associated with [[BatchType.VolumeClassifier]] geometry. */
81
+ get isVolumeClassifier(): boolean;
82
+ /** Returns true if this FeatureTable is associated with [[BatchType.PlanarClassifier]] geometry. */
83
+ get isPlanarClassifier(): boolean;
84
+ /** Returns the Feature corresponding to the specified index, or undefined if the index is not present. */
85
+ findFeature(index: number): Feature | undefined;
86
+ /** @internal */
87
+ insertWithIndex(feature: Feature, index: number): void;
88
+ /** @internal */
89
+ getArray(): Array<IndexedValue<Feature>>;
90
+ }
91
+ /** @alpha */
92
+ export declare type ComputeNodeId = (elementId: Id64.Uint32Pair, featureIndex: number) => number;
93
+ /**
94
+ * An immutable, packed representation of a [[FeatureTable]]. The features are packed into a single array of 32-bit integer values,
95
+ * wherein each feature occupies 3 32-bit integers.
96
+ * @internal
97
+ */
98
+ export declare class PackedFeatureTable {
99
+ private readonly _data;
100
+ readonly modelId: Id64String;
101
+ readonly maxFeatures: number;
102
+ readonly numFeatures: number;
103
+ readonly anyDefined: boolean;
104
+ readonly type: BatchType;
105
+ private _animationNodeIds?;
106
+ get byteLength(): number;
107
+ get animationNodeIds(): Readonly<Uint8Array | Uint16Array | Uint32Array> | undefined;
108
+ /** Construct a PackedFeatureTable from the packed binary data.
109
+ * This is used internally when deserializing Tiles in iMdl format.
110
+ * @internal
111
+ */
112
+ constructor(data: Uint32Array, modelId: Id64String, numFeatures: number, maxFeatures: number, type: BatchType, animationNodeIds?: Uint8Array | Uint16Array | Uint32Array);
113
+ /** Create a packed feature table from a [[FeatureTable]]. */
114
+ static pack(featureTable: FeatureTable): PackedFeatureTable;
115
+ /** Retrieve the Feature associated with the specified index. */
116
+ getFeature(featureIndex: number): Feature;
117
+ /** Returns the Feature associated with the specified index, or undefined if the index is out of range. */
118
+ findFeature(featureIndex: number): Feature | undefined;
119
+ /** @internal */
120
+ getElementIdPair(featureIndex: number, out?: Id64.Uint32Pair): Id64.Uint32Pair;
121
+ /** @internal */
122
+ getSubCategoryIdPair(featureIndex: number): Id64.Uint32Pair;
123
+ /** @internal */
124
+ getAnimationNodeId(featureIndex: number): number;
125
+ /** @internal */
126
+ getPackedFeature(featureIndex: number): PackedFeature;
127
+ /** Returns the element ID of the Feature associated with the specified index, or undefined if the index is out of range. */
128
+ findElementId(featureIndex: number): Id64String | undefined;
129
+ /** Return true if this table contains exactly 1 feature. */
130
+ get isUniform(): boolean;
131
+ /** If this table contains exactly 1 feature, return it. */
132
+ get uniform(): Feature | undefined;
133
+ get isVolumeClassifier(): boolean;
134
+ get isPlanarClassifier(): boolean;
135
+ get isClassifier(): boolean;
136
+ /** Unpack the features into a [[FeatureTable]]. */
137
+ unpack(): FeatureTable;
138
+ populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void;
139
+ private get _subCategoriesOffset();
140
+ private readId;
141
+ }
142
142
  //# sourceMappingURL=FeatureTable.d.ts.map