@itwin/core-frontend 5.2.0-dev.2 → 5.2.0-dev.21
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 +57 -1
- package/lib/cjs/BackgroundMapGeometry.js +13 -13
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +2 -2
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/CheckpointConnection.d.ts.map +1 -1
- package/lib/cjs/CheckpointConnection.js +3 -3
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
- package/lib/cjs/ElementLocateManager.js +7 -6
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
- package/lib/cjs/EmphasizeElements.js +3 -1
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +4 -0
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/FrustumAnimator.d.ts.map +1 -1
- package/lib/cjs/FrustumAnimator.js +3 -2
- package/lib/cjs/FrustumAnimator.js.map +1 -1
- package/lib/cjs/GlobeAnimator.d.ts.map +1 -1
- package/lib/cjs/GlobeAnimator.js +7 -6
- package/lib/cjs/GlobeAnimator.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +12 -7
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +2 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +4 -0
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +156 -14
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LinePlaneIntersect.d.ts.map +1 -1
- package/lib/cjs/LinePlaneIntersect.js +2 -0
- package/lib/cjs/LinePlaneIntersect.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +2 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/Marker.d.ts.map +1 -1
- package/lib/cjs/Marker.js +4 -3
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +2 -2
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.d.ts.map +1 -1
- package/lib/cjs/NativeApp.js +5 -4
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.d.ts.map +1 -1
- package/lib/cjs/NativeAppLogger.js +1 -0
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js +3 -3
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/SelectionSet.d.ts.map +1 -1
- package/lib/cjs/SelectionSet.js +1 -0
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +5 -5
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialViewState.d.ts.map +1 -1
- package/lib/cjs/SpatialViewState.js +1 -1
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/Sprites.js +2 -2
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/TentativePoint.d.ts.map +1 -1
- package/lib/cjs/TentativePoint.js +10 -9
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/ViewContext.d.ts +10 -1
- package/lib/cjs/ViewContext.d.ts.map +1 -1
- package/lib/cjs/ViewContext.js +12 -1
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +1 -1
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js +1 -1
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewPose.d.ts.map +1 -1
- package/lib/cjs/ViewPose.js +4 -1
- package/lib/cjs/ViewPose.js.map +1 -1
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +17 -12
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.d.ts.map +1 -1
- package/lib/cjs/ViewingSpace.js +2 -0
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +17 -10
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/ImageUtil.d.ts.map +1 -1
- package/lib/cjs/common/ImageUtil.js +2 -1
- package/lib/cjs/common/ImageUtil.js.map +1 -1
- package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/GeometryAccumulator.js +4 -3
- package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
- package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/MeshBuilder.js +1 -1
- package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
- package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
- package/lib/cjs/common/internal/render/VertexTableBuilder.js +16 -7
- package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js +2 -2
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/internal/GoogleMapsDecorator.js +1 -1
- package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
- package/lib/cjs/internal/ScriptUtils.js +1 -0
- package/lib/cjs/internal/ScriptUtils.js.map +1 -1
- package/lib/cjs/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
- package/lib/cjs/internal/render/UpsampleRealityMeshParams.js +2 -1
- package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js +7 -2
- package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js +5 -3
- package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeMap.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/AttributeMap.js +2 -0
- package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +3 -3
- package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchState.js +2 -1
- package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
- package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/CachedGeometry.js +2 -2
- package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ClipStack.js +1 -1
- package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ColorInfo.js +1 -1
- package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Contours.js +3 -3
- package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
- package/lib/cjs/internal/render/webgl/EDL.js +18 -18
- package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FeatureOverrides.js +4 -4
- package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FrameBuffer.js +3 -3
- package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/FrustumUniforms.js +2 -1
- package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/GLTimer.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/GLTimer.js +2 -0
- package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MapLayerParams.js +2 -2
- package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/MeshData.js +2 -2
- package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PerformanceMetrics.js +1 -1
- package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js +8 -8
- package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarGrid.js +1 -1
- package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js +6 -5
- package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/internal/render/webgl/PointCloud.js +1 -1
- package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.js +1 -1
- package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/RenderBuffer.js +2 -2
- package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.js +118 -85
- package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ScratchDrawParams.js +11 -10
- package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js +3 -3
- package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShaderProgram.js +3 -3
- package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ShadowUniforms.js +2 -1
- package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/SolarShadowMap.js +6 -4
- package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/System.js +1 -1
- package/lib/cjs/internal/render/webgl/System.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.js +10 -7
- package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Texture.js +10 -8
- package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Animation.js +4 -2
- package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Color.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Color.js +2 -1
- package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Composite.js +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +3 -2
- package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +3 -3
- package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +4 -3
- package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +8 -8
- package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Surface.js +10 -10
- package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/internal/render/webgl/glsl/Vertex.js +2 -2
- package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/internal/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/B3dmReader.js +1 -1
- package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/internal/tile/DynamicIModelTile.js +1 -0
- package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/internal/tile/FetchCloudStorage.js +1 -1
- package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
- package/lib/cjs/internal/tile/LRUTileList.d.ts.map +1 -1
- package/lib/cjs/internal/tile/LRUTileList.js +4 -0
- package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
- package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
- package/lib/cjs/internal/tile/OPCFormatInterpreter.js +4 -4
- package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/OrbitGtTileTree.js +2 -2
- package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityModelTileTree.js +3 -3
- package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/internal/tile/RealityTileLoader.js +3 -0
- package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js +3 -3
- package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/internal/tile/TileUserSet.d.ts.map +1 -1
- package/lib/cjs/internal/tile/TileUserSet.js +4 -0
- package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
- package/lib/cjs/internal/tile/map/ArcGISTileMap.js +1 -1
- package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ArcGisUtilities.js +4 -0
- package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
- package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +1 -1
- package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/MapTileAvailability.js +5 -2
- package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/cjs/internal/tile/map/WmtsCapabilities.js +3 -2
- package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.d.ts.map +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.js +2 -0
- package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +7 -4
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +5 -2
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +62 -19
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTile.js +2 -2
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js +5 -5
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +2 -1
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +9 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +10 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +8 -7
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +2 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tools/Tool.js +1 -1
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/workers/ImdlParser/webpack.config.js +8 -0
- package/lib/esm/BackgroundMapGeometry.js +14 -14
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
- package/lib/esm/BriefcaseConnection.js +2 -2
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/CheckpointConnection.d.ts.map +1 -1
- package/lib/esm/CheckpointConnection.js +4 -4
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/ElementLocateManager.d.ts.map +1 -1
- package/lib/esm/ElementLocateManager.js +8 -7
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EmphasizeElements.d.ts.map +1 -1
- package/lib/esm/EmphasizeElements.js +3 -1
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +4 -0
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/FrustumAnimator.d.ts.map +1 -1
- package/lib/esm/FrustumAnimator.js +3 -2
- package/lib/esm/FrustumAnimator.js.map +1 -1
- package/lib/esm/GlobeAnimator.d.ts.map +1 -1
- package/lib/esm/GlobeAnimator.js +7 -6
- package/lib/esm/GlobeAnimator.js.map +1 -1
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +12 -7
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +4 -3
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +4 -0
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +158 -16
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +2 -2
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LinePlaneIntersect.d.ts.map +1 -1
- package/lib/esm/LinePlaneIntersect.js +2 -0
- package/lib/esm/LinePlaneIntersect.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +2 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/Marker.d.ts.map +1 -1
- package/lib/esm/Marker.js +5 -4
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +3 -3
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.d.ts.map +1 -1
- package/lib/esm/NativeApp.js +5 -4
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.d.ts.map +1 -1
- package/lib/esm/NativeAppLogger.js +1 -0
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.js +3 -3
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/SelectionSet.d.ts.map +1 -1
- package/lib/esm/SelectionSet.js +2 -1
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +6 -6
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialViewState.d.ts.map +1 -1
- package/lib/esm/SpatialViewState.js +2 -2
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/Sprites.js +2 -2
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/TentativePoint.d.ts.map +1 -1
- package/lib/esm/TentativePoint.js +10 -9
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/ViewContext.d.ts +10 -1
- package/lib/esm/ViewContext.d.ts.map +1 -1
- package/lib/esm/ViewContext.js +12 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +1 -1
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.js +1 -1
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewPose.d.ts.map +1 -1
- package/lib/esm/ViewPose.js +4 -1
- package/lib/esm/ViewPose.js.map +1 -1
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +18 -13
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.d.ts.map +1 -1
- package/lib/esm/ViewingSpace.js +2 -0
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +18 -11
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/ImageUtil.d.ts.map +1 -1
- package/lib/esm/common/ImageUtil.js +2 -1
- package/lib/esm/common/ImageUtil.js.map +1 -1
- package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/common/internal/render/GeometryAccumulator.js +4 -3
- package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -1
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +2 -0
- package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
- package/lib/esm/common/internal/render/MeshBuilder.js +2 -2
- package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
- package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -1
- package/lib/esm/common/internal/render/VertexTableBuilder.js +17 -8
- package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js +2 -2
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/internal/GoogleMapsDecorator.js +1 -1
- package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
- package/lib/esm/internal/ScriptUtils.js +1 -0
- package/lib/esm/internal/ScriptUtils.js.map +1 -1
- package/lib/esm/internal/render/UpsampleRealityMeshParams.d.ts.map +1 -1
- package/lib/esm/internal/render/UpsampleRealityMeshParams.js +2 -1
- package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js +7 -2
- package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeBuffers.js +5 -3
- package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeMap.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/AttributeMap.js +2 -0
- package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +4 -4
- package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/BranchState.js +2 -1
- package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchUniforms.js +3 -3
- package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/CachedGeometry.js +3 -3
- package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/internal/render/webgl/ClipStack.js +1 -1
- package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
- package/lib/esm/internal/render/webgl/ColorInfo.js +2 -2
- package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/internal/render/webgl/Contours.js +4 -4
- package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
- package/lib/esm/internal/render/webgl/EDL.js +19 -19
- package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
- package/lib/esm/internal/render/webgl/FeatureOverrides.js +5 -5
- package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/internal/render/webgl/FrameBuffer.js +4 -4
- package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/FrustumUniforms.js +2 -1
- package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/GLTimer.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/GLTimer.js +2 -0
- package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
- package/lib/esm/internal/render/webgl/MapLayerParams.js +3 -3
- package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/MeshData.js +3 -3
- package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/internal/render/webgl/PerformanceMetrics.js +1 -1
- package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarClassifier.js +9 -9
- package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarGrid.js +2 -2
- package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts +0 -3
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.js +6 -5
- package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/internal/render/webgl/PointCloud.js +2 -2
- package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/internal/render/webgl/RealityMesh.js +2 -2
- package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/RenderBuffer.js +3 -3
- package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.js +119 -86
- package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/internal/render/webgl/ScratchDrawParams.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ScratchDrawParams.js +11 -10
- package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js +4 -4
- package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShaderProgram.js +4 -4
- package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/internal/render/webgl/ShadowUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ShadowUniforms.js +2 -1
- package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/SolarShadowMap.js +7 -5
- package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/System.js +2 -2
- package/lib/esm/internal/render/webgl/System.js.map +1 -1
- package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Target.js +11 -8
- package/lib/esm/internal/render/webgl/Target.js.map +1 -1
- package/lib/esm/internal/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Texture.js +11 -9
- package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Animation.js +5 -3
- package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Color.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Color.js +2 -1
- package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Composite.js +2 -2
- package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +3 -2
- package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +4 -4
- package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +4 -3
- package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +9 -9
- package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Surface.js +11 -11
- package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/internal/render/webgl/glsl/Vertex.js +3 -3
- package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/internal/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/internal/tile/B3dmReader.js +2 -2
- package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
- package/lib/esm/internal/tile/DynamicIModelTile.js +1 -0
- package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/internal/tile/FetchCloudStorage.js +1 -1
- package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
- package/lib/esm/internal/tile/LRUTileList.d.ts.map +1 -1
- package/lib/esm/internal/tile/LRUTileList.js +4 -0
- package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.d.ts.map +1 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js +2 -1
- package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
- package/lib/esm/internal/tile/OPCFormatInterpreter.js +5 -5
- package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/internal/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/OrbitGtTileTree.js +3 -3
- package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityModelTileTree.js +4 -4
- package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/internal/tile/RealityTileLoader.js +3 -0
- package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js +4 -4
- package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/internal/tile/TileUserSet.d.ts.map +1 -1
- package/lib/esm/internal/tile/TileUserSet.js +4 -0
- package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
- package/lib/esm/internal/tile/map/ArcGISTileMap.js +1 -1
- package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/internal/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ArcGisUtilities.js +4 -0
- package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +3 -1
- package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
- package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -2
- package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/internal/tile/map/MapTileAvailability.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/MapTileAvailability.js +6 -3
- package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/internal/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/esm/internal/tile/map/WmtsCapabilities.js +3 -2
- package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.d.ts.map +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.js +2 -0
- package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +2 -0
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +7 -4
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +5 -2
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +63 -20
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/RealityTile.d.ts.map +1 -1
- package/lib/esm/tile/RealityTile.js +3 -3
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileTree.js +6 -6
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +2 -1
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +2 -2
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +2 -2
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +10 -2
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +11 -9
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +9 -8
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +2 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tools/Tool.js +2 -2
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/workers/ImdlParser/webpack.config.js +8 -0
- package/lib/public/draco_decoder.wasm +0 -0
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +26 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TentativePoint.d.ts","sourceRoot":"","sources":["../../src/TentativePoint.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,OAAO,EAA0B,UAAU,EAAsB,MAAM,aAAa,CAAC;AAEzG,OAAO,EAAY,aAAa,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"TentativePoint.d.ts","sourceRoot":"","sources":["../../src/TentativePoint.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,OAAO,EAA0B,UAAU,EAAsB,MAAM,aAAa,CAAC;AAEzG,OAAO,EAAY,aAAa,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C;;;GAGG;AACH,qBAAa,cAAc;IAClB,QAAQ,UAAS;IACjB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,KAAK,kBAAkB,GAA2B;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,iBAAiB,CAAC,CAAkC;IACrD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,aAAa;IACb,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;IAE3C,yFAAyF;IACzF,IAAW,SAAS,IAAI,OAAO,CAAwC;IAEvE,gFAAgF;IACzE,WAAW,IAAI,UAAU,GAAG,SAAS;IAErC,QAAQ,IAAI,OAAO;IAKnB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAM9B,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAW7B,eAAe,IAAI,IAAI;IAYvB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAMvC,aAAa,IAAI,IAAI;IAUrB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,GAAG,SAAS;IAS5D,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;IAoBtC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;YAqCjC,OAAO;IA0CrB,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAE5B,OAAO,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;CA2ExC"}
|
|
@@ -11,6 +11,7 @@ import { HitDetail, HitPriority, HitSource, SnapDetail, SnapHeat, SnapMode } fro
|
|
|
11
11
|
import { IModelApp } from "./IModelApp";
|
|
12
12
|
import { BeButton } from "./tools/Tool";
|
|
13
13
|
import { ViewHandleType, ViewManip } from "./tools/ViewTool";
|
|
14
|
+
import { expectDefined } from "@itwin/core-bentley";
|
|
14
15
|
/**
|
|
15
16
|
* @public
|
|
16
17
|
* @extensions
|
|
@@ -58,7 +59,7 @@ export class TentativePoint {
|
|
|
58
59
|
if (this.getCurrSnap())
|
|
59
60
|
IModelApp.viewManager.invalidateDecorationsAllViews();
|
|
60
61
|
else
|
|
61
|
-
this.viewport
|
|
62
|
+
this.viewport?.invalidateDecorations();
|
|
62
63
|
this.isActive = false;
|
|
63
64
|
}
|
|
64
65
|
setCurrSnap(newSnap) {
|
|
@@ -69,10 +70,10 @@ export class TentativePoint {
|
|
|
69
70
|
showTentative() {
|
|
70
71
|
if (this.isSnapped) {
|
|
71
72
|
IModelApp.viewManager.invalidateDecorationsAllViews();
|
|
72
|
-
IModelApp.accuSnap.displayToolTip(this._viewPoint, this.viewport, undefined);
|
|
73
|
+
IModelApp.accuSnap.displayToolTip(this._viewPoint, expectDefined(this.viewport), undefined);
|
|
73
74
|
}
|
|
74
75
|
else {
|
|
75
|
-
this.viewport
|
|
76
|
+
this.viewport?.invalidateDecorations();
|
|
76
77
|
}
|
|
77
78
|
this.isActive = true;
|
|
78
79
|
}
|
|
@@ -145,11 +146,11 @@ export class TentativePoint {
|
|
|
145
146
|
}
|
|
146
147
|
if (undefined === thisHit) {
|
|
147
148
|
// search for elements around the current raw point (search should not be affected by locks!)
|
|
148
|
-
const aperture = (2.0 * this.viewport.pixelsFromInches(IModelApp.locateManager.apertureInches) / 2.0) + 1.5;
|
|
149
|
+
const aperture = (2.0 * expectDefined(this.viewport).pixelsFromInches(IModelApp.locateManager.apertureInches) / 2.0) + 1.5;
|
|
149
150
|
const options = IModelApp.locateManager.options.clone(); // Copy to avoid changing out from under active Tool...
|
|
150
151
|
const picker = IModelApp.locateManager.picker;
|
|
151
152
|
options.hitSource = HitSource.TentativeSnap;
|
|
152
|
-
if (0 === picker.doPick(this.viewport, this._rawPoint, aperture, options))
|
|
153
|
+
if (0 === picker.doPick(expectDefined(this.viewport), this._rawPoint, aperture, options))
|
|
153
154
|
return undefined;
|
|
154
155
|
this.tpHits = picker.getHitList(true);
|
|
155
156
|
thisHit = (undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);
|
|
@@ -178,7 +179,7 @@ export class TentativePoint {
|
|
|
178
179
|
const wasActive = this.isActive;
|
|
179
180
|
this.removeTentative(); // remove the TP cross if it is already on the screen
|
|
180
181
|
const lastPtView = this._viewPoint.clone();
|
|
181
|
-
this.viewport = ev.viewport;
|
|
182
|
+
this.viewport = expectDefined(ev.viewport);
|
|
182
183
|
this._point.setFrom(ev.point);
|
|
183
184
|
this._rawPoint.setFrom(ev.rawPoint);
|
|
184
185
|
this._viewPoint.setFrom(ev.viewPoint);
|
|
@@ -192,7 +193,7 @@ export class TentativePoint {
|
|
|
192
193
|
this.setCurrSnap(newSnap); // Adopt the snap as current
|
|
193
194
|
IModelApp.accuSnap.clear(); // make sure there's no AccuSnap active after a tentative point (otherwise we continually snap to it).
|
|
194
195
|
if (this.isSnapped)
|
|
195
|
-
this._point.setFrom(this.currSnap.snapPoint);
|
|
196
|
+
this._point.setFrom(expectDefined(this.currSnap).snapPoint);
|
|
196
197
|
else if (wasActive && newSearch)
|
|
197
198
|
this._point.setFrom(ev.rawPoint);
|
|
198
199
|
this.showTentative(); // show the TP cross
|
|
@@ -201,7 +202,7 @@ export class TentativePoint {
|
|
|
201
202
|
}
|
|
202
203
|
else if (IModelApp.accuDraw.isActive) {
|
|
203
204
|
const point = this.getPoint().clone();
|
|
204
|
-
const vp = ev.viewport;
|
|
205
|
+
const vp = expectDefined(ev.viewport);
|
|
205
206
|
if (vp.isSnapAdjustmentRequired) {
|
|
206
207
|
IModelApp.toolAdmin.adjustPointToACS(point, vp, false);
|
|
207
208
|
const hit = new HitDetail({
|
|
@@ -229,7 +230,7 @@ export class TentativePoint {
|
|
|
229
230
|
}
|
|
230
231
|
}
|
|
231
232
|
else {
|
|
232
|
-
IModelApp.toolAdmin.adjustPoint(this.getPoint(), ev.viewport);
|
|
233
|
+
IModelApp.toolAdmin.adjustPoint(this.getPoint(), expectDefined(ev.viewport));
|
|
233
234
|
}
|
|
234
235
|
IModelApp.accuDraw.onTentative();
|
|
235
236
|
if (currTool && currTool instanceof ViewManip && currTool.viewHandles.hasHandle(ViewHandleType.TargetCenter))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TentativePoint.js","sourceRoot":"","sources":["../../src/TentativePoint.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module LocatingElements\r\n */\r\n\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { AccuSnap } from \"./AccuSnap\";\r\nimport { HitListHolder } from \"./ElementLocateManager\";\r\nimport { HitDetail, HitList, HitPriority, HitSource, SnapDetail, SnapHeat, SnapMode } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { BeButton, BeButtonEvent } from \"./tools/Tool\";\r\nimport { ViewHandleType, ViewManip } from \"./tools/ViewTool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport } from \"./Viewport\";\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class TentativePoint {\r\n public isActive = false;\r\n public currSnap?: SnapDetail;\r\n public tpHits?: HitList<HitDetail>;\r\n private get _hotDistanceInches(): number { return 0.21; }\r\n private readonly _point: Point3d = new Point3d();\r\n private readonly _rawPoint: Point3d = new Point3d();\r\n private readonly _viewPoint: Point3d = new Point3d();\r\n private _tentativePromise?: Promise<SnapDetail | undefined>;\r\n public viewport?: ScreenViewport;\r\n\r\n public onInitialized() { }\r\n public setHitList(list?: HitList<HitDetail>) { this.tpHits = list; }\r\n\r\n /** @return true if the tentative point is currently active and snapped to an element. */\r\n public get isSnapped(): boolean { return undefined !== this.currSnap; }\r\n\r\n /** @return The current snap path when TentativePoint.isSnapped or undefined. */\r\n public getCurrSnap(): SnapDetail | undefined { return this.currSnap; }\r\n\r\n public getPoint(): Point3d {\r\n const snap = this.currSnap;\r\n return !snap ? this._point : snap.adjustedPoint;\r\n }\r\n\r\n public setPoint(point: Point3d): void {\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n this._point.setFrom(point);\r\n }\r\n\r\n public clear(doErase: boolean): void {\r\n if (doErase) {\r\n this.removeTentative();\r\n IModelApp.accuSnap.synchSnapMode();\r\n }\r\n IModelApp.accuSnap.destroy();\r\n this.isActive = false;\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n }\r\n\r\n public removeTentative(): void {\r\n this._tentativePromise = undefined;\r\n if (!this.isActive)\r\n return;\r\n IModelApp.accuSnap.erase();\r\n if (this.getCurrSnap())\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n else\r\n this.viewport!.invalidateDecorations();\r\n this.isActive = false;\r\n }\r\n\r\n public setCurrSnap(newSnap?: SnapDetail): void {\r\n if (newSnap)\r\n newSnap.setSnapPoint(newSnap.snapPoint, SnapHeat.InRange); // Reset adjustedPoint from pre-located snap and set SnapHeat...\r\n this.currSnap = newSnap;\r\n }\r\n\r\n public showTentative(): void {\r\n if (this.isSnapped) {\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n IModelApp.accuSnap.displayToolTip(this._viewPoint, this.viewport!, undefined);\r\n } else {\r\n this.viewport!.invalidateDecorations();\r\n }\r\n this.isActive = true;\r\n }\r\n\r\n public getHitAndList(holder: HitListHolder): SnapDetail | undefined {\r\n const hit = this.currSnap;\r\n if (hit) {\r\n holder.setHitList(this.tpHits);\r\n this.tpHits = undefined;\r\n }\r\n return hit;\r\n }\r\n\r\n public onButtonEvent(ev: BeButtonEvent): void {\r\n switch (ev.button) {\r\n case BeButton.Data:\r\n if (!ev.isDown)\r\n return; // cleared on down...\r\n break;\r\n case BeButton.Reset:\r\n if (ev.isDown)\r\n return; // cleared on up...\r\n break;\r\n case BeButton.Middle:\r\n return;\r\n }\r\n\r\n this.removeTentative();\r\n IModelApp.accuSnap.synchSnapMode();\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const viewport = context.viewport;\r\n if (!this.isActive || !viewport)\r\n return;\r\n\r\n const tpSize = Math.floor(viewport.pixelsPerInch * 0.4) + 0.5;\r\n const toSizeOutline = tpSize + 1;\r\n const position = context.viewport.worldToView(this._point);\r\n position.x = Math.floor(position.x) + 0.5;\r\n position.y = Math.floor(position.y) + 0.5;\r\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"rgba(0,0,0,.5)\";\r\n ctx.lineWidth = 3;\r\n ctx.moveTo(-toSizeOutline, 0);\r\n ctx.lineTo(toSizeOutline, 0);\r\n ctx.moveTo(0, -toSizeOutline);\r\n ctx.lineTo(0, toSizeOutline);\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"white\";\r\n ctx.lineWidth = 1;\r\n if (!this.isSnapped)\r\n ctx.setLineDash([4, 1]);\r\n\r\n ctx.shadowColor = \"black\";\r\n ctx.shadowBlur = 5;\r\n ctx.moveTo(-tpSize, 0);\r\n ctx.lineTo(tpSize, 0);\r\n ctx.moveTo(0, -tpSize);\r\n ctx.lineTo(0, tpSize);\r\n ctx.stroke();\r\n };\r\n context.addCanvasDecoration({ position, drawDecoration });\r\n }\r\n\r\n private async getSnap(newSearch: boolean): Promise<SnapDetail | undefined> {\r\n // Use next hit from previous search when using tentative to cycle through hits...\r\n let thisHit = (!newSearch && undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);\r\n\r\n // Use existing AccuSnap hit list if one exists...\r\n if (undefined === thisHit) {\r\n this.tpHits = undefined;\r\n thisHit = IModelApp.accuSnap.getHitAndList(this);\r\n }\r\n\r\n if (undefined === thisHit) {\r\n // search for elements around the current raw point (search should not be affected by locks!)\r\n const aperture = (2.0 * this.viewport!.pixelsFromInches(IModelApp.locateManager.apertureInches) / 2.0) + 1.5;\r\n const options = IModelApp.locateManager.options.clone(); // Copy to avoid changing out from under active Tool...\r\n const picker = IModelApp.locateManager.picker;\r\n\r\n options.hitSource = HitSource.TentativeSnap;\r\n if (0 === picker.doPick(this.viewport!, this._rawPoint, aperture, options))\r\n return undefined;\r\n\r\n this.tpHits = picker.getHitList(true);\r\n thisHit = (undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);\r\n } else if (thisHit instanceof SnapDetail) {\r\n // Make the current AccuSnap the TentativePoint snap...\r\n return thisHit;\r\n }\r\n\r\n if (undefined === thisHit)\r\n return undefined;\r\n\r\n const snapModes = IModelApp.accuSnap.getActiveSnapModes(); // Get the list of point snap modes to consider\r\n if (1 === snapModes.length && SnapMode.Intersection === snapModes[0])\r\n snapModes.push(SnapMode.Nearest); // Add nearest when doing intersection by itself to support finding extended intersections...\r\n\r\n const thisSnap = await AccuSnap.requestSnap(thisHit, snapModes, this._hotDistanceInches, IModelApp.accuSnap.keypointDivisor, this.tpHits);\r\n\r\n if (undefined !== thisSnap)\r\n IModelApp.accuDraw.onSnap(thisSnap); // AccuDraw can adjust nearest snap to intersection of circle (polar distance lock) or line (axis lock) with snapped to curve...\r\n\r\n return thisSnap;\r\n }\r\n\r\n private static arePointsCloseEnough(pt1: Point3d, pt2: Point3d, pixelDistance: number): boolean { return pt1.distance(pt2) < (pixelDistance + 1.5); }\r\n\r\n public process(ev: BeButtonEvent): void {\r\n if (undefined !== this._tentativePromise)\r\n return;\r\n\r\n const currTool = IModelApp.toolAdmin.viewTool;\r\n if (currTool && currTool.inDynamicUpdate)\r\n return; // trying to tentative snap while view is changing isn't useful...\r\n\r\n const wasActive = this.isActive;\r\n this.removeTentative(); // remove the TP cross if it is already on the screen\r\n const lastPtView = this._viewPoint.clone();\r\n\r\n this.viewport = ev.viewport!;\r\n this._point.setFrom(ev.point);\r\n this._rawPoint.setFrom(ev.rawPoint);\r\n this._viewPoint.setFrom(ev.viewPoint);\r\n\r\n const newSearch = (!this.isSnapped || !TentativePoint.arePointsCloseEnough(lastPtView, this._viewPoint, this.viewport.pixelsFromInches(IModelApp.locateManager.apertureInches)));\r\n const promise = this.getSnap(newSearch);\r\n this._tentativePromise = promise;\r\n\r\n promise.then((newSnap) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // Ignore response if we're no longer interested in this tentative.\r\n if (this._tentativePromise === promise) {\r\n this._tentativePromise = undefined;\r\n this.setCurrSnap(newSnap); // Adopt the snap as current\r\n IModelApp.accuSnap.clear(); // make sure there's no AccuSnap active after a tentative point (otherwise we continually snap to it).\r\n if (this.isSnapped)\r\n this._point.setFrom(this.currSnap!.snapPoint);\r\n else if (wasActive && newSearch)\r\n this._point.setFrom(ev.rawPoint);\r\n this.showTentative(); // show the TP cross\r\n\r\n if (this.isSnapped) {\r\n IModelApp.toolAdmin.adjustSnapPoint();\r\n } else if (IModelApp.accuDraw.isActive) {\r\n const point = this.getPoint().clone();\r\n const vp = ev.viewport!;\r\n if (vp.isSnapAdjustmentRequired) {\r\n IModelApp.toolAdmin.adjustPointToACS(point, vp, false);\r\n const hit = new HitDetail({\r\n testPoint: point,\r\n viewport: vp,\r\n hitSource: HitSource.TentativeSnap,\r\n hitPoint: point,\r\n sourceId: \"\",\r\n priority: HitPriority.Unknown,\r\n distXY: 0,\r\n distFraction: 0,\r\n });\r\n\r\n const snap = new SnapDetail(hit);\r\n this.setCurrSnap(snap);\r\n IModelApp.toolAdmin.adjustSnapPoint();\r\n this.setPoint(this.getPoint());\r\n } else {\r\n IModelApp.accuDraw.adjustPoint(point, vp, false);\r\n const savePoint = point.clone();\r\n IModelApp.toolAdmin.adjustPointToGrid(point, vp);\r\n if (!point.isExactEqual(savePoint))\r\n IModelApp.accuDraw.adjustPoint(point, vp, false);\r\n this.setPoint(point);\r\n }\r\n } else {\r\n IModelApp.toolAdmin.adjustPoint(this.getPoint(), ev.viewport!);\r\n }\r\n\r\n IModelApp.accuDraw.onTentative();\r\n if (currTool && currTool instanceof ViewManip && currTool.viewHandles.hasHandle(ViewHandleType.TargetCenter))\r\n currTool.updateTargetCenter(); // Change target center to tentative location...\r\n else\r\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\r\n }\r\n });\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"TentativePoint.js","sourceRoot":"","sources":["../../src/TentativePoint.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module LocatingElements\r\n */\r\n\r\nimport { Point3d } from \"@itwin/core-geometry\";\r\nimport { AccuSnap } from \"./AccuSnap\";\r\nimport { HitListHolder } from \"./ElementLocateManager\";\r\nimport { HitDetail, HitList, HitPriority, HitSource, SnapDetail, SnapHeat, SnapMode } from \"./HitDetail\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { BeButton, BeButtonEvent } from \"./tools/Tool\";\r\nimport { ViewHandleType, ViewManip } from \"./tools/ViewTool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport } from \"./Viewport\";\r\nimport { expectDefined } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport class TentativePoint {\r\n public isActive = false;\r\n public currSnap?: SnapDetail;\r\n public tpHits?: HitList<HitDetail>;\r\n private get _hotDistanceInches(): number { return 0.21; }\r\n private readonly _point: Point3d = new Point3d();\r\n private readonly _rawPoint: Point3d = new Point3d();\r\n private readonly _viewPoint: Point3d = new Point3d();\r\n private _tentativePromise?: Promise<SnapDetail | undefined>;\r\n public viewport?: ScreenViewport;\r\n\r\n public onInitialized() { }\r\n public setHitList(list?: HitList<HitDetail>) { this.tpHits = list; }\r\n\r\n /** @return true if the tentative point is currently active and snapped to an element. */\r\n public get isSnapped(): boolean { return undefined !== this.currSnap; }\r\n\r\n /** @return The current snap path when TentativePoint.isSnapped or undefined. */\r\n public getCurrSnap(): SnapDetail | undefined { return this.currSnap; }\r\n\r\n public getPoint(): Point3d {\r\n const snap = this.currSnap;\r\n return !snap ? this._point : snap.adjustedPoint;\r\n }\r\n\r\n public setPoint(point: Point3d): void {\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n this._point.setFrom(point);\r\n }\r\n\r\n public clear(doErase: boolean): void {\r\n if (doErase) {\r\n this.removeTentative();\r\n IModelApp.accuSnap.synchSnapMode();\r\n }\r\n IModelApp.accuSnap.destroy();\r\n this.isActive = false;\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n }\r\n\r\n public removeTentative(): void {\r\n this._tentativePromise = undefined;\r\n if (!this.isActive)\r\n return;\r\n IModelApp.accuSnap.erase();\r\n if (this.getCurrSnap())\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n else\r\n this.viewport?.invalidateDecorations();\r\n this.isActive = false;\r\n }\r\n\r\n public setCurrSnap(newSnap?: SnapDetail): void {\r\n if (newSnap)\r\n newSnap.setSnapPoint(newSnap.snapPoint, SnapHeat.InRange); // Reset adjustedPoint from pre-located snap and set SnapHeat...\r\n this.currSnap = newSnap;\r\n }\r\n\r\n public showTentative(): void {\r\n if (this.isSnapped) {\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n IModelApp.accuSnap.displayToolTip(this._viewPoint, expectDefined(this.viewport), undefined);\r\n } else {\r\n this.viewport?.invalidateDecorations();\r\n }\r\n this.isActive = true;\r\n }\r\n\r\n public getHitAndList(holder: HitListHolder): SnapDetail | undefined {\r\n const hit = this.currSnap;\r\n if (hit) {\r\n holder.setHitList(this.tpHits);\r\n this.tpHits = undefined;\r\n }\r\n return hit;\r\n }\r\n\r\n public onButtonEvent(ev: BeButtonEvent): void {\r\n switch (ev.button) {\r\n case BeButton.Data:\r\n if (!ev.isDown)\r\n return; // cleared on down...\r\n break;\r\n case BeButton.Reset:\r\n if (ev.isDown)\r\n return; // cleared on up...\r\n break;\r\n case BeButton.Middle:\r\n return;\r\n }\r\n\r\n this.removeTentative();\r\n IModelApp.accuSnap.synchSnapMode();\r\n this.setCurrSnap(undefined);\r\n this.tpHits = undefined;\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const viewport = context.viewport;\r\n if (!this.isActive || !viewport)\r\n return;\r\n\r\n const tpSize = Math.floor(viewport.pixelsPerInch * 0.4) + 0.5;\r\n const toSizeOutline = tpSize + 1;\r\n const position = context.viewport.worldToView(this._point);\r\n position.x = Math.floor(position.x) + 0.5;\r\n position.y = Math.floor(position.y) + 0.5;\r\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"rgba(0,0,0,.5)\";\r\n ctx.lineWidth = 3;\r\n ctx.moveTo(-toSizeOutline, 0);\r\n ctx.lineTo(toSizeOutline, 0);\r\n ctx.moveTo(0, -toSizeOutline);\r\n ctx.lineTo(0, toSizeOutline);\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"white\";\r\n ctx.lineWidth = 1;\r\n if (!this.isSnapped)\r\n ctx.setLineDash([4, 1]);\r\n\r\n ctx.shadowColor = \"black\";\r\n ctx.shadowBlur = 5;\r\n ctx.moveTo(-tpSize, 0);\r\n ctx.lineTo(tpSize, 0);\r\n ctx.moveTo(0, -tpSize);\r\n ctx.lineTo(0, tpSize);\r\n ctx.stroke();\r\n };\r\n context.addCanvasDecoration({ position, drawDecoration });\r\n }\r\n\r\n private async getSnap(newSearch: boolean): Promise<SnapDetail | undefined> {\r\n // Use next hit from previous search when using tentative to cycle through hits...\r\n let thisHit = (!newSearch && undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);\r\n\r\n // Use existing AccuSnap hit list if one exists...\r\n if (undefined === thisHit) {\r\n this.tpHits = undefined;\r\n thisHit = IModelApp.accuSnap.getHitAndList(this);\r\n }\r\n\r\n if (undefined === thisHit) {\r\n // search for elements around the current raw point (search should not be affected by locks!)\r\n const aperture = (2.0 * expectDefined(this.viewport).pixelsFromInches(IModelApp.locateManager.apertureInches) / 2.0) + 1.5;\r\n const options = IModelApp.locateManager.options.clone(); // Copy to avoid changing out from under active Tool...\r\n const picker = IModelApp.locateManager.picker;\r\n\r\n options.hitSource = HitSource.TentativeSnap;\r\n if (0 === picker.doPick(expectDefined(this.viewport), this._rawPoint, aperture, options))\r\n return undefined;\r\n\r\n this.tpHits = picker.getHitList(true);\r\n thisHit = (undefined !== this.tpHits ? this.tpHits.getNextHit() : undefined);\r\n } else if (thisHit instanceof SnapDetail) {\r\n // Make the current AccuSnap the TentativePoint snap...\r\n return thisHit;\r\n }\r\n\r\n if (undefined === thisHit)\r\n return undefined;\r\n\r\n const snapModes = IModelApp.accuSnap.getActiveSnapModes(); // Get the list of point snap modes to consider\r\n if (1 === snapModes.length && SnapMode.Intersection === snapModes[0])\r\n snapModes.push(SnapMode.Nearest); // Add nearest when doing intersection by itself to support finding extended intersections...\r\n\r\n const thisSnap = await AccuSnap.requestSnap(thisHit, snapModes, this._hotDistanceInches, IModelApp.accuSnap.keypointDivisor, this.tpHits);\r\n\r\n if (undefined !== thisSnap)\r\n IModelApp.accuDraw.onSnap(thisSnap); // AccuDraw can adjust nearest snap to intersection of circle (polar distance lock) or line (axis lock) with snapped to curve...\r\n\r\n return thisSnap;\r\n }\r\n\r\n private static arePointsCloseEnough(pt1: Point3d, pt2: Point3d, pixelDistance: number): boolean { return pt1.distance(pt2) < (pixelDistance + 1.5); }\r\n\r\n public process(ev: BeButtonEvent): void {\r\n if (undefined !== this._tentativePromise)\r\n return;\r\n\r\n const currTool = IModelApp.toolAdmin.viewTool;\r\n if (currTool && currTool.inDynamicUpdate)\r\n return; // trying to tentative snap while view is changing isn't useful...\r\n\r\n const wasActive = this.isActive;\r\n this.removeTentative(); // remove the TP cross if it is already on the screen\r\n const lastPtView = this._viewPoint.clone();\r\n\r\n this.viewport = expectDefined(ev.viewport);\r\n this._point.setFrom(ev.point);\r\n this._rawPoint.setFrom(ev.rawPoint);\r\n this._viewPoint.setFrom(ev.viewPoint);\r\n\r\n const newSearch = (!this.isSnapped || !TentativePoint.arePointsCloseEnough(lastPtView, this._viewPoint, this.viewport.pixelsFromInches(IModelApp.locateManager.apertureInches)));\r\n const promise = this.getSnap(newSearch);\r\n this._tentativePromise = promise;\r\n\r\n promise.then((newSnap) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // Ignore response if we're no longer interested in this tentative.\r\n if (this._tentativePromise === promise) {\r\n this._tentativePromise = undefined;\r\n this.setCurrSnap(newSnap); // Adopt the snap as current\r\n IModelApp.accuSnap.clear(); // make sure there's no AccuSnap active after a tentative point (otherwise we continually snap to it).\r\n if (this.isSnapped)\r\n this._point.setFrom(expectDefined(this.currSnap).snapPoint);\r\n else if (wasActive && newSearch)\r\n this._point.setFrom(ev.rawPoint);\r\n this.showTentative(); // show the TP cross\r\n\r\n if (this.isSnapped) {\r\n IModelApp.toolAdmin.adjustSnapPoint();\r\n } else if (IModelApp.accuDraw.isActive) {\r\n const point = this.getPoint().clone();\r\n const vp = expectDefined(ev.viewport);\r\n if (vp.isSnapAdjustmentRequired) {\r\n IModelApp.toolAdmin.adjustPointToACS(point, vp, false);\r\n const hit = new HitDetail({\r\n testPoint: point,\r\n viewport: vp,\r\n hitSource: HitSource.TentativeSnap,\r\n hitPoint: point,\r\n sourceId: \"\",\r\n priority: HitPriority.Unknown,\r\n distXY: 0,\r\n distFraction: 0,\r\n });\r\n\r\n const snap = new SnapDetail(hit);\r\n this.setCurrSnap(snap);\r\n IModelApp.toolAdmin.adjustSnapPoint();\r\n this.setPoint(this.getPoint());\r\n } else {\r\n IModelApp.accuDraw.adjustPoint(point, vp, false);\r\n const savePoint = point.clone();\r\n IModelApp.toolAdmin.adjustPointToGrid(point, vp);\r\n if (!point.isExactEqual(savePoint))\r\n IModelApp.accuDraw.adjustPoint(point, vp, false);\r\n this.setPoint(point);\r\n }\r\n } else {\r\n IModelApp.toolAdmin.adjustPoint(this.getPoint(), expectDefined(ev.viewport));\r\n }\r\n\r\n IModelApp.accuDraw.onTentative();\r\n if (currTool && currTool instanceof ViewManip && currTool.viewHandles.hasHandle(ViewHandleType.TargetCenter))\r\n currTool.updateTargetCenter(); // Change target center to tentative location...\r\n else\r\n IModelApp.toolAdmin.updateDynamics(undefined, undefined, true); // Don't wait for motion to update dynamics...\r\n }\r\n });\r\n }\r\n}\r\n"]}
|
package/lib/esm/ViewContext.d.ts
CHANGED
|
@@ -71,8 +71,17 @@ export declare class RenderContext {
|
|
|
71
71
|
export declare class DynamicsContext extends RenderContext {
|
|
72
72
|
private _foreground?;
|
|
73
73
|
private _overlay?;
|
|
74
|
-
/** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].
|
|
74
|
+
/** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].
|
|
75
|
+
* These graphics are drawn as [[GraphicType.Scene]].
|
|
76
|
+
* @see [[addOverlay]] to add a graphic to be drawn as an overlay instead.
|
|
77
|
+
*/
|
|
75
78
|
addGraphic(graphic: RenderGraphic): void;
|
|
79
|
+
/** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].
|
|
80
|
+
* These graphics are drawn as part of the viewport's scene as described by [[GraphicType.Scene]], except
|
|
81
|
+
* that they always draw on top of other graphics as with [[GraphicType.WorldOverlay]].
|
|
82
|
+
* @see [[addGraphic]] to add an ordinary scene graphic instead.
|
|
83
|
+
*/
|
|
84
|
+
addOverlay(graphic: RenderGraphic): void;
|
|
76
85
|
/** @internal */
|
|
77
86
|
add(graphic: RenderGraphic, isOverlay: boolean): void;
|
|
78
87
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewContext.d.ts","sourceRoot":"","sources":["../../src/ViewContext.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAe,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,YAAY,EAAG,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,kCAAkC,EAAE,IAAI,EAAE,eAAe,EAAkB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/H,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAA8B,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E;;;GAGG;AACH,qBAAa,aAAa;IACxB,2DAA2D;IAC3D,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,yDAAyD;IACzD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,gEAAgE;IAChE,SAAgB,aAAa,EAAE,aAAa,CAAC;gBAEjC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO;IAO3C,yIAAyI;IAClI,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM;IAIrD,qDAAqD;IACrD,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAED,4EAA4E;IAC5E,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,gBAAgB;IAChB,IAAW,MAAM,IAAI,YAAY,CAAiC;IAElE,gBAAgB;IAChB,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,UAAU,CAAC,GAAG,cAAc;IAIzG;;;OAGG;IACI,yBAAyB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,cAAc;IAIvE,iDAAiD;IAC1C,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,aAAa;IAIlH;;;;;OAKG;IACI,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,GAAG,aAAa;IAE9E;;;OAGG;IACI,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CAG3D;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAc;IAE/B,
|
|
1
|
+
{"version":3,"file":"ViewContext.d.ts","sourceRoot":"","sources":["../../src/ViewContext.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/ViewContext.js
CHANGED
|
@@ -82,10 +82,21 @@ export class RenderContext {
|
|
|
82
82
|
export class DynamicsContext extends RenderContext {
|
|
83
83
|
_foreground;
|
|
84
84
|
_overlay;
|
|
85
|
-
/** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].
|
|
85
|
+
/** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].
|
|
86
|
+
* These graphics are drawn as [[GraphicType.Scene]].
|
|
87
|
+
* @see [[addOverlay]] to add a graphic to be drawn as an overlay instead.
|
|
88
|
+
*/
|
|
86
89
|
addGraphic(graphic) {
|
|
87
90
|
this.add(graphic, false);
|
|
88
91
|
}
|
|
92
|
+
/** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].
|
|
93
|
+
* These graphics are drawn as part of the viewport's scene as described by [[GraphicType.Scene]], except
|
|
94
|
+
* that they always draw on top of other graphics as with [[GraphicType.WorldOverlay]].
|
|
95
|
+
* @see [[addGraphic]] to add an ordinary scene graphic instead.
|
|
96
|
+
*/
|
|
97
|
+
addOverlay(graphic) {
|
|
98
|
+
this.add(graphic, true);
|
|
99
|
+
}
|
|
89
100
|
/** @internal */
|
|
90
101
|
add(graphic, isOverlay) {
|
|
91
102
|
const key = isOverlay ? "_overlay" : "_foreground";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewContext.js","sourceRoot":"","sources":["../../src/ViewContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Matrix3d, Point2d,\r\n Point3d, Range1d, Transform, XAndY,\r\n} from \"@itwin/core-geometry\";\r\nimport { Frustum, FrustumPlanes, ViewFlags } from \"@itwin/core-common\";\r\nimport { CachedDecoration, DecorationsCache } from \"./DecorationsCache\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { CanvasDecoration } from \"./render/CanvasDecoration\";\r\nimport { Decorations } from \"./render/Decorations\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"./render/GraphicBranch\";\r\nimport { GraphicBuilder, ViewportGraphicBuilderOptions } from \"./render/GraphicBuilder\";\r\nimport { GraphicList, RenderGraphic } from \"./render/RenderGraphic\";\r\nimport { RenderPlanarClassifier } from \"./internal/render/RenderPlanarClassifier\";\r\nimport { RenderSystem, } from \"./render/RenderSystem\";\r\nimport { RenderTarget } from \"./render/RenderTarget\";\r\nimport { Scene } from \"./render/Scene\";\r\nimport { SpatialClassifierTileTreeReference, Tile, TileGraphicType, TileLoadStatus, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewingSpace } from \"./ViewingSpace\";\r\nimport { ELEMENT_MARKED_FOR_REMOVAL, ScreenViewport, Viewport, ViewportDecorator } from \"./Viewport\";\r\nimport { ActiveSpatialClassifier } from \"./SpatialClassifiersState\";\r\nimport { GraphicType } from \"./common/render/GraphicType\";\r\nimport { RenderTextureDrape } from \"./internal/render/RenderTextureDrape\";\r\n\r\n/** Provides context for producing [[RenderGraphic]]s for drawing within a [[Viewport]].\r\n * @public\r\n * @extensions\r\n */\r\nexport class RenderContext {\r\n /** ViewFlags extracted from the context's [[Viewport]]. */\r\n public readonly viewFlags: ViewFlags;\r\n private readonly _viewport: Viewport;\r\n /** Frustum extracted from the context's [[Viewport]]. */\r\n public readonly frustum: Frustum;\r\n /** Frustum planes extracted from the context's [[Viewport]]. */\r\n public readonly frustumPlanes: FrustumPlanes;\r\n\r\n constructor(vp: Viewport, frustum?: Frustum) {\r\n this._viewport = vp;\r\n this.viewFlags = vp.viewFlags;\r\n this.frustum = frustum ? frustum : vp.getFrustum();\r\n this.frustumPlanes = FrustumPlanes.fromFrustum(this.frustum);\r\n }\r\n\r\n /** Given a point in world coordinates, determine approximately how many pixels it occupies on screen based on this context's frustum. */\r\n public getPixelSizeAtPoint(inPoint?: Point3d): number {\r\n return this.viewport.viewingSpace.getPixelSizeAtPoint(inPoint);\r\n }\r\n\r\n /** The [[Viewport]] associated with this context. */\r\n public get viewport(): Viewport {\r\n return this._viewport;\r\n }\r\n\r\n /** The [[RenderSystem]] being used to produce graphics for this context. */\r\n public get renderSystem(): RenderSystem {\r\n return this.target.renderSystem;\r\n }\r\n\r\n /** @internal */\r\n public get target(): RenderTarget { return this.viewport.target; }\r\n\r\n /** @internal */\r\n protected _createGraphicBuilder(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this.target.createGraphicBuilder({ ...options, viewport: this.viewport });\r\n }\r\n\r\n /** Create a builder for creating a [[GraphicType.Scene]] [[RenderGraphic]] for rendering within this context's [[Viewport]].\r\n * @param transform the local-to-world transform in which the builder's geometry is to be defined.\r\n * @returns A builder for creating a [[GraphicType.Scene]] [[RenderGraphic]] for rendering within this context's [[Viewport]].\r\n */\r\n public createSceneGraphicBuilder(transform?: Transform): GraphicBuilder {\r\n return this._createGraphicBuilder({ type: GraphicType.Scene, placement: transform });\r\n }\r\n\r\n /** Create a graphic from a [[GraphicBranch]]. */\r\n public createGraphicBranch(branch: GraphicBranch, location: Transform, opts?: GraphicBranchOptions): RenderGraphic {\r\n return this.target.renderSystem.createGraphicBranch(branch, location, opts);\r\n }\r\n\r\n /** Create a [[RenderGraphic]] which groups a set of graphics into a node in a scene graph, applying to each a transform and optional clip volume and symbology overrides.\r\n * @param branch Contains the group of graphics and the symbology overrides.\r\n * @param location the local-to-world transform applied to the grouped graphics.\r\n * @returns A RenderGraphic suitable for drawing the scene graph node within this context's [[Viewport]].\r\n * @see [[RenderSystem.createBranch]]\r\n */\r\n public createBranch(branch: GraphicBranch, location: Transform): RenderGraphic { return this.createGraphicBranch(branch, location); }\r\n\r\n /** Given the size of a logical pixel in meters, convert it to the size of a physical pixel in meters, if [[RenderSystem.dpiAwareLOD]] is `true`.\r\n * Used when computing LOD for graphics.\r\n * @internal\r\n */\r\n public adjustPixelSizeForLOD(cssPixelSize: number): number {\r\n return this.viewport.target.adjustPixelSizeForLOD(cssPixelSize);\r\n }\r\n}\r\n\r\n/** Provides context for an [[InteractiveTool]] to display decorations representing its current state.\r\n * @see [[InteractiveTool.onDynamicFrame]]\r\n * @public\r\n */\r\nexport class DynamicsContext extends RenderContext {\r\n private _foreground?: GraphicList;\r\n private _overlay?: GraphicList;\r\n\r\n /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]]. */\r\n public addGraphic(graphic: RenderGraphic): void {\r\n this.add(graphic, false);\r\n }\r\n\r\n /** @internal */\r\n public add(graphic: RenderGraphic, isOverlay: boolean) {\r\n const key = isOverlay ? \"_overlay\" : \"_foreground\";\r\n const list = this[key] ?? (this[key] = []);\r\n list.push(graphic);\r\n }\r\n\r\n /** @internal */\r\n public changeDynamics(): void {\r\n this.viewport.changeDynamics(this._foreground, this._overlay);\r\n }\r\n\r\n /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].\r\n * @param options Options describing how to create the builder.\r\n * @returns A builder that produces a [[RenderGraphic]].\r\n */\r\n public createGraphic(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this._createGraphicBuilder(options);\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[DecorateContext.create]].\r\n * @public\r\n */\r\nexport interface DecorateContextCreateArgs {\r\n /** The viewport to be decorated. */\r\n viewport: ScreenViewport;\r\n /** The set of decoration graphics to be populated by the context. */\r\n output: Decorations;\r\n /** Optional cache. If omitted, one will be created.\r\n * @internal\r\n */\r\n cache?: DecorationsCache;\r\n}\r\n\r\n/** Provides context for a [[ViewportDecorator]] to add [[Decorations]] to be rendered within a [[Viewport]].\r\n * @public\r\n * @extensions\r\n */\r\nexport class DecorateContext extends RenderContext {\r\n private readonly _decorations: Decorations;\r\n private readonly _cache: DecorationsCache;\r\n private _curCacheableDecorator?: ViewportDecorator;\r\n\r\n /** The [[ScreenViewport]] in which this context's [[Decorations]] will be drawn. */\r\n public override get viewport(): ScreenViewport {\r\n return super.viewport as ScreenViewport;\r\n }\r\n\r\n /** @internal */\r\n constructor(vp: ScreenViewport, decorations: Decorations, cache: DecorationsCache) {\r\n super(vp);\r\n this._decorations = decorations;\r\n this._cache = cache;\r\n }\r\n\r\n /** Create a new DecorateContext.\r\n * @param args Describes the inputs to the context.\r\n * @note Typically the [[ScreenViewport]] takes care of creating the context for you.\r\n * @public\r\n */\r\n public static create(args: DecorateContextCreateArgs): DecorateContext {\r\n return new DecorateContext(args.viewport, args.output, args.cache ?? new DecorationsCache());\r\n }\r\n\r\n /** Create a builder for creating a [[RenderGraphic]] of the specified type appropriate for rendering within this context's [[Viewport]].\r\n * @param type The type of builder to create.\r\n * @param transform the local-to-world transform in which the builder's geometry is to be defined.\r\n * @param id If the decoration is to be pickable, a unique identifier to associate with the resultant [[RenderGraphic]].\r\n * @returns A builder for creating a [[RenderGraphic]] of the specified type appropriate for rendering within this context's [[Viewport]].\r\n * @see [[IModelConnection.transientIds]] for obtaining an ID for a pickable decoration.\r\n * @see [[createGraphic]] for more options.\r\n */\r\n public createGraphicBuilder(type: GraphicType, transform?: Transform, id?: Id64String): GraphicBuilder {\r\n return this.createGraphic({ type, placement: transform, pickable: undefined !== id ? { id } : undefined });\r\n }\r\n\r\n /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].\r\n * @param options Options describing how to create the builder.\r\n * @returns A builder that produces a [[RenderGraphic]].\r\n */\r\n public createGraphic(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this._createGraphicBuilder(options);\r\n }\r\n\r\n /** @internal */\r\n public addFromDecorator(decorator: ViewportDecorator): void {\r\n assert(undefined === this._curCacheableDecorator);\r\n try {\r\n if (decorator.useCachedDecorations) {\r\n const cached = this._cache.get(decorator);\r\n if (cached) {\r\n this.restoreCache(cached);\r\n return;\r\n }\r\n\r\n this._curCacheableDecorator = decorator;\r\n }\r\n\r\n decorator.decorate(this);\r\n } finally {\r\n this._curCacheableDecorator = undefined;\r\n }\r\n }\r\n\r\n /** Restores decorations onto this context from the specified array of cached decorations. */\r\n private restoreCache(cachedDecorations: CachedDecoration[]) {\r\n cachedDecorations.forEach((cachedDecoration) => {\r\n switch (cachedDecoration.type) {\r\n case \"graphic\":\r\n this.addDecoration(cachedDecoration.graphicType, cachedDecoration.graphicOwner);\r\n break;\r\n case \"canvas\":\r\n this.addCanvasDecoration(cachedDecoration.canvasDecoration, cachedDecoration.atFront);\r\n break;\r\n case \"html\":\r\n this.addHtmlDecoration(cachedDecoration.htmlElement);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private _appendToCache(decoration: CachedDecoration) {\r\n assert(undefined !== this._curCacheableDecorator);\r\n this._cache.add(this._curCacheableDecorator, decoration);\r\n }\r\n\r\n /** Calls [[GraphicBuilder.finish]] on the supplied builder to obtain a [[RenderGraphic]], then adds the graphic to the appropriate list of\r\n * [[Decorations]].\r\n * @param builder The builder from which to extract the graphic.\r\n * @note The builder should not be used after calling this method.\r\n */\r\n public addDecorationFromBuilder(builder: GraphicBuilder) {\r\n this.addDecoration(builder.type, builder.finish());\r\n }\r\n\r\n /** Adds a graphic to the set of [[Decorations]] to be drawn in this context's [[ScreenViewport]].\r\n * @param The type of the graphic, which determines to which list of decorations it is added.\r\n * @param decoration The decoration graphic to add.\r\n * @note The type must match the type with which the [[RenderGraphic]]'s [[GraphicBuilder]] was constructed.\r\n * @see [[DecorateContext.addDecorationFromBuilder]] for a more convenient API.\r\n */\r\n public addDecoration(type: GraphicType, decoration: RenderGraphic) {\r\n if (this._curCacheableDecorator) {\r\n const graphicOwner = this.target.renderSystem.createGraphicOwner(decoration);\r\n this._appendToCache({ type: \"graphic\", graphicOwner, graphicType: type });\r\n decoration = graphicOwner;\r\n }\r\n\r\n switch (type) {\r\n case GraphicType.Scene:\r\n if (undefined === this._decorations.normal)\r\n this._decorations.normal = [];\r\n this._decorations.normal.push(decoration);\r\n break;\r\n\r\n case GraphicType.WorldDecoration:\r\n if (!this._decorations.world)\r\n this._decorations.world = [];\r\n this._decorations.world.push(decoration);\r\n break;\r\n\r\n case GraphicType.WorldOverlay:\r\n if (!this._decorations.worldOverlay)\r\n this._decorations.worldOverlay = [];\r\n this._decorations.worldOverlay.push(decoration);\r\n break;\r\n\r\n case GraphicType.ViewOverlay:\r\n if (!this._decorations.viewOverlay)\r\n this._decorations.viewOverlay = [];\r\n this._decorations.viewOverlay.push(decoration);\r\n break;\r\n\r\n case GraphicType.ViewBackground:\r\n this.setViewBackground(decoration);\r\n break;\r\n }\r\n }\r\n\r\n /** Add a [[CanvasDecoration]] to be drawn in this context's [[ScreenViewport]]. */\r\n public addCanvasDecoration(decoration: CanvasDecoration, atFront = false) {\r\n if (this._curCacheableDecorator)\r\n this._appendToCache({ type: \"canvas\", canvasDecoration: decoration, atFront });\r\n\r\n if (undefined === this._decorations.canvasDecorations)\r\n this._decorations.canvasDecorations = [];\r\n\r\n const list = this._decorations.canvasDecorations;\r\n if (0 === list.length || true === atFront)\r\n list.push(decoration);\r\n else\r\n list.unshift(decoration);\r\n }\r\n\r\n /** Add an HTMLElement to be drawn as a decoration in this context's [[ScreenViewport]]. */\r\n public addHtmlDecoration(decoration: HTMLElement) {\r\n if (this._curCacheableDecorator)\r\n this._appendToCache({ type: \"html\", htmlElement: decoration });\r\n\r\n // an element decoration being added might already be on the decorationDiv, just marked for removal\r\n if (decoration[ELEMENT_MARKED_FOR_REMOVAL]) {\r\n decoration[ELEMENT_MARKED_FOR_REMOVAL] = false;\r\n } else if (decoration.parentElement !== this.viewport.decorationDiv) {\r\n this.viewport.decorationDiv.appendChild(decoration);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public drawStandardGrid(gridOrigin: Point3d, rMatrix: Matrix3d, spacing: XAndY, gridsPerRef: number, _isoGrid: boolean = false, _fixedRepetitions?: Point2d): void {\r\n const vp = this.viewport;\r\n\r\n if (vp.viewingGlobe)\r\n return;\r\n\r\n const color = vp.getContrastToBackgroundColor();\r\n const planarGrid = this.viewport.target.renderSystem.createPlanarGrid(vp.getFrustum(), { origin: gridOrigin, rMatrix, spacing, gridsPerRef, color });\r\n if (planarGrid) {\r\n this.addDecoration(GraphicType.WorldDecoration, planarGrid);\r\n }\r\n }\r\n\r\n /** Display skyBox graphic that encompasses entire scene and rotates with camera.\r\n * @see [[RenderSystem.createSkyBox]].\r\n */\r\n public setSkyBox(graphic: RenderGraphic) {\r\n this._decorations.skyBox = graphic;\r\n }\r\n\r\n /** Set the graphic to be displayed behind all other geometry as the background of this context's [[ScreenViewport]]. */\r\n public setViewBackground(graphic: RenderGraphic) {\r\n this._decorations.viewBackground = graphic;\r\n }\r\n}\r\n\r\n/** Context used to create the scene to be drawn in a [[Viewport]]. The scene consists of a set of [[RenderGraphic]]s produced by the\r\n * [[TileTree]]s visible within the viewport. Creating the scene may result in the enqueueing of requests for [[Tile]] content which\r\n * should be displayed in the viewport but are not yet loaded.\r\n * @public\r\n */\r\nexport class SceneContext extends RenderContext {\r\n private _missingChildTiles = false;\r\n /** The graphics comprising the scene. */\r\n public readonly scene = new Scene();\r\n\r\n /** @internal */\r\n public readonly missingTiles = new Set<Tile>();\r\n\r\n /** @internal */\r\n public markChildrenLoading(): void {\r\n this._missingChildTiles = true;\r\n }\r\n\r\n /** @internal */\r\n public get hasMissingTiles(): boolean {\r\n return this._missingChildTiles || this.missingTiles.size > 0;\r\n }\r\n\r\n private _viewingSpace?: ViewingSpace;\r\n private _graphicType: TileGraphicType = TileGraphicType.Scene;\r\n\r\n public constructor(vp: Viewport, frustum?: Frustum) {\r\n super(vp, frustum);\r\n }\r\n\r\n /** The viewed volume containing the scene. */\r\n public get viewingSpace(): ViewingSpace {\r\n return undefined !== this._viewingSpace ? this._viewingSpace : this.viewport.viewingSpace;\r\n }\r\n\r\n /** @internal */\r\n public get graphicType() { return this._graphicType; }\r\n\r\n /** Add the specified graphic to the scene. */\r\n public outputGraphic(graphic: RenderGraphic): void {\r\n switch (this._graphicType) {\r\n case TileGraphicType.BackgroundMap:\r\n this.backgroundGraphics.push(graphic);\r\n break;\r\n case TileGraphicType.Overlay:\r\n this.overlayGraphics.push(graphic);\r\n break;\r\n default:\r\n this.graphics.push(graphic);\r\n break;\r\n }\r\n }\r\n\r\n /** Indicate that the specified tile is desired for the scene but is not yet ready. A request to load its contents will later be enqueued. */\r\n public insertMissingTile(tile: Tile): void {\r\n switch (tile.loadStatus) {\r\n case TileLoadStatus.NotLoaded:\r\n case TileLoadStatus.Queued:\r\n case TileLoadStatus.Loading:\r\n this.missingTiles.add(tile);\r\n break;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public requestMissingTiles(): void {\r\n IModelApp.tileAdmin.requestTiles(this.viewport, this.missingTiles);\r\n }\r\n\r\n /** @internal */\r\n public addPlanarClassifier(classifiedModelId: Id64String, classifierTree?: SpatialClassifierTileTreeReference, planarClipMask?: PlanarClipMaskState): RenderPlanarClassifier | undefined {\r\n // Target may have the classifier from a previous frame; if not we must create one.\r\n let classifier = this.viewport.target.getPlanarClassifier(classifiedModelId);\r\n if (undefined === classifier)\r\n classifier = this.viewport.target.createPlanarClassifier(classifierTree?.activeClassifier);\r\n\r\n // Either way, we need to collect the graphics to draw for this frame, and record that we did so.\r\n if (undefined !== classifier) {\r\n this.planarClassifiers.set(classifiedModelId, classifier);\r\n classifier.setSource(classifierTree, planarClipMask);\r\n }\r\n\r\n return classifier;\r\n }\r\n\r\n /** @internal */\r\n public getPlanarClassifierForModel(modelId: Id64String) {\r\n return this.planarClassifiers.get(modelId);\r\n }\r\n\r\n /** @internal */\r\n public addBackgroundDrapedModel(drapedTreeRef: TileTreeReference, _heightRange: Range1d | undefined): RenderTextureDrape | undefined {\r\n const drapedTree = drapedTreeRef.treeOwner.tileTree;\r\n if (undefined === drapedTree)\r\n return undefined;\r\n\r\n const id = drapedTree.modelId;\r\n let drape = this.getTextureDrapeForModel(id);\r\n if (undefined !== drape)\r\n return drape;\r\n\r\n drape = this.viewport.target.getTextureDrape(id);\r\n if (undefined === drape && this.viewport.backgroundDrapeMap)\r\n drape = this.viewport.target.renderSystem.createBackgroundMapDrape(drapedTreeRef, this.viewport.backgroundDrapeMap);\r\n\r\n if (undefined !== drape)\r\n this.textureDrapes.set(id, drape);\r\n\r\n return drape;\r\n }\r\n\r\n /** @internal */\r\n public getTextureDrapeForModel(modelId: Id64String) {\r\n return this.textureDrapes.get(modelId);\r\n }\r\n\r\n /** @internal */\r\n public withGraphicType(type: TileGraphicType, func: () => void): void {\r\n const prevType = this._graphicType;\r\n this._graphicType = type;\r\n\r\n func();\r\n\r\n this._graphicType = prevType;\r\n }\r\n\r\n /** The graphics in the scene that will be drawn with depth. */\r\n public get graphics() { return this.scene.foreground; }\r\n /** The graphics that will be drawn behind everything else in the scene. */\r\n public get backgroundGraphics() { return this.scene.background; }\r\n /** The graphics that will be drawn in front of everything else in the scene. */\r\n public get overlayGraphics() { return this.scene.overlay; }\r\n /** @internal */\r\n public get planarClassifiers() { return this.scene.planarClassifiers; }\r\n /** @internal */\r\n public get textureDrapes() { return this.scene.textureDrapes; }\r\n\r\n /** @internal */\r\n public setVolumeClassifier(classifier: ActiveSpatialClassifier, modelId: Id64String): void {\r\n this.scene.volumeClassifier = { classifier, modelId };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ViewContext.js","sourceRoot":"","sources":["../../src/ViewContext.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Matrix3d, Point2d,\r\n Point3d, Range1d, Transform, XAndY,\r\n} from \"@itwin/core-geometry\";\r\nimport { Frustum, FrustumPlanes, ViewFlags } from \"@itwin/core-common\";\r\nimport { CachedDecoration, DecorationsCache } from \"./DecorationsCache\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { PlanarClipMaskState } from \"./PlanarClipMaskState\";\r\nimport { CanvasDecoration } from \"./render/CanvasDecoration\";\r\nimport { Decorations } from \"./render/Decorations\";\r\nimport { GraphicBranch, GraphicBranchOptions } from \"./render/GraphicBranch\";\r\nimport { GraphicBuilder, ViewportGraphicBuilderOptions } from \"./render/GraphicBuilder\";\r\nimport { GraphicList, RenderGraphic } from \"./render/RenderGraphic\";\r\nimport { RenderPlanarClassifier } from \"./internal/render/RenderPlanarClassifier\";\r\nimport { RenderSystem, } from \"./render/RenderSystem\";\r\nimport { RenderTarget } from \"./render/RenderTarget\";\r\nimport { Scene } from \"./render/Scene\";\r\nimport { SpatialClassifierTileTreeReference, Tile, TileGraphicType, TileLoadStatus, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewingSpace } from \"./ViewingSpace\";\r\nimport { ELEMENT_MARKED_FOR_REMOVAL, ScreenViewport, Viewport, ViewportDecorator } from \"./Viewport\";\r\nimport { ActiveSpatialClassifier } from \"./SpatialClassifiersState\";\r\nimport { GraphicType } from \"./common/render/GraphicType\";\r\nimport { RenderTextureDrape } from \"./internal/render/RenderTextureDrape\";\r\n\r\n/** Provides context for producing [[RenderGraphic]]s for drawing within a [[Viewport]].\r\n * @public\r\n * @extensions\r\n */\r\nexport class RenderContext {\r\n /** ViewFlags extracted from the context's [[Viewport]]. */\r\n public readonly viewFlags: ViewFlags;\r\n private readonly _viewport: Viewport;\r\n /** Frustum extracted from the context's [[Viewport]]. */\r\n public readonly frustum: Frustum;\r\n /** Frustum planes extracted from the context's [[Viewport]]. */\r\n public readonly frustumPlanes: FrustumPlanes;\r\n\r\n constructor(vp: Viewport, frustum?: Frustum) {\r\n this._viewport = vp;\r\n this.viewFlags = vp.viewFlags;\r\n this.frustum = frustum ? frustum : vp.getFrustum();\r\n this.frustumPlanes = FrustumPlanes.fromFrustum(this.frustum);\r\n }\r\n\r\n /** Given a point in world coordinates, determine approximately how many pixels it occupies on screen based on this context's frustum. */\r\n public getPixelSizeAtPoint(inPoint?: Point3d): number {\r\n return this.viewport.viewingSpace.getPixelSizeAtPoint(inPoint);\r\n }\r\n\r\n /** The [[Viewport]] associated with this context. */\r\n public get viewport(): Viewport {\r\n return this._viewport;\r\n }\r\n\r\n /** The [[RenderSystem]] being used to produce graphics for this context. */\r\n public get renderSystem(): RenderSystem {\r\n return this.target.renderSystem;\r\n }\r\n\r\n /** @internal */\r\n public get target(): RenderTarget { return this.viewport.target; }\r\n\r\n /** @internal */\r\n protected _createGraphicBuilder(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this.target.createGraphicBuilder({ ...options, viewport: this.viewport });\r\n }\r\n\r\n /** Create a builder for creating a [[GraphicType.Scene]] [[RenderGraphic]] for rendering within this context's [[Viewport]].\r\n * @param transform the local-to-world transform in which the builder's geometry is to be defined.\r\n * @returns A builder for creating a [[GraphicType.Scene]] [[RenderGraphic]] for rendering within this context's [[Viewport]].\r\n */\r\n public createSceneGraphicBuilder(transform?: Transform): GraphicBuilder {\r\n return this._createGraphicBuilder({ type: GraphicType.Scene, placement: transform });\r\n }\r\n\r\n /** Create a graphic from a [[GraphicBranch]]. */\r\n public createGraphicBranch(branch: GraphicBranch, location: Transform, opts?: GraphicBranchOptions): RenderGraphic {\r\n return this.target.renderSystem.createGraphicBranch(branch, location, opts);\r\n }\r\n\r\n /** Create a [[RenderGraphic]] which groups a set of graphics into a node in a scene graph, applying to each a transform and optional clip volume and symbology overrides.\r\n * @param branch Contains the group of graphics and the symbology overrides.\r\n * @param location the local-to-world transform applied to the grouped graphics.\r\n * @returns A RenderGraphic suitable for drawing the scene graph node within this context's [[Viewport]].\r\n * @see [[RenderSystem.createBranch]]\r\n */\r\n public createBranch(branch: GraphicBranch, location: Transform): RenderGraphic { return this.createGraphicBranch(branch, location); }\r\n\r\n /** Given the size of a logical pixel in meters, convert it to the size of a physical pixel in meters, if [[RenderSystem.dpiAwareLOD]] is `true`.\r\n * Used when computing LOD for graphics.\r\n * @internal\r\n */\r\n public adjustPixelSizeForLOD(cssPixelSize: number): number {\r\n return this.viewport.target.adjustPixelSizeForLOD(cssPixelSize);\r\n }\r\n}\r\n\r\n/** Provides context for an [[InteractiveTool]] to display decorations representing its current state.\r\n * @see [[InteractiveTool.onDynamicFrame]]\r\n * @public\r\n */\r\nexport class DynamicsContext extends RenderContext {\r\n private _foreground?: GraphicList;\r\n private _overlay?: GraphicList;\r\n\r\n /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].\r\n * These graphics are drawn as [[GraphicType.Scene]].\r\n * @see [[addOverlay]] to add a graphic to be drawn as an overlay instead.\r\n */\r\n public addGraphic(graphic: RenderGraphic): void {\r\n this.add(graphic, false);\r\n }\r\n\r\n /** Add a graphic to the list of dynamic graphics to be drawn in this context's [[Viewport]].\r\n * These graphics are drawn as part of the viewport's scene as described by [[GraphicType.Scene]], except\r\n * that they always draw on top of other graphics as with [[GraphicType.WorldOverlay]].\r\n * @see [[addGraphic]] to add an ordinary scene graphic instead.\r\n */\r\n public addOverlay(graphic: RenderGraphic): void {\r\n this.add(graphic, true);\r\n }\r\n\r\n /** @internal */\r\n public add(graphic: RenderGraphic, isOverlay: boolean) {\r\n const key = isOverlay ? \"_overlay\" : \"_foreground\";\r\n const list = this[key] ?? (this[key] = []);\r\n list.push(graphic);\r\n }\r\n\r\n /** @internal */\r\n public changeDynamics(): void {\r\n this.viewport.changeDynamics(this._foreground, this._overlay);\r\n }\r\n\r\n /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].\r\n * @param options Options describing how to create the builder.\r\n * @returns A builder that produces a [[RenderGraphic]].\r\n */\r\n public createGraphic(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this._createGraphicBuilder(options);\r\n }\r\n}\r\n\r\n/** Arguments supplied to [[DecorateContext.create]].\r\n * @public\r\n */\r\nexport interface DecorateContextCreateArgs {\r\n /** The viewport to be decorated. */\r\n viewport: ScreenViewport;\r\n /** The set of decoration graphics to be populated by the context. */\r\n output: Decorations;\r\n /** Optional cache. If omitted, one will be created.\r\n * @internal\r\n */\r\n cache?: DecorationsCache;\r\n}\r\n\r\n/** Provides context for a [[ViewportDecorator]] to add [[Decorations]] to be rendered within a [[Viewport]].\r\n * @public\r\n * @extensions\r\n */\r\nexport class DecorateContext extends RenderContext {\r\n private readonly _decorations: Decorations;\r\n private readonly _cache: DecorationsCache;\r\n private _curCacheableDecorator?: ViewportDecorator;\r\n\r\n /** The [[ScreenViewport]] in which this context's [[Decorations]] will be drawn. */\r\n public override get viewport(): ScreenViewport {\r\n return super.viewport as ScreenViewport;\r\n }\r\n\r\n /** @internal */\r\n constructor(vp: ScreenViewport, decorations: Decorations, cache: DecorationsCache) {\r\n super(vp);\r\n this._decorations = decorations;\r\n this._cache = cache;\r\n }\r\n\r\n /** Create a new DecorateContext.\r\n * @param args Describes the inputs to the context.\r\n * @note Typically the [[ScreenViewport]] takes care of creating the context for you.\r\n * @public\r\n */\r\n public static create(args: DecorateContextCreateArgs): DecorateContext {\r\n return new DecorateContext(args.viewport, args.output, args.cache ?? new DecorationsCache());\r\n }\r\n\r\n /** Create a builder for creating a [[RenderGraphic]] of the specified type appropriate for rendering within this context's [[Viewport]].\r\n * @param type The type of builder to create.\r\n * @param transform the local-to-world transform in which the builder's geometry is to be defined.\r\n * @param id If the decoration is to be pickable, a unique identifier to associate with the resultant [[RenderGraphic]].\r\n * @returns A builder for creating a [[RenderGraphic]] of the specified type appropriate for rendering within this context's [[Viewport]].\r\n * @see [[IModelConnection.transientIds]] for obtaining an ID for a pickable decoration.\r\n * @see [[createGraphic]] for more options.\r\n */\r\n public createGraphicBuilder(type: GraphicType, transform?: Transform, id?: Id64String): GraphicBuilder {\r\n return this.createGraphic({ type, placement: transform, pickable: undefined !== id ? { id } : undefined });\r\n }\r\n\r\n /** Create a builder for producing a [[RenderGraphic]] appropriate for rendering within this context's [[Viewport]].\r\n * @param options Options describing how to create the builder.\r\n * @returns A builder that produces a [[RenderGraphic]].\r\n */\r\n public createGraphic(options: Omit<ViewportGraphicBuilderOptions, \"viewport\">): GraphicBuilder {\r\n return this._createGraphicBuilder(options);\r\n }\r\n\r\n /** @internal */\r\n public addFromDecorator(decorator: ViewportDecorator): void {\r\n assert(undefined === this._curCacheableDecorator);\r\n try {\r\n if (decorator.useCachedDecorations) {\r\n const cached = this._cache.get(decorator);\r\n if (cached) {\r\n this.restoreCache(cached);\r\n return;\r\n }\r\n\r\n this._curCacheableDecorator = decorator;\r\n }\r\n\r\n decorator.decorate(this);\r\n } finally {\r\n this._curCacheableDecorator = undefined;\r\n }\r\n }\r\n\r\n /** Restores decorations onto this context from the specified array of cached decorations. */\r\n private restoreCache(cachedDecorations: CachedDecoration[]) {\r\n cachedDecorations.forEach((cachedDecoration) => {\r\n switch (cachedDecoration.type) {\r\n case \"graphic\":\r\n this.addDecoration(cachedDecoration.graphicType, cachedDecoration.graphicOwner);\r\n break;\r\n case \"canvas\":\r\n this.addCanvasDecoration(cachedDecoration.canvasDecoration, cachedDecoration.atFront);\r\n break;\r\n case \"html\":\r\n this.addHtmlDecoration(cachedDecoration.htmlElement);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private _appendToCache(decoration: CachedDecoration) {\r\n assert(undefined !== this._curCacheableDecorator);\r\n this._cache.add(this._curCacheableDecorator, decoration);\r\n }\r\n\r\n /** Calls [[GraphicBuilder.finish]] on the supplied builder to obtain a [[RenderGraphic]], then adds the graphic to the appropriate list of\r\n * [[Decorations]].\r\n * @param builder The builder from which to extract the graphic.\r\n * @note The builder should not be used after calling this method.\r\n */\r\n public addDecorationFromBuilder(builder: GraphicBuilder) {\r\n this.addDecoration(builder.type, builder.finish());\r\n }\r\n\r\n /** Adds a graphic to the set of [[Decorations]] to be drawn in this context's [[ScreenViewport]].\r\n * @param The type of the graphic, which determines to which list of decorations it is added.\r\n * @param decoration The decoration graphic to add.\r\n * @note The type must match the type with which the [[RenderGraphic]]'s [[GraphicBuilder]] was constructed.\r\n * @see [[DecorateContext.addDecorationFromBuilder]] for a more convenient API.\r\n */\r\n public addDecoration(type: GraphicType, decoration: RenderGraphic) {\r\n if (this._curCacheableDecorator) {\r\n const graphicOwner = this.target.renderSystem.createGraphicOwner(decoration);\r\n this._appendToCache({ type: \"graphic\", graphicOwner, graphicType: type });\r\n decoration = graphicOwner;\r\n }\r\n\r\n switch (type) {\r\n case GraphicType.Scene:\r\n if (undefined === this._decorations.normal)\r\n this._decorations.normal = [];\r\n this._decorations.normal.push(decoration);\r\n break;\r\n\r\n case GraphicType.WorldDecoration:\r\n if (!this._decorations.world)\r\n this._decorations.world = [];\r\n this._decorations.world.push(decoration);\r\n break;\r\n\r\n case GraphicType.WorldOverlay:\r\n if (!this._decorations.worldOverlay)\r\n this._decorations.worldOverlay = [];\r\n this._decorations.worldOverlay.push(decoration);\r\n break;\r\n\r\n case GraphicType.ViewOverlay:\r\n if (!this._decorations.viewOverlay)\r\n this._decorations.viewOverlay = [];\r\n this._decorations.viewOverlay.push(decoration);\r\n break;\r\n\r\n case GraphicType.ViewBackground:\r\n this.setViewBackground(decoration);\r\n break;\r\n }\r\n }\r\n\r\n /** Add a [[CanvasDecoration]] to be drawn in this context's [[ScreenViewport]]. */\r\n public addCanvasDecoration(decoration: CanvasDecoration, atFront = false) {\r\n if (this._curCacheableDecorator)\r\n this._appendToCache({ type: \"canvas\", canvasDecoration: decoration, atFront });\r\n\r\n if (undefined === this._decorations.canvasDecorations)\r\n this._decorations.canvasDecorations = [];\r\n\r\n const list = this._decorations.canvasDecorations;\r\n if (0 === list.length || true === atFront)\r\n list.push(decoration);\r\n else\r\n list.unshift(decoration);\r\n }\r\n\r\n /** Add an HTMLElement to be drawn as a decoration in this context's [[ScreenViewport]]. */\r\n public addHtmlDecoration(decoration: HTMLElement) {\r\n if (this._curCacheableDecorator)\r\n this._appendToCache({ type: \"html\", htmlElement: decoration });\r\n\r\n // an element decoration being added might already be on the decorationDiv, just marked for removal\r\n if (decoration[ELEMENT_MARKED_FOR_REMOVAL]) {\r\n decoration[ELEMENT_MARKED_FOR_REMOVAL] = false;\r\n } else if (decoration.parentElement !== this.viewport.decorationDiv) {\r\n this.viewport.decorationDiv.appendChild(decoration);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public drawStandardGrid(gridOrigin: Point3d, rMatrix: Matrix3d, spacing: XAndY, gridsPerRef: number, _isoGrid: boolean = false, _fixedRepetitions?: Point2d): void {\r\n const vp = this.viewport;\r\n\r\n if (vp.viewingGlobe)\r\n return;\r\n\r\n const color = vp.getContrastToBackgroundColor();\r\n const planarGrid = this.viewport.target.renderSystem.createPlanarGrid(vp.getFrustum(), { origin: gridOrigin, rMatrix, spacing, gridsPerRef, color });\r\n if (planarGrid) {\r\n this.addDecoration(GraphicType.WorldDecoration, planarGrid);\r\n }\r\n }\r\n\r\n /** Display skyBox graphic that encompasses entire scene and rotates with camera.\r\n * @see [[RenderSystem.createSkyBox]].\r\n */\r\n public setSkyBox(graphic: RenderGraphic) {\r\n this._decorations.skyBox = graphic;\r\n }\r\n\r\n /** Set the graphic to be displayed behind all other geometry as the background of this context's [[ScreenViewport]]. */\r\n public setViewBackground(graphic: RenderGraphic) {\r\n this._decorations.viewBackground = graphic;\r\n }\r\n}\r\n\r\n/** Context used to create the scene to be drawn in a [[Viewport]]. The scene consists of a set of [[RenderGraphic]]s produced by the\r\n * [[TileTree]]s visible within the viewport. Creating the scene may result in the enqueueing of requests for [[Tile]] content which\r\n * should be displayed in the viewport but are not yet loaded.\r\n * @public\r\n */\r\nexport class SceneContext extends RenderContext {\r\n private _missingChildTiles = false;\r\n /** The graphics comprising the scene. */\r\n public readonly scene = new Scene();\r\n\r\n /** @internal */\r\n public readonly missingTiles = new Set<Tile>();\r\n\r\n /** @internal */\r\n public markChildrenLoading(): void {\r\n this._missingChildTiles = true;\r\n }\r\n\r\n /** @internal */\r\n public get hasMissingTiles(): boolean {\r\n return this._missingChildTiles || this.missingTiles.size > 0;\r\n }\r\n\r\n private _viewingSpace?: ViewingSpace;\r\n private _graphicType: TileGraphicType = TileGraphicType.Scene;\r\n\r\n public constructor(vp: Viewport, frustum?: Frustum) {\r\n super(vp, frustum);\r\n }\r\n\r\n /** The viewed volume containing the scene. */\r\n public get viewingSpace(): ViewingSpace {\r\n return undefined !== this._viewingSpace ? this._viewingSpace : this.viewport.viewingSpace;\r\n }\r\n\r\n /** @internal */\r\n public get graphicType() { return this._graphicType; }\r\n\r\n /** Add the specified graphic to the scene. */\r\n public outputGraphic(graphic: RenderGraphic): void {\r\n switch (this._graphicType) {\r\n case TileGraphicType.BackgroundMap:\r\n this.backgroundGraphics.push(graphic);\r\n break;\r\n case TileGraphicType.Overlay:\r\n this.overlayGraphics.push(graphic);\r\n break;\r\n default:\r\n this.graphics.push(graphic);\r\n break;\r\n }\r\n }\r\n\r\n /** Indicate that the specified tile is desired for the scene but is not yet ready. A request to load its contents will later be enqueued. */\r\n public insertMissingTile(tile: Tile): void {\r\n switch (tile.loadStatus) {\r\n case TileLoadStatus.NotLoaded:\r\n case TileLoadStatus.Queued:\r\n case TileLoadStatus.Loading:\r\n this.missingTiles.add(tile);\r\n break;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public requestMissingTiles(): void {\r\n IModelApp.tileAdmin.requestTiles(this.viewport, this.missingTiles);\r\n }\r\n\r\n /** @internal */\r\n public addPlanarClassifier(classifiedModelId: Id64String, classifierTree?: SpatialClassifierTileTreeReference, planarClipMask?: PlanarClipMaskState): RenderPlanarClassifier | undefined {\r\n // Target may have the classifier from a previous frame; if not we must create one.\r\n let classifier = this.viewport.target.getPlanarClassifier(classifiedModelId);\r\n if (undefined === classifier)\r\n classifier = this.viewport.target.createPlanarClassifier(classifierTree?.activeClassifier);\r\n\r\n // Either way, we need to collect the graphics to draw for this frame, and record that we did so.\r\n if (undefined !== classifier) {\r\n this.planarClassifiers.set(classifiedModelId, classifier);\r\n classifier.setSource(classifierTree, planarClipMask);\r\n }\r\n\r\n return classifier;\r\n }\r\n\r\n /** @internal */\r\n public getPlanarClassifierForModel(modelId: Id64String) {\r\n return this.planarClassifiers.get(modelId);\r\n }\r\n\r\n /** @internal */\r\n public addBackgroundDrapedModel(drapedTreeRef: TileTreeReference, _heightRange: Range1d | undefined): RenderTextureDrape | undefined {\r\n const drapedTree = drapedTreeRef.treeOwner.tileTree;\r\n if (undefined === drapedTree)\r\n return undefined;\r\n\r\n const id = drapedTree.modelId;\r\n let drape = this.getTextureDrapeForModel(id);\r\n if (undefined !== drape)\r\n return drape;\r\n\r\n drape = this.viewport.target.getTextureDrape(id);\r\n if (undefined === drape && this.viewport.backgroundDrapeMap)\r\n drape = this.viewport.target.renderSystem.createBackgroundMapDrape(drapedTreeRef, this.viewport.backgroundDrapeMap);\r\n\r\n if (undefined !== drape)\r\n this.textureDrapes.set(id, drape);\r\n\r\n return drape;\r\n }\r\n\r\n /** @internal */\r\n public getTextureDrapeForModel(modelId: Id64String) {\r\n return this.textureDrapes.get(modelId);\r\n }\r\n\r\n /** @internal */\r\n public withGraphicType(type: TileGraphicType, func: () => void): void {\r\n const prevType = this._graphicType;\r\n this._graphicType = type;\r\n\r\n func();\r\n\r\n this._graphicType = prevType;\r\n }\r\n\r\n /** The graphics in the scene that will be drawn with depth. */\r\n public get graphics() { return this.scene.foreground; }\r\n /** The graphics that will be drawn behind everything else in the scene. */\r\n public get backgroundGraphics() { return this.scene.background; }\r\n /** The graphics that will be drawn in front of everything else in the scene. */\r\n public get overlayGraphics() { return this.scene.overlay; }\r\n /** @internal */\r\n public get planarClassifiers() { return this.scene.planarClassifiers; }\r\n /** @internal */\r\n public get textureDrapes() { return this.scene.textureDrapes; }\r\n\r\n /** @internal */\r\n public setVolumeClassifier(classifier: ActiveSpatialClassifier, modelId: Id64String): void {\r\n this.scene.volumeClassifier = { classifier, modelId };\r\n }\r\n}\r\n"]}
|
package/lib/esm/ViewCreator2d.js
CHANGED
|
@@ -233,7 +233,7 @@ export class ViewCreator2d {
|
|
|
233
233
|
if (mergedDisplayProps.jsonProperties !== undefined) {
|
|
234
234
|
mergedDisplayProps.jsonProperties.styles = {
|
|
235
235
|
...mergedDisplayProps.jsonProperties.styles,
|
|
236
|
-
...props.displayStyleProps.jsonProperties
|
|
236
|
+
...props.displayStyleProps.jsonProperties?.styles,
|
|
237
237
|
};
|
|
238
238
|
}
|
|
239
239
|
return { ...seedViewStateProps, ...props, displayStyleProps: mergedDisplayProps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewCreator2d.js","sourceRoot":"","sources":["../../src/ViewCreator2d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Views\r\n */\r\n\r\n/*\r\nAPI for creating a 2D view from a given modelId and modelType (classFullName).\r\nAdditional options (such as background color) can be passed during view creation.\r\n*/\r\n\r\nimport { Id64Array, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport {\r\n CategorySelectorProps, Code, ColorDef, DisplayStyleProps, IModel, IModelError, ModelSelectorProps, QueryBinder, QueryRowFormat, SheetProps,\r\n ViewDefinition2dProps, ViewStateProps,\r\n} from \"@itwin/core-common\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport { DrawingViewState } from \"./DrawingViewState\";\r\nimport { EntityState } from \"./EntityState\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { DrawingModelState, SectionDrawingModelState, SheetModelState } from \"./ModelState\";\r\nimport { SheetViewState } from \"./SheetViewState\";\r\nimport { ViewState, ViewState2d } from \"./ViewState\";\r\n\r\n/** Options for creating a [[ViewState2d]] via [[ViewCreator2d]].\r\n * @public\r\n * @extensions\r\n*/\r\nexport interface ViewCreator2dOptions {\r\n /** Aspect ratio of [[Viewport]]. Required to fit contents of the model in the initial state of the view. */\r\n vpAspect?: number;\r\n /** Background color of the view (default is white). */\r\n bgColor?: ColorDef;\r\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. */\r\n useSeedView?: boolean;\r\n}\r\n\r\n/**\r\n * API for creating a [[ViewState2d]] for a 2D model ([[GeometricModel2dState]]). @see [[ViewCreator3d]] to create a view for a 3d model.\r\n * Example usage:\r\n * ```ts\r\n * const viewCreator = new ViewCreator2d(imodel);\r\n * const models = await imodel.models.queryProps({ from: \"BisCore.GeometricModel2d\" });\r\n * if (models.length > 0)\r\n * const view = await viewCreator.createViewForModel(models[0].id!);\r\n * ```\r\n * @public\r\n * @extensions\r\n */\r\nexport class ViewCreator2d {\r\n\r\n // Types of 2D models the API supports\r\n private static _drawingModelClasses = [DrawingModelState.classFullName, SectionDrawingModelState.classFullName];\r\n private static _sheetModelClasses = [SheetModelState.classFullName];\r\n\r\n /**\r\n * Constructs a ViewCreator2d using an [[IModelConnection]].\r\n * @param _imodel [[IModelConnection]] to query for categories and/or models.\r\n */\r\n constructor(private _imodel: IModelConnection) { }\r\n\r\n /**\r\n * Creates and returns view for the 2D model id passed in.\r\n * @param modelId Id of the 2D model for the view.\r\n * @param [options] Options for creating the view.\r\n * @throws [IModelError]($common) If modelType is not supported.\r\n */\r\n public async createViewForModel(modelId: Id64String, options?: ViewCreator2dOptions): Promise<ViewState> {\r\n\r\n const baseClassName = await this._getModelBaseClassName(modelId);\r\n\r\n const viewState = await this._createViewState2d(modelId, baseClassName.classFullName, options);\r\n try {\r\n await viewState.load();\r\n } catch { }\r\n\r\n return viewState;\r\n }\r\n\r\n /**\r\n * Gets model base class name from id.\r\n * @param modelId of target model.\r\n * @throws [IModelError]($common) if modelId is invalid.\r\n */\r\n private async _getModelBaseClassName(modelId: Id64String): Promise<typeof EntityState> {\r\n\r\n let baseClassName;\r\n\r\n const modelProps = await this._imodel.models.getProps(modelId);\r\n if (modelProps.length > 0) {\r\n const modelType = modelProps[0].classFullName;\r\n baseClassName = await this._imodel.findClassFor(modelType, undefined);\r\n } else\r\n throw new IModelError(IModelStatus.BadModel, \"ViewCreator2d._getModelBaseClassName: modelId is invalid\");\r\n\r\n if (baseClassName === undefined)\r\n throw new IModelError(IModelStatus.WrongClass, \"ViewCreator2d.getViewForModel: modelType is invalid\");\r\n\r\n return baseClassName;\r\n }\r\n\r\n /**\r\n * Creates view from any 2D model type (Drawing/SectionDrawing/Sheet)\r\n * @param modelId of target model.\r\n * @param modelType classFullName of target 2D model.\r\n * @param options for view creation.\r\n * @throws [IModelError]($common) if modelType is not supported.\r\n */\r\n private async _createViewState2d(modelId: Id64String, modelType: string, options?: ViewCreator2dOptions): Promise<ViewState2d> {\r\n let viewState: ViewState2d;\r\n if (this._isDrawingModelClass(modelType)) {\r\n const props = await this._createViewStateProps(modelId, options);\r\n viewState = DrawingViewState.createFromProps(props, this._imodel);\r\n } else if (this._isSheetModelClass(modelType)) {\r\n let props = await this._createViewStateProps(modelId, options);\r\n props = await this._addSheetViewProps(modelId, props);\r\n viewState = SheetViewState.createFromProps(props, this._imodel);\r\n } else\r\n throw new IModelError(IModelStatus.WrongClass, \"ViewCreator2d._createViewState2d: modelType not supported\");\r\n\r\n return viewState;\r\n }\r\n\r\n /**\r\n * Checks to see if given model is of [[DrawingModelState]].\r\n * @param modelType classFullName of model.\r\n */\r\n private _isDrawingModelClass(modelType: string) {\r\n if (ViewCreator2d._drawingModelClasses.includes(modelType)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks to see if given model is of [[SheetModelState]].\r\n * @param modelType classFullName of model.\r\n */\r\n private _isSheetModelClass(modelType: string) {\r\n if (ViewCreator2d._sheetModelClasses.includes(modelType)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Creates ViewStateProps for the model. ViewStateProps are composed of the 4 sets of Props below.\r\n * @param modelId of target model.\r\n * @param options for view creation.\r\n */\r\n private _createViewStateProps = async (modelId: Id64String, options?: ViewCreator2dOptions): Promise<ViewStateProps> => {\r\n // Use dictionary model in all props\r\n const dictionaryId = IModel.dictionaryId;\r\n const categories = await this._getAllCategories();\r\n\r\n // Get bg color from options or default to white\r\n const bgColor: ColorDef = options?.bgColor ? options.bgColor : ColorDef.white;\r\n\r\n // model extents\r\n const modelProps = await this._imodel.models.queryExtents(modelId);\r\n const modelExtents = Range3d.fromJSON(modelProps[0]?.extents);\r\n let originX = modelExtents.low.x;\r\n let originY = modelExtents.low.y;\r\n let deltaX = modelExtents.xLength();\r\n let deltaY = modelExtents.yLength();\r\n\r\n // if vp aspect given, update model extents to fit view\r\n if (options?.vpAspect) {\r\n const modelAspect = deltaY / deltaX;\r\n\r\n if (modelAspect > options.vpAspect) {\r\n const xFix = deltaY / options.vpAspect;\r\n originX = originX - xFix / 2;\r\n deltaX = deltaX + xFix;\r\n } else if (modelAspect < options.vpAspect) {\r\n const yFix = deltaX * options.vpAspect;\r\n originY = originY - yFix / 2;\r\n deltaY = deltaY + yFix;\r\n }\r\n }\r\n\r\n const modelSelectorProps: ModelSelectorProps = {\r\n models: [modelId],\r\n code: Code.createEmpty(),\r\n model: dictionaryId,\r\n classFullName: \"BisCore:ModelSelector\",\r\n };\r\n\r\n const categorySelectorProps: CategorySelectorProps = {\r\n categories,\r\n code: Code.createEmpty(),\r\n model: dictionaryId,\r\n classFullName: \"BisCore:CategorySelector\",\r\n };\r\n\r\n const viewDefinitionProps: ViewDefinition2dProps = {\r\n baseModelId: modelId,\r\n categorySelectorId: \"\",\r\n displayStyleId: \"\",\r\n origin: { x: originX, y: originY },\r\n delta: { x: deltaX, y: deltaY },\r\n angle: { radians: 0 },\r\n code: Code.createEmpty(),\r\n model: dictionaryId,\r\n classFullName: \"BisCore:ViewDefinition2d\",\r\n };\r\n\r\n const displayStyleProps: DisplayStyleProps = {\r\n code: Code.createEmpty(),\r\n model: dictionaryId,\r\n classFullName: \"BisCore:DisplayStyle2d\",\r\n jsonProperties: {\r\n styles: {\r\n backgroundColor: bgColor.tbgr,\r\n },\r\n },\r\n };\r\n\r\n const viewStateProps: ViewStateProps = {\r\n displayStyleProps,\r\n categorySelectorProps,\r\n modelSelectorProps,\r\n viewDefinitionProps,\r\n modelExtents,\r\n };\r\n\r\n // merge seed view props if needed\r\n return options?.useSeedView ? this._mergeSeedView(modelId, viewStateProps) : viewStateProps;\r\n };\r\n\r\n /**\r\n * Adds Sheet view props to given view props.\r\n * @param modelId of target model.\r\n * @param props input ViewStateProps.\r\n */\r\n private async _addSheetViewProps(modelId: Id64String, props: ViewStateProps) {\r\n let width = 0;\r\n let height = 0;\r\n for await (const row of this._imodel.createQueryReader(`SELECT Width, Height FROM bis.Sheet WHERE ECInstanceId = ?`, QueryBinder.from([modelId]), { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\r\n width = row.width as number;\r\n height = row.height as number;\r\n break;\r\n }\r\n const sheetProps: SheetProps = {\r\n model: modelId,\r\n code: { spec: \"\", scope: \"\" },\r\n classFullName: \"DrawingSheetModel\",\r\n height,\r\n width,\r\n };\r\n\r\n props.sheetAttachments = await this._getSheetAttachments(modelId);\r\n props.sheetProps = sheetProps;\r\n\r\n return props;\r\n }\r\n\r\n /**\r\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.\r\n * @param modelId of target model.\r\n * @param props Input view props to be merged\r\n */\r\n private async _mergeSeedView(modelId: Id64String, props: ViewStateProps): Promise<ViewStateProps> {\r\n const viewDefinitionId = await this._getViewDefinitionsIdForModel(modelId);\r\n // Return incase no viewDefinition found.\r\n if (viewDefinitionId === undefined)\r\n return props;\r\n\r\n const seedViewState = (await this._imodel.views.load(viewDefinitionId));\r\n const seedViewStateProps: ViewStateProps = {\r\n categorySelectorProps: seedViewState.categorySelector.toJSON(),\r\n viewDefinitionProps: seedViewState.toJSON(),\r\n displayStyleProps: seedViewState.displayStyle.toJSON(),\r\n };\r\n const mergedDisplayProps = seedViewStateProps.displayStyleProps;\r\n if (mergedDisplayProps.jsonProperties !== undefined) {\r\n mergedDisplayProps.jsonProperties.styles = {\r\n ...mergedDisplayProps.jsonProperties.styles,\r\n ...props.displayStyleProps.jsonProperties!.styles,\r\n };\r\n }\r\n\r\n return { ...seedViewStateProps, ...props, displayStyleProps: mergedDisplayProps };\r\n }\r\n\r\n /**\r\n * Get all view definitions for a given model.\r\n * @param modelId of target model.\r\n */\r\n private async _getViewDefinitionsIdForModel(modelId: Id64String): Promise<Id64String | undefined> {\r\n\r\n const query = `SELECT ECInstanceId from Bis.ViewDefinition2D WHERE BaseModel.Id = ${modelId} AND isPrivate = false LIMIT 1`;\r\n const viewDefinitionsId = await this._executeQuery(query);\r\n\r\n return (viewDefinitionsId.length) > 0 ? viewDefinitionsId[0] : undefined;\r\n }\r\n\r\n /**\r\n * Get all drawing categories\r\n */\r\n private async _getAllCategories(): Promise<Id64Array> {\r\n\r\n const query = \"SELECT ECInstanceId from BisCore.DrawingCategory\";\r\n const categories = await this._executeQuery(query);\r\n\r\n return categories;\r\n }\r\n\r\n /**\r\n * Get all sheet attachments\r\n * @param modelId of target model.\r\n */\r\n private async _getSheetAttachments(modelId: string): Promise<Id64Array> {\r\n\r\n const query = `SELECT ECInstanceId FROM Bis.ViewAttachment WHERE Model.Id = ${modelId}`;\r\n const attachments = await this._executeQuery(query);\r\n\r\n return attachments;\r\n }\r\n\r\n /**\r\n * Helper function to execute ECSql queries.\r\n * @param query statement to execute.\r\n */\r\n private _executeQuery = async (query: string) => {\r\n const rows = [];\r\n for await (const row of this._imodel.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }))\r\n rows.push(row.id);\r\n\r\n return rows;\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ViewCreator2d.js","sourceRoot":"","sources":["../../src/ViewCreator2d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Views\r\n */\r\n\r\n/*\r\nAPI for creating a 2D view from a given modelId and modelType (classFullName).\r\nAdditional options (such as background color) can be passed during view creation.\r\n*/\r\n\r\nimport { Id64Array, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport {\r\n CategorySelectorProps, Code, ColorDef, DisplayStyleProps, IModel, IModelError, ModelSelectorProps, QueryBinder, QueryRowFormat, SheetProps,\r\n ViewDefinition2dProps, ViewStateProps,\r\n} from \"@itwin/core-common\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\nimport { DrawingViewState } from \"./DrawingViewState\";\r\nimport { EntityState } from \"./EntityState\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { DrawingModelState, SectionDrawingModelState, SheetModelState } from \"./ModelState\";\r\nimport { SheetViewState } from \"./SheetViewState\";\r\nimport { ViewState, ViewState2d } from \"./ViewState\";\r\n\r\n/** Options for creating a [[ViewState2d]] via [[ViewCreator2d]].\r\n * @public\r\n * @extensions\r\n*/\r\nexport interface ViewCreator2dOptions {\r\n /** Aspect ratio of [[Viewport]]. Required to fit contents of the model in the initial state of the view. */\r\n vpAspect?: number;\r\n /** Background color of the view (default is white). */\r\n bgColor?: ColorDef;\r\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. */\r\n useSeedView?: boolean;\r\n}\r\n\r\n/**\r\n * API for creating a [[ViewState2d]] for a 2D model ([[GeometricModel2dState]]). @see [[ViewCreator3d]] to create a view for a 3d model.\r\n * Example usage:\r\n * ```ts\r\n * const viewCreator = new ViewCreator2d(imodel);\r\n * const models = await imodel.models.queryProps({ from: \"BisCore.GeometricModel2d\" });\r\n * if (models.length > 0)\r\n * const view = await viewCreator.createViewForModel(models[0].id!);\r\n * ```\r\n * @public\r\n * @extensions\r\n */\r\nexport class ViewCreator2d {\r\n\r\n // Types of 2D models the API supports\r\n private static _drawingModelClasses = [DrawingModelState.classFullName, SectionDrawingModelState.classFullName];\r\n private static _sheetModelClasses = [SheetModelState.classFullName];\r\n\r\n /**\r\n * Constructs a ViewCreator2d using an [[IModelConnection]].\r\n * @param _imodel [[IModelConnection]] to query for categories and/or models.\r\n */\r\n constructor(private _imodel: IModelConnection) { }\r\n\r\n /**\r\n * Creates and returns view for the 2D model id passed in.\r\n * @param modelId Id of the 2D model for the view.\r\n * @param [options] Options for creating the view.\r\n * @throws [IModelError]($common) If modelType is not supported.\r\n */\r\n public async createViewForModel(modelId: Id64String, options?: ViewCreator2dOptions): Promise<ViewState> {\r\n\r\n const baseClassName = await this._getModelBaseClassName(modelId);\r\n\r\n const viewState = await this._createViewState2d(modelId, baseClassName.classFullName, options);\r\n try {\r\n await viewState.load();\r\n } catch { }\r\n\r\n return viewState;\r\n }\r\n\r\n /**\r\n * Gets model base class name from id.\r\n * @param modelId of target model.\r\n * @throws [IModelError]($common) if modelId is invalid.\r\n */\r\n private async _getModelBaseClassName(modelId: Id64String): Promise<typeof EntityState> {\r\n\r\n let baseClassName;\r\n\r\n const modelProps = await this._imodel.models.getProps(modelId);\r\n if (modelProps.length > 0) {\r\n const modelType = modelProps[0].classFullName;\r\n baseClassName = await this._imodel.findClassFor(modelType, undefined);\r\n } else\r\n throw new IModelError(IModelStatus.BadModel, \"ViewCreator2d._getModelBaseClassName: modelId is invalid\");\r\n\r\n if (baseClassName === undefined)\r\n throw new IModelError(IModelStatus.WrongClass, \"ViewCreator2d.getViewForModel: modelType is invalid\");\r\n\r\n return baseClassName;\r\n }\r\n\r\n /**\r\n * Creates view from any 2D model type (Drawing/SectionDrawing/Sheet)\r\n * @param modelId of target model.\r\n * @param modelType classFullName of target 2D model.\r\n * @param options for view creation.\r\n * @throws [IModelError]($common) if modelType is not supported.\r\n */\r\n private async _createViewState2d(modelId: Id64String, modelType: string, options?: ViewCreator2dOptions): Promise<ViewState2d> {\r\n let viewState: ViewState2d;\r\n if (this._isDrawingModelClass(modelType)) {\r\n const props = await this._createViewStateProps(modelId, options);\r\n viewState = DrawingViewState.createFromProps(props, this._imodel);\r\n } else if (this._isSheetModelClass(modelType)) {\r\n let props = await this._createViewStateProps(modelId, options);\r\n props = await this._addSheetViewProps(modelId, props);\r\n viewState = SheetViewState.createFromProps(props, this._imodel);\r\n } else\r\n throw new IModelError(IModelStatus.WrongClass, \"ViewCreator2d._createViewState2d: modelType not supported\");\r\n\r\n return viewState;\r\n }\r\n\r\n /**\r\n * Checks to see if given model is of [[DrawingModelState]].\r\n * @param modelType classFullName of model.\r\n */\r\n private _isDrawingModelClass(modelType: string) {\r\n if (ViewCreator2d._drawingModelClasses.includes(modelType)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks to see if given model is of [[SheetModelState]].\r\n * @param modelType classFullName of model.\r\n */\r\n private _isSheetModelClass(modelType: string) {\r\n if (ViewCreator2d._sheetModelClasses.includes(modelType)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Creates ViewStateProps for the model. ViewStateProps are composed of the 4 sets of Props below.\r\n * @param modelId of target model.\r\n * @param options for view creation.\r\n */\r\n private _createViewStateProps = async (modelId: Id64String, options?: ViewCreator2dOptions): Promise<ViewStateProps> => {\r\n // Use dictionary model in all props\r\n const dictionaryId = IModel.dictionaryId;\r\n const categories = await this._getAllCategories();\r\n\r\n // Get bg color from options or default to white\r\n const bgColor: ColorDef = options?.bgColor ? options.bgColor : ColorDef.white;\r\n\r\n // model extents\r\n const modelProps = await this._imodel.models.queryExtents(modelId);\r\n const modelExtents = Range3d.fromJSON(modelProps[0]?.extents);\r\n let originX = modelExtents.low.x;\r\n let originY = modelExtents.low.y;\r\n let deltaX = modelExtents.xLength();\r\n let deltaY = modelExtents.yLength();\r\n\r\n // if vp aspect given, update model extents to fit view\r\n if (options?.vpAspect) {\r\n const modelAspect = deltaY / deltaX;\r\n\r\n if (modelAspect > options.vpAspect) {\r\n const xFix = deltaY / options.vpAspect;\r\n originX = originX - xFix / 2;\r\n deltaX = deltaX + xFix;\r\n } else if (modelAspect < options.vpAspect) {\r\n const yFix = deltaX * options.vpAspect;\r\n originY = originY - yFix / 2;\r\n deltaY = deltaY + yFix;\r\n }\r\n }\r\n\r\n const modelSelectorProps: ModelSelectorProps = {\r\n models: [modelId],\r\n code: Code.createEmpty(),\r\n model: dictionaryId,\r\n classFullName: \"BisCore:ModelSelector\",\r\n };\r\n\r\n const categorySelectorProps: CategorySelectorProps = {\r\n categories,\r\n code: Code.createEmpty(),\r\n model: dictionaryId,\r\n classFullName: \"BisCore:CategorySelector\",\r\n };\r\n\r\n const viewDefinitionProps: ViewDefinition2dProps = {\r\n baseModelId: modelId,\r\n categorySelectorId: \"\",\r\n displayStyleId: \"\",\r\n origin: { x: originX, y: originY },\r\n delta: { x: deltaX, y: deltaY },\r\n angle: { radians: 0 },\r\n code: Code.createEmpty(),\r\n model: dictionaryId,\r\n classFullName: \"BisCore:ViewDefinition2d\",\r\n };\r\n\r\n const displayStyleProps: DisplayStyleProps = {\r\n code: Code.createEmpty(),\r\n model: dictionaryId,\r\n classFullName: \"BisCore:DisplayStyle2d\",\r\n jsonProperties: {\r\n styles: {\r\n backgroundColor: bgColor.tbgr,\r\n },\r\n },\r\n };\r\n\r\n const viewStateProps: ViewStateProps = {\r\n displayStyleProps,\r\n categorySelectorProps,\r\n modelSelectorProps,\r\n viewDefinitionProps,\r\n modelExtents,\r\n };\r\n\r\n // merge seed view props if needed\r\n return options?.useSeedView ? this._mergeSeedView(modelId, viewStateProps) : viewStateProps;\r\n };\r\n\r\n /**\r\n * Adds Sheet view props to given view props.\r\n * @param modelId of target model.\r\n * @param props input ViewStateProps.\r\n */\r\n private async _addSheetViewProps(modelId: Id64String, props: ViewStateProps) {\r\n let width = 0;\r\n let height = 0;\r\n for await (const row of this._imodel.createQueryReader(`SELECT Width, Height FROM bis.Sheet WHERE ECInstanceId = ?`, QueryBinder.from([modelId]), { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\r\n width = row.width as number;\r\n height = row.height as number;\r\n break;\r\n }\r\n const sheetProps: SheetProps = {\r\n model: modelId,\r\n code: { spec: \"\", scope: \"\" },\r\n classFullName: \"DrawingSheetModel\",\r\n height,\r\n width,\r\n };\r\n\r\n props.sheetAttachments = await this._getSheetAttachments(modelId);\r\n props.sheetProps = sheetProps;\r\n\r\n return props;\r\n }\r\n\r\n /**\r\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.\r\n * @param modelId of target model.\r\n * @param props Input view props to be merged\r\n */\r\n private async _mergeSeedView(modelId: Id64String, props: ViewStateProps): Promise<ViewStateProps> {\r\n const viewDefinitionId = await this._getViewDefinitionsIdForModel(modelId);\r\n // Return incase no viewDefinition found.\r\n if (viewDefinitionId === undefined)\r\n return props;\r\n\r\n const seedViewState = (await this._imodel.views.load(viewDefinitionId));\r\n const seedViewStateProps: ViewStateProps = {\r\n categorySelectorProps: seedViewState.categorySelector.toJSON(),\r\n viewDefinitionProps: seedViewState.toJSON(),\r\n displayStyleProps: seedViewState.displayStyle.toJSON(),\r\n };\r\n const mergedDisplayProps = seedViewStateProps.displayStyleProps;\r\n if (mergedDisplayProps.jsonProperties !== undefined) {\r\n mergedDisplayProps.jsonProperties.styles = {\r\n ...mergedDisplayProps.jsonProperties.styles,\r\n ...props.displayStyleProps.jsonProperties?.styles,\r\n };\r\n }\r\n\r\n return { ...seedViewStateProps, ...props, displayStyleProps: mergedDisplayProps };\r\n }\r\n\r\n /**\r\n * Get all view definitions for a given model.\r\n * @param modelId of target model.\r\n */\r\n private async _getViewDefinitionsIdForModel(modelId: Id64String): Promise<Id64String | undefined> {\r\n\r\n const query = `SELECT ECInstanceId from Bis.ViewDefinition2D WHERE BaseModel.Id = ${modelId} AND isPrivate = false LIMIT 1`;\r\n const viewDefinitionsId = await this._executeQuery(query);\r\n\r\n return (viewDefinitionsId.length) > 0 ? viewDefinitionsId[0] : undefined;\r\n }\r\n\r\n /**\r\n * Get all drawing categories\r\n */\r\n private async _getAllCategories(): Promise<Id64Array> {\r\n\r\n const query = \"SELECT ECInstanceId from BisCore.DrawingCategory\";\r\n const categories = await this._executeQuery(query);\r\n\r\n return categories;\r\n }\r\n\r\n /**\r\n * Get all sheet attachments\r\n * @param modelId of target model.\r\n */\r\n private async _getSheetAttachments(modelId: string): Promise<Id64Array> {\r\n\r\n const query = `SELECT ECInstanceId FROM Bis.ViewAttachment WHERE Model.Id = ${modelId}`;\r\n const attachments = await this._executeQuery(query);\r\n\r\n return attachments;\r\n }\r\n\r\n /**\r\n * Helper function to execute ECSql queries.\r\n * @param query statement to execute.\r\n */\r\n private _executeQuery = async (query: string) => {\r\n const rows = [];\r\n for await (const row of this._imodel.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }))\r\n rows.push(row.id);\r\n\r\n return rows;\r\n };\r\n}\r\n"]}
|
package/lib/esm/ViewCreator3d.js
CHANGED
|
@@ -167,7 +167,7 @@ export class ViewCreator3d {
|
|
|
167
167
|
if (mergedDisplayProps.jsonProperties !== undefined) {
|
|
168
168
|
mergedDisplayProps.jsonProperties.styles = {
|
|
169
169
|
...mergedDisplayProps.jsonProperties.styles,
|
|
170
|
-
...viewStateProps.displayStyleProps.jsonProperties
|
|
170
|
+
...viewStateProps.displayStyleProps.jsonProperties?.styles,
|
|
171
171
|
};
|
|
172
172
|
}
|
|
173
173
|
return { ...seedViewStateProps, ...viewStateProps, displayStyleProps: mergedDisplayProps };
|