@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
package/lib/cjs/ViewCreator2d.js
CHANGED
|
@@ -43,21 +43,20 @@ class ViewCreator2d {
|
|
|
43
43
|
* @param options for view creation.
|
|
44
44
|
*/
|
|
45
45
|
this._createViewStateProps = async (modelId, options) => {
|
|
46
|
-
var _a;
|
|
47
46
|
// Use dictionary model in all props
|
|
48
47
|
const dictionaryId = core_common_1.IModel.dictionaryId;
|
|
49
48
|
const categories = await this._getAllCategories();
|
|
50
49
|
// Get bg color from options or default to white
|
|
51
|
-
const bgColor =
|
|
50
|
+
const bgColor = options?.bgColor ? options.bgColor : core_common_1.ColorDef.white;
|
|
52
51
|
// model extents
|
|
53
52
|
const modelProps = await this._imodel.models.queryExtents(modelId);
|
|
54
|
-
const modelExtents = core_geometry_1.Range3d.fromJSON(
|
|
53
|
+
const modelExtents = core_geometry_1.Range3d.fromJSON(modelProps[0]?.extents);
|
|
55
54
|
let originX = modelExtents.low.x;
|
|
56
55
|
let originY = modelExtents.low.y;
|
|
57
56
|
let deltaX = modelExtents.xLength();
|
|
58
57
|
let deltaY = modelExtents.yLength();
|
|
59
58
|
// if vp aspect given, update model extents to fit view
|
|
60
|
-
if (options
|
|
59
|
+
if (options?.vpAspect) {
|
|
61
60
|
const modelAspect = deltaY / deltaX;
|
|
62
61
|
if (modelAspect > options.vpAspect) {
|
|
63
62
|
const xFix = deltaY / options.vpAspect;
|
|
@@ -111,7 +110,7 @@ class ViewCreator2d {
|
|
|
111
110
|
modelExtents,
|
|
112
111
|
};
|
|
113
112
|
// merge seed view props if needed
|
|
114
|
-
return
|
|
113
|
+
return options?.useSeedView ? this._mergeSeedView(modelId, viewStateProps) : viewStateProps;
|
|
115
114
|
};
|
|
116
115
|
/**
|
|
117
116
|
* Helper function to execute ECSql queries.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewCreator2d.js","sourceRoot":"","sources":["../../src/ViewCreator2d.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH;;;EAGE;AAEF,sDAA0E;AAC1E,oDAG4B;AAC5B,wDAA+C;AAC/C,yDAAsD;AAGtD,6CAA4F;AAC5F,qDAAkD;AAgBlD;;;;;;;;;;;GAWG;AACH,MAAa,aAAa;IAMxB;;;OAGG;IACH,YAAoB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QAsF7C;;;;WAIG;QACK,0BAAqB,GAAG,KAAK,EAAE,OAAmB,EAAE,OAA8B,EAA2B,EAAE;;YACrH,oCAAoC;YACpC,MAAM,YAAY,GAAG,oBAAM,CAAC,YAAY,CAAC;YACzC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAElD,gDAAgD;YAChD,MAAM,OAAO,GAAa,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAQ,CAAC,KAAK,CAAC;YAE9E,gBAAgB;YAChB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,YAAY,GAAG,uBAAO,CAAC,QAAQ,CAAC,MAAA,UAAU,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,IAAI,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;YAEpC,uDAAuD;YACvD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE;gBACrB,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;gBAEpC,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE;oBAClC,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;oBACvC,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;oBAC7B,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;iBACxB;qBAAM,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE;oBACzC,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;oBACvC,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;oBAC7B,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;iBACxB;aACF;YAED,MAAM,kBAAkB,GAAuB;gBAC7C,MAAM,EAAE,CAAC,OAAO,CAAC;gBACjB,IAAI,EAAE,kBAAI,CAAC,WAAW,EAAE;gBACxB,KAAK,EAAE,YAAY;gBACnB,aAAa,EAAE,uBAAuB;aACvC,CAAC;YAEF,MAAM,qBAAqB,GAA0B;gBACnD,UAAU;gBACV,IAAI,EAAE,kBAAI,CAAC,WAAW,EAAE;gBACxB,KAAK,EAAE,YAAY;gBACnB,aAAa,EAAE,0BAA0B;aAC1C,CAAC;YAEF,MAAM,mBAAmB,GAA0B;gBACjD,WAAW,EAAE,OAAO;gBACpB,kBAAkB,EAAE,EAAE;gBACtB,cAAc,EAAE,EAAE;gBAClB,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE;gBAClC,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;gBAC/B,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;gBACrB,IAAI,EAAE,kBAAI,CAAC,WAAW,EAAE;gBACxB,KAAK,EAAE,YAAY;gBACnB,aAAa,EAAE,0BAA0B;aAC1C,CAAC;YAEF,MAAM,iBAAiB,GAAsB;gBAC3C,IAAI,EAAE,kBAAI,CAAC,WAAW,EAAE;gBACxB,KAAK,EAAE,YAAY;gBACnB,aAAa,EAAE,wBAAwB;gBACvC,cAAc,EAAE;oBACd,MAAM,EAAE;wBACN,eAAe,EAAE,OAAO,CAAC,IAAI;qBAC9B;iBACF;aACF,CAAC;YAEF,MAAM,cAAc,GAAmB;gBACrC,iBAAiB;gBACjB,qBAAqB;gBACrB,kBAAkB;gBAClB,mBAAmB;gBACnB,YAAY;aACb,CAAC;YAEF,kCAAkC;YAClC,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QAC9F,CAAC,CAAC;QA4FF;;;WAGG;QACK,kBAAa,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,4BAAc,CAAC,kBAAkB,EAAE,CAAC;gBAC5G,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;IA/Q+C,CAAC;IAElD;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAAC,OAAmB,EAAE,OAA8B;QAEjF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC/F,IAAI;YACF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;SACxB;QAAC,MAAM,GAAG;QAEX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,sBAAsB,CAAC,OAAmB;QAEtD,IAAI,aAAa,CAAC;QAElB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC9C,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SACvE;;YACC,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,QAAQ,EAAE,0DAA0D,CAAC,CAAC;QAE3G,IAAI,aAAa,KAAK,SAAS;YAC7B,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,UAAU,EAAE,qDAAqD,CAAC,CAAC;QAExG,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAAmB,EAAE,SAAiB,EAAE,OAA8B;QACrG,IAAI,SAAsB,CAAC;QAC3B,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE;YACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjE,SAAS,GAAG,mCAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACnE;aAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;YAC7C,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/D,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtD,SAAS,GAAG,+BAAc,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACjE;;YACC,MAAM,IAAI,yBAAW,CAAC,2BAAY,CAAC,UAAU,EAAE,2DAA2D,CAAC,CAAC;QAE9G,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,SAAiB;QAC5C,IAAI,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,SAAiB;QAC1C,IAAI,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACxD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAuFD;;;;OAIG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAAmB,EAAE,KAAqB;QACzE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,4DAA4D,EAAE,yBAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,4BAAc,CAAC,kBAAkB,EAAE,CAAC,EAAE;YACvL,KAAK,GAAG,GAAG,CAAC,KAAe,CAAC;YAC5B,MAAM,GAAG,GAAG,CAAC,MAAgB,CAAC;YAC9B,MAAM;SACP;QACD,MAAM,UAAU,GAAe;YAC7B,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAC7B,aAAa,EAAE,mBAAmB;YAClC,MAAM;YACN,KAAK;SACN,CAAC;QAEF,KAAK,CAAC,gBAAgB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClE,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAE9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;QAII;IACI,KAAK,CAAC,cAAc,CAAC,OAAmB,EAAE,KAAqB;QACrE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAC3E,yCAAyC;QACzC,IAAI,gBAAgB,KAAK,SAAS;YAChC,OAAO,KAAK,CAAC;QAEf,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxE,MAAM,kBAAkB,GAAmB;YACzC,qBAAqB,EAAE,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC9D,mBAAmB,EAAE,aAAa,CAAC,MAAM,EAAE;YAC3C,iBAAiB,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE;SACvD,CAAC;QACF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;QAChE,IAAI,kBAAkB,CAAC,cAAc,KAAK,SAAS,EAAE;YACnD,kBAAkB,CAAC,cAAc,CAAC,MAAM,GAAG;gBACzC,GAAG,kBAAkB,CAAC,cAAc,CAAC,MAAM;gBAC3C,GAAG,KAAK,CAAC,iBAAiB,CAAC,cAAe,CAAC,MAAM;aAClD,CAAC;SACH;QAED,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;IACpF,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,6BAA6B,CAAC,OAAmB;QAE7D,MAAM,KAAK,GAAG,sEAAsE,OAAO,gCAAgC,CAAC;QAC5H,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE1D,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB;QAE7B,MAAM,KAAK,GAAG,kDAAkD,CAAC;QACjE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEnD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,oBAAoB,CAAC,OAAe;QAEhD,MAAM,KAAK,GAAG,gEAAgE,OAAO,EAAE,CAAC;QACxF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEpD,OAAO,WAAW,CAAC;IACrB,CAAC;;AA7QH,sCA0RC;AAxRC,sCAAsC;AACvB,kCAAoB,GAAG,CAAC,8BAAiB,CAAC,aAAa,EAAE,qCAAwB,CAAC,aAAa,CAAC,CAAC;AACjG,gCAAkB,GAAG,CAAC,4BAAe,CAAC,aAAa,CAAC,CAAC","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\n/** @packageDocumentation\n * @module Views\n */\n\n/*\nAPI for creating a 2D view from a given modelId and modelType (classFullName).\nAdditional options (such as background color) can be passed during view creation.\n*/\n\nimport { Id64Array, Id64String, IModelStatus } from \"@itwin/core-bentley\";\nimport {\n CategorySelectorProps, Code, ColorDef, DisplayStyleProps, IModel, IModelError, ModelSelectorProps, QueryBinder, QueryRowFormat, SheetProps,\n ViewDefinition2dProps, ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { DrawingViewState } from \"./DrawingViewState\";\nimport { EntityState } from \"./EntityState\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { DrawingModelState, SectionDrawingModelState, SheetModelState } from \"./ModelState\";\nimport { SheetViewState } from \"./SheetViewState\";\nimport { ViewState, ViewState2d } from \"./ViewState\";\n\n/** Options for creating a [[ViewState2d]] via [[ViewCreator2d]].\n * @public\n * @extensions\n*/\nexport interface ViewCreator2dOptions {\n /** Aspect ratio of [[Viewport]]. Required to fit contents of the model in the initial state of the view. */\n vpAspect?: number;\n /** Background color of the view (default is white). */\n bgColor?: ColorDef;\n /** Checks to see if there already is a [[ViewDefinition2d]] for the given modelId. If so, use it as the seed view, and merge its props into the final view created. */\n useSeedView?: boolean;\n}\n\n/**\n * API for creating a [[ViewState2d]] for a 2D model ([[GeometricModel2dState]]). @see [[ViewCreator3d]] to create a view for a 3d model.\n * Example usage:\n * ```ts\n * const viewCreator = new ViewCreator2d(imodel);\n * const models = await imodel.models.queryProps({ from: \"BisCore.GeometricModel2d\" });\n * if (models.length > 0)\n * const view = await viewCreator.createViewForModel(models[0].id!);\n * ```\n * @public\n * @extensions\n */\nexport class ViewCreator2d {\n\n // Types of 2D models the API supports\n private static _drawingModelClasses = [DrawingModelState.classFullName, SectionDrawingModelState.classFullName];\n private static _sheetModelClasses = [SheetModelState.classFullName];\n\n /**\n * Constructs a ViewCreator2d using an [[IModelConnection]].\n * @param _imodel [[IModelConnection]] to query for categories and/or models.\n */\n constructor(private _imodel: IModelConnection) { }\n\n /**\n * Creates and returns view for the 2D model id passed in.\n * @param modelId Id of the 2D model for the view.\n * @param [options] Options for creating the view.\n * @throws [IModelError]($common) If modelType is not supported.\n */\n public async createViewForModel(modelId: Id64String, options?: ViewCreator2dOptions): Promise<ViewState> {\n\n const baseClassName = await this._getModelBaseClassName(modelId);\n\n const viewState = await this._createViewState2d(modelId, baseClassName.classFullName, options);\n try {\n await viewState.load();\n } catch { }\n\n return viewState;\n }\n\n /**\n * Gets model base class name from id.\n * @param modelId of target model.\n * @throws [IModelError]($common) if modelId is invalid.\n */\n private async _getModelBaseClassName(modelId: Id64String): Promise<typeof EntityState> {\n\n let baseClassName;\n\n const modelProps = await this._imodel.models.getProps(modelId);\n if (modelProps.length > 0) {\n const modelType = modelProps[0].classFullName;\n baseClassName = await this._imodel.findClassFor(modelType, undefined);\n } else\n throw new IModelError(IModelStatus.BadModel, \"ViewCreator2d._getModelBaseClassName: modelId is invalid\");\n\n if (baseClassName === undefined)\n throw new IModelError(IModelStatus.WrongClass, \"ViewCreator2d.getViewForModel: modelType is invalid\");\n\n return baseClassName;\n }\n\n /**\n * Creates view from any 2D model type (Drawing/SectionDrawing/Sheet)\n * @param modelId of target model.\n * @param modelType classFullName of target 2D model.\n * @param options for view creation.\n * @throws [IModelError]($common) if modelType is not supported.\n */\n private async _createViewState2d(modelId: Id64String, modelType: string, options?: ViewCreator2dOptions): Promise<ViewState2d> {\n let viewState: ViewState2d;\n if (this._isDrawingModelClass(modelType)) {\n const props = await this._createViewStateProps(modelId, options);\n viewState = DrawingViewState.createFromProps(props, this._imodel);\n } else if (this._isSheetModelClass(modelType)) {\n let props = await this._createViewStateProps(modelId, options);\n props = await this._addSheetViewProps(modelId, props);\n viewState = SheetViewState.createFromProps(props, this._imodel);\n } else\n throw new IModelError(IModelStatus.WrongClass, \"ViewCreator2d._createViewState2d: modelType not supported\");\n\n return viewState;\n }\n\n /**\n * Checks to see if given model is of [[DrawingModelState]].\n * @param modelType classFullName of model.\n */\n private _isDrawingModelClass(modelType: string) {\n if (ViewCreator2d._drawingModelClasses.includes(modelType)) {\n return true;\n }\n return false;\n }\n\n /**\n * Checks to see if given model is of [[SheetModelState]].\n * @param modelType classFullName of model.\n */\n private _isSheetModelClass(modelType: string) {\n if (ViewCreator2d._sheetModelClasses.includes(modelType)) {\n return true;\n }\n return false;\n }\n\n /**\n * Creates ViewStateProps for the model. ViewStateProps are composed of the 4 sets of Props below.\n * @param modelId of target model.\n * @param options for view creation.\n */\n private _createViewStateProps = async (modelId: Id64String, options?: ViewCreator2dOptions): Promise<ViewStateProps> => {\n // Use dictionary model in all props\n const dictionaryId = IModel.dictionaryId;\n const categories = await this._getAllCategories();\n\n // Get bg color from options or default to white\n const bgColor: ColorDef = options?.bgColor ? options.bgColor : ColorDef.white;\n\n // model extents\n const modelProps = await this._imodel.models.queryExtents(modelId);\n const modelExtents = Range3d.fromJSON(modelProps[0]?.extents);\n let originX = modelExtents.low.x;\n let originY = modelExtents.low.y;\n let deltaX = modelExtents.xLength();\n let deltaY = modelExtents.yLength();\n\n // if vp aspect given, update model extents to fit view\n if (options?.vpAspect) {\n const modelAspect = deltaY / deltaX;\n\n if (modelAspect > options.vpAspect) {\n const xFix = deltaY / options.vpAspect;\n originX = originX - xFix / 2;\n deltaX = deltaX + xFix;\n } else if (modelAspect < options.vpAspect) {\n const yFix = deltaX * options.vpAspect;\n originY = originY - yFix / 2;\n deltaY = deltaY + yFix;\n }\n }\n\n const modelSelectorProps: ModelSelectorProps = {\n models: [modelId],\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:ModelSelector\",\n };\n\n const categorySelectorProps: CategorySelectorProps = {\n categories,\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:CategorySelector\",\n };\n\n const viewDefinitionProps: ViewDefinition2dProps = {\n baseModelId: modelId,\n categorySelectorId: \"\",\n displayStyleId: \"\",\n origin: { x: originX, y: originY },\n delta: { x: deltaX, y: deltaY },\n angle: { radians: 0 },\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:ViewDefinition2d\",\n };\n\n const displayStyleProps: DisplayStyleProps = {\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:DisplayStyle2d\",\n jsonProperties: {\n styles: {\n backgroundColor: bgColor.tbgr,\n },\n },\n };\n\n const viewStateProps: ViewStateProps = {\n displayStyleProps,\n categorySelectorProps,\n modelSelectorProps,\n viewDefinitionProps,\n modelExtents,\n };\n\n // merge seed view props if needed\n return options?.useSeedView ? this._mergeSeedView(modelId, viewStateProps) : viewStateProps;\n };\n\n /**\n * Adds Sheet view props to given view props.\n * @param modelId of target model.\n * @param props input ViewStateProps.\n */\n private async _addSheetViewProps(modelId: Id64String, props: ViewStateProps) {\n let width = 0;\n let height = 0;\n for await (const row of this._imodel.query(`SELECT Width, Height FROM bis.Sheet WHERE ECInstanceId = ?`, QueryBinder.from([modelId]), { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n width = row.width as number;\n height = row.height as number;\n break;\n }\n const sheetProps: SheetProps = {\n model: modelId,\n code: { spec: \"\", scope: \"\" },\n classFullName: \"DrawingSheetModel\",\n height,\n width,\n };\n\n props.sheetAttachments = await this._getSheetAttachments(modelId);\n props.sheetProps = sheetProps;\n\n return props;\n }\n\n /**\n * Merges a seed view in the iModel with the passed view state props. It will be a no-op if there are no 2D views for target model.\n * @param modelId of target model.\n * @param props Input view props to be merged\n */\n private async _mergeSeedView(modelId: Id64String, props: ViewStateProps): Promise<ViewStateProps> {\n const viewDefinitionId = await this._getViewDefinitionsIdForModel(modelId);\n // Return incase no viewDefinition found.\n if (viewDefinitionId === undefined)\n return props;\n\n const seedViewState = (await this._imodel.views.load(viewDefinitionId));\n const seedViewStateProps: ViewStateProps = {\n categorySelectorProps: seedViewState.categorySelector.toJSON(),\n viewDefinitionProps: seedViewState.toJSON(),\n displayStyleProps: seedViewState.displayStyle.toJSON(),\n };\n const mergedDisplayProps = seedViewStateProps.displayStyleProps;\n if (mergedDisplayProps.jsonProperties !== undefined) {\n mergedDisplayProps.jsonProperties.styles = {\n ...mergedDisplayProps.jsonProperties.styles,\n ...props.displayStyleProps.jsonProperties!.styles,\n };\n }\n\n return { ...seedViewStateProps, ...props, displayStyleProps: mergedDisplayProps };\n }\n\n /**\n * Get all view definitions for a given model.\n * @param modelId of target model.\n */\n private async _getViewDefinitionsIdForModel(modelId: Id64String): Promise<Id64String | undefined> {\n\n const query = `SELECT ECInstanceId from Bis.ViewDefinition2D WHERE BaseModel.Id = ${modelId} AND isPrivate = false LIMIT 1`;\n const viewDefinitionsId = await this._executeQuery(query);\n\n return (viewDefinitionsId.length) > 0 ? viewDefinitionsId[0] : undefined;\n }\n\n /**\n * Get all drawing categories\n */\n private async _getAllCategories(): Promise<Id64Array> {\n\n const query = \"SELECT ECInstanceId from BisCore.DrawingCategory\";\n const categories = await this._executeQuery(query);\n\n return categories;\n }\n\n /**\n * Get all sheet attachments\n * @param modelId of target model.\n */\n private async _getSheetAttachments(modelId: string): Promise<Id64Array> {\n\n const query = `SELECT ECInstanceId FROM Bis.ViewAttachment WHERE Model.Id = ${modelId}`;\n const attachments = await this._executeQuery(query);\n\n return attachments;\n }\n\n /**\n * Helper function to execute ECSql queries.\n * @param query statement to execute.\n */\n private _executeQuery = async (query: string) => {\n const rows = [];\n for await (const row of this._imodel.query(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }))\n rows.push(row.id);\n\n return rows;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ViewCreator2d.js","sourceRoot":"","sources":["../../src/ViewCreator2d.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\n/** @packageDocumentation\n * @module Views\n */\n\n/*\nAPI for creating a 2D view from a given modelId and modelType (classFullName).\nAdditional options (such as background color) can be passed during view creation.\n*/\n\nimport { Id64Array, Id64String, IModelStatus } from \"@itwin/core-bentley\";\nimport {\n CategorySelectorProps, Code, ColorDef, DisplayStyleProps, IModel, IModelError, ModelSelectorProps, QueryBinder, QueryRowFormat, SheetProps,\n ViewDefinition2dProps, ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { DrawingViewState } from \"./DrawingViewState\";\nimport { EntityState } from \"./EntityState\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { DrawingModelState, SectionDrawingModelState, SheetModelState } from \"./ModelState\";\nimport { SheetViewState } from \"./SheetViewState\";\nimport { ViewState, ViewState2d } from \"./ViewState\";\n\n/** Options for creating a [[ViewState2d]] via [[ViewCreator2d]].\n * @public\n * @extensions\n*/\nexport interface ViewCreator2dOptions {\n /** Aspect ratio of [[Viewport]]. Required to fit contents of the model in the initial state of the view. */\n vpAspect?: number;\n /** Background color of the view (default is white). */\n bgColor?: ColorDef;\n /** Checks to see if there already is a [[ViewDefinition2d]] for the given modelId. If so, use it as the seed view, and merge its props into the final view created. */\n useSeedView?: boolean;\n}\n\n/**\n * API for creating a [[ViewState2d]] for a 2D model ([[GeometricModel2dState]]). @see [[ViewCreator3d]] to create a view for a 3d model.\n * Example usage:\n * ```ts\n * const viewCreator = new ViewCreator2d(imodel);\n * const models = await imodel.models.queryProps({ from: \"BisCore.GeometricModel2d\" });\n * if (models.length > 0)\n * const view = await viewCreator.createViewForModel(models[0].id!);\n * ```\n * @public\n * @extensions\n */\nexport class ViewCreator2d {\n\n // Types of 2D models the API supports\n private static _drawingModelClasses = [DrawingModelState.classFullName, SectionDrawingModelState.classFullName];\n private static _sheetModelClasses = [SheetModelState.classFullName];\n\n /**\n * Constructs a ViewCreator2d using an [[IModelConnection]].\n * @param _imodel [[IModelConnection]] to query for categories and/or models.\n */\n constructor(private _imodel: IModelConnection) { }\n\n /**\n * Creates and returns view for the 2D model id passed in.\n * @param modelId Id of the 2D model for the view.\n * @param [options] Options for creating the view.\n * @throws [IModelError]($common) If modelType is not supported.\n */\n public async createViewForModel(modelId: Id64String, options?: ViewCreator2dOptions): Promise<ViewState> {\n\n const baseClassName = await this._getModelBaseClassName(modelId);\n\n const viewState = await this._createViewState2d(modelId, baseClassName.classFullName, options);\n try {\n await viewState.load();\n } catch { }\n\n return viewState;\n }\n\n /**\n * Gets model base class name from id.\n * @param modelId of target model.\n * @throws [IModelError]($common) if modelId is invalid.\n */\n private async _getModelBaseClassName(modelId: Id64String): Promise<typeof EntityState> {\n\n let baseClassName;\n\n const modelProps = await this._imodel.models.getProps(modelId);\n if (modelProps.length > 0) {\n const modelType = modelProps[0].classFullName;\n baseClassName = await this._imodel.findClassFor(modelType, undefined);\n } else\n throw new IModelError(IModelStatus.BadModel, \"ViewCreator2d._getModelBaseClassName: modelId is invalid\");\n\n if (baseClassName === undefined)\n throw new IModelError(IModelStatus.WrongClass, \"ViewCreator2d.getViewForModel: modelType is invalid\");\n\n return baseClassName;\n }\n\n /**\n * Creates view from any 2D model type (Drawing/SectionDrawing/Sheet)\n * @param modelId of target model.\n * @param modelType classFullName of target 2D model.\n * @param options for view creation.\n * @throws [IModelError]($common) if modelType is not supported.\n */\n private async _createViewState2d(modelId: Id64String, modelType: string, options?: ViewCreator2dOptions): Promise<ViewState2d> {\n let viewState: ViewState2d;\n if (this._isDrawingModelClass(modelType)) {\n const props = await this._createViewStateProps(modelId, options);\n viewState = DrawingViewState.createFromProps(props, this._imodel);\n } else if (this._isSheetModelClass(modelType)) {\n let props = await this._createViewStateProps(modelId, options);\n props = await this._addSheetViewProps(modelId, props);\n viewState = SheetViewState.createFromProps(props, this._imodel);\n } else\n throw new IModelError(IModelStatus.WrongClass, \"ViewCreator2d._createViewState2d: modelType not supported\");\n\n return viewState;\n }\n\n /**\n * Checks to see if given model is of [[DrawingModelState]].\n * @param modelType classFullName of model.\n */\n private _isDrawingModelClass(modelType: string) {\n if (ViewCreator2d._drawingModelClasses.includes(modelType)) {\n return true;\n }\n return false;\n }\n\n /**\n * Checks to see if given model is of [[SheetModelState]].\n * @param modelType classFullName of model.\n */\n private _isSheetModelClass(modelType: string) {\n if (ViewCreator2d._sheetModelClasses.includes(modelType)) {\n return true;\n }\n return false;\n }\n\n /**\n * Creates ViewStateProps for the model. ViewStateProps are composed of the 4 sets of Props below.\n * @param modelId of target model.\n * @param options for view creation.\n */\n private _createViewStateProps = async (modelId: Id64String, options?: ViewCreator2dOptions): Promise<ViewStateProps> => {\n // Use dictionary model in all props\n const dictionaryId = IModel.dictionaryId;\n const categories = await this._getAllCategories();\n\n // Get bg color from options or default to white\n const bgColor: ColorDef = options?.bgColor ? options.bgColor : ColorDef.white;\n\n // model extents\n const modelProps = await this._imodel.models.queryExtents(modelId);\n const modelExtents = Range3d.fromJSON(modelProps[0]?.extents);\n let originX = modelExtents.low.x;\n let originY = modelExtents.low.y;\n let deltaX = modelExtents.xLength();\n let deltaY = modelExtents.yLength();\n\n // if vp aspect given, update model extents to fit view\n if (options?.vpAspect) {\n const modelAspect = deltaY / deltaX;\n\n if (modelAspect > options.vpAspect) {\n const xFix = deltaY / options.vpAspect;\n originX = originX - xFix / 2;\n deltaX = deltaX + xFix;\n } else if (modelAspect < options.vpAspect) {\n const yFix = deltaX * options.vpAspect;\n originY = originY - yFix / 2;\n deltaY = deltaY + yFix;\n }\n }\n\n const modelSelectorProps: ModelSelectorProps = {\n models: [modelId],\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:ModelSelector\",\n };\n\n const categorySelectorProps: CategorySelectorProps = {\n categories,\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:CategorySelector\",\n };\n\n const viewDefinitionProps: ViewDefinition2dProps = {\n baseModelId: modelId,\n categorySelectorId: \"\",\n displayStyleId: \"\",\n origin: { x: originX, y: originY },\n delta: { x: deltaX, y: deltaY },\n angle: { radians: 0 },\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:ViewDefinition2d\",\n };\n\n const displayStyleProps: DisplayStyleProps = {\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:DisplayStyle2d\",\n jsonProperties: {\n styles: {\n backgroundColor: bgColor.tbgr,\n },\n },\n };\n\n const viewStateProps: ViewStateProps = {\n displayStyleProps,\n categorySelectorProps,\n modelSelectorProps,\n viewDefinitionProps,\n modelExtents,\n };\n\n // merge seed view props if needed\n return options?.useSeedView ? this._mergeSeedView(modelId, viewStateProps) : viewStateProps;\n };\n\n /**\n * Adds Sheet view props to given view props.\n * @param modelId of target model.\n * @param props input ViewStateProps.\n */\n private async _addSheetViewProps(modelId: Id64String, props: ViewStateProps) {\n let width = 0;\n let height = 0;\n for await (const row of this._imodel.query(`SELECT Width, Height FROM bis.Sheet WHERE ECInstanceId = ?`, QueryBinder.from([modelId]), { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n width = row.width as number;\n height = row.height as number;\n break;\n }\n const sheetProps: SheetProps = {\n model: modelId,\n code: { spec: \"\", scope: \"\" },\n classFullName: \"DrawingSheetModel\",\n height,\n width,\n };\n\n props.sheetAttachments = await this._getSheetAttachments(modelId);\n props.sheetProps = sheetProps;\n\n return props;\n }\n\n /**\n * Merges a seed view in the iModel with the passed view state props. It will be a no-op if there are no 2D views for target model.\n * @param modelId of target model.\n * @param props Input view props to be merged\n */\n private async _mergeSeedView(modelId: Id64String, props: ViewStateProps): Promise<ViewStateProps> {\n const viewDefinitionId = await this._getViewDefinitionsIdForModel(modelId);\n // Return incase no viewDefinition found.\n if (viewDefinitionId === undefined)\n return props;\n\n const seedViewState = (await this._imodel.views.load(viewDefinitionId));\n const seedViewStateProps: ViewStateProps = {\n categorySelectorProps: seedViewState.categorySelector.toJSON(),\n viewDefinitionProps: seedViewState.toJSON(),\n displayStyleProps: seedViewState.displayStyle.toJSON(),\n };\n const mergedDisplayProps = seedViewStateProps.displayStyleProps;\n if (mergedDisplayProps.jsonProperties !== undefined) {\n mergedDisplayProps.jsonProperties.styles = {\n ...mergedDisplayProps.jsonProperties.styles,\n ...props.displayStyleProps.jsonProperties!.styles,\n };\n }\n\n return { ...seedViewStateProps, ...props, displayStyleProps: mergedDisplayProps };\n }\n\n /**\n * Get all view definitions for a given model.\n * @param modelId of target model.\n */\n private async _getViewDefinitionsIdForModel(modelId: Id64String): Promise<Id64String | undefined> {\n\n const query = `SELECT ECInstanceId from Bis.ViewDefinition2D WHERE BaseModel.Id = ${modelId} AND isPrivate = false LIMIT 1`;\n const viewDefinitionsId = await this._executeQuery(query);\n\n return (viewDefinitionsId.length) > 0 ? viewDefinitionsId[0] : undefined;\n }\n\n /**\n * Get all drawing categories\n */\n private async _getAllCategories(): Promise<Id64Array> {\n\n const query = \"SELECT ECInstanceId from BisCore.DrawingCategory\";\n const categories = await this._executeQuery(query);\n\n return categories;\n }\n\n /**\n * Get all sheet attachments\n * @param modelId of target model.\n */\n private async _getSheetAttachments(modelId: string): Promise<Id64Array> {\n\n const query = `SELECT ECInstanceId FROM Bis.ViewAttachment WHERE Model.Id = ${modelId}`;\n const attachments = await this._executeQuery(query);\n\n return attachments;\n }\n\n /**\n * Helper function to execute ECSql queries.\n * @param query statement to execute.\n */\n private _executeQuery = async (query: string) => {\n const rows = [];\n for await (const row of this._imodel.query(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }))\n rows.push(row.id);\n\n return rows;\n };\n}\n"]}
|
package/lib/cjs/ViewCreator3d.js
CHANGED
|
@@ -58,10 +58,10 @@ class ViewCreator3d {
|
|
|
58
58
|
}
|
|
59
59
|
catch {
|
|
60
60
|
}
|
|
61
|
-
if (options
|
|
61
|
+
if (options?.standardViewId)
|
|
62
62
|
viewState.setStandardRotation(options.standardViewId);
|
|
63
63
|
const range = viewState.computeFitRange();
|
|
64
|
-
viewState.lookAtVolume(range, options
|
|
64
|
+
viewState.lookAtVolume(range, options?.vpAspect);
|
|
65
65
|
return viewState;
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
@@ -81,7 +81,7 @@ class ViewCreator3d {
|
|
|
81
81
|
let deltaY = modelExtents.yLength();
|
|
82
82
|
const deltaZ = modelExtents.zLength();
|
|
83
83
|
// if vp aspect given, update model extents to fit view
|
|
84
|
-
if (options
|
|
84
|
+
if (options?.vpAspect) {
|
|
85
85
|
const modelAspect = deltaY / deltaX;
|
|
86
86
|
if (modelAspect > options.vpAspect) {
|
|
87
87
|
const xFix = deltaY / options.vpAspect;
|
|
@@ -107,7 +107,7 @@ class ViewCreator3d {
|
|
|
107
107
|
classFullName: "BisCore:ModelSelector",
|
|
108
108
|
};
|
|
109
109
|
const cameraData = new core_common_1.Camera();
|
|
110
|
-
const cameraOn =
|
|
110
|
+
const cameraOn = options?.cameraOn !== false;
|
|
111
111
|
const viewDefinitionProps = {
|
|
112
112
|
categorySelectorId: "",
|
|
113
113
|
displayStyleId: "",
|
|
@@ -154,7 +154,7 @@ class ViewCreator3d {
|
|
|
154
154
|
viewDefinitionProps,
|
|
155
155
|
};
|
|
156
156
|
// merge seed view props if needed
|
|
157
|
-
return
|
|
157
|
+
return options?.useSeedView ? this._mergeSeedView(viewStateProps) : viewStateProps;
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
160
|
* Merges a seed view in the iModel with the passed view state props. It will be a no-op if there are no default 3D views in the iModel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewCreator3d.js","sourceRoot":"","sources":["../../src/ViewCreator3d.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\n/** @packageDocumentation\n * @module Views\n */\n\n/*\nAPI for creating a 3D default view for an iModel.\nEither takes in a list of modelIds, or displays all 3D models by default.\n*/\n\nimport { CompressedId64Set, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport {\n Camera, CategorySelectorProps, Code, CustomViewState3dProps, DisplayStyle3dProps, Environment, IModel, IModelReadRpcInterface, ModelSelectorProps,\n QueryRowFormat, RenderMode, ViewDefinition3dProps, ViewQueryParams, ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { StandardViewId } from \"./StandardView\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { ViewState } from \"./ViewState\";\nimport { SpatialViewState } from \"./SpatialViewState\";\n\n/** Options for creating a [[ViewState3d]] via [[ViewCreator3d]].\n * @public\n * @extensions\n*/\nexport interface ViewCreator3dOptions {\n /** Turn [[Camera]] on when generating the view. Defaults to true (on) */\n cameraOn?: boolean;\n /** Turn [[SkyBox]] on when generating the view. */\n skyboxOn?: boolean;\n /** [[StandardViewId]] for the view state. */\n standardViewId?: StandardViewId;\n /** Merge in props from the seed view (default spatial view) of the iModel. */\n useSeedView?: boolean;\n /** Aspect ratio of [[Viewport]]. Required to fit contents of the model(s) in the initial state of the view. */\n vpAspect?: number;\n}\n\n/**\n * API for creating a 3D default [[ViewState3d]] for an iModel. @see [[ViewCreator2d]] to create a view for a 2d model.\n * Example usage:\n * ```ts\n * const viewCreator = new ViewCreator3d(imodel);\n * const defaultView = await viewCreator.createDefaultView({skyboxOn: true});\n * ```\n * @public\n * @extensions\n */\nexport class ViewCreator3d {\n\n /**\n * Constructs a ViewCreator3d using an [[IModelConnection]].\n * @param _imodel [[IModelConnection]] to query for categories and/or models.\n */\n constructor(private _imodel: IModelConnection) { }\n\n /**\n * Creates a default [[ViewState3d]] based on the model ids passed in. If no model ids are passed in, all 3D models in the iModel are used.\n * @param [options] Options for creating the view.\n * @param [modelIds] Ids of models to display in the view.\n * @throws [IModelError]($common) If no 3d models are found in the iModel.\n */\n public async createDefaultView(options?: ViewCreator3dOptions, modelIds?: Id64String[]): Promise<ViewState> {\n const serializedProps: CustomViewState3dProps = await IModelReadRpcInterface.getClientForRouting(this._imodel.routingContext.token).getCustomViewState3dData(this._imodel.getRpcProps(),\n modelIds === undefined ? {} : {modelIds: CompressedId64Set.sortAndCompress(modelIds)});\n const props = await this._createViewStateProps(\n CompressedId64Set.decompressArray(serializedProps.modelIds),\n CompressedId64Set.decompressArray(serializedProps.categoryIds),\n Range3d.fromJSON(serializedProps.modelExtents),\n options);\n\n const viewState = SpatialViewState.createFromProps(props, this._imodel);\n try {\n await viewState.load();\n } catch {\n }\n\n if (options?.standardViewId)\n viewState.setStandardRotation(options.standardViewId);\n\n const range = viewState.computeFitRange();\n viewState.lookAtVolume(range, options?.vpAspect);\n\n return viewState;\n }\n\n /**\n * Generates a view state props object for creating a view. Merges display styles with a seed view if the options.useSeedView is true\n * @param models Models to put in view props\n * @param options view creation options like camera On and skybox On\n */\n private async _createViewStateProps(models: Id64Array, categories: Id64Array, modelExtents: Range3d, options?: ViewCreator3dOptions): Promise<ViewStateProps> {\n // Use dictionary model in all props\n const dictionaryId = IModel.dictionaryId;\n\n if (modelExtents.isNull)\n modelExtents.setFrom(this._imodel.projectExtents);\n\n let originX = modelExtents.low.x;\n let originY = modelExtents.low.y;\n const originZ = modelExtents.low.z;\n let deltaX = modelExtents.xLength();\n let deltaY = modelExtents.yLength();\n const deltaZ = modelExtents.zLength();\n\n // if vp aspect given, update model extents to fit view\n if (options?.vpAspect) {\n const modelAspect = deltaY / deltaX;\n\n if (modelAspect > options.vpAspect) {\n const xFix = deltaY / options.vpAspect;\n originX = originX - xFix / 2;\n deltaX = deltaX + xFix;\n } else if (modelAspect < options.vpAspect) {\n const yFix = deltaX * options.vpAspect;\n originY = originY - yFix / 2;\n deltaY = deltaY + yFix;\n }\n }\n\n const categorySelectorProps: CategorySelectorProps = {\n categories,\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:CategorySelector\",\n };\n\n const modelSelectorProps: ModelSelectorProps = {\n models,\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:ModelSelector\",\n };\n\n const cameraData = new Camera();\n const cameraOn = options?.cameraOn !== false;\n const viewDefinitionProps: ViewDefinition3dProps = {\n categorySelectorId: \"\",\n displayStyleId: \"\",\n code: Code.createEmpty(),\n model: dictionaryId,\n origin: { x: originX, y: originY, z: originZ },\n extents: { x: deltaX, y: deltaY, z: deltaZ },\n classFullName: \"BisCore:SpatialViewDefinition\",\n cameraOn,\n camera: {\n lens: cameraData.lens.toJSON(),\n focusDist: cameraData.focusDist,\n eye: cameraData.eye.toJSON(),\n },\n };\n\n const displayStyleProps: DisplayStyle3dProps = {\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:DisplayStyle3d\",\n jsonProperties: {\n styles: {\n viewflags: {\n renderMode: RenderMode.SmoothShade,\n noSourceLights: false,\n noCameraLights: false,\n noSolarLight: false,\n noConstruct: true,\n noTransp: false,\n visEdges: false,\n backgroundMap: this._imodel.isGeoLocated,\n },\n environment:\n options !== undefined &&\n options.skyboxOn !== undefined &&\n options.skyboxOn\n ? Environment.defaults.withDisplay({ sky: true }).toJSON()\n : undefined,\n },\n },\n };\n\n const viewStateProps: ViewStateProps = {\n displayStyleProps,\n categorySelectorProps,\n modelSelectorProps,\n viewDefinitionProps,\n };\n\n // merge seed view props if needed\n return options?.useSeedView ? this._mergeSeedView(viewStateProps) : viewStateProps;\n }\n\n /**\n * Merges a seed view in the iModel with the passed view state props. It will be a no-op if there are no default 3D views in the iModel\n * @param viewStateProps Input view props to be merged\n */\n private async _mergeSeedView(viewStateProps: ViewStateProps): Promise<ViewStateProps> {\n const viewId = await this._getDefaultViewId();\n // Handle iModels without any default view id\n if (viewId === undefined)\n return viewStateProps;\n\n const seedViewState = (await this._imodel.views.load(viewId) as SpatialViewState);\n const seedViewStateProps = {\n categorySelectorProps: seedViewState.categorySelector.toJSON(),\n modelSelectorProps: seedViewState.modelSelector.toJSON(),\n viewDefinitionProps: seedViewState.toJSON(),\n displayStyleProps: seedViewState.displayStyle.toJSON(),\n };\n const mergedDisplayProps = seedViewStateProps.displayStyleProps;\n if (mergedDisplayProps.jsonProperties !== undefined) {\n mergedDisplayProps.jsonProperties.styles = {\n ...mergedDisplayProps.jsonProperties.styles,\n ...viewStateProps.displayStyleProps.jsonProperties!.styles,\n };\n }\n\n return { ...seedViewStateProps, ...viewStateProps, displayStyleProps: mergedDisplayProps };\n }\n\n /**\n * Get ID of default view.\n */\n private async _getDefaultViewId(): Promise<Id64String | undefined> {\n const viewId = await this._imodel.views.queryDefaultViewId();\n const params: ViewQueryParams = {};\n params.from = SpatialViewState.classFullName;\n params.where = `ECInstanceId=${viewId}`;\n\n // Check validity of default view\n const viewProps = await IModelReadRpcInterface.getClient().queryElementProps(this._imodel.getRpcProps(), params);\n if (viewProps.length === 0) {\n // Return the first view we can find\n const viewList = await this._imodel.views.getViewList({ wantPrivate: false });\n if (viewList.length === 0)\n return undefined;\n\n const spatialViewList = viewList.filter((value: IModelConnection.ViewSpec) => value.class.indexOf(\"Spatial\") !== -1);\n if (spatialViewList.length === 0)\n return undefined;\n\n return spatialViewList[0].id;\n }\n\n return viewId;\n }\n\n /**\n * Helper function to execute ECSql queries.\n */\n private _executeQuery = async (query: string) => {\n const rows = [];\n for await (const row of this._imodel.query(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }))\n rows.push(row.id);\n\n return rows;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ViewCreator3d.js","sourceRoot":"","sources":["../../src/ViewCreator3d.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\n/** @packageDocumentation\n * @module Views\n */\n\n/*\nAPI for creating a 3D default view for an iModel.\nEither takes in a list of modelIds, or displays all 3D models by default.\n*/\n\nimport { CompressedId64Set, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport {\n Camera, CategorySelectorProps, Code, CustomViewState3dProps, DisplayStyle3dProps, Environment, IModel, IModelReadRpcInterface, ModelSelectorProps,\n QueryRowFormat, RenderMode, ViewDefinition3dProps, ViewQueryParams, ViewStateProps,\n} from \"@itwin/core-common\";\nimport { Range3d } from \"@itwin/core-geometry\";\nimport { StandardViewId } from \"./StandardView\";\nimport { IModelConnection } from \"./IModelConnection\";\nimport { ViewState } from \"./ViewState\";\nimport { SpatialViewState } from \"./SpatialViewState\";\n\n/** Options for creating a [[ViewState3d]] via [[ViewCreator3d]].\n * @public\n * @extensions\n*/\nexport interface ViewCreator3dOptions {\n /** Turn [[Camera]] on when generating the view. Defaults to true (on) */\n cameraOn?: boolean;\n /** Turn [[SkyBox]] on when generating the view. */\n skyboxOn?: boolean;\n /** [[StandardViewId]] for the view state. */\n standardViewId?: StandardViewId;\n /** Merge in props from the seed view (default spatial view) of the iModel. */\n useSeedView?: boolean;\n /** Aspect ratio of [[Viewport]]. Required to fit contents of the model(s) in the initial state of the view. */\n vpAspect?: number;\n}\n\n/**\n * API for creating a 3D default [[ViewState3d]] for an iModel. @see [[ViewCreator2d]] to create a view for a 2d model.\n * Example usage:\n * ```ts\n * const viewCreator = new ViewCreator3d(imodel);\n * const defaultView = await viewCreator.createDefaultView({skyboxOn: true});\n * ```\n * @public\n * @extensions\n */\nexport class ViewCreator3d {\n\n /**\n * Constructs a ViewCreator3d using an [[IModelConnection]].\n * @param _imodel [[IModelConnection]] to query for categories and/or models.\n */\n constructor(private _imodel: IModelConnection) { }\n\n /**\n * Creates a default [[ViewState3d]] based on the model ids passed in. If no model ids are passed in, all 3D models in the iModel are used.\n * @param [options] Options for creating the view.\n * @param [modelIds] Ids of models to display in the view.\n * @throws [IModelError]($common) If no 3d models are found in the iModel.\n */\n public async createDefaultView(options?: ViewCreator3dOptions, modelIds?: Id64String[]): Promise<ViewState> {\n const serializedProps: CustomViewState3dProps = await IModelReadRpcInterface.getClientForRouting(this._imodel.routingContext.token).getCustomViewState3dData(this._imodel.getRpcProps(),\n modelIds === undefined ? {} : {modelIds: CompressedId64Set.sortAndCompress(modelIds)});\n const props = await this._createViewStateProps(\n CompressedId64Set.decompressArray(serializedProps.modelIds),\n CompressedId64Set.decompressArray(serializedProps.categoryIds),\n Range3d.fromJSON(serializedProps.modelExtents),\n options);\n\n const viewState = SpatialViewState.createFromProps(props, this._imodel);\n try {\n await viewState.load();\n } catch {\n }\n\n if (options?.standardViewId)\n viewState.setStandardRotation(options.standardViewId);\n\n const range = viewState.computeFitRange();\n viewState.lookAtVolume(range, options?.vpAspect);\n\n return viewState;\n }\n\n /**\n * Generates a view state props object for creating a view. Merges display styles with a seed view if the options.useSeedView is true\n * @param models Models to put in view props\n * @param options view creation options like camera On and skybox On\n */\n private async _createViewStateProps(models: Id64Array, categories: Id64Array, modelExtents: Range3d, options?: ViewCreator3dOptions): Promise<ViewStateProps> {\n // Use dictionary model in all props\n const dictionaryId = IModel.dictionaryId;\n\n if (modelExtents.isNull)\n modelExtents.setFrom(this._imodel.projectExtents);\n\n let originX = modelExtents.low.x;\n let originY = modelExtents.low.y;\n const originZ = modelExtents.low.z;\n let deltaX = modelExtents.xLength();\n let deltaY = modelExtents.yLength();\n const deltaZ = modelExtents.zLength();\n\n // if vp aspect given, update model extents to fit view\n if (options?.vpAspect) {\n const modelAspect = deltaY / deltaX;\n\n if (modelAspect > options.vpAspect) {\n const xFix = deltaY / options.vpAspect;\n originX = originX - xFix / 2;\n deltaX = deltaX + xFix;\n } else if (modelAspect < options.vpAspect) {\n const yFix = deltaX * options.vpAspect;\n originY = originY - yFix / 2;\n deltaY = deltaY + yFix;\n }\n }\n\n const categorySelectorProps: CategorySelectorProps = {\n categories,\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:CategorySelector\",\n };\n\n const modelSelectorProps: ModelSelectorProps = {\n models,\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:ModelSelector\",\n };\n\n const cameraData = new Camera();\n const cameraOn = options?.cameraOn !== false;\n const viewDefinitionProps: ViewDefinition3dProps = {\n categorySelectorId: \"\",\n displayStyleId: \"\",\n code: Code.createEmpty(),\n model: dictionaryId,\n origin: { x: originX, y: originY, z: originZ },\n extents: { x: deltaX, y: deltaY, z: deltaZ },\n classFullName: \"BisCore:SpatialViewDefinition\",\n cameraOn,\n camera: {\n lens: cameraData.lens.toJSON(),\n focusDist: cameraData.focusDist,\n eye: cameraData.eye.toJSON(),\n },\n };\n\n const displayStyleProps: DisplayStyle3dProps = {\n code: Code.createEmpty(),\n model: dictionaryId,\n classFullName: \"BisCore:DisplayStyle3d\",\n jsonProperties: {\n styles: {\n viewflags: {\n renderMode: RenderMode.SmoothShade,\n noSourceLights: false,\n noCameraLights: false,\n noSolarLight: false,\n noConstruct: true,\n noTransp: false,\n visEdges: false,\n backgroundMap: this._imodel.isGeoLocated,\n },\n environment:\n options !== undefined &&\n options.skyboxOn !== undefined &&\n options.skyboxOn\n ? Environment.defaults.withDisplay({ sky: true }).toJSON()\n : undefined,\n },\n },\n };\n\n const viewStateProps: ViewStateProps = {\n displayStyleProps,\n categorySelectorProps,\n modelSelectorProps,\n viewDefinitionProps,\n };\n\n // merge seed view props if needed\n return options?.useSeedView ? this._mergeSeedView(viewStateProps) : viewStateProps;\n }\n\n /**\n * Merges a seed view in the iModel with the passed view state props. It will be a no-op if there are no default 3D views in the iModel\n * @param viewStateProps Input view props to be merged\n */\n private async _mergeSeedView(viewStateProps: ViewStateProps): Promise<ViewStateProps> {\n const viewId = await this._getDefaultViewId();\n // Handle iModels without any default view id\n if (viewId === undefined)\n return viewStateProps;\n\n const seedViewState = (await this._imodel.views.load(viewId) as SpatialViewState);\n const seedViewStateProps = {\n categorySelectorProps: seedViewState.categorySelector.toJSON(),\n modelSelectorProps: seedViewState.modelSelector.toJSON(),\n viewDefinitionProps: seedViewState.toJSON(),\n displayStyleProps: seedViewState.displayStyle.toJSON(),\n };\n const mergedDisplayProps = seedViewStateProps.displayStyleProps;\n if (mergedDisplayProps.jsonProperties !== undefined) {\n mergedDisplayProps.jsonProperties.styles = {\n ...mergedDisplayProps.jsonProperties.styles,\n ...viewStateProps.displayStyleProps.jsonProperties!.styles,\n };\n }\n\n return { ...seedViewStateProps, ...viewStateProps, displayStyleProps: mergedDisplayProps };\n }\n\n /**\n * Get ID of default view.\n */\n private async _getDefaultViewId(): Promise<Id64String | undefined> {\n const viewId = await this._imodel.views.queryDefaultViewId();\n const params: ViewQueryParams = {};\n params.from = SpatialViewState.classFullName;\n params.where = `ECInstanceId=${viewId}`;\n\n // Check validity of default view\n const viewProps = await IModelReadRpcInterface.getClient().queryElementProps(this._imodel.getRpcProps(), params);\n if (viewProps.length === 0) {\n // Return the first view we can find\n const viewList = await this._imodel.views.getViewList({ wantPrivate: false });\n if (viewList.length === 0)\n return undefined;\n\n const spatialViewList = viewList.filter((value: IModelConnection.ViewSpec) => value.class.indexOf(\"Spatial\") !== -1);\n if (spatialViewList.length === 0)\n return undefined;\n\n return spatialViewList[0].id;\n }\n\n return viewId;\n }\n\n /**\n * Helper function to execute ECSql queries.\n */\n private _executeQuery = async (query: string) => {\n const rows = [];\n for await (const row of this._imodel.query(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }))\n rows.push(row.id);\n\n return rows;\n };\n}\n"]}
|
package/lib/cjs/ViewState.js
CHANGED
|
@@ -539,7 +539,7 @@ class ViewState extends EntityState_1.ElementState {
|
|
|
539
539
|
}
|
|
540
540
|
if (!delta.isAlmostEqual(origDelta))
|
|
541
541
|
origin.addScaledInPlace(rot.multiplyTransposeVector(delta.vectorTo(origDelta, origDelta)), .5);
|
|
542
|
-
return (status !== ViewStatus_1.ViewStatus.Success &&
|
|
542
|
+
return (status !== ViewStatus_1.ViewStatus.Success && opts?.onExtentsError) ? opts.onExtentsError(status) : status;
|
|
543
543
|
}
|
|
544
544
|
/** Adjust the aspect ratio of this ViewState so it matches the supplied value. The adjustment is accomplished by increasing one dimension
|
|
545
545
|
* and leaving the other unchanged, depending on the ratio of this ViewState's current aspect ratio to the supplied one. This means the result
|
|
@@ -697,7 +697,6 @@ class ViewState extends EntityState_1.ElementState {
|
|
|
697
697
|
* @see lookAtVolume
|
|
698
698
|
*/
|
|
699
699
|
lookAtViewAlignedVolume(volume, aspect, options) {
|
|
700
|
-
var _a, _b, _c, _d;
|
|
701
700
|
if (volume.isNull) // make sure volume is valid
|
|
702
701
|
return;
|
|
703
702
|
const viewRot = this.getRotation();
|
|
@@ -713,17 +712,17 @@ class ViewState extends EntityState_1.ElementState {
|
|
|
713
712
|
// That generally causes the view to be too large (objects in it are too small), since we can't tell whether the objects are at
|
|
714
713
|
// the front or back of the view. For this reason, don't attempt to add any "margin" to camera views.
|
|
715
714
|
}
|
|
716
|
-
else if (undefined !==
|
|
715
|
+
else if (undefined !== options?.paddingPercent) {
|
|
717
716
|
let left, right, top, bottom;
|
|
718
717
|
const padding = options.paddingPercent;
|
|
719
718
|
if (typeof padding === "number") {
|
|
720
719
|
left = right = top = bottom = padding;
|
|
721
720
|
}
|
|
722
721
|
else {
|
|
723
|
-
left =
|
|
724
|
-
right =
|
|
725
|
-
top =
|
|
726
|
-
bottom =
|
|
722
|
+
left = padding.left ?? 0;
|
|
723
|
+
right = padding.right ?? 0;
|
|
724
|
+
top = padding.top ?? 0;
|
|
725
|
+
bottom = padding.bottom ?? 0;
|
|
727
726
|
}
|
|
728
727
|
const width = newDelta.x;
|
|
729
728
|
const height = newDelta.y;
|
|
@@ -732,7 +731,7 @@ class ViewState extends EntityState_1.ElementState {
|
|
|
732
731
|
newOrigin.y -= bottom * height;
|
|
733
732
|
newDelta.y += (top + bottom) * height;
|
|
734
733
|
}
|
|
735
|
-
else if (options
|
|
734
|
+
else if (options?.marginPercent) {
|
|
736
735
|
// compute how much space we'll need for both of X and Y margins in root coordinates
|
|
737
736
|
const margin = options.marginPercent;
|
|
738
737
|
const wPercent = margin.left + margin.right;
|
|
@@ -818,7 +817,7 @@ class ViewState extends EntityState_1.ElementState {
|
|
|
818
817
|
// Non-spatial views view exactly one model. If they view the same model, they share a coordinate system.
|
|
819
818
|
let allowView = false;
|
|
820
819
|
this.forEachModel((model) => {
|
|
821
|
-
allowView
|
|
820
|
+
allowView ||= other.viewsModel(model.id);
|
|
822
821
|
});
|
|
823
822
|
return allowView;
|
|
824
823
|
}
|
|
@@ -856,7 +855,6 @@ class ViewState extends EntityState_1.ElementState {
|
|
|
856
855
|
* Y vector towards true north, X parallel to the equator and Z perpendicular to the ellipsoid surface
|
|
857
856
|
*/
|
|
858
857
|
getGlobeRotation() {
|
|
859
|
-
var _a;
|
|
860
858
|
if (!this.iModel.isGeoLocated || this.globeMode !== core_common_1.GlobeMode.Ellipsoid || this.getIsViewingProject())
|
|
861
859
|
return undefined;
|
|
862
860
|
const backgroundMapGeometry = this.displayStyle.getBackgroundMapGeometry();
|
|
@@ -877,7 +875,7 @@ class ViewState extends EntityState_1.ElementState {
|
|
|
877
875
|
}
|
|
878
876
|
const angles = intersectAngles[minIndex];
|
|
879
877
|
const pointAndDeriv = earthEllipsoid.radiansToPointAndDerivatives(angles.longitudeRadians, angles.latitudeRadians, false);
|
|
880
|
-
return
|
|
878
|
+
return core_geometry_1.Matrix3d.createRigidFromColumns(pointAndDeriv.vectorU, pointAndDeriv.vectorV, core_geometry_1.AxisOrder.XYZ)?.transpose();
|
|
881
879
|
}
|
|
882
880
|
/** A value that represents the global scope of the view -- a value greater than one indicates that the scope of this view is global (viewing most of Earth). */
|
|
883
881
|
get globalScopeFactor() {
|
|
@@ -920,17 +918,16 @@ class ViewState extends EntityState_1.ElementState {
|
|
|
920
918
|
* @beta
|
|
921
919
|
*/
|
|
922
920
|
computeDisplayTransform(args) {
|
|
923
|
-
var _a, _b, _c;
|
|
924
921
|
const elevation = this.getModelElevation(args.modelId);
|
|
925
|
-
const modelTransform =
|
|
922
|
+
const modelTransform = this.modelDisplayTransformProvider?.getModelDisplayTransform(args.modelId);
|
|
926
923
|
// NB: A ModelTimeline can apply a transform to all elements in the model, but no code exists which actually applies that at display time.
|
|
927
924
|
// So for now we continue to only consider the ElementTimeline transform.
|
|
928
925
|
let scriptTransform;
|
|
929
926
|
if (this.scheduleScript && args.elementId) {
|
|
930
927
|
const idPair = core_bentley_1.Id64.getUint32Pair(args.elementId);
|
|
931
928
|
const modelTimeline = this.scheduleScript.find(args.modelId);
|
|
932
|
-
const elementTimeline = modelTimeline
|
|
933
|
-
scriptTransform = elementTimeline
|
|
929
|
+
const elementTimeline = modelTimeline?.getTimelineForElement(idPair.lower, idPair.upper);
|
|
930
|
+
scriptTransform = elementTimeline?.getAnimationTransform(args.timePoint ?? this.displayStyle.settings.timePoint ?? 0);
|
|
934
931
|
}
|
|
935
932
|
if (0 === elevation && !modelTransform && !scriptTransform)
|
|
936
933
|
return undefined;
|
|
@@ -1311,7 +1308,6 @@ class ViewState3d extends ViewState {
|
|
|
1311
1308
|
* adjusted when the [[Viewport]] is synchronized from this view.
|
|
1312
1309
|
*/
|
|
1313
1310
|
lookAt(args) {
|
|
1314
|
-
var _a, _b, _c;
|
|
1315
1311
|
if (args.lensAngle) {
|
|
1316
1312
|
const lensAngle = args.lensAngle;
|
|
1317
1313
|
const eyePoint = core_geometry_1.Vector3d.createFrom(args.eyePoint);
|
|
@@ -1321,7 +1317,7 @@ class ViewState3d extends ViewState {
|
|
|
1321
1317
|
if (lensAngle.radians < .0001 || lensAngle.radians > Math.PI)
|
|
1322
1318
|
return ViewStatus_1.ViewStatus.InvalidLens;
|
|
1323
1319
|
const width = 2.0 * Math.tan(lensAngle.radians / 2.0) * focus;
|
|
1324
|
-
const newExtents = core_geometry_1.Vector2d.createFrom(
|
|
1320
|
+
const newExtents = core_geometry_1.Vector2d.createFrom(args.newExtents ?? this.extents);
|
|
1325
1321
|
newExtents.scale(width / newExtents.x, newExtents);
|
|
1326
1322
|
args = { ...args, newExtents };
|
|
1327
1323
|
}
|
|
@@ -1346,7 +1342,7 @@ class ViewState3d extends ViewState {
|
|
|
1346
1342
|
}
|
|
1347
1343
|
const minFrontDist = this.minimumFrontDistance();
|
|
1348
1344
|
if (focusDist <= minFrontDist) { // eye and target are too close together
|
|
1349
|
-
|
|
1345
|
+
args.opts?.onExtentsError?.(ViewStatus_1.ViewStatus.InvalidTargetPoint);
|
|
1350
1346
|
return ViewStatus_1.ViewStatus.InvalidTargetPoint;
|
|
1351
1347
|
}
|
|
1352
1348
|
const xVec = new core_geometry_1.Vector3d();
|
|
@@ -1467,12 +1463,11 @@ class ViewState3d extends ViewState {
|
|
|
1467
1463
|
* @returns Status indicating whether the camera was successfully positioned. See values at [[ViewStatus]] for possible errors.
|
|
1468
1464
|
*/
|
|
1469
1465
|
moveCameraGlobal(fromPoint, toPoint) {
|
|
1470
|
-
var _a;
|
|
1471
1466
|
if (!this.iModel.ecefLocation)
|
|
1472
1467
|
return ViewStatus_1.ViewStatus.NotGeolocated;
|
|
1473
1468
|
if (this.globeMode !== core_common_1.GlobeMode.Ellipsoid)
|
|
1474
1469
|
return ViewStatus_1.ViewStatus.NotEllipsoidGlobeMode;
|
|
1475
|
-
const earthCenter =
|
|
1470
|
+
const earthCenter = this.iModel.ecefLocation?.earthCenter;
|
|
1476
1471
|
const rMatrix = core_geometry_1.Matrix3d.createRotationVectorToVector(core_geometry_1.Vector3d.createStartEnd(earthCenter, toPoint), core_geometry_1.Vector3d.createStartEnd(earthCenter, fromPoint));
|
|
1477
1472
|
if (!rMatrix)
|
|
1478
1473
|
return ViewStatus_1.ViewStatus.DegenerateGeometry;
|
|
@@ -1663,7 +1658,6 @@ class ViewState3d extends ViewState {
|
|
|
1663
1658
|
* @public
|
|
1664
1659
|
*/
|
|
1665
1660
|
alignToGlobe(target, transition) {
|
|
1666
|
-
var _a;
|
|
1667
1661
|
if (!this.iModel.ecefLocation)
|
|
1668
1662
|
return ViewStatus_1.ViewStatus.NotGeolocated;
|
|
1669
1663
|
if (this.globeMode !== core_common_1.GlobeMode.Ellipsoid)
|
|
@@ -1671,7 +1665,7 @@ class ViewState3d extends ViewState {
|
|
|
1671
1665
|
const globalTransition = this.globalViewTransition();
|
|
1672
1666
|
if (globalTransition <= 0)
|
|
1673
1667
|
return ViewStatus_1.ViewStatus.HeightBelowTransition;
|
|
1674
|
-
const earthCenter =
|
|
1668
|
+
const earthCenter = this.iModel.ecefLocation?.earthCenter;
|
|
1675
1669
|
const viewCenter = this.getCenter();
|
|
1676
1670
|
const viewZ = this.getRotation().rowZ();
|
|
1677
1671
|
const eye = this.isCameraOn ? this.camera.eye : viewCenter.plusScaled(viewZ, core_geometry_1.Constant.diameterOfEarth);
|
|
@@ -1700,8 +1694,7 @@ class ViewState3d extends ViewState {
|
|
|
1700
1694
|
attachToViewport(args) {
|
|
1701
1695
|
super.attachToViewport(args);
|
|
1702
1696
|
const removeListener = this.displayStyle.settings.onEnvironmentChanged.addListener((env) => {
|
|
1703
|
-
|
|
1704
|
-
(_a = this._environmentDecorations) === null || _a === void 0 ? void 0 : _a.setEnvironment(env);
|
|
1697
|
+
this._environmentDecorations?.setEnvironment(env);
|
|
1705
1698
|
});
|
|
1706
1699
|
this._environmentDecorations = new EnvironmentDecorations_1.EnvironmentDecorations(this, () => args.invalidateDecorations(), () => removeListener());
|
|
1707
1700
|
}
|