@itwin/core-frontend 4.0.0-dev.23 → 4.0.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.
- package/CHANGELOG.md +43 -36
- package/lib/cjs/AccuDraw.js +1 -1
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.js +3 -3
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +9 -11
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/DisplayStyleState.js +8 -12
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +4 -6
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +2 -3
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/FlashSettings.js +3 -4
- package/lib/cjs/FlashSettings.js.map +1 -1
- package/lib/cjs/GeoServices.js +7 -9
- package/lib/cjs/GeoServices.js.map +1 -1
- package/lib/cjs/IModelApp.js +19 -21
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js +1 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.js +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +3 -4
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/ModelState.js +2 -3
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.js +4 -7
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -2
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js +1 -1
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js +2 -4
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/SheetViewState.js +15 -23
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/Tiles.js +2 -2
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/ViewContext.js +1 -1
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +4 -5
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js +5 -5
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewState.js +17 -24
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.js +22 -32
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/extension/ExtensionImpl.js +1 -1
- package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -3
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +7 -9
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js +1 -2
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +7 -9
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/MockRender.js +1 -2
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js +2 -3
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js +7 -10
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderPlan.js +1 -1
- package/lib/cjs/render/RenderPlan.js.map +1 -1
- package/lib/cjs/render/RenderSystem.js +1 -2
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.js +2 -4
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/primitives/AuxChannelTable.js +6 -9
- package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js +6 -7
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.js +2 -3
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.js +1 -1
- package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +1 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js +6 -8
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +9 -11
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -5
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +2 -3
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js +9 -10
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/EDL.js +17 -21
- package/lib/cjs/render/webgl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +2 -2
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +3 -5
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +2 -3
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +7 -10
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.js +1 -2
- package/lib/cjs/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +10 -15
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +5 -8
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RealityModelUniforms.js +3 -4
- package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +7 -8
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +7 -9
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +1 -2
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +1 -2
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/System.js +12 -16
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js +9 -14
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/TargetGraphics.js +1 -2
- package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +1 -2
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.js +2 -4
- package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/cjs/render/webgl/VisibleTileFeatures.js +1 -2
- package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +6 -9
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +1 -2
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Instancing.js +4 -5
- package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +2 -4
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +1 -2
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +1 -2
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js +3 -3
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/GltfReader.js +61 -75
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.js +2 -3
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.js +6 -11
- package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +5 -9
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +13 -17
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +2 -2
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js +4 -5
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +22 -32
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +12 -19
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTile.js +3 -5
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +2 -2
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +3 -5
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/Tile.js +1 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +22 -27
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +3 -6
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.js +1 -1
- package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/TileTree.js +2 -3
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +5 -6
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +6 -8
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -7
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +6 -8
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +1 -2
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +14 -19
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +14 -20
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +5 -6
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +11 -14
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -3
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +6 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +13 -18
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +6 -7
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +4 -5
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +17 -25
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +1 -1
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +2 -4
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +2 -3
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +1 -2
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.js +2 -3
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +2 -4
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +3 -3
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/esm/AccuDraw.js +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.js +3 -3
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/BriefcaseConnection.js +9 -11
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/DisplayStyleState.js +8 -12
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.js +4 -6
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +2 -3
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/FlashSettings.js +3 -4
- package/lib/esm/FlashSettings.js.map +1 -1
- package/lib/esm/GeoServices.js +7 -9
- package/lib/esm/GeoServices.js.map +1 -1
- package/lib/esm/IModelApp.js +19 -21
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js +1 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.js +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +3 -4
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/ModelState.js +2 -3
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.js +4 -7
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -2
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.js +1 -1
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js +2 -4
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/SheetViewState.js +15 -23
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/Tiles.js +2 -2
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/ViewContext.js +1 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +4 -5
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.js +5 -5
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewState.js +17 -24
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.js +22 -32
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/extension/ExtensionImpl.js +1 -1
- package/lib/esm/extension/ExtensionImpl.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -3
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +7 -9
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.js +1 -2
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +7 -9
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/MockRender.js +1 -2
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js +2 -3
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js +7 -10
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderPlan.js +1 -1
- package/lib/esm/render/RenderPlan.js.map +1 -1
- package/lib/esm/render/RenderSystem.js +1 -2
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/VisibleFeature.js +2 -4
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/render/primitives/AuxChannelTable.js +6 -9
- package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js +6 -7
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.js +2 -3
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/render/primitives/VertexKey.js +1 -1
- package/lib/esm/render/primitives/VertexKey.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +1 -1
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js +6 -8
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +9 -11
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -5
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +2 -3
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.js +9 -10
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/EDL.js +17 -21
- package/lib/esm/render/webgl/EDL.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +2 -2
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +3 -5
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +2 -3
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +7 -10
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.js +1 -2
- package/lib/esm/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +10 -15
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +5 -8
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RealityModelUniforms.js +3 -4
- package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +7 -8
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +7 -9
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +1 -2
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +1 -2
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/System.js +12 -16
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.js +9 -14
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/TargetGraphics.js +1 -2
- package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js +1 -2
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.js +2 -4
- package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/esm/render/webgl/VisibleTileFeatures.js +1 -2
- package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +6 -9
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +1 -2
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Instancing.js +4 -5
- package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +2 -4
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +1 -2
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.js +1 -2
- package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js +3 -3
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/GltfReader.js +61 -75
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.js +2 -3
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.js +6 -11
- package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.js +5 -9
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.js +13 -17
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +2 -2
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PntsReader.js +4 -5
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +22 -32
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +12 -19
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTile.js +3 -5
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +2 -2
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js +3 -5
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/Tile.js +1 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.js +22 -27
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +3 -6
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileRequestChannels.js +1 -1
- package/lib/esm/tile/TileRequestChannels.js.map +1 -1
- package/lib/esm/tile/TileTree.js +2 -3
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +5 -6
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +6 -8
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +4 -7
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +6 -8
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +1 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +14 -19
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +14 -20
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +5 -6
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +11 -14
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -3
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +6 -8
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js +1 -1
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +13 -18
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js +6 -7
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +4 -5
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +17 -25
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +1 -1
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.js +2 -4
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +2 -3
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +1 -2
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.js +2 -3
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +2 -4
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +3 -3
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentDecorations.js","sourceRoot":"","sources":["../../src/EnvironmentDecorations.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 Views\n */\n\nimport { assert, Id64} from \"@itwin/core-bentley\";\nimport { Point2d, Point3d, PolyfaceBuilder, StrokeOptions } from \"@itwin/core-geometry\";\nimport {\n ColorDef, Environment, Gradient, GraphicParams, RenderTexture, SkyCube, SkySphere, TextureImageSpec, TextureMapping,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"./IModelApp\";\nimport { ViewState3d } from \"./ViewState\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { tryImageElementFromUrl } from \"./ImageUtil\";\nimport { GraphicType } from \"./render/GraphicBuilder\";\nimport { RenderSkyBoxParams } from \"./render/RenderSystem\";\n\n/** @internal */\nexport interface GroundPlaneDecorations {\n readonly aboveParams: GraphicParams;\n readonly belowParams: GraphicParams;\n}\n\ninterface SkyBoxParamsLoader {\n // Invoke to obtain sky box params.\n load(): RenderSkyBoxParams | undefined;\n // If defined, await before invoking load().\n preload?: Promise<boolean>;\n}\n\n/** @internal */\nexport interface SkyBoxDecorations {\n params?: RenderSkyBoxParams;\n promise?: Promise<boolean>;\n}\n\n/** @internal */\nexport class EnvironmentDecorations {\n protected readonly _view: ViewState3d;\n protected readonly _onLoaded: () => void;\n protected readonly _onDispose: () => void;\n protected _environment: Environment;\n protected _ground?: GroundPlaneDecorations;\n protected _sky: SkyBoxDecorations;\n\n public constructor(view: ViewState3d, onLoaded: () => void, onDispose: () => void) {\n this._environment = view.displayStyle.environment;\n this._view = view;\n this._onLoaded = onLoaded;\n this._onDispose = onDispose;\n\n this._sky = { };\n this.loadSkyBox();\n if (this._environment.displayGround)\n this.loadGround();\n }\n\n public dispose(): void {\n this._ground = undefined;\n this._sky.params = this._sky.promise = undefined;\n\n this._onDispose();\n }\n\n public setEnvironment(env: Environment): void {\n const prev = this._environment;\n if (prev === env)\n return;\n\n this._environment = env;\n\n // Update ground plane\n if (!env.displayGround || env.ground !== prev.ground)\n this._ground = undefined;\n\n if (env.displayGround && !this._ground)\n this.loadGround();\n\n // Update sky box\n if (env.sky !== prev.sky)\n this.loadSkyBox();\n }\n\n public decorate(context: DecorateContext): void {\n const env = this._environment;\n if (env.displaySky && this._sky.params) {\n const sky = IModelApp.renderSystem.createSkyBox(this._sky.params);\n if (sky)\n context.setSkyBox(sky);\n }\n\n if (!env.displayGround || !this._ground)\n return;\n\n const extents = this._view.getGroundExtents(context.viewport);\n if (extents.isNull)\n return;\n\n const points: Point3d[] = [extents.low.clone(), extents.low.clone(), extents.high.clone(), extents.high.clone()];\n points[1].x = extents.high.x;\n points[3].x = extents.low.x;\n\n const aboveGround = this._view.isEyePointAbove(extents.low.z);\n const params = aboveGround ? this._ground.aboveParams : this._ground.belowParams;\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\n builder.activateGraphicParams(params);\n\n const strokeOptions = new StrokeOptions();\n strokeOptions.needParams = true;\n const polyfaceBuilder = PolyfaceBuilder.create(strokeOptions);\n polyfaceBuilder.toggleReversedFacetFlag();\n const uvParams: Point2d[] = [Point2d.create(0, 0), Point2d.create(1, 0), Point2d.create(1, 1), Point2d.create(0, 1)];\n polyfaceBuilder.addQuadFacet(points, uvParams);\n const polyface = polyfaceBuilder.claimPolyface(false);\n\n builder.addPolyface(polyface, true);\n context.addDecorationFromBuilder(builder);\n }\n\n private loadGround(): void {\n assert(undefined === this._ground);\n const aboveParams = this.createGroundParams(true);\n const belowParams = this.createGroundParams(false);\n if (aboveParams && belowParams)\n this._ground = { aboveParams, belowParams };\n }\n\n private createGroundParams(above: boolean): GraphicParams | undefined {\n // Create a gradient texture.\n const ground = this._environment.ground;\n const values = [0, 0.25, 0.5 ];\n const color = above ? ground.aboveColor : ground.belowColor;\n const alpha = above ? 0x80 : 0x85;\n const groundColors = [color.withTransparency(0xff), color, color];\n groundColors[1] = groundColors[2] = color.withTransparency(alpha);\n\n const gradient = new Gradient.Symb();\n gradient.mode = Gradient.Mode.Spherical;\n gradient.keys = [{ color: groundColors[0], value: values[0] }, { color: groundColors[1], value: values[1] }, { color: groundColors[2], value: values[2] }];\n const texture = IModelApp.renderSystem.getGradientTexture(gradient, this._view.iModel);\n if (!texture)\n return undefined;\n\n // Create a material using the gradient texture\n const material = IModelApp.renderSystem.createRenderMaterial({\n diffuse: { color: ColorDef.white, weight: 0 },\n textureMapping: {\n texture,\n transform: new TextureMapping.Trans2x3(0, 1, 0, 1, 0, 0),\n },\n });\n\n if (!material)\n return undefined;\n\n // Create GraphicParams using the material.\n const params = new GraphicParams();\n params.lineColor = gradient.keys[0].color;\n params.fillColor = ColorDef.white; // Fill should be set to opaque white for gradient texture...\n params.material = material;\n\n return params;\n }\n\n private loadSkyBox(): void {\n const loader = this.loadSkyBoxParams();\n if (undefined === loader.preload) {\n this.setSky(loader.load());\n return;\n }\n\n const promise = loader.preload;\n this._sky.promise = promise;\n loader.preload.then((loaded) => {\n if (promise === this._sky.promise)\n this.setSky(loaded ? loader.load() : undefined);\n }).catch(() => {\n if (promise === this._sky.promise)\n this.setSky(undefined);\n });\n }\n\n private setSky(params: RenderSkyBoxParams | undefined): void {\n this._sky.promise = undefined;\n this._sky.params = params ?? this.createSkyGradientParams();\n this._onLoaded();\n }\n\n private loadSkyBoxParams(): SkyBoxParamsLoader {\n let load: (() => RenderSkyBoxParams | undefined);\n let preload: Promise<boolean> | undefined;\n\n const sky = this._environment.sky;\n if (sky instanceof SkyCube) {\n const key = this.createCubeImageKey(sky);\n load = () => {\n const texture = IModelApp.renderSystem.findTexture(key, this._view.iModel);\n return texture ? { type: \"cube\", texture } : undefined;\n };\n\n if (!IModelApp.renderSystem.findTexture(key, this._view.iModel)) {\n // Some faces may use the same image. Only request each image once.\n const promises = [];\n const specs = new Set<string>([sky.images.front, sky.images.back, sky.images.left, sky.images.right, sky.images.top, sky.images.bottom]);\n for (const spec of specs)\n promises.push(this.imageFromSpec(spec));\n\n preload = Promise.all(promises).then((images) => {\n const idToImage = new Map<TextureImageSpec, HTMLImageElement>();\n let index = 0;\n for (const spec of specs) {\n const image = images[index++];\n if (!image)\n return false;\n else\n idToImage.set(spec, image);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const params = new RenderTexture.Params(key, RenderTexture.Type.SkyBox);\n const txImgs = [\n idToImage.get(sky.images.front)!, idToImage.get(sky.images.back)!, idToImage.get(sky.images.top)!,\n idToImage.get(sky.images.bottom)!, idToImage.get(sky.images.right)!, idToImage.get(sky.images.left)!,\n ];\n\n return undefined !== IModelApp.renderSystem.createTextureFromCubeImages(txImgs[0], txImgs[1], txImgs[2], txImgs[3], txImgs[4], txImgs[5], this._view.iModel, params);\n });\n }\n } else if (sky instanceof SkySphere) {\n load = () => {\n const texture = IModelApp.renderSystem.findTexture(sky.image, this._view.iModel);\n return texture ? {\n type: \"sphere\",\n texture,\n rotation: 0,\n zOffset: this._view.iModel.globalOrigin.z,\n } : undefined;\n };\n\n if (!IModelApp.renderSystem.findTexture(sky.image, this._view.iModel)) {\n preload = this.imageFromSpec(sky.image).then((image) => {\n if (!image)\n return false;\n\n return undefined !== IModelApp.renderSystem.createTexture({\n image: { source: image },\n ownership: { iModel: this._view.iModel, key: sky.image },\n });\n });\n }\n } else {\n load = () => this.createSkyGradientParams();\n }\n\n return { load, preload };\n }\n\n private createCubeImageKey(sky: SkyCube): string {\n const i = sky.images;\n return `skycube:${i.front}:${i.back}:${i.left}:${i.right}:${i.top}:${i.bottom}`;\n }\n\n private createSkyGradientParams(): RenderSkyBoxParams {\n return {\n type: \"gradient\",\n gradient: this._environment.sky.gradient,\n zOffset: this._view.iModel.globalOrigin.z,\n };\n }\n\n private async imageFromSpec(spec: TextureImageSpec): Promise<HTMLImageElement | undefined> {\n if (Id64.isValidId64(spec))\n return (await IModelApp.renderSystem.loadTextureImage(spec, this._view.iModel))?.image;\n\n return tryImageElementFromUrl(spec);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"EnvironmentDecorations.js","sourceRoot":"","sources":["../../src/EnvironmentDecorations.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 Views\n */\n\nimport { assert, Id64} from \"@itwin/core-bentley\";\nimport { Point2d, Point3d, PolyfaceBuilder, StrokeOptions } from \"@itwin/core-geometry\";\nimport {\n ColorDef, Environment, Gradient, GraphicParams, RenderTexture, SkyCube, SkySphere, TextureImageSpec, TextureMapping,\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"./IModelApp\";\nimport { ViewState3d } from \"./ViewState\";\nimport { DecorateContext } from \"./ViewContext\";\nimport { tryImageElementFromUrl } from \"./ImageUtil\";\nimport { GraphicType } from \"./render/GraphicBuilder\";\nimport { RenderSkyBoxParams } from \"./render/RenderSystem\";\n\n/** @internal */\nexport interface GroundPlaneDecorations {\n readonly aboveParams: GraphicParams;\n readonly belowParams: GraphicParams;\n}\n\ninterface SkyBoxParamsLoader {\n // Invoke to obtain sky box params.\n load(): RenderSkyBoxParams | undefined;\n // If defined, await before invoking load().\n preload?: Promise<boolean>;\n}\n\n/** @internal */\nexport interface SkyBoxDecorations {\n params?: RenderSkyBoxParams;\n promise?: Promise<boolean>;\n}\n\n/** @internal */\nexport class EnvironmentDecorations {\n protected readonly _view: ViewState3d;\n protected readonly _onLoaded: () => void;\n protected readonly _onDispose: () => void;\n protected _environment: Environment;\n protected _ground?: GroundPlaneDecorations;\n protected _sky: SkyBoxDecorations;\n\n public constructor(view: ViewState3d, onLoaded: () => void, onDispose: () => void) {\n this._environment = view.displayStyle.environment;\n this._view = view;\n this._onLoaded = onLoaded;\n this._onDispose = onDispose;\n\n this._sky = { };\n this.loadSkyBox();\n if (this._environment.displayGround)\n this.loadGround();\n }\n\n public dispose(): void {\n this._ground = undefined;\n this._sky.params = this._sky.promise = undefined;\n\n this._onDispose();\n }\n\n public setEnvironment(env: Environment): void {\n const prev = this._environment;\n if (prev === env)\n return;\n\n this._environment = env;\n\n // Update ground plane\n if (!env.displayGround || env.ground !== prev.ground)\n this._ground = undefined;\n\n if (env.displayGround && !this._ground)\n this.loadGround();\n\n // Update sky box\n if (env.sky !== prev.sky)\n this.loadSkyBox();\n }\n\n public decorate(context: DecorateContext): void {\n const env = this._environment;\n if (env.displaySky && this._sky.params) {\n const sky = IModelApp.renderSystem.createSkyBox(this._sky.params);\n if (sky)\n context.setSkyBox(sky);\n }\n\n if (!env.displayGround || !this._ground)\n return;\n\n const extents = this._view.getGroundExtents(context.viewport);\n if (extents.isNull)\n return;\n\n const points: Point3d[] = [extents.low.clone(), extents.low.clone(), extents.high.clone(), extents.high.clone()];\n points[1].x = extents.high.x;\n points[3].x = extents.low.x;\n\n const aboveGround = this._view.isEyePointAbove(extents.low.z);\n const params = aboveGround ? this._ground.aboveParams : this._ground.belowParams;\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\n builder.activateGraphicParams(params);\n\n const strokeOptions = new StrokeOptions();\n strokeOptions.needParams = true;\n const polyfaceBuilder = PolyfaceBuilder.create(strokeOptions);\n polyfaceBuilder.toggleReversedFacetFlag();\n const uvParams: Point2d[] = [Point2d.create(0, 0), Point2d.create(1, 0), Point2d.create(1, 1), Point2d.create(0, 1)];\n polyfaceBuilder.addQuadFacet(points, uvParams);\n const polyface = polyfaceBuilder.claimPolyface(false);\n\n builder.addPolyface(polyface, true);\n context.addDecorationFromBuilder(builder);\n }\n\n private loadGround(): void {\n assert(undefined === this._ground);\n const aboveParams = this.createGroundParams(true);\n const belowParams = this.createGroundParams(false);\n if (aboveParams && belowParams)\n this._ground = { aboveParams, belowParams };\n }\n\n private createGroundParams(above: boolean): GraphicParams | undefined {\n // Create a gradient texture.\n const ground = this._environment.ground;\n const values = [0, 0.25, 0.5 ];\n const color = above ? ground.aboveColor : ground.belowColor;\n const alpha = above ? 0x80 : 0x85;\n const groundColors = [color.withTransparency(0xff), color, color];\n groundColors[1] = groundColors[2] = color.withTransparency(alpha);\n\n const gradient = new Gradient.Symb();\n gradient.mode = Gradient.Mode.Spherical;\n gradient.keys = [{ color: groundColors[0], value: values[0] }, { color: groundColors[1], value: values[1] }, { color: groundColors[2], value: values[2] }];\n const texture = IModelApp.renderSystem.getGradientTexture(gradient, this._view.iModel);\n if (!texture)\n return undefined;\n\n // Create a material using the gradient texture\n const material = IModelApp.renderSystem.createRenderMaterial({\n diffuse: { color: ColorDef.white, weight: 0 },\n textureMapping: {\n texture,\n transform: new TextureMapping.Trans2x3(0, 1, 0, 1, 0, 0),\n },\n });\n\n if (!material)\n return undefined;\n\n // Create GraphicParams using the material.\n const params = new GraphicParams();\n params.lineColor = gradient.keys[0].color;\n params.fillColor = ColorDef.white; // Fill should be set to opaque white for gradient texture...\n params.material = material;\n\n return params;\n }\n\n private loadSkyBox(): void {\n const loader = this.loadSkyBoxParams();\n if (undefined === loader.preload) {\n this.setSky(loader.load());\n return;\n }\n\n const promise = loader.preload;\n this._sky.promise = promise;\n loader.preload.then((loaded) => {\n if (promise === this._sky.promise)\n this.setSky(loaded ? loader.load() : undefined);\n }).catch(() => {\n if (promise === this._sky.promise)\n this.setSky(undefined);\n });\n }\n\n private setSky(params: RenderSkyBoxParams | undefined): void {\n this._sky.promise = undefined;\n this._sky.params = params ?? this.createSkyGradientParams();\n this._onLoaded();\n }\n\n private loadSkyBoxParams(): SkyBoxParamsLoader {\n let load: (() => RenderSkyBoxParams | undefined);\n let preload: Promise<boolean> | undefined;\n\n const sky = this._environment.sky;\n if (sky instanceof SkyCube) {\n const key = this.createCubeImageKey(sky);\n load = () => {\n const texture = IModelApp.renderSystem.findTexture(key, this._view.iModel);\n return texture ? { type: \"cube\", texture } : undefined;\n };\n\n if (!IModelApp.renderSystem.findTexture(key, this._view.iModel)) {\n // Some faces may use the same image. Only request each image once.\n const promises = [];\n const specs = new Set<string>([sky.images.front, sky.images.back, sky.images.left, sky.images.right, sky.images.top, sky.images.bottom]);\n for (const spec of specs)\n promises.push(this.imageFromSpec(spec));\n\n preload = Promise.all(promises).then((images) => {\n const idToImage = new Map<TextureImageSpec, HTMLImageElement>();\n let index = 0;\n for (const spec of specs) {\n const image = images[index++];\n if (!image)\n return false;\n else\n idToImage.set(spec, image);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const params = new RenderTexture.Params(key, RenderTexture.Type.SkyBox);\n const txImgs = [\n idToImage.get(sky.images.front)!, idToImage.get(sky.images.back)!, idToImage.get(sky.images.top)!,\n idToImage.get(sky.images.bottom)!, idToImage.get(sky.images.right)!, idToImage.get(sky.images.left)!,\n ];\n\n return undefined !== IModelApp.renderSystem.createTextureFromCubeImages(txImgs[0], txImgs[1], txImgs[2], txImgs[3], txImgs[4], txImgs[5], this._view.iModel, params);\n });\n }\n } else if (sky instanceof SkySphere) {\n load = () => {\n const texture = IModelApp.renderSystem.findTexture(sky.image, this._view.iModel);\n return texture ? {\n type: \"sphere\",\n texture,\n rotation: 0,\n zOffset: this._view.iModel.globalOrigin.z,\n } : undefined;\n };\n\n if (!IModelApp.renderSystem.findTexture(sky.image, this._view.iModel)) {\n preload = this.imageFromSpec(sky.image).then((image) => {\n if (!image)\n return false;\n\n return undefined !== IModelApp.renderSystem.createTexture({\n image: { source: image },\n ownership: { iModel: this._view.iModel, key: sky.image },\n });\n });\n }\n } else {\n load = () => this.createSkyGradientParams();\n }\n\n return { load, preload };\n }\n\n private createCubeImageKey(sky: SkyCube): string {\n const i = sky.images;\n return `skycube:${i.front}:${i.back}:${i.left}:${i.right}:${i.top}:${i.bottom}`;\n }\n\n private createSkyGradientParams(): RenderSkyBoxParams {\n return {\n type: \"gradient\",\n gradient: this._environment.sky.gradient,\n zOffset: this._view.iModel.globalOrigin.z,\n };\n }\n\n private async imageFromSpec(spec: TextureImageSpec): Promise<HTMLImageElement | undefined> {\n if (Id64.isValidId64(spec))\n return (await IModelApp.renderSystem.loadTextureImage(spec, this._view.iModel))?.image;\n\n return tryImageElementFromUrl(spec);\n }\n}\n"]}
|
package/lib/cjs/FlashSettings.js
CHANGED
|
@@ -43,11 +43,10 @@ class FlashSettings {
|
|
|
43
43
|
* ```
|
|
44
44
|
*/
|
|
45
45
|
constructor(options) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const maxIntensity = (_a = options === null || options === void 0 ? void 0 : options.maxIntensity) !== null && _a !== void 0 ? _a : 1;
|
|
46
|
+
this.litMode = options?.litMode === FlashMode.Hilite ? FlashMode.Hilite : FlashMode.Brighten;
|
|
47
|
+
const maxIntensity = options?.maxIntensity ?? 1;
|
|
49
48
|
this.maxIntensity = Math.min(1, Math.max(0, maxIntensity));
|
|
50
|
-
let duration = options
|
|
49
|
+
let duration = options?.duration;
|
|
51
50
|
if (duration) {
|
|
52
51
|
const ms = Math.max(0, Math.min(10 * 1000, duration.milliseconds));
|
|
53
52
|
if (ms !== duration.milliseconds)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlashSettings.js","sourceRoot":"","sources":["../../src/FlashSettings.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA0D;AAE1D;;;GAGG;AACH,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,gEAAgE;IAChE,6CAAM,CAAA;IACN;;OAEG;IACH,iDAAQ,CAAA;AACV,CAAC,EAPW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAOpB;AASD;;;;;;;;;;;GAWG;AACH,MAAa,aAAa;IAmBxB;;;;;;OAMG;IACH,YAAmB,OAA8B
|
|
1
|
+
{"version":3,"file":"FlashSettings.js","sourceRoot":"","sources":["../../src/FlashSettings.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA0D;AAE1D;;;GAGG;AACH,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,gEAAgE;IAChE,6CAAM,CAAA;IACN;;OAEG;IACH,iDAAQ,CAAA;AACV,CAAC,EAPW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAOpB;AASD;;;;;;;;;;;GAWG;AACH,MAAa,aAAa;IAmBxB;;;;;;OAMG;IACH,YAAmB,OAA8B;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;QAE7F,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAE3D,IAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;QACjC,IAAI,QAAQ,EAAE;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YACnE,IAAI,EAAE,KAAK,QAAQ,CAAC,YAAY;gBAC9B,QAAQ,GAAG,yBAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;SAC9C;aAAM;YACL,QAAQ,GAAG,yBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACzC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAA8B;QACzC,IAAI,CAAC,OAAO;YACV,OAAO,IAAI,CAAC;QAEd,OAAO,IAAI,aAAa,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;CACF;AAvDD,sCAuDC","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 { BeDuration, Mutable } from \"@itwin/core-bentley\";\n\n/** As part of [[FlashSettings]], describes how geometry is flashed.\n * @public\n * @extensions\n */\nexport enum FlashMode {\n /** The color of the geometry is mixed with the hilite color. */\n Hilite,\n /** The color of the geometry is brightened. Applicable only to lit geometry - i.e., meshes displayed in a view with [RenderMode.SmoothShade]($common)\n * and lighting enabled.\n */\n Brighten,\n}\n\n/** Options used to construct or clone a [[FlashSettings]]. All properties are mutable and optional; those left undefined receive their default\n * values.\n * @public\n * @extensions\n */\nexport type FlashSettingsOptions = Mutable<Partial<FlashSettings>>;\n\n/** Settings that control how geometry is \"flashed\" when hovered over in a [[Viewport]].\n * When the user hovers the mouse cursor over an element (or other piece of geometry, like a reality mesh), a [[Tool]] visually indicates\n * that it can interact with that geometry by \"flashing\" it. Flashed geometry changes color in one of the following two ways:\n * - By mixing the viewport's hilite color as specified by [[Viewport.hilite]] with the geometry's own color; or\n * - By brightening the geometry's own color (for lit geometry only - i.e., meshes displayed in a view with lighting enabled).\n * The flash effect starts out at an intensity of zero and increases linearly over the period of time specified by [[duration]] until\n * [[maxIntensity]] is reached.\n * @see [[Viewport.flashSettings]] to customize the flash behavior for a viewport.\n * @see [[Viewport.hilite]] to customize the hilite color used by [[FlashMode.Hilite]].\n * @public\n * @extensions\n */\nexport class FlashSettings {\n /** The duration in seconds over which the flash effect increases from zero to [[maxIntensity]], in [0..10].\n * Default value: 0.25 seconds.\n * Values outside of [0..10] are clamped to that range.\n */\n public readonly duration: BeDuration;\n /** The maximum intensity of the flash effect, after [[duration]] seconds have elapsed, in [0..1].\n * For [[FlashMode.Brighten]] this indicates how much brighter the the geometry will be.\n * For [[FlashMode.Hilite]] this indicates the ratio of the hilite color to the geometry's own color - i.e., a max intensity of 1.0 causes\n * the geometry to display entirely in the hilite color at its maximum.\n * Default value: 1.0.\n * Values outside of [0..1] are clamped to that range.\n */\n public readonly maxIntensity: number;\n /** Specifies how lit geometry (that is, meshes displayed in a view with lighting enabled) is flashed.\n * Default value: [[FlashMode.Brighten]].\n */\n public readonly litMode: FlashMode;\n\n /** Construct new flash settings.\n * @param options If supplied, overrides specified default values.\n * Example: to change [[duration]] to 1 second and use default [[maxIntensity]] and [[litMode]]:\n * ```ts\n * const settings = new FlashSettings({ duration: BeDuration.fromSeconds(1) });\n * ```\n */\n public constructor(options?: FlashSettingsOptions) {\n this.litMode = options?.litMode === FlashMode.Hilite ? FlashMode.Hilite : FlashMode.Brighten;\n\n const maxIntensity = options?.maxIntensity ?? 1;\n this.maxIntensity = Math.min(1, Math.max(0, maxIntensity));\n\n let duration = options?.duration;\n if (duration) {\n const ms = Math.max(0, Math.min(10 * 1000, duration.milliseconds));\n if (ms !== duration.milliseconds)\n duration = BeDuration.fromMilliseconds(ms);\n } else {\n duration = BeDuration.fromSeconds(0.25);\n }\n\n this.duration = duration;\n }\n\n /** Create a copy of these settings identical except for properties explicitly specified by `options`.\n * @param options Overrides selected properties of these settings. Any property not supplied will retain its current value. Any property\n * explicitly set to `undefined` will receive its default value.\n * @returns A copy of these settings identical except as specified by `options`.\n */\n public clone(options?: FlashSettingsOptions): FlashSettings {\n if (!options)\n return this;\n\n return new FlashSettings({ ...this, ...options });\n }\n}\n"]}
|
package/lib/cjs/GeoServices.js
CHANGED
|
@@ -30,13 +30,12 @@ function cloneXYAndZ(xyz) {
|
|
|
30
30
|
*/
|
|
31
31
|
class CoordinateConverter {
|
|
32
32
|
constructor(opts) {
|
|
33
|
-
var _a;
|
|
34
33
|
this._state = "idle";
|
|
35
34
|
// An event fired when the next request completes.
|
|
36
35
|
this._onCompleted = new core_bentley_1.BeEvent();
|
|
37
36
|
// Used for creating cache keys (XYAndZ) from XYZProps without having to allocate temporary objects.
|
|
38
37
|
this._scratchXYZ = { x: 0, y: 0, z: 0 };
|
|
39
|
-
this._maxPointsPerRequest = Math.max(1,
|
|
38
|
+
this._maxPointsPerRequest = Math.max(1, opts.maxPointsPerRequest ?? 300);
|
|
40
39
|
this._iModel = opts.iModel;
|
|
41
40
|
this._requestPoints = opts.requestPoints;
|
|
42
41
|
this._cache = new core_bentley_1.Dictionary(compareXYAndZ, cloneXYAndZ);
|
|
@@ -44,16 +43,15 @@ class CoordinateConverter {
|
|
|
44
43
|
this._inflight = new core_bentley_1.SortedArray(compareXYAndZ, false, cloneXYAndZ);
|
|
45
44
|
}
|
|
46
45
|
toXYAndZ(input, output) {
|
|
47
|
-
var _a, _b, _c, _d, _e, _f;
|
|
48
46
|
if (Array.isArray(input)) {
|
|
49
|
-
output.x =
|
|
50
|
-
output.y =
|
|
51
|
-
output.z =
|
|
47
|
+
output.x = input[0] ?? 0;
|
|
48
|
+
output.y = input[1] ?? 0;
|
|
49
|
+
output.z = input[2] ?? 0;
|
|
52
50
|
}
|
|
53
51
|
else {
|
|
54
|
-
output.x =
|
|
55
|
-
output.y =
|
|
56
|
-
output.z =
|
|
52
|
+
output.x = input.x ?? 0;
|
|
53
|
+
output.y = input.y ?? 0;
|
|
54
|
+
output.z = input.z ?? 0;
|
|
57
55
|
}
|
|
58
56
|
return output;
|
|
59
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoServices.js","sourceRoot":"","sources":["../../src/GeoServices.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,qBAAqB;AACrB,sDAE6B;AAE7B,oDAE4B;AAE5B,qEAAkE;AAclE,SAAS,aAAa,CAAC,GAAW,EAAE,GAAW;IAC7C,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC1C,CAAC;AAUD;;;;;;;;;;;;GAYG;AACH,MAAa,mBAAmB;IA6B9B,YAAmB,IAAgC;;QA3BzC,WAAM,GAA6B,MAAM,CAAC;QAKpD,kDAAkD;QACxC,iBAAY,GAAG,IAAI,sBAAO,EAAc,CAAC;QACnD,oGAAoG;QACjF,gBAAW,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAoBpD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAA,IAAI,CAAC,mBAAmB,mCAAI,GAAG,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QAEzC,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAU,CAA0B,aAAa,EAAE,WAAW,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAAW,CAAS,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,IAAI,0BAAW,CAAS,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9E,CAAC;IAtBS,QAAQ,CAAC,KAAe,EAAE,MAAsB;;QACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,CAAC,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC;YACzB,MAAM,CAAC,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC;YACzB,MAAM,CAAC,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC;SAC1B;aAAM;YACL,MAAM,CAAC,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,GAAG,MAAA,KAAK,CAAC,CAAC,mCAAI,CAAC,CAAC;SACzB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAYS,KAAK,CAAC,QAAQ;QACtB,IAAA,qBAAM,EAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;YAC/B,OAAO;SACR;QAED,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAE1B,uFAAuF;QACvF,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,sBAAO,EAAc,CAAC;QAE9C,+HAA+H;QAC/H,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,IAAA,qBAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,kGAAkG;QAClG,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE;YACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,YAAY,EAAE,CAAC;YACjF,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;oBACvB,OAAO;gBAET,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;oBACpC,qBAAM,CAAC,QAAQ,CAAC,GAAG,+CAAsB,CAAC,OAAO,cAAc,EAAE,2BAA2B,QAAQ,CAAC,MAAM,yBAAyB,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;gBAE/J,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACvC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM;wBACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5C;YACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,qBAAM,CAAC,YAAY,CAAC,GAAG,+CAAsB,CAAC,OAAO,cAAc,EAAE,GAAG,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,IAAA,qBAAM,EAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvB,iGAAiG;QACjG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;YACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,8DAA8D;QAEzF,kEAAkE;QAClE,WAAW,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,+DAA+D;IAC/D,gDAAgD;IACtC,OAAO,CAAC,MAAkB;QAClC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBACtB,EAAE,UAAU,CAAC;iBACV,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC7B;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,0HAA0H;IAC1H,2EAA2E;IACjE,YAAY,CAAC,MAAkB;QACvC,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM;gBACT,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,4BAAc,CAAC,UAAU,EAAE,CAAC;YAE3D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtB;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,KAAK,CAAC,gBAAgB;QAC9B,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC1B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YAC1B,qBAAqB,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,8DAA8D;YACjF,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,MAAkB;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,IAAA,qBAAM,EAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QACvB,IAAA,qBAAM,EAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM;YAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;QAE1D,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;IAEM,UAAU,CAAC,MAAkB;QAClC,MAAM,MAAM,GAAuC,EAAE,CAAC;QACtD,IAAI,OAA+B,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,OAAO;oBACV,OAAO,GAAG,EAAE,CAAC;gBAEf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrB;SACF;QAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;CACF;AAzKD,kDAyKC;AAYD;;GAEG;AACH,MAAa,YAAY;IAIvB,YAAY,MAAwB,EAAE,WAAwC;QAC5E,MAAM,KAAK,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAE1F,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC;YAC1C,MAAM;YACN,aAAa,EAAE,KAAK,EAAE,SAAmB,EAAE,EAAE;gBAC3C,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,oCAAsB,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACpF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,sCAAsC,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;gBACjG,OAAO,QAAQ,CAAC,YAAY,CAAC;YAC/B,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC;YAC1C,MAAM;YACN,aAAa,EAAE,KAAK,EAAE,YAAsB,EAAE,EAAE;gBAC9C,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;gBAChD,MAAM,GAAG,GAAG,oCAAsB,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACpF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,sCAAsC,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;gBACjG,OAAO,QAAQ,CAAC,SAAS,CAAC;YAC5B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,sCAAsC,CAAC,SAAqB;QACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,sCAAsC,CAAC,YAAwB;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7D,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;IAEM,4CAA4C,CAAC,SAAqB;QACvE,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;CACF;AA/CD,oCA+CC;AAED;;GAEG;AACH,MAAa,WAAW;IAGtB,YAAY,MAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEM,YAAY,CAAC,WAAyC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1G,CAAC;CACF;AAVD,kCAUC","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// cspell:ignore GCRS\nimport {\n assert, BeEvent, Dictionary, Logger, SortedArray,\n} from \"@itwin/core-bentley\";\nimport { WritableXYAndZ, XYAndZ, XYZProps } from \"@itwin/core-geometry\";\nimport {\n GeoCoordinatesResponseProps, GeoCoordStatus, GeographicCRSProps, IModelCoordinatesResponseProps, IModelReadRpcInterface, PointWithStatus,\n} from \"@itwin/core-common\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\n\n/** Options used to create a [[CoordinateConverter]].\n * @internal exported strictly for tests.\n */\nexport interface CoordinateConverterOptions {\n /** The iModel for which to perform the conversions. */\n iModel: IModelConnection;\n /** Asynchronously convert each point. The resultant array should have the same number and order of points as the input. */\n requestPoints: (points: XYAndZ[]) => Promise<PointWithStatus[]>;\n /** Maximum number of points to include in each request. Default: 300. */\n maxPointsPerRequest?: number;\n}\n\nfunction compareXYAndZ(lhs: XYAndZ, rhs: XYAndZ): number {\n return lhs.x - rhs.x || lhs.y - rhs.y || lhs.z - rhs.z;\n}\n\nfunction cloneXYAndZ(xyz: XYAndZ): XYAndZ {\n return { x: xyz.x, y: xyz.y, z: xyz.z };\n}\n\ntype CoordinateConverterState =\n // No pending requests.\n \"idle\" |\n // We have scheduled a requestAnimationFrame to dispatch all pending requests.\n \"scheduled\" |\n // We have dispatched all requests that were pending at the most recent requestAnimationFrame callback.\n \"in-flight\";\n\n/** Performs conversion of coordinates from one coordinate system to another.\n * A [[GeoConverter]] has a pair of these for converting between iModel coordinates and geographic coordinates.\n * Uses a cache to avoid repeatedly requesting the same points, and a batching strategy to avoid making frequent small requests.\n * The cache stores every point that was ever converted by [[convert]]. It is currently permitted to grow to unbounded size.\n * The batching works as follows:\n * When a conversion is requested via [[convert]], if all the requested points are in the cache, they are returned immediately.\n * Otherwise, any points not in the cache and not in the current in-flight request (if any) are placed onto the queue of pending requests.\n * A pending request is scheduled if one hasn't already been scheduled, via requestAnimationFrame.\n * In the animation frame callback, the pending requests are split into batches of no more than options.maxPointsPerRequest and dispatched to the backend.\n * Once the response is received, the results are loaded into and returned from the cache.\n * If more calls to convert occurred while the request was in flight, another request is dispatched.\n * @internal exported strictly for tests.\n */\nexport class CoordinateConverter {\n protected readonly _cache: Dictionary<XYAndZ, PointWithStatus>;\n protected _state: CoordinateConverterState = \"idle\";\n // The accumulated set of points to be converted by the next request.\n protected _pending: SortedArray<XYAndZ>;\n // The set of points that were included in the current in-flight request, if any.\n protected _inflight: SortedArray<XYAndZ>;\n // An event fired when the next request completes.\n protected _onCompleted = new BeEvent<() => void>();\n // Used for creating cache keys (XYAndZ) from XYZProps without having to allocate temporary objects.\n protected readonly _scratchXYZ = { x: 0, y: 0, z: 0 };\n protected readonly _maxPointsPerRequest: number;\n protected readonly _iModel: IModelConnection;\n protected readonly _requestPoints: (points: XYAndZ[]) => Promise<PointWithStatus[]>;\n\n protected toXYAndZ(input: XYZProps, output: WritableXYAndZ): XYAndZ {\n if (Array.isArray(input)) {\n output.x = input[0] ?? 0;\n output.y = input[1] ?? 0;\n output.z = input[2] ?? 0;\n } else {\n output.x = input.x ?? 0;\n output.y = input.y ?? 0;\n output.z = input.z ?? 0;\n }\n\n return output;\n }\n\n public constructor(opts: CoordinateConverterOptions) {\n this._maxPointsPerRequest = Math.max(1, opts.maxPointsPerRequest ?? 300);\n this._iModel = opts.iModel;\n this._requestPoints = opts.requestPoints;\n\n this._cache = new Dictionary<XYAndZ, PointWithStatus>(compareXYAndZ, cloneXYAndZ);\n this._pending = new SortedArray<XYAndZ>(compareXYAndZ, false, cloneXYAndZ);\n this._inflight = new SortedArray<XYAndZ>(compareXYAndZ, false, cloneXYAndZ);\n }\n\n protected async dispatch(): Promise<void> {\n assert(this._state === \"scheduled\");\n if (this._iModel.isClosed || this._pending.isEmpty) {\n this._state = \"idle\";\n this._onCompleted.raiseEvent();\n return;\n }\n\n this._state = \"in-flight\";\n\n // Ensure subsequently-enqueued requests listen for the *next* response to be received.\n const onCompleted = this._onCompleted;\n this._onCompleted = new BeEvent<() => void>();\n\n // Pending requests are now in flight. Start a new list of pending requests. It's cheaper to swap than to allocate new objects.\n const inflight = this._pending;\n this._pending = this._inflight;\n assert(this._pending.isEmpty);\n this._inflight = inflight;\n\n // Split requests if necessary to avoid requesting more than the maximum allowed number of points.\n const promises: Array<Promise<void>> = [];\n for (let i = 0; i < inflight.length; i += this._maxPointsPerRequest) {\n const requests = inflight.slice(i, i + this._maxPointsPerRequest).extractArray();\n const promise = this._requestPoints(requests).then((results) => {\n if (this._iModel.isClosed)\n return;\n\n if (results.length !== requests.length)\n Logger.logError(`${FrontendLoggerCategory.Package}.geoservices`, `requested conversion of ${requests.length} points, but received ${results.length} points`);\n\n for (let j = 0; j < results.length; j++) {\n if (j < requests.length)\n this._cache.set(requests[j], results[j]);\n }\n }).catch((err) => {\n Logger.logException(`${FrontendLoggerCategory.Package}.geoservices`, err);\n });\n\n promises.push(promise);\n }\n\n await Promise.all(promises);\n\n assert(this._state === \"in-flight\");\n this._state = \"idle\";\n this._inflight.clear();\n\n // If any more pending conversions arrived while awaiting this request, schedule another request.\n if (!this._pending.isEmpty)\n this.scheduleDispatch(); // eslint-disable-line @typescript-eslint/no-floating-promises\n\n // Resolve promises of all callers who were awaiting this request.\n onCompleted.raiseEvent();\n }\n\n // Add any points not present in cache to pending request list.\n // Return the number of points present in cache.\n protected enqueue(points: XYZProps[]): number {\n let numInCache = 0;\n for (const point of points) {\n const xyz = this.toXYAndZ(point, this._scratchXYZ);\n if (this._cache.get(xyz))\n ++numInCache;\n else if (!this._inflight.contains(xyz))\n this._pending.insert(xyz);\n }\n\n return numInCache;\n }\n\n // Obtain converted points from the cache. The assumption is that every point in `inputs` is already present in the cache.\n // Any point not present will be returned unconverted with an error status.\n protected getFromCache(inputs: XYZProps[]): PointWithStatus[] {\n const outputs: PointWithStatus[] = [];\n for (const input of inputs) {\n const xyz = this.toXYAndZ(input, this._scratchXYZ);\n let output = this._cache.get(xyz);\n if (!output)\n output = { p: { ...xyz }, s: GeoCoordStatus.CSMapError };\n\n outputs.push(output);\n }\n\n return outputs;\n }\n\n protected async scheduleDispatch(): Promise<void> {\n if (\"idle\" === this._state) {\n this._state = \"scheduled\";\n requestAnimationFrame(() => {\n this.dispatch(); // eslint-disable-line @typescript-eslint/no-floating-promises\n });\n }\n\n return new Promise((resolve) => {\n this._onCompleted.addOnce(() => resolve());\n });\n }\n\n public async convert(inputs: XYZProps[]): Promise<{ points: PointWithStatus[], fromCache: number }> {\n const fromCache = this.enqueue(inputs);\n assert(fromCache >= 0);\n assert(fromCache <= inputs.length);\n\n if (fromCache === inputs.length)\n return { points: this.getFromCache(inputs), fromCache };\n\n await this.scheduleDispatch();\n\n return { points: this.getFromCache(inputs), fromCache };\n }\n\n public findCached(inputs: XYZProps[]): CachedIModelCoordinatesResponseProps {\n const result: Array<PointWithStatus | undefined> = [];\n let missing: XYZProps[] | undefined;\n for (const input of inputs) {\n const key = this.toXYAndZ(input, this._scratchXYZ);\n const output = this._cache.get(key);\n result.push(output);\n if (!output) {\n if (!missing)\n missing = [];\n\n missing.push(input);\n }\n }\n\n return { result, missing };\n }\n}\n\n/** Response to a request to obtain imodel coordinates from cache.\n * @internal\n */\nexport interface CachedIModelCoordinatesResponseProps {\n /** An array of the same length as the input array, with undefined entries at indices corresponding to points not found in cache. */\n result: Array<PointWithStatus | undefined>;\n /** An array of points in the input array which were not found in the cache, or undefined if all points were found in the cache. */\n missing?: XYZProps[];\n}\n\n/** The GeoConverter class communicates with the backend to convert longitude/latitude coordinates to iModel coordinates and vice-versa\n * @internal\n */\nexport class GeoConverter {\n private readonly _geoToIModel: CoordinateConverter;\n private readonly _iModelToGeo: CoordinateConverter;\n\n constructor(iModel: IModelConnection, datumOrGCRS: string | GeographicCRSProps) {\n const datum = typeof datumOrGCRS === \"object\" ? JSON.stringify(datumOrGCRS) : datumOrGCRS;\n\n this._geoToIModel = new CoordinateConverter({\n iModel,\n requestPoints: async (geoCoords: XYAndZ[]) => {\n const request = { source: datum, geoCoords };\n const rpc = IModelReadRpcInterface.getClientForRouting(iModel.routingContext.token);\n const response = await rpc.getIModelCoordinatesFromGeoCoordinates(iModel.getRpcProps(), request);\n return response.iModelCoords;\n },\n });\n\n this._iModelToGeo = new CoordinateConverter({\n iModel,\n requestPoints: async (iModelCoords: XYAndZ[]) => {\n const request = { target: datum, iModelCoords };\n const rpc = IModelReadRpcInterface.getClientForRouting(iModel.routingContext.token);\n const response = await rpc.getGeoCoordinatesFromIModelCoordinates(iModel.getRpcProps(), request);\n return response.geoCoords;\n },\n });\n }\n\n public async getIModelCoordinatesFromGeoCoordinates(geoPoints: XYZProps[]): Promise<IModelCoordinatesResponseProps> {\n const result = await this._geoToIModel.convert(geoPoints);\n return {\n iModelCoords: result.points,\n fromCache: result.fromCache,\n };\n }\n\n public async getGeoCoordinatesFromIModelCoordinates(iModelPoints: XYZProps[]): Promise<GeoCoordinatesResponseProps> {\n const result = await this._iModelToGeo.convert(iModelPoints);\n return {\n geoCoords: result.points,\n fromCache: result.fromCache,\n };\n }\n\n public getCachedIModelCoordinatesFromGeoCoordinates(geoPoints: XYZProps[]): CachedIModelCoordinatesResponseProps {\n return this._geoToIModel.findCached(geoPoints);\n }\n}\n\n/** The Geographic Services available for an [[IModelConnection]].\n * @internal\n */\nexport class GeoServices {\n private _iModel: IModelConnection;\n\n constructor(iModel: IModelConnection) {\n this._iModel = iModel;\n }\n\n public getConverter(datumOrGCRS?: string | GeographicCRSProps): GeoConverter | undefined {\n return this._iModel.isOpen ? new GeoConverter(this._iModel, datumOrGCRS ? datumOrGCRS : \"\") : undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GeoServices.js","sourceRoot":"","sources":["../../src/GeoServices.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// cspell:ignore GCRS\nimport {\n assert, BeEvent, Dictionary, Logger, SortedArray,\n} from \"@itwin/core-bentley\";\nimport { WritableXYAndZ, XYAndZ, XYZProps } from \"@itwin/core-geometry\";\nimport {\n GeoCoordinatesResponseProps, GeoCoordStatus, GeographicCRSProps, IModelCoordinatesResponseProps, IModelReadRpcInterface, PointWithStatus,\n} from \"@itwin/core-common\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\n\n/** Options used to create a [[CoordinateConverter]].\n * @internal exported strictly for tests.\n */\nexport interface CoordinateConverterOptions {\n /** The iModel for which to perform the conversions. */\n iModel: IModelConnection;\n /** Asynchronously convert each point. The resultant array should have the same number and order of points as the input. */\n requestPoints: (points: XYAndZ[]) => Promise<PointWithStatus[]>;\n /** Maximum number of points to include in each request. Default: 300. */\n maxPointsPerRequest?: number;\n}\n\nfunction compareXYAndZ(lhs: XYAndZ, rhs: XYAndZ): number {\n return lhs.x - rhs.x || lhs.y - rhs.y || lhs.z - rhs.z;\n}\n\nfunction cloneXYAndZ(xyz: XYAndZ): XYAndZ {\n return { x: xyz.x, y: xyz.y, z: xyz.z };\n}\n\ntype CoordinateConverterState =\n // No pending requests.\n \"idle\" |\n // We have scheduled a requestAnimationFrame to dispatch all pending requests.\n \"scheduled\" |\n // We have dispatched all requests that were pending at the most recent requestAnimationFrame callback.\n \"in-flight\";\n\n/** Performs conversion of coordinates from one coordinate system to another.\n * A [[GeoConverter]] has a pair of these for converting between iModel coordinates and geographic coordinates.\n * Uses a cache to avoid repeatedly requesting the same points, and a batching strategy to avoid making frequent small requests.\n * The cache stores every point that was ever converted by [[convert]]. It is currently permitted to grow to unbounded size.\n * The batching works as follows:\n * When a conversion is requested via [[convert]], if all the requested points are in the cache, they are returned immediately.\n * Otherwise, any points not in the cache and not in the current in-flight request (if any) are placed onto the queue of pending requests.\n * A pending request is scheduled if one hasn't already been scheduled, via requestAnimationFrame.\n * In the animation frame callback, the pending requests are split into batches of no more than options.maxPointsPerRequest and dispatched to the backend.\n * Once the response is received, the results are loaded into and returned from the cache.\n * If more calls to convert occurred while the request was in flight, another request is dispatched.\n * @internal exported strictly for tests.\n */\nexport class CoordinateConverter {\n protected readonly _cache: Dictionary<XYAndZ, PointWithStatus>;\n protected _state: CoordinateConverterState = \"idle\";\n // The accumulated set of points to be converted by the next request.\n protected _pending: SortedArray<XYAndZ>;\n // The set of points that were included in the current in-flight request, if any.\n protected _inflight: SortedArray<XYAndZ>;\n // An event fired when the next request completes.\n protected _onCompleted = new BeEvent<() => void>();\n // Used for creating cache keys (XYAndZ) from XYZProps without having to allocate temporary objects.\n protected readonly _scratchXYZ = { x: 0, y: 0, z: 0 };\n protected readonly _maxPointsPerRequest: number;\n protected readonly _iModel: IModelConnection;\n protected readonly _requestPoints: (points: XYAndZ[]) => Promise<PointWithStatus[]>;\n\n protected toXYAndZ(input: XYZProps, output: WritableXYAndZ): XYAndZ {\n if (Array.isArray(input)) {\n output.x = input[0] ?? 0;\n output.y = input[1] ?? 0;\n output.z = input[2] ?? 0;\n } else {\n output.x = input.x ?? 0;\n output.y = input.y ?? 0;\n output.z = input.z ?? 0;\n }\n\n return output;\n }\n\n public constructor(opts: CoordinateConverterOptions) {\n this._maxPointsPerRequest = Math.max(1, opts.maxPointsPerRequest ?? 300);\n this._iModel = opts.iModel;\n this._requestPoints = opts.requestPoints;\n\n this._cache = new Dictionary<XYAndZ, PointWithStatus>(compareXYAndZ, cloneXYAndZ);\n this._pending = new SortedArray<XYAndZ>(compareXYAndZ, false, cloneXYAndZ);\n this._inflight = new SortedArray<XYAndZ>(compareXYAndZ, false, cloneXYAndZ);\n }\n\n protected async dispatch(): Promise<void> {\n assert(this._state === \"scheduled\");\n if (this._iModel.isClosed || this._pending.isEmpty) {\n this._state = \"idle\";\n this._onCompleted.raiseEvent();\n return;\n }\n\n this._state = \"in-flight\";\n\n // Ensure subsequently-enqueued requests listen for the *next* response to be received.\n const onCompleted = this._onCompleted;\n this._onCompleted = new BeEvent<() => void>();\n\n // Pending requests are now in flight. Start a new list of pending requests. It's cheaper to swap than to allocate new objects.\n const inflight = this._pending;\n this._pending = this._inflight;\n assert(this._pending.isEmpty);\n this._inflight = inflight;\n\n // Split requests if necessary to avoid requesting more than the maximum allowed number of points.\n const promises: Array<Promise<void>> = [];\n for (let i = 0; i < inflight.length; i += this._maxPointsPerRequest) {\n const requests = inflight.slice(i, i + this._maxPointsPerRequest).extractArray();\n const promise = this._requestPoints(requests).then((results) => {\n if (this._iModel.isClosed)\n return;\n\n if (results.length !== requests.length)\n Logger.logError(`${FrontendLoggerCategory.Package}.geoservices`, `requested conversion of ${requests.length} points, but received ${results.length} points`);\n\n for (let j = 0; j < results.length; j++) {\n if (j < requests.length)\n this._cache.set(requests[j], results[j]);\n }\n }).catch((err) => {\n Logger.logException(`${FrontendLoggerCategory.Package}.geoservices`, err);\n });\n\n promises.push(promise);\n }\n\n await Promise.all(promises);\n\n assert(this._state === \"in-flight\");\n this._state = \"idle\";\n this._inflight.clear();\n\n // If any more pending conversions arrived while awaiting this request, schedule another request.\n if (!this._pending.isEmpty)\n this.scheduleDispatch(); // eslint-disable-line @typescript-eslint/no-floating-promises\n\n // Resolve promises of all callers who were awaiting this request.\n onCompleted.raiseEvent();\n }\n\n // Add any points not present in cache to pending request list.\n // Return the number of points present in cache.\n protected enqueue(points: XYZProps[]): number {\n let numInCache = 0;\n for (const point of points) {\n const xyz = this.toXYAndZ(point, this._scratchXYZ);\n if (this._cache.get(xyz))\n ++numInCache;\n else if (!this._inflight.contains(xyz))\n this._pending.insert(xyz);\n }\n\n return numInCache;\n }\n\n // Obtain converted points from the cache. The assumption is that every point in `inputs` is already present in the cache.\n // Any point not present will be returned unconverted with an error status.\n protected getFromCache(inputs: XYZProps[]): PointWithStatus[] {\n const outputs: PointWithStatus[] = [];\n for (const input of inputs) {\n const xyz = this.toXYAndZ(input, this._scratchXYZ);\n let output = this._cache.get(xyz);\n if (!output)\n output = { p: { ...xyz }, s: GeoCoordStatus.CSMapError };\n\n outputs.push(output);\n }\n\n return outputs;\n }\n\n protected async scheduleDispatch(): Promise<void> {\n if (\"idle\" === this._state) {\n this._state = \"scheduled\";\n requestAnimationFrame(() => {\n this.dispatch(); // eslint-disable-line @typescript-eslint/no-floating-promises\n });\n }\n\n return new Promise((resolve) => {\n this._onCompleted.addOnce(() => resolve());\n });\n }\n\n public async convert(inputs: XYZProps[]): Promise<{ points: PointWithStatus[], fromCache: number }> {\n const fromCache = this.enqueue(inputs);\n assert(fromCache >= 0);\n assert(fromCache <= inputs.length);\n\n if (fromCache === inputs.length)\n return { points: this.getFromCache(inputs), fromCache };\n\n await this.scheduleDispatch();\n\n return { points: this.getFromCache(inputs), fromCache };\n }\n\n public findCached(inputs: XYZProps[]): CachedIModelCoordinatesResponseProps {\n const result: Array<PointWithStatus | undefined> = [];\n let missing: XYZProps[] | undefined;\n for (const input of inputs) {\n const key = this.toXYAndZ(input, this._scratchXYZ);\n const output = this._cache.get(key);\n result.push(output);\n if (!output) {\n if (!missing)\n missing = [];\n\n missing.push(input);\n }\n }\n\n return { result, missing };\n }\n}\n\n/** Response to a request to obtain imodel coordinates from cache.\n * @internal\n */\nexport interface CachedIModelCoordinatesResponseProps {\n /** An array of the same length as the input array, with undefined entries at indices corresponding to points not found in cache. */\n result: Array<PointWithStatus | undefined>;\n /** An array of points in the input array which were not found in the cache, or undefined if all points were found in the cache. */\n missing?: XYZProps[];\n}\n\n/** The GeoConverter class communicates with the backend to convert longitude/latitude coordinates to iModel coordinates and vice-versa\n * @internal\n */\nexport class GeoConverter {\n private readonly _geoToIModel: CoordinateConverter;\n private readonly _iModelToGeo: CoordinateConverter;\n\n constructor(iModel: IModelConnection, datumOrGCRS: string | GeographicCRSProps) {\n const datum = typeof datumOrGCRS === \"object\" ? JSON.stringify(datumOrGCRS) : datumOrGCRS;\n\n this._geoToIModel = new CoordinateConverter({\n iModel,\n requestPoints: async (geoCoords: XYAndZ[]) => {\n const request = { source: datum, geoCoords };\n const rpc = IModelReadRpcInterface.getClientForRouting(iModel.routingContext.token);\n const response = await rpc.getIModelCoordinatesFromGeoCoordinates(iModel.getRpcProps(), request);\n return response.iModelCoords;\n },\n });\n\n this._iModelToGeo = new CoordinateConverter({\n iModel,\n requestPoints: async (iModelCoords: XYAndZ[]) => {\n const request = { target: datum, iModelCoords };\n const rpc = IModelReadRpcInterface.getClientForRouting(iModel.routingContext.token);\n const response = await rpc.getGeoCoordinatesFromIModelCoordinates(iModel.getRpcProps(), request);\n return response.geoCoords;\n },\n });\n }\n\n public async getIModelCoordinatesFromGeoCoordinates(geoPoints: XYZProps[]): Promise<IModelCoordinatesResponseProps> {\n const result = await this._geoToIModel.convert(geoPoints);\n return {\n iModelCoords: result.points,\n fromCache: result.fromCache,\n };\n }\n\n public async getGeoCoordinatesFromIModelCoordinates(iModelPoints: XYZProps[]): Promise<GeoCoordinatesResponseProps> {\n const result = await this._iModelToGeo.convert(iModelPoints);\n return {\n geoCoords: result.points,\n fromCache: result.fromCache,\n };\n }\n\n public getCachedIModelCoordinatesFromGeoCoordinates(geoPoints: XYZProps[]): CachedIModelCoordinatesResponseProps {\n return this._geoToIModel.findCached(geoPoints);\n }\n}\n\n/** The Geographic Services available for an [[IModelConnection]].\n * @internal\n */\nexport class GeoServices {\n private _iModel: IModelConnection;\n\n constructor(iModel: IModelConnection) {\n this._iModel = iModel;\n }\n\n public getConverter(datumOrGCRS?: string | GeographicCRSProps): GeoConverter | undefined {\n return this._iModel.isOpen ? new GeoConverter(this._iModel, datumOrGCRS ? datumOrGCRS : \"\") : undefined;\n }\n}\n"]}
|
package/lib/cjs/IModelApp.js
CHANGED
|
@@ -187,24 +187,23 @@ class IModelApp {
|
|
|
187
187
|
* @param opts The options for configuring IModelApp
|
|
188
188
|
*/
|
|
189
189
|
static async startup(opts) {
|
|
190
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
191
190
|
if (this._initialized)
|
|
192
191
|
return; // we're already initialized, do nothing.
|
|
193
192
|
this._initialized = true;
|
|
194
|
-
opts = opts
|
|
195
|
-
this._securityOptions =
|
|
193
|
+
opts = opts ?? {};
|
|
194
|
+
this._securityOptions = opts.security ?? {};
|
|
196
195
|
if (process.env.NODE_ENV === "development") {
|
|
197
196
|
// Make IModelApp globally accessible for debugging purposes. We'll remove it on shutdown.
|
|
198
197
|
window.iModelAppForDebugger = this;
|
|
199
198
|
}
|
|
200
|
-
this.sessionId =
|
|
201
|
-
this._applicationId =
|
|
202
|
-
this._applicationVersion =
|
|
199
|
+
this.sessionId = opts.sessionId ?? core_bentley_1.Guid.createValue();
|
|
200
|
+
this._applicationId = opts.applicationId ?? "2686"; // Default to product id of iTwin.js
|
|
201
|
+
this._applicationVersion = opts.applicationVersion ?? "1.0.0";
|
|
203
202
|
this.authorizationClient = opts.authorizationClient;
|
|
204
203
|
this._hubAccess = opts.hubAccess;
|
|
205
|
-
this._noRender =
|
|
204
|
+
this._noRender = opts.noRender ?? false;
|
|
206
205
|
this._setupRpcRequestContext();
|
|
207
|
-
this._localization =
|
|
206
|
+
this._localization = opts.localization ?? new core_i18n_1.ITwinLocalization();
|
|
208
207
|
const toolsNs = "CoreTools";
|
|
209
208
|
await this.localization.initialize(["iModelJs", toolsNs]);
|
|
210
209
|
[
|
|
@@ -230,21 +229,21 @@ class IModelApp {
|
|
|
230
229
|
this._renderSystem = (opts.renderSys instanceof RenderSystem_1.RenderSystem) ? opts.renderSys : this.createRenderSys(opts.renderSys);
|
|
231
230
|
if (opts.userPreferences)
|
|
232
231
|
this._userPreferences = opts.userPreferences;
|
|
233
|
-
this._viewManager =
|
|
232
|
+
this._viewManager = opts.viewManager ?? new ViewManager_1.ViewManager();
|
|
234
233
|
this._tileAdmin = await internal_1.TileAdmin.create(opts.tileAdmin);
|
|
235
|
-
this._notifications =
|
|
236
|
-
this._toolAdmin =
|
|
237
|
-
this._accuDraw =
|
|
238
|
-
this._accuSnap =
|
|
239
|
-
this._locateManager =
|
|
240
|
-
this._tentativePoint =
|
|
241
|
-
this._quantityFormatter =
|
|
242
|
-
this._uiAdmin =
|
|
234
|
+
this._notifications = opts.notifications ?? new NotificationManager_1.NotificationManager();
|
|
235
|
+
this._toolAdmin = opts.toolAdmin ?? new ToolAdmin_1.ToolAdmin();
|
|
236
|
+
this._accuDraw = opts.accuDraw ?? new AccuDraw_1.AccuDraw();
|
|
237
|
+
this._accuSnap = opts.accuSnap ?? new AccuSnap_1.AccuSnap();
|
|
238
|
+
this._locateManager = opts.locateManager ?? new ElementLocateManager_1.ElementLocateManager();
|
|
239
|
+
this._tentativePoint = opts.tentativePoint ?? new TentativePoint_1.TentativePoint();
|
|
240
|
+
this._quantityFormatter = opts.quantityFormatter ?? new QuantityFormatter_1.QuantityFormatter();
|
|
241
|
+
this._uiAdmin = opts.uiAdmin ?? new appui_abstract_1.UiAdmin();
|
|
243
242
|
this._mapLayerFormatRegistry = new internal_1.MapLayerFormatRegistry(opts.mapLayerOptions);
|
|
244
243
|
this._terrainProviderRegistry = new internal_1.TerrainProviderRegistry();
|
|
245
244
|
this._realityDataSourceProviders = new RealityDataSource_1.RealityDataSourceProviderRegistry();
|
|
246
245
|
this._realityDataAccess = opts.realityDataAccess;
|
|
247
|
-
this._publicPath =
|
|
246
|
+
this._publicPath = opts.publicPath ?? "";
|
|
248
247
|
[
|
|
249
248
|
this.renderSystem,
|
|
250
249
|
this.viewManager,
|
|
@@ -357,9 +356,8 @@ class IModelApp {
|
|
|
357
356
|
* returned by this method may change over time throughout the course of a session.
|
|
358
357
|
*/
|
|
359
358
|
static async getAccessToken() {
|
|
360
|
-
var _b, _c;
|
|
361
359
|
try {
|
|
362
|
-
return (
|
|
360
|
+
return (await this.authorizationClient?.getAccessToken()) ?? "";
|
|
363
361
|
}
|
|
364
362
|
catch (e) {
|
|
365
363
|
return "";
|
|
@@ -499,7 +497,7 @@ class IModelApp {
|
|
|
499
497
|
*/
|
|
500
498
|
static formatElementToolTip(msg) {
|
|
501
499
|
let out = "";
|
|
502
|
-
msg.forEach((line) =>
|
|
500
|
+
msg.forEach((line) => out += `${IModelApp.localization?.getLocalizedKeys(line)}<br>`);
|
|
503
501
|
const div = document.createElement("div");
|
|
504
502
|
div.innerHTML = out;
|
|
505
503
|
return div;
|