@itwin/core-common 5.0.0-dev.32 → 5.0.0-dev.35
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 +6 -1
- package/lib/cjs/AmbientOcclusion.js +9 -9
- package/lib/cjs/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/AnalysisStyle.js +1 -1
- package/lib/cjs/AnalysisStyle.js.map +1 -1
- package/lib/cjs/Atmosphere.js +19 -21
- package/lib/cjs/Atmosphere.js.map +1 -1
- package/lib/cjs/AuthorizationClient.js.map +1 -1
- package/lib/cjs/BackendTypes.js.map +1 -1
- package/lib/cjs/BackgroundMapProvider.js.map +1 -1
- package/lib/cjs/BackgroundMapSettings.js.map +1 -1
- package/lib/cjs/Base64EncodedString.js.map +1 -1
- package/lib/cjs/BlobReader.js.map +1 -1
- package/lib/cjs/BriefcaseTypes.js.map +1 -1
- package/lib/cjs/Camera.js.map +1 -1
- package/lib/cjs/ChangedElements.js.map +1 -1
- package/lib/cjs/ChangedEntities.js.map +1 -1
- package/lib/cjs/ChangesetProps.js.map +1 -1
- package/lib/cjs/ClipStyle.js +5 -5
- package/lib/cjs/ClipStyle.js.map +1 -1
- package/lib/cjs/Code.js.map +1 -1
- package/lib/cjs/ColorByName.js.map +1 -1
- package/lib/cjs/ColorDef.js +10 -10
- package/lib/cjs/ColorDef.js.map +1 -1
- package/lib/cjs/CommonLoggerCategory.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/ContextRealityModel.js.map +1 -1
- package/lib/cjs/ContourDisplay.js +5 -5
- package/lib/cjs/ContourDisplay.js.map +1 -1
- package/lib/cjs/DisplayStyleSettings.js.map +1 -1
- package/lib/cjs/ECSchemaProps.js.map +1 -1
- package/lib/cjs/ECSqlReader.js +1 -1
- package/lib/cjs/ECSqlReader.js.map +1 -1
- package/lib/cjs/ECSqlTypes.js.map +1 -1
- package/lib/cjs/ElementMesh.js.map +1 -1
- package/lib/cjs/ElementProps.js +2 -2
- package/lib/cjs/ElementProps.js.map +1 -1
- package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
- package/lib/cjs/EntityProps.js.map +1 -1
- package/lib/cjs/EntityReference.js.map +1 -1
- package/lib/cjs/Environment.js +2 -2
- package/lib/cjs/Environment.js.map +1 -1
- package/lib/cjs/FeatureIndex.js.map +1 -1
- package/lib/cjs/FeatureSymbology.js +3 -3
- package/lib/cjs/FeatureSymbology.js.map +1 -1
- package/lib/cjs/FeatureTable.js.map +1 -1
- package/lib/cjs/Fonts.js.map +1 -1
- package/lib/cjs/Frustum.js.map +1 -1
- package/lib/cjs/GenericInstanceFilter.js.map +1 -1
- package/lib/cjs/GeoCoordinateServices.js.map +1 -1
- package/lib/cjs/GeometryContainment.js.map +1 -1
- package/lib/cjs/GeometryParams.js.map +1 -1
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/Gradient.js +9 -9
- package/lib/cjs/Gradient.js.map +1 -1
- package/lib/cjs/GraphicParams.js.map +1 -1
- package/lib/cjs/GroundPlane.js +2 -2
- package/lib/cjs/GroundPlane.js.map +1 -1
- package/lib/cjs/HSLColor.js.map +1 -1
- package/lib/cjs/HSVColor.js.map +1 -1
- package/lib/cjs/HiddenLine.js +4 -4
- package/lib/cjs/HiddenLine.js.map +1 -1
- package/lib/cjs/Hilite.js.map +1 -1
- package/lib/cjs/IModel.js +6 -6
- package/lib/cjs/IModel.js.map +1 -1
- package/lib/cjs/IModelError.js.map +1 -1
- package/lib/cjs/IModelVersion.js.map +1 -1
- package/lib/cjs/ITwinError.js.map +1 -1
- package/lib/cjs/Image.js.map +1 -1
- package/lib/cjs/IpcAppProps.js.map +1 -1
- package/lib/cjs/LightSettings.js +1 -1
- package/lib/cjs/LightSettings.js.map +1 -1
- package/lib/cjs/LinePixels.js.map +1 -1
- package/lib/cjs/Localization.js.map +1 -1
- package/lib/cjs/MapImagerySettings.js.map +1 -1
- package/lib/cjs/MapLayerSettings.js.map +1 -1
- package/lib/cjs/MassProperties.js.map +1 -1
- package/lib/cjs/MaterialProps.js.map +1 -1
- package/lib/cjs/ModelClipGroup.js.map +1 -1
- package/lib/cjs/ModelGeometryChanges.js.map +1 -1
- package/lib/cjs/ModelProps.js.map +1 -1
- package/lib/cjs/NativeAppProps.js.map +1 -1
- package/lib/cjs/OctEncodedNormal.js.map +1 -1
- package/lib/cjs/PlanProjectionSettings.js.map +1 -1
- package/lib/cjs/PlanarClipMask.js +2 -2
- package/lib/cjs/PlanarClipMask.js.map +1 -1
- package/lib/cjs/QPoint.js.map +1 -1
- package/lib/cjs/RealityDataAccessProps.js.map +1 -1
- package/lib/cjs/RealityModelDisplaySettings.js +4 -4
- package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
- package/lib/cjs/Render.js.map +1 -1
- package/lib/cjs/RenderMaterial.js +3 -3
- package/lib/cjs/RenderMaterial.js.map +1 -1
- package/lib/cjs/RenderTexture.js.map +1 -1
- package/lib/cjs/RgbColor.js.map +1 -1
- package/lib/cjs/RpcInterface.js.map +1 -1
- package/lib/cjs/RpcManager.js.map +1 -1
- package/lib/cjs/SessionProps.js.map +1 -1
- package/lib/cjs/SkyBox.js +4 -4
- package/lib/cjs/SkyBox.js.map +1 -1
- package/lib/cjs/SolarCalculate.js.map +1 -1
- package/lib/cjs/SolarShadows.js +1 -1
- package/lib/cjs/SolarShadows.js.map +1 -1
- package/lib/cjs/SpatialClassification.js.map +1 -1
- package/lib/cjs/SubCategoryAppearance.js +1 -1
- package/lib/cjs/SubCategoryAppearance.js.map +1 -1
- package/lib/cjs/SubCategoryOverride.js +2 -2
- package/lib/cjs/SubCategoryOverride.js.map +1 -1
- package/lib/cjs/TerrainSettings.js.map +1 -1
- package/lib/cjs/TextureMapping.js +2 -2
- package/lib/cjs/TextureMapping.js.map +1 -1
- package/lib/cjs/TextureProps.js.map +1 -1
- package/lib/cjs/ThematicDisplay.js +2 -2
- package/lib/cjs/ThematicDisplay.js.map +1 -1
- package/lib/cjs/Thumbnail.js.map +1 -1
- package/lib/cjs/TileProps.js.map +1 -1
- package/lib/cjs/Tween.js.map +1 -1
- package/lib/cjs/TxnAction.js.map +1 -1
- package/lib/cjs/ViewDetails.js +2 -2
- package/lib/cjs/ViewDetails.js.map +1 -1
- package/lib/cjs/ViewFlags.js +2 -2
- package/lib/cjs/ViewFlags.js.map +1 -1
- package/lib/cjs/ViewProps.js.map +1 -1
- package/lib/cjs/WhiteOnWhiteReversalSettings.js +2 -2
- package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/cjs/annotation/TextAnnotation.js.map +1 -1
- package/lib/cjs/annotation/TextBlock.js.map +1 -1
- package/lib/cjs/annotation/TextBlockGeometryProps.js.map +1 -1
- package/lib/cjs/annotation/TextBlockLayoutResult.js.map +1 -1
- package/lib/cjs/annotation/TextStyle.js +19 -19
- package/lib/cjs/annotation/TextStyle.js.map +1 -1
- package/lib/cjs/core-common.js.map +1 -1
- package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
- package/lib/cjs/domains/GenericElementProps.js.map +1 -1
- package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
- package/lib/cjs/geometry/AreaPattern.js.map +1 -1
- package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
- package/lib/cjs/geometry/Cartographic.js +13 -13
- package/lib/cjs/geometry/Cartographic.js.map +1 -1
- package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
- package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
- package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
- package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/cjs/geometry/GeometryStream.js.map +1 -1
- package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
- package/lib/cjs/geometry/LineStyle.js.map +1 -1
- package/lib/cjs/geometry/Placement.js.map +1 -1
- package/lib/cjs/geometry/Projection.js.map +1 -1
- package/lib/cjs/geometry/TextString.js.map +1 -1
- package/lib/cjs/internal/Snapping.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/ipc/IpcSession.js.map +1 -1
- package/lib/cjs/ipc/IpcSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocket.js +1 -1
- package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.js +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/cjs/rpc/DevToolsRpcInterface.js +6 -6
- package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js +4 -4
- package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.js +4 -4
- package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/SnapshotIModelRpcInterface.js +4 -4
- package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConfiguration.js +32 -34
- package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
- package/lib/cjs/rpc/core/RpcControl.js +8 -15
- package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.js +3 -5
- package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/cjs/rpc/core/RpcOperation.js +2 -2
- package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/cjs/rpc/core/RpcProtocol.js +4 -4
- package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPush.js +5 -5
- package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.js +5 -5
- package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRoutingToken.js +2 -2
- package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/cjs/rpc/core/RpcSessionInvocation.js +1 -1
- package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.js +6 -6
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
- package/lib/cjs/rpc/web/RpcMultipart.js +12 -12
- package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.js +17 -19
- package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
- package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
- package/lib/cjs/tile/ElementGraphics.js.map +1 -1
- package/lib/cjs/tile/GltfTileIO.js.map +1 -1
- package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
- package/lib/cjs/tile/IModelTileIO.js +1 -1
- package/lib/cjs/tile/IModelTileIO.js.map +1 -1
- package/lib/cjs/tile/PntsTileIO.js.map +1 -1
- package/lib/cjs/tile/TileIO.js.map +1 -1
- package/lib/cjs/tile/TileMetadata.js.map +1 -1
- package/lib/cjs/tile/Tileset3dSchema.js.map +1 -1
- package/lib/esm/AmbientOcclusion.js +9 -9
- package/lib/esm/AmbientOcclusion.js.map +1 -1
- package/lib/esm/AnalysisStyle.js +1 -1
- package/lib/esm/AnalysisStyle.js.map +1 -1
- package/lib/esm/Atmosphere.js +19 -21
- package/lib/esm/Atmosphere.js.map +1 -1
- package/lib/esm/AuthorizationClient.js.map +1 -1
- package/lib/esm/BackendTypes.js.map +1 -1
- package/lib/esm/BackgroundMapProvider.js.map +1 -1
- package/lib/esm/BackgroundMapSettings.js.map +1 -1
- package/lib/esm/Base64EncodedString.js.map +1 -1
- package/lib/esm/BlobReader.js.map +1 -1
- package/lib/esm/BriefcaseTypes.js.map +1 -1
- package/lib/esm/Camera.js.map +1 -1
- package/lib/esm/ChangedElements.js.map +1 -1
- package/lib/esm/ChangedEntities.js.map +1 -1
- package/lib/esm/ChangesetProps.js.map +1 -1
- package/lib/esm/ClipStyle.js +5 -5
- package/lib/esm/ClipStyle.js.map +1 -1
- package/lib/esm/Code.js.map +1 -1
- package/lib/esm/ColorByName.js.map +1 -1
- package/lib/esm/ColorDef.js +10 -10
- package/lib/esm/ColorDef.js.map +1 -1
- package/lib/esm/CommonLoggerCategory.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/ContextRealityModel.js.map +1 -1
- package/lib/esm/ContourDisplay.js +5 -5
- package/lib/esm/ContourDisplay.js.map +1 -1
- package/lib/esm/DisplayStyleSettings.js.map +1 -1
- package/lib/esm/ECSchemaProps.js.map +1 -1
- package/lib/esm/ECSqlReader.js +1 -1
- package/lib/esm/ECSqlReader.js.map +1 -1
- package/lib/esm/ECSqlTypes.js.map +1 -1
- package/lib/esm/ElementMesh.js.map +1 -1
- package/lib/esm/ElementProps.js +2 -2
- package/lib/esm/ElementProps.js.map +1 -1
- package/lib/esm/EmphasizeElementsProps.js.map +1 -1
- package/lib/esm/EntityProps.js.map +1 -1
- package/lib/esm/EntityReference.js.map +1 -1
- package/lib/esm/Environment.js +2 -2
- package/lib/esm/Environment.js.map +1 -1
- package/lib/esm/FeatureIndex.js.map +1 -1
- package/lib/esm/FeatureSymbology.js +3 -3
- package/lib/esm/FeatureSymbology.js.map +1 -1
- package/lib/esm/FeatureTable.js.map +1 -1
- package/lib/esm/Fonts.js.map +1 -1
- package/lib/esm/Frustum.js.map +1 -1
- package/lib/esm/GenericInstanceFilter.js.map +1 -1
- package/lib/esm/GeoCoordinateServices.js.map +1 -1
- package/lib/esm/GeometryContainment.js.map +1 -1
- package/lib/esm/GeometryParams.js.map +1 -1
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/Gradient.js +9 -9
- package/lib/esm/Gradient.js.map +1 -1
- package/lib/esm/GraphicParams.js.map +1 -1
- package/lib/esm/GroundPlane.js +2 -2
- package/lib/esm/GroundPlane.js.map +1 -1
- package/lib/esm/HSLColor.js.map +1 -1
- package/lib/esm/HSVColor.js.map +1 -1
- package/lib/esm/HiddenLine.js +4 -4
- package/lib/esm/HiddenLine.js.map +1 -1
- package/lib/esm/Hilite.js.map +1 -1
- package/lib/esm/IModel.js +6 -6
- package/lib/esm/IModel.js.map +1 -1
- package/lib/esm/IModelError.js.map +1 -1
- package/lib/esm/IModelVersion.js.map +1 -1
- package/lib/esm/ITwinError.js.map +1 -1
- package/lib/esm/Image.js.map +1 -1
- package/lib/esm/IpcAppProps.js.map +1 -1
- package/lib/esm/LightSettings.js +1 -1
- package/lib/esm/LightSettings.js.map +1 -1
- package/lib/esm/LinePixels.js.map +1 -1
- package/lib/esm/Localization.js.map +1 -1
- package/lib/esm/MapImagerySettings.js.map +1 -1
- package/lib/esm/MapLayerSettings.js.map +1 -1
- package/lib/esm/MassProperties.js.map +1 -1
- package/lib/esm/MaterialProps.js.map +1 -1
- package/lib/esm/ModelClipGroup.js.map +1 -1
- package/lib/esm/ModelGeometryChanges.js.map +1 -1
- package/lib/esm/ModelProps.js.map +1 -1
- package/lib/esm/NativeAppProps.js.map +1 -1
- package/lib/esm/OctEncodedNormal.js.map +1 -1
- package/lib/esm/PlanProjectionSettings.js.map +1 -1
- package/lib/esm/PlanarClipMask.js +2 -2
- package/lib/esm/PlanarClipMask.js.map +1 -1
- package/lib/esm/QPoint.js.map +1 -1
- package/lib/esm/RealityDataAccessProps.js.map +1 -1
- package/lib/esm/RealityModelDisplaySettings.js +4 -4
- package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
- package/lib/esm/Render.js.map +1 -1
- package/lib/esm/RenderMaterial.js +3 -3
- package/lib/esm/RenderMaterial.js.map +1 -1
- package/lib/esm/RenderTexture.js.map +1 -1
- package/lib/esm/RgbColor.js.map +1 -1
- package/lib/esm/RpcInterface.js.map +1 -1
- package/lib/esm/RpcManager.js.map +1 -1
- package/lib/esm/SessionProps.js.map +1 -1
- package/lib/esm/SkyBox.js +4 -4
- package/lib/esm/SkyBox.js.map +1 -1
- package/lib/esm/SolarCalculate.js.map +1 -1
- package/lib/esm/SolarShadows.js +1 -1
- package/lib/esm/SolarShadows.js.map +1 -1
- package/lib/esm/SpatialClassification.js.map +1 -1
- package/lib/esm/SubCategoryAppearance.js +1 -1
- package/lib/esm/SubCategoryAppearance.js.map +1 -1
- package/lib/esm/SubCategoryOverride.js +2 -2
- package/lib/esm/SubCategoryOverride.js.map +1 -1
- package/lib/esm/TerrainSettings.js.map +1 -1
- package/lib/esm/TextureMapping.js +2 -2
- package/lib/esm/TextureMapping.js.map +1 -1
- package/lib/esm/TextureProps.js.map +1 -1
- package/lib/esm/ThematicDisplay.js +2 -2
- package/lib/esm/ThematicDisplay.js.map +1 -1
- package/lib/esm/Thumbnail.js.map +1 -1
- package/lib/esm/TileProps.js.map +1 -1
- package/lib/esm/Tween.js.map +1 -1
- package/lib/esm/TxnAction.js.map +1 -1
- package/lib/esm/ViewDetails.js +2 -2
- package/lib/esm/ViewDetails.js.map +1 -1
- package/lib/esm/ViewFlags.js +2 -2
- package/lib/esm/ViewFlags.js.map +1 -1
- package/lib/esm/ViewProps.js.map +1 -1
- package/lib/esm/WhiteOnWhiteReversalSettings.js +2 -2
- package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/esm/annotation/TextAnnotation.js.map +1 -1
- package/lib/esm/annotation/TextBlock.js.map +1 -1
- package/lib/esm/annotation/TextBlockGeometryProps.js.map +1 -1
- package/lib/esm/annotation/TextBlockLayoutResult.js.map +1 -1
- package/lib/esm/annotation/TextStyle.js +19 -19
- package/lib/esm/annotation/TextStyle.js.map +1 -1
- package/lib/esm/core-common.js.map +1 -1
- package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
- package/lib/esm/domains/GenericElementProps.js.map +1 -1
- package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
- package/lib/esm/geometry/AreaPattern.js.map +1 -1
- package/lib/esm/geometry/BoundingSphere.js.map +1 -1
- package/lib/esm/geometry/Cartographic.js +13 -13
- package/lib/esm/geometry/Cartographic.js.map +1 -1
- package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/esm/geometry/ElementGeometry.js.map +1 -1
- package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
- package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
- package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
- package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/esm/geometry/GeometryStream.js.map +1 -1
- package/lib/esm/geometry/ImageGraphic.js.map +1 -1
- package/lib/esm/geometry/LineStyle.js.map +1 -1
- package/lib/esm/geometry/Placement.js.map +1 -1
- package/lib/esm/geometry/Projection.js.map +1 -1
- package/lib/esm/geometry/TextString.js.map +1 -1
- package/lib/esm/internal/Snapping.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/ipc/IpcSession.js.map +1 -1
- package/lib/esm/ipc/IpcSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocket.js +1 -1
- package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.js +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/esm/rpc/DevToolsRpcInterface.js +6 -6
- package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js +4 -4
- package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.js +4 -4
- package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/esm/rpc/SnapshotIModelRpcInterface.js +4 -4
- package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/esm/rpc/TestRpcManager.js.map +1 -1
- package/lib/esm/rpc/core/RpcConfiguration.js +32 -34
- package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
- package/lib/esm/rpc/core/RpcControl.js +8 -15
- package/lib/esm/rpc/core/RpcControl.js.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.js +3 -5
- package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/esm/rpc/core/RpcOperation.js +2 -2
- package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
- package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/esm/rpc/core/RpcProtocol.js +4 -4
- package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/esm/rpc/core/RpcPush.js +5 -5
- package/lib/esm/rpc/core/RpcPush.js.map +1 -1
- package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.js +5 -5
- package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
- package/lib/esm/rpc/core/RpcRoutingToken.js +2 -2
- package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/esm/rpc/core/RpcSessionInvocation.js +1 -1
- package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcManager.js +6 -6
- package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
- package/lib/esm/rpc/web/RpcMultipart.js +12 -12
- package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.js +17 -19
- package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/esm/tile/B3dmTileIO.js.map +1 -1
- package/lib/esm/tile/CompositeTileIO.js.map +1 -1
- package/lib/esm/tile/ElementGraphics.js.map +1 -1
- package/lib/esm/tile/GltfTileIO.js.map +1 -1
- package/lib/esm/tile/I3dmTileIO.js.map +1 -1
- package/lib/esm/tile/IModelTileIO.js +1 -1
- package/lib/esm/tile/IModelTileIO.js.map +1 -1
- package/lib/esm/tile/PntsTileIO.js.map +1 -1
- package/lib/esm/tile/TileIO.js.map +1 -1
- package/lib/esm/tile/TileMetadata.js.map +1 -1
- package/lib/esm/tile/Tileset3dSchema.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubCategoryAppearance.js","sourceRoot":"","sources":["../../src/SubCategoryAppearance.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Symbology\n */\n\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\nimport { ColorDef, ColorDefProps } from \"./ColorDef\";\n\n/** Parameters that define the way geometry on a [[SubCategory]] appears.\n * SubCategoryAppearance describes the intrinsic appearance of geometry belonging to that SubCategory, independent of a particular [[ViewState]].\n * Aspects of a SubCategory's appearance can be overridden in the context of a particular [[ViewState]] through the use of [[SubCategoryOverride]]s.\n * @public\n */\nexport class SubCategoryAppearance {\n /** The color of the geometry.\n * @note The transparency component of the color is ignored.\n * @see [[SubCategoryAppearance.transparency]].\n */\n public readonly color: ColorDef;\n /** The line width, in pixels.\n * @note The renderer will clamp values to the integer range [1, 32].\n */\n public readonly weight: number;\n /** The display priority used to control which geometry draws in front of other geometry within a 2D view.\n * The priority is a number in the range [-8388576,8388576].\n * Where two pieces of geometry overlap, the one with the larger priority value draws on top of the one with the smaller priority.\n * If they have equal priorities, the order in which they draw is undefined, and z-fighting may result.\n * @note This property has no effect in 3D views unless [[PlanProjectionSettings]] are in effect.\n */\n public readonly priority: number;\n /** A value in the range [0, 1] indicating the transparency of the geometry where 0.0 means \"fully opaque\" and 1.0 means \"fully transparent\". */\n public readonly transparency: number;\n /** If true, geometry belonging to this SubCategory is not drawn. */\n public readonly invisible: boolean;\n /** @internal */\n public readonly dontPlot: boolean;\n /** @internal */\n public readonly dontSnap: boolean;\n /** @internal */\n public readonly dontLocate: boolean;\n /** The element ID of the line style used to draw curves, or an invalid ID if no line style is specified. */\n public readonly styleId: Id64String;\n /** The element ID of the material applied to surfaces, or an invalid ID if no material is specified. */\n public readonly materialId: Id64String;\n /** @internal */\n protected readonly _fillColor?: ColorDef;\n /** @internal */\n protected readonly _fillTransparency?: number;\n\n /** The fill color of geometry marked as being filled.\n * @note The transparency component of the fill color is ignored.\n * @see [[SubCategoryAppearance.fillTransparency]].\n */\n public get fillColor(): ColorDef { return (undefined !== this._fillColor ? this._fillColor : this.color); }\n /** A value in the range [0, 1] indicating the fill transparency of the geometry where 0.0 means \"fully opaque\" and 1.0 means \"fully transparent\". */\n public get fillTransparency(): number { return (undefined !== this._fillTransparency ? this._fillTransparency : this.transparency); }\n\n constructor(props?: SubCategoryAppearance.Props) {\n if (!props) {\n this.color = ColorDef.black;\n this.weight = 0;\n this.priority = 0;\n this.transparency = 0;\n this.invisible = this.dontPlot = this.dontSnap = this.dontLocate = false;\n this.styleId = Id64.invalid;\n this.materialId = Id64.invalid;\n return;\n }\n\n this.invisible = JsonUtils.asBool(props.invisible);\n this.dontSnap = JsonUtils.asBool(props.dontSnap);\n this.dontLocate = JsonUtils.asBool(props.dontLocate);\n this.dontPlot = JsonUtils.asBool(props.dontPlot);\n this.color = ColorDef.fromJSON(props.color);\n this.weight = JsonUtils.asInt(props.weight);\n this.styleId = Id64.fromJSON(props.style);\n this.priority = JsonUtils.asInt(props.priority);\n this.materialId = Id64.fromJSON(props.material);\n this.transparency = JsonUtils.asDouble(props.transp);\n if (props.fill)\n this._fillColor = ColorDef.fromJSON(props.fill);\n if (props.transpFill)\n this._fillTransparency = JsonUtils.asDouble(props.transpFill);\n }\n\n public equals(other: SubCategoryAppearance): boolean {\n return this.invisible === other.invisible &&\n this.dontPlot === other.dontPlot &&\n this.dontSnap === other.dontSnap &&\n this.dontLocate === other.dontLocate &&\n this.color.equals(other.color) &&\n this.weight === other.weight &&\n this.priority === other.priority &&\n this.styleId === other.styleId &&\n this.materialId === other.materialId &&\n this.transparency === other.transparency &&\n this.fillColor.equals(other.fillColor) &&\n this.fillTransparency === other.fillTransparency;\n }\n\n /** @internal */\n public toJSON(): SubCategoryAppearance.Props {\n const val: SubCategoryAppearance.Props = { color: this.color.toJSON() };\n if (this.invisible)\n val.invisible = true;\n\n if (this.dontPlot)\n val.dontPlot = true;\n\n if (this.dontSnap)\n val.dontSnap = true;\n\n if (this.dontLocate)\n val.dontLocate = true;\n\n if (0 !== this.weight)\n val.weight = this.weight;\n\n if (0 !== this.priority)\n val.priority = this.priority;\n\n if (Id64.isValid(this.styleId))\n val.style = this.styleId;\n\n if (Id64.isValid(this.materialId))\n val.material = this.materialId;\n\n if (0.0 !== this.transparency)\n val.transp = this.transparency;\n\n if (this._fillColor)\n val.fill = this._fillColor.toJSON();\n\n if (this._fillTransparency)\n val.transpFill = this._fillTransparency;\n\n return val;\n }\n\n public clone(): SubCategoryAppearance { return new SubCategoryAppearance(this.toJSON()); }\n\n public static defaults = new SubCategoryAppearance();\n}\n\n/** @public */\nexport namespace SubCategoryAppearance {\n /** Properties used to create a SubCategoryAppearance\n * See [[SubCategoryAppearance]]\n */\n export interface Props {\n /** See [[SubCategoryAppearance.color]]. Defaults to black. */\n color?: ColorDefProps;\n /** See [[SubCategoryAppearance.fillColor]]. Defaults to [[SubCategoryAppearance.color]]. */\n fill?: ColorDefProps;\n /** See [[SubCategoryAppearance.invisible]]. Defaults to false. */\n invisible?: boolean;\n /** @internal */\n dontPlot?: boolean;\n /** @internal */\n dontSnap?: boolean;\n /** @internal */\n dontLocate?: boolean;\n /** See [[SubCategoryAppearance.weight]]. Defaults to 0. */\n weight?: number;\n /** See [[SubCategoryAppearance.styleId]]. Defaults to an invalid ID indicating \"no line style\". */\n style?: Id64String;\n /** See [[SubCategoryAppearance.priority]]. Defaults to 0. */\n priority?: number;\n /** See [[SubCategoryAppearance.materialId]]. Defaults to an invalid ID indicating \"no material\". */\n material?: Id64String;\n /** See [[SubCategoryAppearance.transparency]]. Defaults to 0. */\n transp?: number;\n /** See [[SubCategoryAppearance.fillTransparency]]. Defaults to [[SubCategoryAppearance.transparency]]. */\n transpFill?: number;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SubCategoryAppearance.js","sourceRoot":"","sources":["../../src/SubCategoryAppearance.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 Symbology\r\n */\r\n\r\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { ColorDef, ColorDefProps } from \"./ColorDef\";\r\n\r\n/** Parameters that define the way geometry on a [[SubCategory]] appears.\r\n * SubCategoryAppearance describes the intrinsic appearance of geometry belonging to that SubCategory, independent of a particular [[ViewState]].\r\n * Aspects of a SubCategory's appearance can be overridden in the context of a particular [[ViewState]] through the use of [[SubCategoryOverride]]s.\r\n * @public\r\n */\r\nexport class SubCategoryAppearance {\r\n /** The color of the geometry.\r\n * @note The transparency component of the color is ignored.\r\n * @see [[SubCategoryAppearance.transparency]].\r\n */\r\n public readonly color: ColorDef;\r\n /** The line width, in pixels.\r\n * @note The renderer will clamp values to the integer range [1, 32].\r\n */\r\n public readonly weight: number;\r\n /** The display priority used to control which geometry draws in front of other geometry within a 2D view.\r\n * The priority is a number in the range [-8388576,8388576].\r\n * Where two pieces of geometry overlap, the one with the larger priority value draws on top of the one with the smaller priority.\r\n * If they have equal priorities, the order in which they draw is undefined, and z-fighting may result.\r\n * @note This property has no effect in 3D views unless [[PlanProjectionSettings]] are in effect.\r\n */\r\n public readonly priority: number;\r\n /** A value in the range [0, 1] indicating the transparency of the geometry where 0.0 means \"fully opaque\" and 1.0 means \"fully transparent\". */\r\n public readonly transparency: number;\r\n /** If true, geometry belonging to this SubCategory is not drawn. */\r\n public readonly invisible: boolean;\r\n /** @internal */\r\n public readonly dontPlot: boolean;\r\n /** @internal */\r\n public readonly dontSnap: boolean;\r\n /** @internal */\r\n public readonly dontLocate: boolean;\r\n /** The element ID of the line style used to draw curves, or an invalid ID if no line style is specified. */\r\n public readonly styleId: Id64String;\r\n /** The element ID of the material applied to surfaces, or an invalid ID if no material is specified. */\r\n public readonly materialId: Id64String;\r\n /** @internal */\r\n protected readonly _fillColor?: ColorDef;\r\n /** @internal */\r\n protected readonly _fillTransparency?: number;\r\n\r\n /** The fill color of geometry marked as being filled.\r\n * @note The transparency component of the fill color is ignored.\r\n * @see [[SubCategoryAppearance.fillTransparency]].\r\n */\r\n public get fillColor(): ColorDef { return (undefined !== this._fillColor ? this._fillColor : this.color); }\r\n /** A value in the range [0, 1] indicating the fill transparency of the geometry where 0.0 means \"fully opaque\" and 1.0 means \"fully transparent\". */\r\n public get fillTransparency(): number { return (undefined !== this._fillTransparency ? this._fillTransparency : this.transparency); }\r\n\r\n constructor(props?: SubCategoryAppearance.Props) {\r\n if (!props) {\r\n this.color = ColorDef.black;\r\n this.weight = 0;\r\n this.priority = 0;\r\n this.transparency = 0;\r\n this.invisible = this.dontPlot = this.dontSnap = this.dontLocate = false;\r\n this.styleId = Id64.invalid;\r\n this.materialId = Id64.invalid;\r\n return;\r\n }\r\n\r\n this.invisible = JsonUtils.asBool(props.invisible);\r\n this.dontSnap = JsonUtils.asBool(props.dontSnap);\r\n this.dontLocate = JsonUtils.asBool(props.dontLocate);\r\n this.dontPlot = JsonUtils.asBool(props.dontPlot);\r\n this.color = ColorDef.fromJSON(props.color);\r\n this.weight = JsonUtils.asInt(props.weight);\r\n this.styleId = Id64.fromJSON(props.style);\r\n this.priority = JsonUtils.asInt(props.priority);\r\n this.materialId = Id64.fromJSON(props.material);\r\n this.transparency = JsonUtils.asDouble(props.transp);\r\n if (props.fill)\r\n this._fillColor = ColorDef.fromJSON(props.fill);\r\n if (props.transpFill)\r\n this._fillTransparency = JsonUtils.asDouble(props.transpFill);\r\n }\r\n\r\n public equals(other: SubCategoryAppearance): boolean {\r\n return this.invisible === other.invisible &&\r\n this.dontPlot === other.dontPlot &&\r\n this.dontSnap === other.dontSnap &&\r\n this.dontLocate === other.dontLocate &&\r\n this.color.equals(other.color) &&\r\n this.weight === other.weight &&\r\n this.priority === other.priority &&\r\n this.styleId === other.styleId &&\r\n this.materialId === other.materialId &&\r\n this.transparency === other.transparency &&\r\n this.fillColor.equals(other.fillColor) &&\r\n this.fillTransparency === other.fillTransparency;\r\n }\r\n\r\n /** @internal */\r\n public toJSON(): SubCategoryAppearance.Props {\r\n const val: SubCategoryAppearance.Props = { color: this.color.toJSON() };\r\n if (this.invisible)\r\n val.invisible = true;\r\n\r\n if (this.dontPlot)\r\n val.dontPlot = true;\r\n\r\n if (this.dontSnap)\r\n val.dontSnap = true;\r\n\r\n if (this.dontLocate)\r\n val.dontLocate = true;\r\n\r\n if (0 !== this.weight)\r\n val.weight = this.weight;\r\n\r\n if (0 !== this.priority)\r\n val.priority = this.priority;\r\n\r\n if (Id64.isValid(this.styleId))\r\n val.style = this.styleId;\r\n\r\n if (Id64.isValid(this.materialId))\r\n val.material = this.materialId;\r\n\r\n if (0.0 !== this.transparency)\r\n val.transp = this.transparency;\r\n\r\n if (this._fillColor)\r\n val.fill = this._fillColor.toJSON();\r\n\r\n if (this._fillTransparency)\r\n val.transpFill = this._fillTransparency;\r\n\r\n return val;\r\n }\r\n\r\n public clone(): SubCategoryAppearance { return new SubCategoryAppearance(this.toJSON()); }\r\n\r\n public static defaults = new SubCategoryAppearance();\r\n}\r\n\r\n/** @public */\r\nexport namespace SubCategoryAppearance {\r\n /** Properties used to create a SubCategoryAppearance\r\n * See [[SubCategoryAppearance]]\r\n */\r\n export interface Props {\r\n /** See [[SubCategoryAppearance.color]]. Defaults to black. */\r\n color?: ColorDefProps;\r\n /** See [[SubCategoryAppearance.fillColor]]. Defaults to [[SubCategoryAppearance.color]]. */\r\n fill?: ColorDefProps;\r\n /** See [[SubCategoryAppearance.invisible]]. Defaults to false. */\r\n invisible?: boolean;\r\n /** @internal */\r\n dontPlot?: boolean;\r\n /** @internal */\r\n dontSnap?: boolean;\r\n /** @internal */\r\n dontLocate?: boolean;\r\n /** See [[SubCategoryAppearance.weight]]. Defaults to 0. */\r\n weight?: number;\r\n /** See [[SubCategoryAppearance.styleId]]. Defaults to an invalid ID indicating \"no line style\". */\r\n style?: Id64String;\r\n /** See [[SubCategoryAppearance.priority]]. Defaults to 0. */\r\n priority?: number;\r\n /** See [[SubCategoryAppearance.materialId]]. Defaults to an invalid ID indicating \"no material\". */\r\n material?: Id64String;\r\n /** See [[SubCategoryAppearance.transparency]]. Defaults to 0. */\r\n transp?: number;\r\n /** See [[SubCategoryAppearance.fillTransparency]]. Defaults to [[SubCategoryAppearance.transparency]]. */\r\n transpFill?: number;\r\n }\r\n}\r\n"]}
|
|
@@ -95,7 +95,7 @@ export class SubCategoryOverride {
|
|
|
95
95
|
if (undefined !== props.transp)
|
|
96
96
|
this.transparency = JsonUtils.asDouble(props.transp);
|
|
97
97
|
}
|
|
98
|
+
/** A default SubCategoryOverride which overrides nothing. */
|
|
99
|
+
static { this.defaults = new SubCategoryOverride({}); }
|
|
98
100
|
}
|
|
99
|
-
/** A default SubCategoryOverride which overrides nothing. */
|
|
100
|
-
SubCategoryOverride.defaults = new SubCategoryOverride({});
|
|
101
101
|
//# sourceMappingURL=SubCategoryOverride.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubCategoryOverride.js","sourceRoot":"","sources":["../../src/SubCategoryOverride.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAc,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAmB;IAgB9B,yGAAyG;IACzG,IAAW,aAAa;QACtB,OAAO,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC;IAC5N,CAAC;IAED,8GAA8G;IACvG,QAAQ,CAAC,UAAiC;QAC/C,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB,OAAO,UAAU,CAAC;QAEpB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,SAAS,KAAK,QAAQ,CAAC,SAAS;YAClC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACvC,IAAI,SAAS,KAAK,QAAQ,CAAC,MAAM;YAC/B,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACjC,IAAI,SAAS,KAAK,QAAQ,CAAC,KAAK;YAC9B,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC/B,IAAI,SAAS,KAAK,QAAQ,CAAC,QAAQ;YACjC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,QAAQ,CAAC,QAAQ;YACjC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,QAAQ,CAAC,MAAM;YAC/B,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACjC,IAAI,SAAS,KAAK,QAAQ,CAAC,KAAK;YAC9B,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAE/B,OAAO,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,MAAM;QACX,MAAM,KAAK,GAAgC,EAAE,CAAC;QAC9C,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS;YAC9B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEnC,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM;YAC3B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE7B,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK;YAC1B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3B,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEjC,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEjC,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY;YACjC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;QAEnC,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK;YAC1B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uEAAuE;IAChE,MAAM,CAAC,KAA0B;QACtC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;eAC/F,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;YACnH,OAAO,KAAK,CAAC;QAEf,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK;YACvD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;;YAE5C,OAAO,SAAS,KAAK,IAAI,CAAC,KAAK,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,CAAC;IACjE,CAAC;IAED,0DAA0D;IACnD,MAAM,CAAC,QAAQ,CAAC,IAAkC;QACvD,OAAO,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5E,CAAC;IAED,YAAoB,KAAkC;QACpD,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS;YAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK;YAC3B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM;YAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,SAAS,KAAK,KAAK,CAAC,QAAQ;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,KAAK,CAAC,QAAQ;YAC9B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,SAAS,KAAK,KAAK,CAAC,MAAM;YAC5B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC
|
|
1
|
+
{"version":3,"file":"SubCategoryOverride.js","sourceRoot":"","sources":["../../src/SubCategoryOverride.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 DisplayStyles\r\n */\r\n\r\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { ColorDef } from \"./ColorDef\";\r\nimport { SubCategoryAppearance } from \"./SubCategoryAppearance\";\r\n\r\n/** Overrides selected aspects of a [[SubCategoryAppearance]] in the context of a [[DisplayStyleState]].\r\n * When determining how geometry belonging to a [[SubCategory]] will appear when drawn within a view:\r\n * 1. The base [[SubCategoryAppearance]] associated with that subcategory is obtained.\r\n * 2. The [[SubCategoryOverride]] associated with that subcategory in the [[DisplayStyleState]] is obtained.\r\n * 3. Any aspects of the appearance overridden by the SubCategoryOverride are replaced with the values from the SubCategoryOverride.\r\n * An aspect is overridden by virtue of not being set to \"undefined\" in the SubCategoryOverride.\r\n * @see [[DisplayStyleState.overrideSubCategory]]\r\n * @public\r\n */\r\nexport class SubCategoryOverride {\r\n /** See [[SubCategoryAppearance.color]] */\r\n public readonly color?: ColorDef;\r\n /** See [[SubCategoryAppearance.invisible]] */\r\n public readonly invisible?: boolean;\r\n /** See [[SubCategoryAppearance.weight]] */\r\n public readonly weight?: number;\r\n /** @internal Overriding with arbitrary custom line style is not supported - overriding with LinePixels enum could be. */\r\n public readonly style?: Id64String;\r\n /** See [[SubCategoryAppearance.priority]] */\r\n public readonly priority?: number;\r\n /** See [[SubCategoryAppearance.materialId]] */\r\n public readonly material?: Id64String;\r\n /** See [[SubCategoryAppearance.transparency]] */\r\n public readonly transparency?: number;\r\n\r\n /** Returns true if any aspect of the appearance is overridden (i.e., if any member is not undefined). */\r\n public get anyOverridden(): boolean {\r\n return undefined !== this.invisible || undefined !== this.color || undefined !== this.weight || undefined !== this.style || undefined !== this.priority || undefined !== this.material || undefined !== this.transparency;\r\n }\r\n\r\n /** Returns a SubCategoryAppearance overridden to match the properties defined by this SubCategoryOverride. */\r\n public override(appearance: SubCategoryAppearance): SubCategoryAppearance {\r\n if (!this.anyOverridden)\r\n return appearance;\r\n\r\n const props = appearance.toJSON();\r\n const ovrProps = this.toJSON();\r\n if (undefined !== ovrProps.invisible)\r\n props.invisible = ovrProps.invisible;\r\n if (undefined !== ovrProps.weight)\r\n props.weight = ovrProps.weight;\r\n if (undefined !== ovrProps.style)\r\n props.style = ovrProps.style;\r\n if (undefined !== ovrProps.material)\r\n props.material = ovrProps.material;\r\n if (undefined !== ovrProps.priority)\r\n props.priority = ovrProps.priority;\r\n if (undefined !== ovrProps.transp)\r\n props.transp = ovrProps.transp;\r\n if (undefined !== ovrProps.color)\r\n props.color = ovrProps.color;\r\n\r\n return new SubCategoryAppearance(props);\r\n }\r\n\r\n /** Convert this SubCategoryOverride to a JSON object\r\n * @internal\r\n */\r\n public toJSON(): SubCategoryAppearance.Props {\r\n const props: SubCategoryAppearance.Props = {};\r\n if (undefined !== this.invisible)\r\n props.invisible = this.invisible;\r\n\r\n if (undefined !== this.weight)\r\n props.weight = this.weight;\r\n\r\n if (undefined !== this.style)\r\n props.style = this.style;\r\n\r\n if (undefined !== this.material)\r\n props.material = this.material;\r\n\r\n if (undefined !== this.priority)\r\n props.priority = this.priority;\r\n\r\n if (undefined !== this.transparency)\r\n props.transp = this.transparency;\r\n\r\n if (undefined !== this.color)\r\n props.color = this.color.toJSON();\r\n\r\n return props;\r\n }\r\n\r\n /** Perform equality comparison against another SubCategoryOverride. */\r\n public equals(other: SubCategoryOverride): boolean {\r\n if (this.invisible !== other.invisible || this.weight !== other.weight || this.style !== other.style\r\n || this.priority !== other.priority || this.material !== other.material || this.transparency !== other.transparency)\r\n return false;\r\n\r\n if (undefined !== this.color && undefined !== other.color)\r\n return this.color.tbgr === other.color.tbgr;\r\n else\r\n return undefined === this.color && undefined === other.color;\r\n }\r\n\r\n /** Create a new SubCategoryOverride from a JSON object */\r\n public static fromJSON(json?: SubCategoryAppearance.Props): SubCategoryOverride {\r\n return undefined !== json ? new SubCategoryOverride(json) : this.defaults;\r\n }\r\n\r\n private constructor(props: SubCategoryAppearance.Props) {\r\n if (undefined !== props.invisible)\r\n this.invisible = JsonUtils.asBool(props.invisible);\r\n if (undefined !== props.color)\r\n this.color = ColorDef.fromJSON(props.color);\r\n if (undefined !== props.weight)\r\n this.weight = JsonUtils.asInt(props.weight);\r\n if (undefined !== props.style)\r\n this.style = Id64.fromJSON(props.style);\r\n if (undefined !== props.material)\r\n this.material = Id64.fromJSON(props.material);\r\n if (undefined !== props.priority)\r\n this.priority = JsonUtils.asInt(props.priority);\r\n if (undefined !== props.transp)\r\n this.transparency = JsonUtils.asDouble(props.transp);\r\n }\r\n\r\n /** A default SubCategoryOverride which overrides nothing. */\r\n public static defaults = new SubCategoryOverride({});\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerrainSettings.js","sourceRoot":"","sources":["../../src/TerrainSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module DisplayStyles\n */\n\nimport { BackgroundMapProps } from \"./BackgroundMapSettings\";\n\n/** Identifies a [TerrainProvider]($frontend).\n * @see [[TerrainSettings.providerName]] and [[TerrainProps.providerName]].\n * @public\n * @extensions\n * @deprecated in 3.x. Use string instead.\n */\nexport type TerrainProviderName = string;\n\n/** Ids of [Cesium ION assets](https://cesium.com/platform/cesium-ion/content/) providing global terrain data.\n * These values are appropriate to use with [[TerrainSettings.dataSource]] when [[TerrainSettings.providerName]] is set to \"CesiumWorldTerrain\".\n * You may alternatively use the Id of any ION asset to which you have access.\n * @see [[TerrainSettings.fromCesiumIonAsset]] to create TerrainSettings that obtain terrain from a specified ION asset.\n * @public\n */\nexport enum CesiumTerrainAssetId {\n /** Default [global 3d terrain](https://cesium.com/platform/cesium-ion/content/cesium-world-terrain/). */\n Default = \"1\",\n /** Global 3d terrain that includes [bathymetry](https://cesium.com/platform/cesium-ion/content/cesium-world-bathymetry/) (seafloor) terrain. */\n Bathymetry = \"2426648\",\n}\n\n/** JSON representation of the settings of the terrain applied to background map display by a [[DisplayStyle]].\n * @see [[DisplayStyleSettingsProps]]\n * @see [[BackgroundMapProps]]\n * @public\n * @extensions\n */\nexport interface TerrainProps {\n /** Identifies the [TerrainProvider]($frontend) that will supply terrain meshes.\n * If omitted, it defaults to \"CesiumWorldTerrain\".\n */\n providerName?: string;\n /** Identifies the specific terrain data source to be supplied by the [TerrainProvider]($frontend) identified by [[providerName]],\n * for those providers that support multiple data sources.\n * For example, the \"CesiumWorldTerrain\" provider uses this field to store a [[CesiumTerrainAssetId]].\n * Default value: an empty string.\n */\n dataSource?: string;\n /** A value greater than one will cause terrain height to be exaggerated/scaled.false (or 1.0) indicate no exaggeration. Default value: 1.0 */\n exaggeration?: number;\n /** Applying lighting can help to visualize subtle terrain variation. Default value: true */\n applyLighting?: boolean;\n /** Origin value - height of the IModel origin at the project center as defined by heightOriginMode. Default value: 0.0 */\n heightOrigin?: number;\n /** Determines how/if the heightOrigin is applied to the terrain height. Default value: Geodetic */\n heightOriginMode?: TerrainHeightOriginMode;\n /** If true, the terrain will not be locatable. Otherwise, [[BackgroundMapProps.nonLocatable]] will determine whether terrain is locatable.\n * @internal use [[BackgroundMapProps.nonLocatable]]. Retained for backwards compatibility only.\n */\n nonLocatable?: boolean;\n}\n\n/** Correction modes for terrain height\n * @see [[TerrainProps]]\n * @public\n * @extensions\n */\nexport enum TerrainHeightOriginMode {\n /** Height value indicates the geodetic height of the IModel origin (also referred to as ellipsoidal or GPS height) */\n Geodetic = 0,\n /** Height value indicates the geoidal height of the IModel origin (commonly referred to as sea level). */\n Geoid = 1,\n /** Height value indicates the height of the IModel origin relative to ground level at project center. */\n Ground = 2,\n}\n\n/** Normalized version of [[TerrainProps]] for which provider has been validated and default values of all members are used.\n * @public\n */\nexport class TerrainSettings {\n private _nonLocatable: true | undefined;\n /** Identifies the [TerrainProvider]($frontend) that will supply terrain meshes.\n * Defaults to \"CesiumWorldTerrain\".\n */\n public readonly providerName: string;\n /** Identifies the specific terrain data source to be supplied by the [TerrainProvider]($frontend) identified by [[providerName]],\n * for those providers that support multiple data sources.\n * For example, the \"CesiumWorldTerrain\" provider uses this field to store a [[CesiumTerrainAssetId]].\n * Default value: an empty string.\n */\n public readonly dataSource: string;\n /** A value greater than one will cause terrain height to be exaggerated/scaled. 1.0 indicates no exaggeration. Default value: 1.0 */\n public readonly exaggeration: number;\n /** Applying lighting can help to visualize subtle terrain variations. Default value: false */\n public readonly applyLighting: boolean;\n /** Origin value - height of the IModel origin at the project center as defined by heightOriginMode. Default value 0.0 */\n public readonly heightOrigin: number;\n /** Determines how/if the heightOrigin is applied to the terrain height. Default value: Geodetic */\n public readonly heightOriginMode: TerrainHeightOriginMode;\n /** Optionally overrides [[BackgroundMapSettings.locatable]]. For backwards compatibility only.\n * @see [[TerrainProps.nonLocatable]].\n * @internal\n */\n public get nonLocatable(): true | undefined {\n return this._nonLocatable;\n }\n\n /** @deprecated in 4.5.x. Use the overload that takes [[TerrainProps]]. */\n constructor(providerName?: string, exaggeration?: number, applyLighting?: boolean, heightOrigin?: number, heightOriginMode?: TerrainHeightOriginMode);\n\n constructor(props?: TerrainProps);\n\n /** @internal */\n constructor(providerNameOrProps: string | TerrainProps | undefined, exaggeration?: number, applyLighting?: boolean, heightOrigin?: number, heightOriginMode?: TerrainHeightOriginMode) {\n let providerName;\n let dataSource;\n let nonLocatable;\n if (typeof providerNameOrProps === \"string\") {\n providerName = providerNameOrProps;\n } else if (providerNameOrProps) {\n ({ providerName, dataSource, exaggeration, applyLighting, heightOrigin, heightOriginMode, nonLocatable } = providerNameOrProps);\n }\n\n this.providerName = providerName ?? \"CesiumWorldTerrain\";\n this.dataSource = dataSource ?? \"\";\n this.exaggeration = Math.min(100, Math.max(0.1, exaggeration ?? 1.0));\n this.applyLighting = applyLighting ?? false;\n this.heightOrigin = heightOrigin ?? 0.0;\n\n if (true === nonLocatable)\n this._nonLocatable = true;\n\n switch (heightOriginMode) {\n case TerrainHeightOriginMode.Ground:\n case TerrainHeightOriginMode.Geoid:\n this.heightOriginMode = heightOriginMode;\n break;\n default:\n this.heightOriginMode = TerrainHeightOriginMode.Geodetic;\n break;\n }\n }\n\n public static fromJSON(json?: TerrainProps) {\n return new TerrainSettings(json);\n }\n\n /** Create settings that obtain terrain from a [Cesium ION asset](https://cesium.com/platform/cesium-ion/content/) such as\n * one of those defined by [[CesiumTerrainAssetId]].\n * @note You must ensure your Cesium ION account has access to the specified asset.\n */\n public static fromCesiumIonAsset(assetId: string = CesiumTerrainAssetId.Default, options?: Omit<TerrainProps, \"providerName\" | \"dataSource\">): TerrainSettings {\n return TerrainSettings.fromJSON({\n ...options,\n dataSource: assetId,\n });\n }\n\n public toJSON(): TerrainProps {\n const props: TerrainProps = { heightOriginMode: this.heightOriginMode };\n if (\"CesiumWorldTerrain\" !== this.providerName)\n props.providerName = this.providerName;\n if (this.dataSource)\n props.dataSource = this.dataSource;\n if (1 !== this.exaggeration)\n props.exaggeration = this.exaggeration;\n if (this.nonLocatable)\n props.nonLocatable = true;\n if (this.applyLighting)\n props.applyLighting = true;\n if (0 !== this.heightOrigin)\n props.heightOrigin = this.heightOrigin;\n\n return props;\n }\n\n public equals(other: TerrainSettings): boolean {\n return this.providerName === other.providerName && this.dataSource === other.dataSource && this.exaggeration === other.exaggeration && this.applyLighting === other.applyLighting\n && this.heightOrigin === other.heightOrigin && this.heightOriginMode === other.heightOriginMode && this.nonLocatable === other.nonLocatable;\n }\n\n /** Returns true if these settings are equivalent to the supplied JSON settings. */\n public equalsJSON(json?: BackgroundMapProps): boolean {\n return this.equals(TerrainSettings.fromJSON(json));\n }\n\n /** Create a copy of this TerrainSettings, optionally modifying some of its properties.\n * @param changedProps JSON representation of the properties to change.\n * @returns A TerrainSettings with all of its properties set to match those of`this`, except those explicitly defined in `changedProps`.\n */\n public clone(changedProps?: TerrainProps): TerrainSettings {\n if (undefined === changedProps)\n return this;\n\n const props = {\n providerName: changedProps.providerName ?? this.providerName,\n dataSource: changedProps.dataSource ?? this.dataSource,\n exaggeration: changedProps.exaggeration ?? this.exaggeration,\n nonLocatable: changedProps.nonLocatable ?? this.nonLocatable,\n applyLighting: changedProps.applyLighting ?? this.applyLighting,\n heightOrigin: changedProps.heightOrigin ?? this.heightOrigin,\n heightOriginMode: changedProps.heightOriginMode ?? this.heightOriginMode,\n };\n\n return TerrainSettings.fromJSON(props);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TerrainSettings.js","sourceRoot":"","sources":["../../src/TerrainSettings.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 DisplayStyles\r\n */\r\n\r\nimport { BackgroundMapProps } from \"./BackgroundMapSettings\";\r\n\r\n/** Identifies a [TerrainProvider]($frontend).\r\n * @see [[TerrainSettings.providerName]] and [[TerrainProps.providerName]].\r\n * @public\r\n * @extensions\r\n * @deprecated in 3.x. Use string instead.\r\n */\r\nexport type TerrainProviderName = string;\r\n\r\n/** Ids of [Cesium ION assets](https://cesium.com/platform/cesium-ion/content/) providing global terrain data.\r\n * These values are appropriate to use with [[TerrainSettings.dataSource]] when [[TerrainSettings.providerName]] is set to \"CesiumWorldTerrain\".\r\n * You may alternatively use the Id of any ION asset to which you have access.\r\n * @see [[TerrainSettings.fromCesiumIonAsset]] to create TerrainSettings that obtain terrain from a specified ION asset.\r\n * @public\r\n */\r\nexport enum CesiumTerrainAssetId {\r\n /** Default [global 3d terrain](https://cesium.com/platform/cesium-ion/content/cesium-world-terrain/). */\r\n Default = \"1\",\r\n /** Global 3d terrain that includes [bathymetry](https://cesium.com/platform/cesium-ion/content/cesium-world-bathymetry/) (seafloor) terrain. */\r\n Bathymetry = \"2426648\",\r\n}\r\n\r\n/** JSON representation of the settings of the terrain applied to background map display by a [[DisplayStyle]].\r\n * @see [[DisplayStyleSettingsProps]]\r\n * @see [[BackgroundMapProps]]\r\n * @public\r\n * @extensions\r\n */\r\nexport interface TerrainProps {\r\n /** Identifies the [TerrainProvider]($frontend) that will supply terrain meshes.\r\n * If omitted, it defaults to \"CesiumWorldTerrain\".\r\n */\r\n providerName?: string;\r\n /** Identifies the specific terrain data source to be supplied by the [TerrainProvider]($frontend) identified by [[providerName]],\r\n * for those providers that support multiple data sources.\r\n * For example, the \"CesiumWorldTerrain\" provider uses this field to store a [[CesiumTerrainAssetId]].\r\n * Default value: an empty string.\r\n */\r\n dataSource?: string;\r\n /** A value greater than one will cause terrain height to be exaggerated/scaled.false (or 1.0) indicate no exaggeration. Default value: 1.0 */\r\n exaggeration?: number;\r\n /** Applying lighting can help to visualize subtle terrain variation. Default value: true */\r\n applyLighting?: boolean;\r\n /** Origin value - height of the IModel origin at the project center as defined by heightOriginMode. Default value: 0.0 */\r\n heightOrigin?: number;\r\n /** Determines how/if the heightOrigin is applied to the terrain height. Default value: Geodetic */\r\n heightOriginMode?: TerrainHeightOriginMode;\r\n /** If true, the terrain will not be locatable. Otherwise, [[BackgroundMapProps.nonLocatable]] will determine whether terrain is locatable.\r\n * @internal use [[BackgroundMapProps.nonLocatable]]. Retained for backwards compatibility only.\r\n */\r\n nonLocatable?: boolean;\r\n}\r\n\r\n/** Correction modes for terrain height\r\n * @see [[TerrainProps]]\r\n * @public\r\n * @extensions\r\n */\r\nexport enum TerrainHeightOriginMode {\r\n /** Height value indicates the geodetic height of the IModel origin (also referred to as ellipsoidal or GPS height) */\r\n Geodetic = 0,\r\n /** Height value indicates the geoidal height of the IModel origin (commonly referred to as sea level). */\r\n Geoid = 1,\r\n /** Height value indicates the height of the IModel origin relative to ground level at project center. */\r\n Ground = 2,\r\n}\r\n\r\n/** Normalized version of [[TerrainProps]] for which provider has been validated and default values of all members are used.\r\n * @public\r\n */\r\nexport class TerrainSettings {\r\n private _nonLocatable: true | undefined;\r\n /** Identifies the [TerrainProvider]($frontend) that will supply terrain meshes.\r\n * Defaults to \"CesiumWorldTerrain\".\r\n */\r\n public readonly providerName: string;\r\n /** Identifies the specific terrain data source to be supplied by the [TerrainProvider]($frontend) identified by [[providerName]],\r\n * for those providers that support multiple data sources.\r\n * For example, the \"CesiumWorldTerrain\" provider uses this field to store a [[CesiumTerrainAssetId]].\r\n * Default value: an empty string.\r\n */\r\n public readonly dataSource: string;\r\n /** A value greater than one will cause terrain height to be exaggerated/scaled. 1.0 indicates no exaggeration. Default value: 1.0 */\r\n public readonly exaggeration: number;\r\n /** Applying lighting can help to visualize subtle terrain variations. Default value: false */\r\n public readonly applyLighting: boolean;\r\n /** Origin value - height of the IModel origin at the project center as defined by heightOriginMode. Default value 0.0 */\r\n public readonly heightOrigin: number;\r\n /** Determines how/if the heightOrigin is applied to the terrain height. Default value: Geodetic */\r\n public readonly heightOriginMode: TerrainHeightOriginMode;\r\n /** Optionally overrides [[BackgroundMapSettings.locatable]]. For backwards compatibility only.\r\n * @see [[TerrainProps.nonLocatable]].\r\n * @internal\r\n */\r\n public get nonLocatable(): true | undefined {\r\n return this._nonLocatable;\r\n }\r\n\r\n /** @deprecated in 4.5.x. Use the overload that takes [[TerrainProps]]. */\r\n constructor(providerName?: string, exaggeration?: number, applyLighting?: boolean, heightOrigin?: number, heightOriginMode?: TerrainHeightOriginMode);\r\n\r\n constructor(props?: TerrainProps);\r\n\r\n /** @internal */\r\n constructor(providerNameOrProps: string | TerrainProps | undefined, exaggeration?: number, applyLighting?: boolean, heightOrigin?: number, heightOriginMode?: TerrainHeightOriginMode) {\r\n let providerName;\r\n let dataSource;\r\n let nonLocatable;\r\n if (typeof providerNameOrProps === \"string\") {\r\n providerName = providerNameOrProps;\r\n } else if (providerNameOrProps) {\r\n ({ providerName, dataSource, exaggeration, applyLighting, heightOrigin, heightOriginMode, nonLocatable } = providerNameOrProps);\r\n }\r\n\r\n this.providerName = providerName ?? \"CesiumWorldTerrain\";\r\n this.dataSource = dataSource ?? \"\";\r\n this.exaggeration = Math.min(100, Math.max(0.1, exaggeration ?? 1.0));\r\n this.applyLighting = applyLighting ?? false;\r\n this.heightOrigin = heightOrigin ?? 0.0;\r\n\r\n if (true === nonLocatable)\r\n this._nonLocatable = true;\r\n\r\n switch (heightOriginMode) {\r\n case TerrainHeightOriginMode.Ground:\r\n case TerrainHeightOriginMode.Geoid:\r\n this.heightOriginMode = heightOriginMode;\r\n break;\r\n default:\r\n this.heightOriginMode = TerrainHeightOriginMode.Geodetic;\r\n break;\r\n }\r\n }\r\n\r\n public static fromJSON(json?: TerrainProps) {\r\n return new TerrainSettings(json);\r\n }\r\n\r\n /** Create settings that obtain terrain from a [Cesium ION asset](https://cesium.com/platform/cesium-ion/content/) such as\r\n * one of those defined by [[CesiumTerrainAssetId]].\r\n * @note You must ensure your Cesium ION account has access to the specified asset.\r\n */\r\n public static fromCesiumIonAsset(assetId: string = CesiumTerrainAssetId.Default, options?: Omit<TerrainProps, \"providerName\" | \"dataSource\">): TerrainSettings {\r\n return TerrainSettings.fromJSON({\r\n ...options,\r\n dataSource: assetId,\r\n });\r\n }\r\n\r\n public toJSON(): TerrainProps {\r\n const props: TerrainProps = { heightOriginMode: this.heightOriginMode };\r\n if (\"CesiumWorldTerrain\" !== this.providerName)\r\n props.providerName = this.providerName;\r\n if (this.dataSource)\r\n props.dataSource = this.dataSource;\r\n if (1 !== this.exaggeration)\r\n props.exaggeration = this.exaggeration;\r\n if (this.nonLocatable)\r\n props.nonLocatable = true;\r\n if (this.applyLighting)\r\n props.applyLighting = true;\r\n if (0 !== this.heightOrigin)\r\n props.heightOrigin = this.heightOrigin;\r\n\r\n return props;\r\n }\r\n\r\n public equals(other: TerrainSettings): boolean {\r\n return this.providerName === other.providerName && this.dataSource === other.dataSource && this.exaggeration === other.exaggeration && this.applyLighting === other.applyLighting\r\n && this.heightOrigin === other.heightOrigin && this.heightOriginMode === other.heightOriginMode && this.nonLocatable === other.nonLocatable;\r\n }\r\n\r\n /** Returns true if these settings are equivalent to the supplied JSON settings. */\r\n public equalsJSON(json?: BackgroundMapProps): boolean {\r\n return this.equals(TerrainSettings.fromJSON(json));\r\n }\r\n\r\n /** Create a copy of this TerrainSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A TerrainSettings with all of its properties set to match those of`this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps?: TerrainProps): TerrainSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n const props = {\r\n providerName: changedProps.providerName ?? this.providerName,\r\n dataSource: changedProps.dataSource ?? this.dataSource,\r\n exaggeration: changedProps.exaggeration ?? this.exaggeration,\r\n nonLocatable: changedProps.nonLocatable ?? this.nonLocatable,\r\n applyLighting: changedProps.applyLighting ?? this.applyLighting,\r\n heightOrigin: changedProps.heightOrigin ?? this.heightOrigin,\r\n heightOriginMode: changedProps.heightOriginMode ?? this.heightOriginMode,\r\n };\r\n\r\n return TerrainSettings.fromJSON(props);\r\n }\r\n}\r\n"]}
|
|
@@ -74,6 +74,8 @@ export class TextureMapping {
|
|
|
74
74
|
const matrix = Matrix3d.createRowValues(m00, m01, 0, m10, m11, 0, 0, 0, 1);
|
|
75
75
|
this.transform = Transform.createRefs(origin, matrix);
|
|
76
76
|
}
|
|
77
|
+
/** An immutable 2x3 identity matrix. */
|
|
78
|
+
static { this.identity = new Trans2x3(); }
|
|
77
79
|
/** An [OrderedComparator]($bentley) that compares this Trans2x3 against `other`. */
|
|
78
80
|
compare(other) {
|
|
79
81
|
if (this === other) {
|
|
@@ -92,8 +94,6 @@ export class TextureMapping {
|
|
|
92
94
|
return 0;
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
|
-
/** An immutable 2x3 identity matrix. */
|
|
96
|
-
Trans2x3.identity = new Trans2x3();
|
|
97
97
|
TextureMapping.Trans2x3 = Trans2x3;
|
|
98
98
|
function compareConstantLodParams(lhs, rhs) {
|
|
99
99
|
return compareNumbers(lhs.repetitions, rhs.repetitions) || compareNumbers(lhs.offset.x, rhs.offset.x) || compareNumbers(lhs.offset.y, rhs.offset.y)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureMapping.js","sourceRoot":"","sources":["../../src/TextureMapping.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAA0B,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAmB,SAAS,EAAE,QAAQ,EAAS,MAAM,sBAAsB,CAAC;AAEvI,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,cAAc,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAkBvJ,SAAS,sBAAsB,CAAC,GAAoB,EAAE,GAAoB;IACxE,OAAO,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC;WACpF,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;WACvG,0BAA0B,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IAUzB,YAAmB,EAAiB,EAAE,MAA6B;QACjE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,gBAAgB;IACT,eAAe,CAAC,OAAwB,EAAE,iBAA4B;QAC3E,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAiC,EAAE,iBAAiB,CAAC,CAAC;IAC3F,CAAC;IAED,mFAAmF;IAC5E,OAAO,CAAC,KAAqB;QAClC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;eAC1E,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IACzH,CAAC;CACF;AAED,cAAc;AACd,WAAiB,cAAc;IAC7B,qDAAqD;IACrD,IAAY,IAiBX;IAjBD,WAAY,IAAI;QACd,gCAAS,CAAA;QACT,2CAAc,CAAA;QACd,mDAAkB,CAAA;QAClB,mCAAU,CAAA;QACV,gBAAgB;QAChB,uDAAoB,CAAA;QACpB,gBAAgB;QAChB,iCAAS,CAAA;QACT,gBAAgB;QAChB,yCAAa,CAAA;QACb,gBAAgB;QAChB,6CAAe,CAAA;QACf,gBAAgB;QAChB,iCAAS,CAAA;QACT,sCAAsC;QACtC,+CAAgB,CAAA;IAClB,CAAC,EAjBW,IAAI,GAAJ,mBAAI,KAAJ,mBAAI,QAiBf;IAED,6DAA6D;IAC7D,MAAa,QAAQ;QAInB;;;;;;;;;;;WAWG;QACH,YAAmB,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC;YAC7E,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAKD,oFAAoF;QAC7E,OAAO,CAAC,KAAe;YAC5B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,CAAC;YACX,CAAC;YAED,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1J,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChG,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;oBAClB,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,OAAO,CAAC,CAAC;QACX,CAAC;;IAtBD,wCAAwC;IACjB,iBAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAvBtC,uBAAQ,WA6CpB,CAAA;IA2BD,SAAS,wBAAwB,CAAC,GAAsB,EAAE,GAAsB;QAC9E,OAAO,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;eAC9I,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IAChH,CAAC;IAwBD,oFAAoF;IACpF,MAAa,MAAM;QAgBjB,YAAmB,KAAiC;YAClD,IAAI,CAAC,aAAa,GAAG,KAAK,EAAE,aAAa,IAAI,QAAQ,CAAC,QAAQ,CAAC;YAC/D,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC;YAC9C,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,YAAY,IAAI,KAAK,CAAC;YACjD,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,cAAc,IAAI,KAAK,CAAC;YACrD,IAAI,CAAC,iBAAiB,GAAG;gBACvB,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,IAAI,CAAC;gBACtD,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBACzD,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,IAAI,CAAC;gBACxD,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI;aAC1E,CAAC;QACJ,CAAC;QAED,mFAAmF;QAC5E,OAAO,CAAC,KAAa;YAC1B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,CAAC;YACX,CAAC;YAED,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;mBAC9I,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;mBAC7G,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjF,CAAC;QAED;;;WAGG;QACI,eAAe,CAAC,OAA+B,EAAE,iBAA4B;YAClF,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,QAAQ,CAAE,6CAA6C;gBACvD,KAAK,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACpC,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnG,CAAC;gBACD,KAAK,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBAChC,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;oBAC1C,IAAI,CAAC,aAAa;wBAChB,OAAO,SAAS,CAAC;oBAEnB,kFAAkF;oBAClF,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClJ,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACnG,CAAC;yBAAM,CAAC;wBACN,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;oBAC3E,CAAC;gBACH,CAAC;gBACD,KAAK,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;oBACxC,OAAO,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;gBACtG,CAAC;YACH,CAAC;QACH,CAAC;QAED,yEAAyE;QACjE,yBAAyB,CAAC,OAA+B,EAAE,WAAsB,EAAE,eAAwB;YACjH,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAE7B,IAAI,eAAe,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;oBAClE,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;wBACjD,wGAAwG;wBACxG,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,sHAAsH;QAC9G,qBAAqB,CAAC,OAA+B,EAAE,WAAsB;YACnF,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;YAC7B,IAAI,MAAgB,CAAC;YAErB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAC9B,MAAM,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;;gBAE9J,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAE,CAAC;YAE9D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC3B,OAAO,SAAS,CAAC;YAEnB,wEAAwE;YACxE,wEAAwE;YAExE,sGAAsG;YACtG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAE3B,+BAA+B;YAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAE7D,sEAAsE;YACtE,0EAA0E;YAE1E,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;YACzC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,4DAA4D;YAE9F,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrB,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ;gBACX,OAAO,SAAS,CAAC;YAEnB,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE9E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACxF,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,+HAA+H;QACvH,6BAA6B,CAAC,OAA+B,EAAE,WAAsB,EAAE,iBAA6B;YAC1H,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;gBAE/D,IAAI,iBAAiB,KAAK,SAAS;oBACjC,iBAAiB,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAElD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF;IAtJY,qBAAM,SAsJlB,CAAA;AACH,CAAC,EAjRgB,cAAc,KAAd,cAAc,QAiR9B;AAED,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { IndexedPolyfaceVisitor, Matrix3d, Point2d, Point3d, PolyfaceVisitor, Transform, Vector3d, XAndY } from \"@itwin/core-geometry\";\nimport { RenderTexture } from \"./RenderTexture\";\nimport { compareBooleans, compareBooleansOrUndefined, compareNumbers, compareNumbersOrUndefined, comparePossiblyUndefined } from \"@itwin/core-bentley\";\n\n/** Defines normal map parameters.\n * @beta\n */\nexport interface NormalMapParams {\n /** The texture to use as a normal map. If not present then the pattern map texture will be used as a normal map. */\n normalMap?: RenderTexture;\n /** True if the Y component stored in the green channel should be negated. By default, positive Y points downward, but some\n * normal maps are created with positive Y pointing upward.\n */\n greenUp?: boolean;\n /** Scale factor by which to multiply the components of the normal extracted from [[normalMap]]. */\n scale?: number;\n /** True if want to use constant LOD texture mapping for the normal map texture. */\n useConstantLod?: boolean;\n}\n\nfunction compareNormalMapParams(lhs: NormalMapParams, rhs: NormalMapParams): number {\n return comparePossiblyUndefined((lh, rh) => lh.compare(rh), lhs.normalMap, rhs.normalMap)\n || compareBooleansOrUndefined(lhs.greenUp, rhs.greenUp) || compareNumbersOrUndefined(lhs.scale, rhs.scale)\n || compareBooleansOrUndefined(lhs.useConstantLod, rhs.useConstantLod);\n}\n\n/** Describes how to map a [[RenderTexture]]'s image onto a surface as part of a [[RenderMaterial]].\n * @public\n */\nexport class TextureMapping {\n /** The texture to be mapped to the surface. If normalMapParams is present but does not contain a normal map, then texture is used as a normal map rather than a pattern map. */\n public readonly texture: RenderTexture;\n /** The parameters for normal mapping.\n * @beta\n */\n public normalMapParams?: NormalMapParams;\n /** The parameters describing how the textures are mapped to the surface. */\n public readonly params: TextureMapping.Params;\n\n public constructor(tx: RenderTexture, params: TextureMapping.Params) {\n this.texture = tx;\n this.params = params;\n }\n\n /** @internal */\n public computeUVParams(visitor: PolyfaceVisitor, transformToImodel: Transform): Point2d[] | undefined {\n return this.params.computeUVParams(visitor as IndexedPolyfaceVisitor, transformToImodel);\n }\n\n /** An [OrderedComparator]($bentley) that compares this mapping against `other`. */\n public compare(other: TextureMapping): number {\n if (this === other) {\n return 0;\n }\n\n return this.texture.compare(other.texture) || this.params.compare(other.params)\n || comparePossiblyUndefined((lh, rh) => compareNormalMapParams(lh, rh), this.normalMapParams, other.normalMapParams);\n }\n}\n\n/** @public */\nexport namespace TextureMapping {\n /** Enumerates the possible texture mapping modes. */\n export enum Mode {\n None = -1,\n Parametric = 0,\n ElevationDrape = 1,\n Planar = 2,\n /** @internal */\n DirectionalDrape = 3,\n /** @internal */\n Cubic = 4,\n /** @internal */\n Spherical = 5,\n /** @internal */\n Cylindrical = 6,\n /** @internal */\n Solid = 7,\n /** @internal Only valid for lights */\n FrontProject = 8,\n }\n\n /** A 2x3 matrix for mapping a texture image to a surface. */\n export class Trans2x3 {\n /** The 3x4 transform produced from the 2x3 matrix. */\n public readonly transform: Transform;\n\n /** Construct from the two rows of the matrix:\n * ```\n * | m00 m01 originX |\n * | m10 m11 originY |\n * ```\n * Producing the [Transform]($core-geometry):\n * ```\n * | m00 m01 0 originX |\n * | m10 m11 0 originY |\n * | 0 0 1 0 |\n * ```\n */\n public constructor(m00 = 1, m01 = 0, originX = 0, m10 = 0, m11 = 1, originY = 0) {\n const origin = new Point3d(originX, originY, 0);\n const matrix = Matrix3d.createRowValues(m00, m01, 0, m10, m11, 0, 0, 0, 1);\n this.transform = Transform.createRefs(origin, matrix);\n }\n\n /** An immutable 2x3 identity matrix. */\n public static readonly identity = new Trans2x3();\n\n /** An [OrderedComparator]($bentley) that compares this Trans2x3 against `other`. */\n public compare(other: Trans2x3): number {\n if (this === other) {\n return 0;\n }\n\n const originDiff = compareNumbers(this.transform.origin.x, other.transform.origin.x) || compareNumbers(this.transform.origin.y, other.transform.origin.y);\n if (originDiff !== 0) {\n return originDiff;\n }\n\n for (const i of [0, 1, 3, 4]) {\n const matDiff = compareNumbers(this.transform.matrix.coffs[i], other.transform.matrix.coffs[i]);\n if (matDiff !== 0) {\n return matDiff;\n }\n }\n\n return 0;\n }\n }\n\n /** Properties used to construct a [[TextureMapping.ConstantLodParams]]. */\n export interface ConstantLodParamProps {\n /** The number of times the texture is repeated. Increasing this will make the texture pattern appear smaller, decreasing it will make it larger. Defaults to 1. */\n repetitions?: number;\n /** An offset in world units used to shift the texture. Defaults to (0, 0). */\n offset?: XAndY;\n /** The minimum distance (from the eye to the surface) at which to clamp the texture. Defaults to 1.*/\n minDistClamp?: number;\n /** The maximum distance (from the eye to the surface) at which to clamp the texture. Defaults to 2^32. */\n maxDistClamp?: number;\n }\n\n /** Parameters to define constant level of detail mapping mode, a mode of texture coordinate generation which dynamically creates\n * texture cooprdinates so that the level of detail of the texture in the rendered image remains somewhat constant. */\n export interface ConstantLodParams {\n /** The number of times the texture is repeated. Increasing this will make the texture pattern appear smaller, decreasing it will make it larger. */\n repetitions: number;\n /** An offset in world units used to shift the texture. */\n offset: XAndY;\n /** The minimum distance (from the eye to the surface) at which to clamp the texture. */\n minDistClamp: number;\n /** The maximum distance (from the eye to the surface) at which to clamp the texture. */\n maxDistClamp: number;\n }\n\n function compareConstantLodParams(lhs: ConstantLodParams, rhs: ConstantLodParams): number {\n return compareNumbers(lhs.repetitions, rhs.repetitions) || compareNumbers(lhs.offset.x, rhs.offset.x) || compareNumbers(lhs.offset.y, rhs.offset.y)\n || compareNumbers(lhs.minDistClamp, rhs.minDistClamp) || compareNumbers(lhs.maxDistClamp, rhs.maxDistClamp);\n }\n\n /** Properties used to construct a [[TextureMapping.Params]]. */\n export interface ParamProps {\n /** The matrix used to map the image to a surface. */\n textureMat2x3?: TextureMapping.Trans2x3;\n /** The ratio in [0, 1] with which to mix the color sampled from the texture with the surface's color.\n * A value of 0.0 uses only the surface color. A value of 1.0 uses only the texture color. A value of 0.5 uses an even mix of both.\n * @note This affects only the red, green, and blue components of the color. The alpha sampled from the texture is always multiplied by the surface color's alpha.\n * @note Defaults to 1.0\n */\n textureWeight?: number;\n /** The mode by which to map the image to a surface.\n * @note Defaults to [[TextureMapping.Mode.Parametric]].\n */\n mapMode?: TextureMapping.Mode;\n /** @internal */\n worldMapping?: boolean;\n /** True if want to use constant LOD texture mapping for the surface texture. */\n useConstantLod?: boolean;\n /** Parameters for constantLod mapping mode. */\n constantLodProps?: ConstantLodParamProps;\n }\n\n /** Parameters describing how a [[RenderTexture]]'s image is mapped to a surface. */\n export class Params {\n /** The matrix used to map the image to a surface. */\n public textureMatrix: TextureMapping.Trans2x3;\n /** The ratio in [0, 1] with which to mix the color sampled from the texture with the element's color.\n * A value of 0.0 uses only the element color. A value of 1.0 uses only the texture color.\n */\n public weight: number;\n /** The mode by which to map the image to a surface. */\n public mode: TextureMapping.Mode;\n /** @internal */\n public worldMapping: boolean;\n /** True if want to use constant LOD texture mapping for the surface texture. */\n public useConstantLod: boolean;\n /** Parameters for constantLod mapping mode. */\n public constantLodParams: ConstantLodParams;\n\n public constructor(props?: TextureMapping.ParamProps) {\n this.textureMatrix = props?.textureMat2x3 ?? Trans2x3.identity;\n this.weight = props?.textureWeight ?? 1;\n this.mode = props?.mapMode ?? Mode.Parametric;\n this.worldMapping = props?.worldMapping ?? false;\n this.useConstantLod = props?.useConstantLod ?? false;\n this.constantLodParams = {\n repetitions: props?.constantLodProps?.repetitions ?? 1,\n offset: props?.constantLodProps?.offset ?? { x: 0, y: 0 },\n minDistClamp: props?.constantLodProps?.minDistClamp ?? 1,\n maxDistClamp: props?.constantLodProps?.maxDistClamp ?? 4096 * 1024 * 1024,\n };\n }\n\n /** An [OrderedComparator]($bentley) that compares these Params against `other`. */\n public compare(other: Params): number {\n if (this === other) {\n return 0;\n }\n\n return compareNumbers(this.weight, other.weight) || compareNumbers(this.mode, other.mode) || compareBooleans(this.worldMapping, other.worldMapping)\n || compareBooleans(this.useConstantLod, other.useConstantLod) || this.textureMatrix.compare(other.textureMatrix)\n || compareConstantLodParams(this.constantLodParams, other.constantLodParams);\n }\n\n /**\n * Generates UV parameters for textured surfaces. Returns undefined on failure.\n * @internal\n */\n public computeUVParams(visitor: IndexedPolyfaceVisitor, transformToImodel: Transform): Point2d[] | undefined {\n switch (this.mode) {\n default: // Fall through to parametric in default case\n case TextureMapping.Mode.Parametric: {\n return this.computeParametricUVParams(visitor, this.textureMatrix.transform, !this.worldMapping);\n }\n case TextureMapping.Mode.Planar: {\n const normalIndices = visitor.normalIndex;\n if (!normalIndices)\n return undefined;\n\n // Ignore planar mode unless master or sub units for scaleMode and facet is planar\n if (!this.worldMapping || (visitor.normalIndex !== undefined && (normalIndices[0] !== normalIndices[1] || normalIndices[0] !== normalIndices[2]))) {\n return this.computeParametricUVParams(visitor, this.textureMatrix.transform, !this.worldMapping);\n } else {\n return this.computePlanarUVParams(visitor, this.textureMatrix.transform);\n }\n }\n case TextureMapping.Mode.ElevationDrape: {\n return this.computeElevationDrapeUVParams(visitor, this.textureMatrix.transform, transformToImodel);\n }\n }\n }\n\n /** Computes UV parameters given a texture mapping mode of parametric. */\n private computeParametricUVParams(visitor: IndexedPolyfaceVisitor, uvTransform: Transform, isRelativeUnits: boolean): Point2d[] {\n const params: Point2d[] = [];\n for (let i = 0; i < visitor.numEdgesThisFacet; i++) {\n let param = Point2d.create();\n\n if (isRelativeUnits || !visitor.tryGetDistanceParameter(i, param)) {\n if (!visitor.tryGetNormalizedParameter(i, param)) {\n // If mesh does not have facetFaceData, we still want to use the texture coordinates if they are present\n param = visitor.getParam(i)!;\n }\n }\n\n params.push(uvTransform.multiplyPoint2d(param));\n }\n return params;\n }\n\n /** Computes UV parameters given a texture mapping mode of planar. The result is stored in the Point2d array given. */\n private computePlanarUVParams(visitor: IndexedPolyfaceVisitor, uvTransform: Transform): Point2d[] | undefined {\n const params: Point2d[] = [];\n const points = visitor.point;\n let normal: Vector3d;\n\n if (visitor.normal === undefined)\n normal = points.getPoint3dAtUncheckedPointIndex(0).crossProductToPoints(points.getPoint3dAtUncheckedPointIndex(1), points.getPoint3dAtUncheckedPointIndex(2));\n else\n normal = visitor.normal.getVector3dAtCheckedVectorIndex(0)!;\n\n if (!normal.normalize(normal))\n return undefined;\n\n // adjust U texture coordinate to be a continuous length starting at the\n // origin. V coordinate stays the same. This mode assumes Z is up vector\n\n // Flipping normal puts us in a planar coordinate system consistent with MicroStation's display system\n normal.scale(-1.0, normal);\n\n // pick the first vertex normal\n const sideVector = Vector3d.create(normal.y, -normal.x, 0.0);\n\n // if the magnitude of the normal is near zero, the real normal points\n // almost straighten up.. In this case, use Y as the up vector to match QV\n\n const magnitude = sideVector.magnitude();\n sideVector.normalize(sideVector); // won't remain undefined if failed due to following check..\n\n if (magnitude < 1e-3) {\n normal.set(0, 0, -1);\n sideVector.set(1, 0, 0);\n }\n\n const upVector = sideVector.crossProduct(normal).normalize();\n if (!upVector)\n return undefined;\n\n const numEdges = visitor.numEdgesThisFacet;\n for (let i = 0; i < numEdges; i++) {\n const vector = Vector3d.createFrom(points.getPoint3dAtUncheckedPointIndex(i));\n\n params.push(Point2d.create(vector.dotProduct(sideVector), vector.dotProduct(upVector)));\n uvTransform.multiplyPoint2d(params[i], params[i]);\n }\n return params;\n }\n\n /** Computes UV parameters given a texture mapping mode of elevation drape. The result is stored in the Point2d array given. */\n private computeElevationDrapeUVParams(visitor: IndexedPolyfaceVisitor, uvTransform: Transform, transformToIModel?: Transform): Point2d[] {\n const params: Point2d[] = [];\n const numEdges = visitor.numEdgesThisFacet;\n for (let i = 0; i < numEdges; i++) {\n const point = visitor.point.getPoint3dAtUncheckedPointIndex(i);\n\n if (transformToIModel !== undefined)\n transformToIModel.multiplyPoint3d(point, point);\n\n params.push(Point2d.createFrom(point));\n uvTransform.multiplyPoint2d(params[i], params[i]);\n }\n return params;\n }\n }\n}\n\nObject.freeze(TextureMapping.Trans2x3.identity);\n"]}
|
|
1
|
+
{"version":3,"file":"TextureMapping.js","sourceRoot":"","sources":["../../src/TextureMapping.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 { IndexedPolyfaceVisitor, Matrix3d, Point2d, Point3d, PolyfaceVisitor, Transform, Vector3d, XAndY } from \"@itwin/core-geometry\";\r\nimport { RenderTexture } from \"./RenderTexture\";\r\nimport { compareBooleans, compareBooleansOrUndefined, compareNumbers, compareNumbersOrUndefined, comparePossiblyUndefined } from \"@itwin/core-bentley\";\r\n\r\n/** Defines normal map parameters.\r\n * @beta\r\n */\r\nexport interface NormalMapParams {\r\n /** The texture to use as a normal map. If not present then the pattern map texture will be used as a normal map. */\r\n normalMap?: RenderTexture;\r\n /** True if the Y component stored in the green channel should be negated. By default, positive Y points downward, but some\r\n * normal maps are created with positive Y pointing upward.\r\n */\r\n greenUp?: boolean;\r\n /** Scale factor by which to multiply the components of the normal extracted from [[normalMap]]. */\r\n scale?: number;\r\n /** True if want to use constant LOD texture mapping for the normal map texture. */\r\n useConstantLod?: boolean;\r\n}\r\n\r\nfunction compareNormalMapParams(lhs: NormalMapParams, rhs: NormalMapParams): number {\r\n return comparePossiblyUndefined((lh, rh) => lh.compare(rh), lhs.normalMap, rhs.normalMap)\r\n || compareBooleansOrUndefined(lhs.greenUp, rhs.greenUp) || compareNumbersOrUndefined(lhs.scale, rhs.scale)\r\n || compareBooleansOrUndefined(lhs.useConstantLod, rhs.useConstantLod);\r\n}\r\n\r\n/** Describes how to map a [[RenderTexture]]'s image onto a surface as part of a [[RenderMaterial]].\r\n * @public\r\n */\r\nexport class TextureMapping {\r\n /** The texture to be mapped to the surface. If normalMapParams is present but does not contain a normal map, then texture is used as a normal map rather than a pattern map. */\r\n public readonly texture: RenderTexture;\r\n /** The parameters for normal mapping.\r\n * @beta\r\n */\r\n public normalMapParams?: NormalMapParams;\r\n /** The parameters describing how the textures are mapped to the surface. */\r\n public readonly params: TextureMapping.Params;\r\n\r\n public constructor(tx: RenderTexture, params: TextureMapping.Params) {\r\n this.texture = tx;\r\n this.params = params;\r\n }\r\n\r\n /** @internal */\r\n public computeUVParams(visitor: PolyfaceVisitor, transformToImodel: Transform): Point2d[] | undefined {\r\n return this.params.computeUVParams(visitor as IndexedPolyfaceVisitor, transformToImodel);\r\n }\r\n\r\n /** An [OrderedComparator]($bentley) that compares this mapping against `other`. */\r\n public compare(other: TextureMapping): number {\r\n if (this === other) {\r\n return 0;\r\n }\r\n\r\n return this.texture.compare(other.texture) || this.params.compare(other.params)\r\n || comparePossiblyUndefined((lh, rh) => compareNormalMapParams(lh, rh), this.normalMapParams, other.normalMapParams);\r\n }\r\n}\r\n\r\n/** @public */\r\nexport namespace TextureMapping {\r\n /** Enumerates the possible texture mapping modes. */\r\n export enum Mode {\r\n None = -1,\r\n Parametric = 0,\r\n ElevationDrape = 1,\r\n Planar = 2,\r\n /** @internal */\r\n DirectionalDrape = 3,\r\n /** @internal */\r\n Cubic = 4,\r\n /** @internal */\r\n Spherical = 5,\r\n /** @internal */\r\n Cylindrical = 6,\r\n /** @internal */\r\n Solid = 7,\r\n /** @internal Only valid for lights */\r\n FrontProject = 8,\r\n }\r\n\r\n /** A 2x3 matrix for mapping a texture image to a surface. */\r\n export class Trans2x3 {\r\n /** The 3x4 transform produced from the 2x3 matrix. */\r\n public readonly transform: Transform;\r\n\r\n /** Construct from the two rows of the matrix:\r\n * ```\r\n * | m00 m01 originX |\r\n * | m10 m11 originY |\r\n * ```\r\n * Producing the [Transform]($core-geometry):\r\n * ```\r\n * | m00 m01 0 originX |\r\n * | m10 m11 0 originY |\r\n * | 0 0 1 0 |\r\n * ```\r\n */\r\n public constructor(m00 = 1, m01 = 0, originX = 0, m10 = 0, m11 = 1, originY = 0) {\r\n const origin = new Point3d(originX, originY, 0);\r\n const matrix = Matrix3d.createRowValues(m00, m01, 0, m10, m11, 0, 0, 0, 1);\r\n this.transform = Transform.createRefs(origin, matrix);\r\n }\r\n\r\n /** An immutable 2x3 identity matrix. */\r\n public static readonly identity = new Trans2x3();\r\n\r\n /** An [OrderedComparator]($bentley) that compares this Trans2x3 against `other`. */\r\n public compare(other: Trans2x3): number {\r\n if (this === other) {\r\n return 0;\r\n }\r\n\r\n const originDiff = compareNumbers(this.transform.origin.x, other.transform.origin.x) || compareNumbers(this.transform.origin.y, other.transform.origin.y);\r\n if (originDiff !== 0) {\r\n return originDiff;\r\n }\r\n\r\n for (const i of [0, 1, 3, 4]) {\r\n const matDiff = compareNumbers(this.transform.matrix.coffs[i], other.transform.matrix.coffs[i]);\r\n if (matDiff !== 0) {\r\n return matDiff;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n }\r\n\r\n /** Properties used to construct a [[TextureMapping.ConstantLodParams]]. */\r\n export interface ConstantLodParamProps {\r\n /** The number of times the texture is repeated. Increasing this will make the texture pattern appear smaller, decreasing it will make it larger. Defaults to 1. */\r\n repetitions?: number;\r\n /** An offset in world units used to shift the texture. Defaults to (0, 0). */\r\n offset?: XAndY;\r\n /** The minimum distance (from the eye to the surface) at which to clamp the texture. Defaults to 1.*/\r\n minDistClamp?: number;\r\n /** The maximum distance (from the eye to the surface) at which to clamp the texture. Defaults to 2^32. */\r\n maxDistClamp?: number;\r\n }\r\n\r\n /** Parameters to define constant level of detail mapping mode, a mode of texture coordinate generation which dynamically creates\r\n * texture cooprdinates so that the level of detail of the texture in the rendered image remains somewhat constant. */\r\n export interface ConstantLodParams {\r\n /** The number of times the texture is repeated. Increasing this will make the texture pattern appear smaller, decreasing it will make it larger. */\r\n repetitions: number;\r\n /** An offset in world units used to shift the texture. */\r\n offset: XAndY;\r\n /** The minimum distance (from the eye to the surface) at which to clamp the texture. */\r\n minDistClamp: number;\r\n /** The maximum distance (from the eye to the surface) at which to clamp the texture. */\r\n maxDistClamp: number;\r\n }\r\n\r\n function compareConstantLodParams(lhs: ConstantLodParams, rhs: ConstantLodParams): number {\r\n return compareNumbers(lhs.repetitions, rhs.repetitions) || compareNumbers(lhs.offset.x, rhs.offset.x) || compareNumbers(lhs.offset.y, rhs.offset.y)\r\n || compareNumbers(lhs.minDistClamp, rhs.minDistClamp) || compareNumbers(lhs.maxDistClamp, rhs.maxDistClamp);\r\n }\r\n\r\n /** Properties used to construct a [[TextureMapping.Params]]. */\r\n export interface ParamProps {\r\n /** The matrix used to map the image to a surface. */\r\n textureMat2x3?: TextureMapping.Trans2x3;\r\n /** The ratio in [0, 1] with which to mix the color sampled from the texture with the surface's color.\r\n * A value of 0.0 uses only the surface color. A value of 1.0 uses only the texture color. A value of 0.5 uses an even mix of both.\r\n * @note This affects only the red, green, and blue components of the color. The alpha sampled from the texture is always multiplied by the surface color's alpha.\r\n * @note Defaults to 1.0\r\n */\r\n textureWeight?: number;\r\n /** The mode by which to map the image to a surface.\r\n * @note Defaults to [[TextureMapping.Mode.Parametric]].\r\n */\r\n mapMode?: TextureMapping.Mode;\r\n /** @internal */\r\n worldMapping?: boolean;\r\n /** True if want to use constant LOD texture mapping for the surface texture. */\r\n useConstantLod?: boolean;\r\n /** Parameters for constantLod mapping mode. */\r\n constantLodProps?: ConstantLodParamProps;\r\n }\r\n\r\n /** Parameters describing how a [[RenderTexture]]'s image is mapped to a surface. */\r\n export class Params {\r\n /** The matrix used to map the image to a surface. */\r\n public textureMatrix: TextureMapping.Trans2x3;\r\n /** The ratio in [0, 1] with which to mix the color sampled from the texture with the element's color.\r\n * A value of 0.0 uses only the element color. A value of 1.0 uses only the texture color.\r\n */\r\n public weight: number;\r\n /** The mode by which to map the image to a surface. */\r\n public mode: TextureMapping.Mode;\r\n /** @internal */\r\n public worldMapping: boolean;\r\n /** True if want to use constant LOD texture mapping for the surface texture. */\r\n public useConstantLod: boolean;\r\n /** Parameters for constantLod mapping mode. */\r\n public constantLodParams: ConstantLodParams;\r\n\r\n public constructor(props?: TextureMapping.ParamProps) {\r\n this.textureMatrix = props?.textureMat2x3 ?? Trans2x3.identity;\r\n this.weight = props?.textureWeight ?? 1;\r\n this.mode = props?.mapMode ?? Mode.Parametric;\r\n this.worldMapping = props?.worldMapping ?? false;\r\n this.useConstantLod = props?.useConstantLod ?? false;\r\n this.constantLodParams = {\r\n repetitions: props?.constantLodProps?.repetitions ?? 1,\r\n offset: props?.constantLodProps?.offset ?? { x: 0, y: 0 },\r\n minDistClamp: props?.constantLodProps?.minDistClamp ?? 1,\r\n maxDistClamp: props?.constantLodProps?.maxDistClamp ?? 4096 * 1024 * 1024,\r\n };\r\n }\r\n\r\n /** An [OrderedComparator]($bentley) that compares these Params against `other`. */\r\n public compare(other: Params): number {\r\n if (this === other) {\r\n return 0;\r\n }\r\n\r\n return compareNumbers(this.weight, other.weight) || compareNumbers(this.mode, other.mode) || compareBooleans(this.worldMapping, other.worldMapping)\r\n || compareBooleans(this.useConstantLod, other.useConstantLod) || this.textureMatrix.compare(other.textureMatrix)\r\n || compareConstantLodParams(this.constantLodParams, other.constantLodParams);\r\n }\r\n\r\n /**\r\n * Generates UV parameters for textured surfaces. Returns undefined on failure.\r\n * @internal\r\n */\r\n public computeUVParams(visitor: IndexedPolyfaceVisitor, transformToImodel: Transform): Point2d[] | undefined {\r\n switch (this.mode) {\r\n default: // Fall through to parametric in default case\r\n case TextureMapping.Mode.Parametric: {\r\n return this.computeParametricUVParams(visitor, this.textureMatrix.transform, !this.worldMapping);\r\n }\r\n case TextureMapping.Mode.Planar: {\r\n const normalIndices = visitor.normalIndex;\r\n if (!normalIndices)\r\n return undefined;\r\n\r\n // Ignore planar mode unless master or sub units for scaleMode and facet is planar\r\n if (!this.worldMapping || (visitor.normalIndex !== undefined && (normalIndices[0] !== normalIndices[1] || normalIndices[0] !== normalIndices[2]))) {\r\n return this.computeParametricUVParams(visitor, this.textureMatrix.transform, !this.worldMapping);\r\n } else {\r\n return this.computePlanarUVParams(visitor, this.textureMatrix.transform);\r\n }\r\n }\r\n case TextureMapping.Mode.ElevationDrape: {\r\n return this.computeElevationDrapeUVParams(visitor, this.textureMatrix.transform, transformToImodel);\r\n }\r\n }\r\n }\r\n\r\n /** Computes UV parameters given a texture mapping mode of parametric. */\r\n private computeParametricUVParams(visitor: IndexedPolyfaceVisitor, uvTransform: Transform, isRelativeUnits: boolean): Point2d[] {\r\n const params: Point2d[] = [];\r\n for (let i = 0; i < visitor.numEdgesThisFacet; i++) {\r\n let param = Point2d.create();\r\n\r\n if (isRelativeUnits || !visitor.tryGetDistanceParameter(i, param)) {\r\n if (!visitor.tryGetNormalizedParameter(i, param)) {\r\n // If mesh does not have facetFaceData, we still want to use the texture coordinates if they are present\r\n param = visitor.getParam(i)!;\r\n }\r\n }\r\n\r\n params.push(uvTransform.multiplyPoint2d(param));\r\n }\r\n return params;\r\n }\r\n\r\n /** Computes UV parameters given a texture mapping mode of planar. The result is stored in the Point2d array given. */\r\n private computePlanarUVParams(visitor: IndexedPolyfaceVisitor, uvTransform: Transform): Point2d[] | undefined {\r\n const params: Point2d[] = [];\r\n const points = visitor.point;\r\n let normal: Vector3d;\r\n\r\n if (visitor.normal === undefined)\r\n normal = points.getPoint3dAtUncheckedPointIndex(0).crossProductToPoints(points.getPoint3dAtUncheckedPointIndex(1), points.getPoint3dAtUncheckedPointIndex(2));\r\n else\r\n normal = visitor.normal.getVector3dAtCheckedVectorIndex(0)!;\r\n\r\n if (!normal.normalize(normal))\r\n return undefined;\r\n\r\n // adjust U texture coordinate to be a continuous length starting at the\r\n // origin. V coordinate stays the same. This mode assumes Z is up vector\r\n\r\n // Flipping normal puts us in a planar coordinate system consistent with MicroStation's display system\r\n normal.scale(-1.0, normal);\r\n\r\n // pick the first vertex normal\r\n const sideVector = Vector3d.create(normal.y, -normal.x, 0.0);\r\n\r\n // if the magnitude of the normal is near zero, the real normal points\r\n // almost straighten up.. In this case, use Y as the up vector to match QV\r\n\r\n const magnitude = sideVector.magnitude();\r\n sideVector.normalize(sideVector); // won't remain undefined if failed due to following check..\r\n\r\n if (magnitude < 1e-3) {\r\n normal.set(0, 0, -1);\r\n sideVector.set(1, 0, 0);\r\n }\r\n\r\n const upVector = sideVector.crossProduct(normal).normalize();\r\n if (!upVector)\r\n return undefined;\r\n\r\n const numEdges = visitor.numEdgesThisFacet;\r\n for (let i = 0; i < numEdges; i++) {\r\n const vector = Vector3d.createFrom(points.getPoint3dAtUncheckedPointIndex(i));\r\n\r\n params.push(Point2d.create(vector.dotProduct(sideVector), vector.dotProduct(upVector)));\r\n uvTransform.multiplyPoint2d(params[i], params[i]);\r\n }\r\n return params;\r\n }\r\n\r\n /** Computes UV parameters given a texture mapping mode of elevation drape. The result is stored in the Point2d array given. */\r\n private computeElevationDrapeUVParams(visitor: IndexedPolyfaceVisitor, uvTransform: Transform, transformToIModel?: Transform): Point2d[] {\r\n const params: Point2d[] = [];\r\n const numEdges = visitor.numEdgesThisFacet;\r\n for (let i = 0; i < numEdges; i++) {\r\n const point = visitor.point.getPoint3dAtUncheckedPointIndex(i);\r\n\r\n if (transformToIModel !== undefined)\r\n transformToIModel.multiplyPoint3d(point, point);\r\n\r\n params.push(Point2d.createFrom(point));\r\n uvTransform.multiplyPoint2d(params[i], params[i]);\r\n }\r\n return params;\r\n }\r\n }\r\n}\r\n\r\nObject.freeze(TextureMapping.Trans2x3.identity);\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureProps.js","sourceRoot":"","sources":["../../src/TextureProps.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAkCH;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B,kGAAkG;IAClG,iEAAM,CAAA;IACN,mGAAmG;IACnG,2EAAW,CAAA;IACX;;OAEG;IACH,+DAAK,CAAA;AACP,CAAC,EATW,mBAAmB,KAAnB,mBAAmB,QAS9B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Entities\n */\n\nimport { Id64String } from \"@itwin/core-bentley\";\nimport { DefinitionElementProps } from \"./ElementProps\";\nimport { ImageSourceFormat } from \"./Image\";\nimport { Base64EncodedString } from \"./Base64EncodedString\";\n\n/** Properties that define a [Texture]($backend) element.\n * @public\n * @extensions\n */\nexport interface TextureProps extends DefinitionElementProps {\n /** Format of the image data. */\n format: ImageSourceFormat;\n /** The image data stored in a Base64-encoded string according to the specified format.\n * @see [[Base64EncodedString.fromUint8Array]] to produce a well-formed base-64-encoded string.\n * @see [[Base64EncodedString.toUint8Array]] to decode the bytes.\n */\n data: Base64EncodedString;\n /** An optional description of the texture. */\n description?: string;\n}\n\n/** Properties that specify what texture should be loaded and how it should be loaded.\n * @public\n * @extensions\n */\nexport interface TextureLoadProps {\n /** A valid Id64 string identifying the texture */\n name: Id64String;\n /** Maximum texture size supported by the client. If specified, the texture will be downsampled so both of its dimensions adhere to this size. */\n maxTextureSize?: number;\n}\n\n/** Describes the type of transparency in the pixels of a [TextureImage]($frontend).\n * Each pixel can be classified as either opaque or translucent.\n * The transparency of the image as a whole is based on the combination of pixel transparencies.\n * If this information is known, it should be supplied when creating a texture for more efficient rendering.\n * @see [TextureImage.transparency]($frontend).\n * @public\n */\nexport enum TextureTransparency {\n /** The image contains only opaque pixels. It should not blend with other objects in the scene. */\n Opaque,\n /** The image contains only translucent pixels. It should blend with other objects in the scene. */\n Translucent,\n /** The image contains both opaque and translucent pixels. The translucent pixels should blend with other objects in the scene, while\n * the opaque pixels should not. Rendering this type of transparency is somewhat more expensive.\n */\n Mixed,\n}\n\n/** Information about [Texture]($backend) data returned by [[IModelReadRpcInterface.queryTextureData]].\n * @public\n * @extensions\n */\nexport interface TextureData {\n /** The width of the image, possibly reduced from the original width based on [[TextureLoadProps.maxTextureSize]]. */\n width: number;\n /** The height of the image, possibly reduced from the original height based on [[TextureLoadProps.maxTextureSize]]. */\n height: number;\n /** The format of the image (Jpeg or Png). */\n format: ImageSourceFormat;\n /** The encoded image bytes. */\n bytes: Uint8Array;\n /** Information about the transparency of the texture image. Default: [[TextureTransparency.Mixed]]. */\n transparency?: TextureTransparency;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TextureProps.js","sourceRoot":"","sources":["../../src/TextureProps.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAkCH;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B,kGAAkG;IAClG,iEAAM,CAAA;IACN,mGAAmG;IACnG,2EAAW,CAAA;IACX;;OAEG;IACH,+DAAK,CAAA;AACP,CAAC,EATW,mBAAmB,KAAnB,mBAAmB,QAS9B","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 Entities\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { DefinitionElementProps } from \"./ElementProps\";\r\nimport { ImageSourceFormat } from \"./Image\";\r\nimport { Base64EncodedString } from \"./Base64EncodedString\";\r\n\r\n/** Properties that define a [Texture]($backend) element.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface TextureProps extends DefinitionElementProps {\r\n /** Format of the image data. */\r\n format: ImageSourceFormat;\r\n /** The image data stored in a Base64-encoded string according to the specified format.\r\n * @see [[Base64EncodedString.fromUint8Array]] to produce a well-formed base-64-encoded string.\r\n * @see [[Base64EncodedString.toUint8Array]] to decode the bytes.\r\n */\r\n data: Base64EncodedString;\r\n /** An optional description of the texture. */\r\n description?: string;\r\n}\r\n\r\n/** Properties that specify what texture should be loaded and how it should be loaded.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface TextureLoadProps {\r\n /** A valid Id64 string identifying the texture */\r\n name: Id64String;\r\n /** Maximum texture size supported by the client. If specified, the texture will be downsampled so both of its dimensions adhere to this size. */\r\n maxTextureSize?: number;\r\n}\r\n\r\n/** Describes the type of transparency in the pixels of a [TextureImage]($frontend).\r\n * Each pixel can be classified as either opaque or translucent.\r\n * The transparency of the image as a whole is based on the combination of pixel transparencies.\r\n * If this information is known, it should be supplied when creating a texture for more efficient rendering.\r\n * @see [TextureImage.transparency]($frontend).\r\n * @public\r\n */\r\nexport enum TextureTransparency {\r\n /** The image contains only opaque pixels. It should not blend with other objects in the scene. */\r\n Opaque,\r\n /** The image contains only translucent pixels. It should blend with other objects in the scene. */\r\n Translucent,\r\n /** The image contains both opaque and translucent pixels. The translucent pixels should blend with other objects in the scene, while\r\n * the opaque pixels should not. Rendering this type of transparency is somewhat more expensive.\r\n */\r\n Mixed,\r\n}\r\n\r\n/** Information about [Texture]($backend) data returned by [[IModelReadRpcInterface.queryTextureData]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface TextureData {\r\n /** The width of the image, possibly reduced from the original width based on [[TextureLoadProps.maxTextureSize]]. */\r\n width: number;\r\n /** The height of the image, possibly reduced from the original height based on [[TextureLoadProps.maxTextureSize]]. */\r\n height: number;\r\n /** The format of the image (Jpeg or Png). */\r\n format: ImageSourceFormat;\r\n /** The encoded image bytes. */\r\n bytes: Uint8Array;\r\n /** Information about the transparency of the texture image. Default: [[TextureTransparency.Mixed]]. */\r\n transparency?: TextureTransparency;\r\n}\r\n"]}
|
|
@@ -74,6 +74,8 @@ export class ThematicGradientSettings {
|
|
|
74
74
|
static get margin() { return .001; } // A fixed portion of the gradient for out of range values.
|
|
75
75
|
static get contentRange() { return 1.0 - 2.0 * ThematicGradientSettings.margin; }
|
|
76
76
|
static get contentMax() { return 1.0 - ThematicGradientSettings.margin; }
|
|
77
|
+
static { this.defaults = new ThematicGradientSettings({}); }
|
|
78
|
+
static { this._defaultCustomKeys = [[0.0, 255, 255, 255], [1.0, 0, 0, 0]]; }
|
|
77
79
|
/** @alpha */
|
|
78
80
|
get textureTransparency() {
|
|
79
81
|
let transp = TextureTransparency.Opaque;
|
|
@@ -201,8 +203,6 @@ export class ThematicGradientSettings {
|
|
|
201
203
|
return ThematicGradientSettings.fromJSON(props);
|
|
202
204
|
}
|
|
203
205
|
}
|
|
204
|
-
ThematicGradientSettings.defaults = new ThematicGradientSettings({});
|
|
205
|
-
ThematicGradientSettings._defaultCustomKeys = [[0.0, 255, 255, 255], [1.0, 0, 0, 0]];
|
|
206
206
|
/** A sensor in world space, used for [[ThematicDisplayMode.InverseDistanceWeightedSensors]].
|
|
207
207
|
* @public
|
|
208
208
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThematicDisplay.js","sourceRoot":"","sources":["../../src/ThematicDisplay.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Symbology\n */\n\nimport { compareNumbers } from \"@itwin/core-bentley\";\nimport { Point3d, Range1d, Range1dProps, Vector3d, XYZProps } from \"@itwin/core-geometry\";\nimport { ColorDef, ColorDefProps } from \"./ColorDef\";\nimport { Gradient } from \"./Gradient\";\nimport { TextureTransparency } from \"./TextureProps\";\n\n/** A thematic gradient mode used to generate and apply a thematic effect to a scene.\n * @see [[ThematicGradientSettings.mode]]\n * @public\n * @extensions\n */\nexport enum ThematicGradientMode {\n /** Apply a smooth color gradient to the scene. */\n Smooth = 0,\n /** Apply a stepped color gradient to the scene. */\n Stepped = 1,\n /** Apply a stepped color gradient to the scene with delimiters (lines between the color steps). Can only be used with [[ThematicDisplayMode.Height]]. */\n SteppedWithDelimiter = 2,\n /** Apply isolines to the scene to achieve an effect similar to a contour map. Can only be used with [[ThematicDisplayMode.Height]]. */\n IsoLines = 3,\n}\n\n/** Describes how transparency is computed when applying a thematic gradient to a surface.\n * Each [[Gradient.KeyColor]] in [[ThematicGradientSettings.customKeys]] has a transparency value.\n * Each surface to which the gradient is applied has its own transparency.\n * The transparency mode determines how these two values are combined to compute the final transparency.\n * @see [[ThematicGradientSettings.transparencyMode]].\n * @public\n * @extensions\n */\nexport enum ThematicGradientTransparencyMode {\n /** Ignore the gradient's transparency, applying only the surface's own transparency. */\n SurfaceOnly = 0,\n /** The final transparency is computed from the product of the surface and gradient alpha channels.\n * (Alpha is the inverse of transparency, where `alpha = (255 - transparency) / 255`).\n * If the gradient color is opaque, this produces the same result as [[SurfaceOnly]].\n */\n MultiplySurfaceAndGradient = 1,\n}\n\n/** A color scheme used to generate the colors of a thematic gradient within an applied range.\n * @see [[ThematicGradientSettings.colorScheme]]\n * @see [[ThematicDisplay.range]]\n * @public\n * @extensions\n */\nexport enum ThematicGradientColorScheme {\n /** A color gradient scheme that represents a blue-to-red gradation. */\n BlueRed = 0,\n /** A color gradient scheme that represents a red-to-blue gradation. */\n RedBlue = 1,\n /** A color gradient scheme that represents a monochrome (black-to-white) gradation. */\n Monochrome = 2,\n /** A color gradient scheme that suits a topographic gradation. */\n Topographic = 3,\n /** A color gradient scheme that suits a sea-mountain gradation. */\n SeaMountain = 4,\n /** A custom color gradient scheme configured by the user.\n * @see [[ThematicGradientSettings.customKeys]]\n */\n Custom = 5,\n}\n\n/** JSON representation of a [[ThematicGradientSettings]].\n * @public\n * @extensions\n **/\nexport interface ThematicGradientSettingsProps {\n /** See [[ThematicGradientSettings.mode]]. */\n mode?: ThematicGradientMode;\n /** See [[ThematicGradientSettings.stepCount]]. */\n stepCount?: number;\n /** See [[ThematicGradientSettings.marginColor]]. */\n marginColor?: ColorDefProps;\n /** See [[ThematicGradientSettings.colorScheme]]. */\n colorScheme?: ThematicGradientColorScheme;\n /** See [[ThematicGradientSettings.customKeys. */\n customKeys?: Gradient.KeyColorProps[];\n /** See [[ThematicGradientSettings.colorMix]]. */\n colorMix?: number;\n /** See [[ThematicGradientSettings.transparencyMode]]. */\n transparencyMode?: ThematicGradientTransparencyMode;\n}\n\n/** Thematic settings specific to creating a color gradient used by [[ThematicDisplay]].\n * @public\n */\nexport class ThematicGradientSettings {\n /** The thematic image mode used to generate the gradient. Defaults to [[ThematicGradientMode.Smooth]]. */\n public readonly mode: ThematicGradientMode;\n /** The step count value used for [[ThematicGradientMode.Stepped]], [[ThematicGradientMode.SteppedWithDelimiter]], and [[ThematicGradientMode.IsoLines]]. Defaults to 10. Cannot be less than 2. */\n public readonly stepCount: number;\n /** The margin color used at the extremes of the gradient, when outside the applied range. Defaults to a black color using [[ColorDef.fromJSON]] with no arguments. */\n public readonly marginColor: ColorDef;\n /** The color scheme used to generate the colors of the gradient color within the applied range. Defaults to [[ThematicGradientColorScheme.BlueRed]]. */\n public readonly colorScheme: ThematicGradientColorScheme;\n /** The key color values that must be provided when using a custom thematic color scheme.\n * Defaults to empty, unless using a custom thematic color scheme. In that case, this defaults to two key colors going from white to black.\n * When using a custom thematic color scheme, there must be at least two entries in here. If there are not, it will revert to the default settings.\n */\n public readonly customKeys: Gradient.KeyColor[];\n /** The percentage to mix in the original color with the thematic display gradient color (0-1).\n * Applies to background map terrain and point clouds only. Defaults to 0. */\n public readonly colorMix: number;\n /** Specifies how the transparency is computed. Defaults to [[ThematicGradientTransparencyMode.SurfaceOnly]].\n * @note This property is ignored for gradients applied using an [[AnalysisStyle]] via [[AnalysisStyleThematic]] - in that case, only the color and\n * transparency of the thematic gradient are applied.\n */\n public readonly transparencyMode: ThematicGradientTransparencyMode;\n\n public static get margin(): number { return .001; } // A fixed portion of the gradient for out of range values.\n public static get contentRange(): number { return 1.0 - 2.0 * ThematicGradientSettings.margin; }\n public static get contentMax(): number { return 1.0 - ThematicGradientSettings.margin; }\n\n public static readonly defaults = new ThematicGradientSettings({});\n\n private static _defaultCustomKeys = [[0.0, 255, 255, 255], [1.0, 0, 0, 0]];\n\n /** @alpha */\n public get textureTransparency(): TextureTransparency {\n let transp = TextureTransparency.Opaque;\n if (ThematicGradientColorScheme.Custom === this.colorScheme) {\n let haveOpaque = false;\n let haveTransparent = false;\n for (const key of this.customKeys) {\n const isOpaque = key.color.isOpaque;\n haveOpaque = haveOpaque || isOpaque;\n haveTransparent = haveTransparent || !isOpaque;\n }\n\n if (haveTransparent)\n transp = haveOpaque ? TextureTransparency.Mixed : TextureTransparency.Translucent;\n }\n\n if (transp !== TextureTransparency.Mixed)\n if (this.marginColor.isOpaque !== (transp === TextureTransparency.Opaque))\n transp = TextureTransparency.Mixed;\n\n return transp;\n }\n\n public equals(other: ThematicGradientSettings): boolean {\n if (this.mode !== other.mode || this.stepCount !== other.stepCount || !this.marginColor.equals(other.marginColor)\n || this.colorScheme !== other.colorScheme || this.customKeys.length !== other.customKeys.length\n || this.colorMix !== other.colorMix || this.transparencyMode !== other.transparencyMode) {\n return false;\n }\n\n return this.customKeys.every((key, index) => Gradient.keyColorEquals(key, other.customKeys[index]));\n }\n\n /** Compares two sets of thematic gradient settings.\n * @param lhs First set of thematic gradient settings to compare\n * @param rhs Second set of thematic gradient settings to compare\n * @returns 0 if lhs is equivalent to rhs, a negative number if lhs compares less than rhs, or a positive number if lhs compares greater than rhs.\n */\n public static compare(lhs: ThematicGradientSettings, rhs: ThematicGradientSettings): number {\n let diff = 0;\n if ((diff = compareNumbers(lhs.mode, rhs.mode)) !== 0)\n return diff;\n if ((diff = compareNumbers(lhs.stepCount, rhs.stepCount)) !== 0)\n return diff;\n if ((diff = compareNumbers(lhs.marginColor.tbgr, rhs.marginColor.tbgr)) !== 0)\n return diff;\n if ((diff = compareNumbers(lhs.colorScheme, rhs.colorScheme)) !== 0)\n return diff;\n if ((diff = compareNumbers(lhs.colorMix, rhs.colorMix)) !== 0)\n return diff;\n if ((diff = compareNumbers(lhs.customKeys.length, rhs.customKeys.length)) !== 0)\n return diff;\n if ((diff = compareNumbers(lhs.transparencyMode, rhs.transparencyMode)) !== 0)\n return diff;\n\n for (let i = 0; i < lhs.customKeys.length; i++)\n if ((diff = compareNumbers(lhs.customKeys[i].color.tbgr, rhs.customKeys[i].color.tbgr)) !== 0)\n return diff;\n\n return diff;\n }\n\n private constructor(json?: ThematicGradientSettingsProps) {\n this.customKeys = [];\n if (undefined === json) {\n this.mode = ThematicGradientMode.Smooth;\n this.stepCount = 10;\n this.marginColor = ColorDef.fromJSON();\n this.colorScheme = ThematicGradientColorScheme.BlueRed;\n this.colorMix = 0.0;\n this.transparencyMode = ThematicGradientTransparencyMode.SurfaceOnly;\n } else {\n this.mode = (json.mode !== undefined && json.mode !== null) ? json.mode : ThematicGradientMode.Smooth;\n if (this.mode < ThematicGradientMode.Smooth || this.mode > ThematicGradientMode.IsoLines)\n this.mode = ThematicGradientMode.Smooth;\n\n this.stepCount = (typeof json.stepCount === \"number\") ? json.stepCount : 10;\n if (this.stepCount < 2)\n this.stepCount = 2;\n\n this.marginColor = ColorDef.fromJSON(json.marginColor);\n\n this.colorScheme = (json.colorScheme !== undefined && json.colorScheme !== null) ? json.colorScheme : ThematicGradientColorScheme.BlueRed;\n if (this.colorScheme < ThematicGradientColorScheme.BlueRed || this.colorScheme > ThematicGradientColorScheme.Custom)\n this.colorScheme = ThematicGradientColorScheme.BlueRed;\n\n if (json.customKeys !== undefined && json.customKeys !== null)\n json.customKeys.forEach((key) => this.customKeys.push(new Gradient.KeyColor(key)));\n\n // Enforce 2 entries in custom color keys if violated\n if (this.colorScheme === ThematicGradientColorScheme.Custom && this.customKeys.length < 2) {\n this.customKeys = [];\n for (const keyValue of ThematicGradientSettings._defaultCustomKeys)\n this.customKeys.push(new Gradient.KeyColor({ value: keyValue[0], color: ColorDef.computeTbgrFromComponents(keyValue[1], keyValue[3], keyValue[2]) }));\n }\n\n this.colorMix = json.colorMix ?? 0.0;\n this.transparencyMode = json.transparencyMode ?? ThematicGradientTransparencyMode.SurfaceOnly;\n }\n }\n\n public static fromJSON(json?: ThematicGradientSettingsProps) {\n return json ? new ThematicGradientSettings(json) : this.defaults;\n }\n\n public toJSON(): ThematicGradientSettingsProps {\n const props: ThematicGradientSettingsProps = {};\n if (ThematicGradientMode.Smooth !== this.mode)\n props.mode = this.mode;\n\n if (10 !== this.stepCount)\n props.stepCount = this.stepCount;\n\n const marginColor = this.marginColor.toJSON();\n if (0 !== marginColor)\n props.marginColor = marginColor;\n\n if (ThematicGradientColorScheme.BlueRed !== this.colorScheme)\n props.colorScheme = this.colorScheme;\n\n if (0 !== this.colorMix)\n props.colorMix = this.colorMix;\n\n if (ThematicGradientTransparencyMode.SurfaceOnly !== this.transparencyMode)\n props.transparencyMode = this.transparencyMode;\n\n if (this.customKeys.length > 0)\n props.customKeys = this.customKeys.map((key) => { return { value: key.value, color: key.color.toJSON() }; });\n\n return props;\n }\n\n /** Create a copy of this ThematicGradientSettings, optionally modifying some of its properties.\n * @param changedProps JSON representation of the properties to change.\n * @returns A ThematicGradientSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\n */\n public clone(changedProps?: ThematicGradientSettingsProps): ThematicGradientSettings {\n if (undefined === changedProps)\n return ThematicGradientSettings.fromJSON(this.toJSON());\n\n const props: ThematicGradientSettingsProps = {\n mode: undefined !== changedProps.mode ? changedProps.mode : this.mode,\n stepCount: undefined !== changedProps.stepCount ? changedProps.stepCount : this.stepCount,\n marginColor: undefined !== changedProps.marginColor ? changedProps.marginColor : this.marginColor.tbgr,\n colorScheme: undefined !== changedProps.colorScheme ? changedProps.colorScheme : this.colorScheme,\n customKeys: undefined !== changedProps.customKeys ? changedProps.customKeys : this.customKeys.map((key) => ({ value: key.value, color: key.color.tbgr })),\n colorMix: undefined !== changedProps.colorMix ? changedProps.colorMix : this.colorMix,\n transparencyMode: changedProps.transparencyMode ?? this.transparencyMode,\n };\n\n return ThematicGradientSettings.fromJSON(props);\n }\n}\n\n/** JSON representation of a [[ThematicDisplaySensor]].\n * @public\n * @extensions\n */\nexport interface ThematicDisplaySensorProps {\n /** The world position of the sensor in X, Y, and Z. Defaults to {0,0,0}. */\n position?: XYZProps;\n /** The value of the sensor used when accessing the thematic gradient texture; expected range is 0 to 1. Defaults to 0. */\n value?: number;\n}\n\n/** A sensor in world space, used for [[ThematicDisplayMode.InverseDistanceWeightedSensors]].\n * @public\n */\nexport class ThematicDisplaySensor {\n /** The world position of the sensor in X, Y, and Z. Defaults to {0,0,0}. */\n public position: Readonly<Point3d>;\n /** The value of the sensor used when accessing the thematic gradient texture; expected range is 0 to 1. Defaults to 0. */\n public readonly value: number;\n\n private constructor(json?: ThematicDisplaySensorProps) {\n if (undefined === json) {\n this.position = Point3d.fromJSON();\n this.value = 0;\n } else {\n this.position = Point3d.fromJSON(json.position);\n this.value = (typeof json.value !== \"number\") ? 0 : json.value;\n if (this.value < 0)\n this.value = 0;\n else if (this.value > 1)\n this.value = 1;\n }\n }\n\n public equals(other: ThematicDisplaySensor): boolean {\n return (this.value === other.value) && this.position.isAlmostEqual(other.position);\n }\n\n public static fromJSON(json?: ThematicDisplaySensorProps) {\n return new ThematicDisplaySensor(json);\n }\n\n public toJSON(): ThematicDisplaySensorProps {\n return {\n position: this.position.toJSON(),\n value: this.value,\n };\n }\n}\n\n/** JSON representation of a [[ThematicDisplaySensorSettings]] for [[ThematicDisplayMode.InverseDistanceWeightedSensors]].\n * @public\n * @extensions\n */\nexport interface ThematicDisplaySensorSettingsProps {\n /** This is the list of sensors. Defaults to an empty array. */\n sensors?: ThematicDisplaySensorProps[];\n /** This is the distance cutoff in meters. For a position on screen to be affected by a sensor, it must be at least this close to the sensor.\n * If this is zero or negative, then no distance cutoff is applied (all sensors affect all positions regardless of nearness).\n * Defaults to zero.\n * @note Using a suitable distance cutoff imparts a significant performance benefit. The larger this value becomes, performance will degrade.\n */\n distanceCutoff?: number;\n}\n\n/** Settings for sensor-based thematic display for [[ThematicDisplayMode.InverseDistanceWeightedSensors]].\n * @public\n */\nexport class ThematicDisplaySensorSettings {\n /** This is the list of sensors. Defaults to an empty array. */\n public readonly sensors: ThematicDisplaySensor[];\n /** This is the distance cutoff in meters. For a position on screen to be affected by a sensor, it must be at least this close to the sensor.\n * If this is zero or negative, then no distance cutoff is applied (all sensors affect all positions regardless of nearness).\n * Defaults to zero.\n * @note Using a suitable distance cutoff imparts a significant performance benefit. The larger this value becomes, performance will degrade.\n */\n public readonly distanceCutoff: number;\n\n private constructor(json?: ThematicDisplaySensorSettingsProps) {\n this.sensors = [];\n if (undefined !== json) {\n if (json.sensors !== undefined && json.sensors !== null) {\n json.sensors.forEach((sensorJSON) => this.sensors.push(ThematicDisplaySensor.fromJSON(sensorJSON)));\n }\n this.distanceCutoff = (typeof json.distanceCutoff === \"number\") ? json.distanceCutoff : 0;\n } else {\n this.distanceCutoff = 0;\n }\n }\n\n public equals(other: ThematicDisplaySensorSettings): boolean {\n if (this.distanceCutoff !== other.distanceCutoff)\n return false;\n\n const thisSensors = this.sensors;\n const otherSensors = other.sensors;\n\n if (thisSensors.length !== otherSensors.length)\n return false;\n\n for (let i = 0; i < thisSensors.length; i++) {\n if (!thisSensors[i].equals(otherSensors[i]))\n return false;\n }\n\n return true;\n }\n\n public static fromJSON(json?: ThematicDisplaySensorSettingsProps) {\n return new ThematicDisplaySensorSettings(json);\n }\n\n public toJSON(): ThematicDisplaySensorSettingsProps {\n const json: ThematicDisplaySensorSettingsProps = {};\n\n json.sensors = [];\n this.sensors.forEach((sensor) => json.sensors!.push(sensor.toJSON()));\n\n json.distanceCutoff = this.distanceCutoff;\n\n return json;\n }\n}\n\n/** The thematic display mode. This determines how to apply the thematic color gradient to the geometry.\n * @public\n * @extensions\n */\nexport enum ThematicDisplayMode {\n /** The color gradient will be mapped to surface geometry and point clouds based on world height in meters. */\n Height = 0,\n /** The color gradient will be mapped to surface geometry and point clouds using inverse distance weighting based on world positions and corresponding values from a list of sensors.\n * @note Performance will decrease as more sensors are added.\n */\n InverseDistanceWeightedSensors = 1,\n /** The color gradient will be mapped to surface geometry based on the slope of the surface. The slope value is calculated based on the angle between the surface and the axis specified in the associated [[ThematicDisplay]] object.\n * @note This display mode does not affect point clouds.\n */\n Slope = 2,\n /** The color gradient will be mapped to surface geometry based on the direction of a sun shining on the surface.\n * @note This display mode does not affect point clouds.\n */\n HillShade = 3,\n}\n\n/** JSON representation of the thematic display setup of a [[DisplayStyle3d]].\n * @public\n * @extensions\n */\nexport interface ThematicDisplayProps {\n /** The thematic display mode. This determines how to apply the thematic color gradient to the geometry. Defaults to [[ThematicDisplayMode.Height]]. */\n displayMode?: ThematicDisplayMode;\n /** The settings used to create a color gradient applied to the geometry. Defaults to an instantiation using [[ThematicGradientSettings.fromJSON]] with no arguments. */\n gradientSettings?: ThematicGradientSettingsProps;\n /** The range to use when applying the thematic gradient for height and slope mode.\n * For [[ThematicDisplayMode.Height]], this is world space in meters and represents the range in which to apply the gradient along the specified axis.\n * For [[ThematicDisplayMode.Slope]], this is a range in degrees with a minimum low value of 0 degrees and a maximum high value of 90 degrees.\n * Defaults to a null range.\n */\n range?: Range1dProps;\n /** For [[ThematicDisplayMode.Height]], this is the axis along which to apply the thematic gradient in the scene. For [[ThematicDisplayMode.Slope]], calculating the slope of a surface is done in relation to the axis. Defaults to {0,0,0}. */\n axis?: XYZProps;\n /** For [[ThematicDisplayMode.HillShade]], this is the direction of the sun in world space. Defaults to {0,0,0}. */\n sunDirection?: XYZProps;\n /** For [[ThematicDisplayMode.InverseDistanceWeightedSensors]], these are the settings that control the sensors. Defaults to an instantiation using [[ThematicDisplaySensorSettings.fromJSON]] with no arguments.\n * @public\n */\n sensorSettings?: ThematicDisplaySensorSettingsProps;\n}\n\n/** The thematic display setup of a [[DisplayStyle3d]].\n * Thematic display allows a user to colorize a scene using a color gradient in a way that provides a visual cue about certain attributes of the rendered geometry. This scene colorization will be done based on certain geometric attributes like height, surface slope, position of surfaces relative to a sun position, or geometric position relative to a list of sensors.\n * The documentation for [[ThematicDisplayMode]] describes how each mode colorizes the scene.\n * @note Applying thematic display to geometry prevents shadows from applying to the same geometry.\n * @public\n */\nexport class ThematicDisplay {\n /** The thematic display mode. This determines how to apply the thematic color gradient to the geometry. Defaults to [[ThematicDisplayMode.Height]]. */\n public readonly displayMode: ThematicDisplayMode;\n /** The settings used to create a color gradient applied to the geometry. Defaults to an instantiation using [[ThematicGradientSettings.fromJSON]] with no arguments. */\n public readonly gradientSettings: ThematicGradientSettings;\n /** The range to use when applying the thematic gradient for height and slope mode.\n * For [[ThematicDisplayMode.Height]], this is world space in meters and represents the range in which to apply the gradient along the specified axis.\n * For [[ThematicDisplayMode.Slope]], this is a range in radians with a minimum low value of 0 degrees and a maximum high value of 90 degrees.\n * Defaults to a null range.\n */\n public readonly range: Range1d;\n /** For [[ThematicDisplayMode.Height]], this is the axis along which to apply the thematic gradient in the scene. For [[ThematicDisplayMode.Slope]], the slope of a surface is calculated in relation to this axis. Defaults to {0,0,0}. */\n public readonly axis: Vector3d;\n /** For [[ThematicDisplayMode.HillShade]], this is the direction of the sun in world space. Defaults to {0,0,0}. */\n public readonly sunDirection: Vector3d;\n /** For [[ThematicDisplayMode.InverseDistanceWeightedSensors]], these are the settings that control the sensors. Defaults to an instantiation using [[ThematicDisplaySensorSettings.fromJSON]] with no arguments.\n * @public\n */\n public readonly sensorSettings: ThematicDisplaySensorSettings;\n\n public equals(other: ThematicDisplay): boolean {\n if (this.displayMode !== other.displayMode)\n return false;\n if (!this.gradientSettings.equals(other.gradientSettings))\n return false;\n if (!this.range.isAlmostEqual(other.range))\n return false;\n if (!this.axis.isAlmostEqual(other.axis))\n return false;\n if (!this.sunDirection.isAlmostEqual(other.sunDirection))\n return false;\n if (!this.sensorSettings.equals(other.sensorSettings))\n return false;\n\n return true;\n }\n\n private constructor(json?: ThematicDisplayProps) {\n if (undefined === json) {\n this.displayMode = ThematicDisplayMode.Height;\n this.gradientSettings = ThematicGradientSettings.fromJSON();\n this.axis = Vector3d.fromJSON();\n this.range = Range1d.fromJSON();\n this.sunDirection = Vector3d.fromJSON();\n this.sensorSettings = ThematicDisplaySensorSettings.fromJSON();\n } else {\n this.displayMode = (json.displayMode !== undefined && json.displayMode !== null) ? json.displayMode : ThematicDisplayMode.Height;\n if (this.displayMode < ThematicDisplayMode.Height || this.displayMode > ThematicDisplayMode.HillShade)\n this.displayMode = ThematicDisplayMode.Height;\n this.gradientSettings = ThematicGradientSettings.fromJSON(json.gradientSettings);\n this.axis = Vector3d.fromJSON(json.axis);\n this.range = Range1d.fromJSON(json.range);\n this.sunDirection = Vector3d.fromJSON(json.sunDirection);\n this.sensorSettings = ThematicDisplaySensorSettings.fromJSON(json.sensorSettings);\n }\n if (ThematicDisplayMode.Height !== this.displayMode) {\n // Disallow isoline and stepped-with-delimiter gradient modes in any mode other than height.\n if (ThematicGradientMode.IsoLines === this.gradientSettings.mode || ThematicGradientMode.SteppedWithDelimiter === this.gradientSettings.mode) {\n const gradientSettingsJSON = this.gradientSettings.toJSON();\n gradientSettingsJSON.mode = ThematicGradientMode.Smooth;\n this.gradientSettings = ThematicGradientSettings.fromJSON(gradientSettingsJSON);\n }\n if (ThematicDisplayMode.Slope === this.displayMode) {\n if (this.range.low < 0.0)\n this.range.low = 0.0;\n if (this.range.high > 90.0)\n this.range.high = 90.0;\n }\n }\n }\n\n public static fromJSON(json?: ThematicDisplayProps) {\n return new ThematicDisplay(json);\n }\n\n public toJSON(): ThematicDisplayProps {\n const json: ThematicDisplayProps = {\n displayMode: this.displayMode,\n gradientSettings: this.gradientSettings.toJSON(),\n axis: this.axis.toJSON(),\n sunDirection: this.sunDirection.toJSON(),\n range: this.range.toJSON(),\n };\n\n if (this.sensorSettings.sensors.length > 0)\n json.sensorSettings = this.sensorSettings.toJSON();\n\n return json;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ThematicDisplay.js","sourceRoot":"","sources":["../../src/ThematicDisplay.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 Symbology\r\n */\r\n\r\nimport { compareNumbers } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range1d, Range1dProps, Vector3d, XYZProps } from \"@itwin/core-geometry\";\r\nimport { ColorDef, ColorDefProps } from \"./ColorDef\";\r\nimport { Gradient } from \"./Gradient\";\r\nimport { TextureTransparency } from \"./TextureProps\";\r\n\r\n/** A thematic gradient mode used to generate and apply a thematic effect to a scene.\r\n * @see [[ThematicGradientSettings.mode]]\r\n * @public\r\n * @extensions\r\n */\r\nexport enum ThematicGradientMode {\r\n /** Apply a smooth color gradient to the scene. */\r\n Smooth = 0,\r\n /** Apply a stepped color gradient to the scene. */\r\n Stepped = 1,\r\n /** Apply a stepped color gradient to the scene with delimiters (lines between the color steps). Can only be used with [[ThematicDisplayMode.Height]]. */\r\n SteppedWithDelimiter = 2,\r\n /** Apply isolines to the scene to achieve an effect similar to a contour map. Can only be used with [[ThematicDisplayMode.Height]]. */\r\n IsoLines = 3,\r\n}\r\n\r\n/** Describes how transparency is computed when applying a thematic gradient to a surface.\r\n * Each [[Gradient.KeyColor]] in [[ThematicGradientSettings.customKeys]] has a transparency value.\r\n * Each surface to which the gradient is applied has its own transparency.\r\n * The transparency mode determines how these two values are combined to compute the final transparency.\r\n * @see [[ThematicGradientSettings.transparencyMode]].\r\n * @public\r\n * @extensions\r\n */\r\nexport enum ThematicGradientTransparencyMode {\r\n /** Ignore the gradient's transparency, applying only the surface's own transparency. */\r\n SurfaceOnly = 0,\r\n /** The final transparency is computed from the product of the surface and gradient alpha channels.\r\n * (Alpha is the inverse of transparency, where `alpha = (255 - transparency) / 255`).\r\n * If the gradient color is opaque, this produces the same result as [[SurfaceOnly]].\r\n */\r\n MultiplySurfaceAndGradient = 1,\r\n}\r\n\r\n/** A color scheme used to generate the colors of a thematic gradient within an applied range.\r\n * @see [[ThematicGradientSettings.colorScheme]]\r\n * @see [[ThematicDisplay.range]]\r\n * @public\r\n * @extensions\r\n */\r\nexport enum ThematicGradientColorScheme {\r\n /** A color gradient scheme that represents a blue-to-red gradation. */\r\n BlueRed = 0,\r\n /** A color gradient scheme that represents a red-to-blue gradation. */\r\n RedBlue = 1,\r\n /** A color gradient scheme that represents a monochrome (black-to-white) gradation. */\r\n Monochrome = 2,\r\n /** A color gradient scheme that suits a topographic gradation. */\r\n Topographic = 3,\r\n /** A color gradient scheme that suits a sea-mountain gradation. */\r\n SeaMountain = 4,\r\n /** A custom color gradient scheme configured by the user.\r\n * @see [[ThematicGradientSettings.customKeys]]\r\n */\r\n Custom = 5,\r\n}\r\n\r\n/** JSON representation of a [[ThematicGradientSettings]].\r\n * @public\r\n * @extensions\r\n **/\r\nexport interface ThematicGradientSettingsProps {\r\n /** See [[ThematicGradientSettings.mode]]. */\r\n mode?: ThematicGradientMode;\r\n /** See [[ThematicGradientSettings.stepCount]]. */\r\n stepCount?: number;\r\n /** See [[ThematicGradientSettings.marginColor]]. */\r\n marginColor?: ColorDefProps;\r\n /** See [[ThematicGradientSettings.colorScheme]]. */\r\n colorScheme?: ThematicGradientColorScheme;\r\n /** See [[ThematicGradientSettings.customKeys. */\r\n customKeys?: Gradient.KeyColorProps[];\r\n /** See [[ThematicGradientSettings.colorMix]]. */\r\n colorMix?: number;\r\n /** See [[ThematicGradientSettings.transparencyMode]]. */\r\n transparencyMode?: ThematicGradientTransparencyMode;\r\n}\r\n\r\n/** Thematic settings specific to creating a color gradient used by [[ThematicDisplay]].\r\n * @public\r\n */\r\nexport class ThematicGradientSettings {\r\n /** The thematic image mode used to generate the gradient. Defaults to [[ThematicGradientMode.Smooth]]. */\r\n public readonly mode: ThematicGradientMode;\r\n /** The step count value used for [[ThematicGradientMode.Stepped]], [[ThematicGradientMode.SteppedWithDelimiter]], and [[ThematicGradientMode.IsoLines]]. Defaults to 10. Cannot be less than 2. */\r\n public readonly stepCount: number;\r\n /** The margin color used at the extremes of the gradient, when outside the applied range. Defaults to a black color using [[ColorDef.fromJSON]] with no arguments. */\r\n public readonly marginColor: ColorDef;\r\n /** The color scheme used to generate the colors of the gradient color within the applied range. Defaults to [[ThematicGradientColorScheme.BlueRed]]. */\r\n public readonly colorScheme: ThematicGradientColorScheme;\r\n /** The key color values that must be provided when using a custom thematic color scheme.\r\n * Defaults to empty, unless using a custom thematic color scheme. In that case, this defaults to two key colors going from white to black.\r\n * When using a custom thematic color scheme, there must be at least two entries in here. If there are not, it will revert to the default settings.\r\n */\r\n public readonly customKeys: Gradient.KeyColor[];\r\n /** The percentage to mix in the original color with the thematic display gradient color (0-1).\r\n * Applies to background map terrain and point clouds only. Defaults to 0. */\r\n public readonly colorMix: number;\r\n /** Specifies how the transparency is computed. Defaults to [[ThematicGradientTransparencyMode.SurfaceOnly]].\r\n * @note This property is ignored for gradients applied using an [[AnalysisStyle]] via [[AnalysisStyleThematic]] - in that case, only the color and\r\n * transparency of the thematic gradient are applied.\r\n */\r\n public readonly transparencyMode: ThematicGradientTransparencyMode;\r\n\r\n public static get margin(): number { return .001; } // A fixed portion of the gradient for out of range values.\r\n public static get contentRange(): number { return 1.0 - 2.0 * ThematicGradientSettings.margin; }\r\n public static get contentMax(): number { return 1.0 - ThematicGradientSettings.margin; }\r\n\r\n public static readonly defaults = new ThematicGradientSettings({});\r\n\r\n private static _defaultCustomKeys = [[0.0, 255, 255, 255], [1.0, 0, 0, 0]];\r\n\r\n /** @alpha */\r\n public get textureTransparency(): TextureTransparency {\r\n let transp = TextureTransparency.Opaque;\r\n if (ThematicGradientColorScheme.Custom === this.colorScheme) {\r\n let haveOpaque = false;\r\n let haveTransparent = false;\r\n for (const key of this.customKeys) {\r\n const isOpaque = key.color.isOpaque;\r\n haveOpaque = haveOpaque || isOpaque;\r\n haveTransparent = haveTransparent || !isOpaque;\r\n }\r\n\r\n if (haveTransparent)\r\n transp = haveOpaque ? TextureTransparency.Mixed : TextureTransparency.Translucent;\r\n }\r\n\r\n if (transp !== TextureTransparency.Mixed)\r\n if (this.marginColor.isOpaque !== (transp === TextureTransparency.Opaque))\r\n transp = TextureTransparency.Mixed;\r\n\r\n return transp;\r\n }\r\n\r\n public equals(other: ThematicGradientSettings): boolean {\r\n if (this.mode !== other.mode || this.stepCount !== other.stepCount || !this.marginColor.equals(other.marginColor)\r\n || this.colorScheme !== other.colorScheme || this.customKeys.length !== other.customKeys.length\r\n || this.colorMix !== other.colorMix || this.transparencyMode !== other.transparencyMode) {\r\n return false;\r\n }\r\n\r\n return this.customKeys.every((key, index) => Gradient.keyColorEquals(key, other.customKeys[index]));\r\n }\r\n\r\n /** Compares two sets of thematic gradient settings.\r\n * @param lhs First set of thematic gradient settings to compare\r\n * @param rhs Second set of thematic gradient settings to compare\r\n * @returns 0 if lhs is equivalent to rhs, a negative number if lhs compares less than rhs, or a positive number if lhs compares greater than rhs.\r\n */\r\n public static compare(lhs: ThematicGradientSettings, rhs: ThematicGradientSettings): number {\r\n let diff = 0;\r\n if ((diff = compareNumbers(lhs.mode, rhs.mode)) !== 0)\r\n return diff;\r\n if ((diff = compareNumbers(lhs.stepCount, rhs.stepCount)) !== 0)\r\n return diff;\r\n if ((diff = compareNumbers(lhs.marginColor.tbgr, rhs.marginColor.tbgr)) !== 0)\r\n return diff;\r\n if ((diff = compareNumbers(lhs.colorScheme, rhs.colorScheme)) !== 0)\r\n return diff;\r\n if ((diff = compareNumbers(lhs.colorMix, rhs.colorMix)) !== 0)\r\n return diff;\r\n if ((diff = compareNumbers(lhs.customKeys.length, rhs.customKeys.length)) !== 0)\r\n return diff;\r\n if ((diff = compareNumbers(lhs.transparencyMode, rhs.transparencyMode)) !== 0)\r\n return diff;\r\n\r\n for (let i = 0; i < lhs.customKeys.length; i++)\r\n if ((diff = compareNumbers(lhs.customKeys[i].color.tbgr, rhs.customKeys[i].color.tbgr)) !== 0)\r\n return diff;\r\n\r\n return diff;\r\n }\r\n\r\n private constructor(json?: ThematicGradientSettingsProps) {\r\n this.customKeys = [];\r\n if (undefined === json) {\r\n this.mode = ThematicGradientMode.Smooth;\r\n this.stepCount = 10;\r\n this.marginColor = ColorDef.fromJSON();\r\n this.colorScheme = ThematicGradientColorScheme.BlueRed;\r\n this.colorMix = 0.0;\r\n this.transparencyMode = ThematicGradientTransparencyMode.SurfaceOnly;\r\n } else {\r\n this.mode = (json.mode !== undefined && json.mode !== null) ? json.mode : ThematicGradientMode.Smooth;\r\n if (this.mode < ThematicGradientMode.Smooth || this.mode > ThematicGradientMode.IsoLines)\r\n this.mode = ThematicGradientMode.Smooth;\r\n\r\n this.stepCount = (typeof json.stepCount === \"number\") ? json.stepCount : 10;\r\n if (this.stepCount < 2)\r\n this.stepCount = 2;\r\n\r\n this.marginColor = ColorDef.fromJSON(json.marginColor);\r\n\r\n this.colorScheme = (json.colorScheme !== undefined && json.colorScheme !== null) ? json.colorScheme : ThematicGradientColorScheme.BlueRed;\r\n if (this.colorScheme < ThematicGradientColorScheme.BlueRed || this.colorScheme > ThematicGradientColorScheme.Custom)\r\n this.colorScheme = ThematicGradientColorScheme.BlueRed;\r\n\r\n if (json.customKeys !== undefined && json.customKeys !== null)\r\n json.customKeys.forEach((key) => this.customKeys.push(new Gradient.KeyColor(key)));\r\n\r\n // Enforce 2 entries in custom color keys if violated\r\n if (this.colorScheme === ThematicGradientColorScheme.Custom && this.customKeys.length < 2) {\r\n this.customKeys = [];\r\n for (const keyValue of ThematicGradientSettings._defaultCustomKeys)\r\n this.customKeys.push(new Gradient.KeyColor({ value: keyValue[0], color: ColorDef.computeTbgrFromComponents(keyValue[1], keyValue[3], keyValue[2]) }));\r\n }\r\n\r\n this.colorMix = json.colorMix ?? 0.0;\r\n this.transparencyMode = json.transparencyMode ?? ThematicGradientTransparencyMode.SurfaceOnly;\r\n }\r\n }\r\n\r\n public static fromJSON(json?: ThematicGradientSettingsProps) {\r\n return json ? new ThematicGradientSettings(json) : this.defaults;\r\n }\r\n\r\n public toJSON(): ThematicGradientSettingsProps {\r\n const props: ThematicGradientSettingsProps = {};\r\n if (ThematicGradientMode.Smooth !== this.mode)\r\n props.mode = this.mode;\r\n\r\n if (10 !== this.stepCount)\r\n props.stepCount = this.stepCount;\r\n\r\n const marginColor = this.marginColor.toJSON();\r\n if (0 !== marginColor)\r\n props.marginColor = marginColor;\r\n\r\n if (ThematicGradientColorScheme.BlueRed !== this.colorScheme)\r\n props.colorScheme = this.colorScheme;\r\n\r\n if (0 !== this.colorMix)\r\n props.colorMix = this.colorMix;\r\n\r\n if (ThematicGradientTransparencyMode.SurfaceOnly !== this.transparencyMode)\r\n props.transparencyMode = this.transparencyMode;\r\n\r\n if (this.customKeys.length > 0)\r\n props.customKeys = this.customKeys.map((key) => { return { value: key.value, color: key.color.toJSON() }; });\r\n\r\n return props;\r\n }\r\n\r\n /** Create a copy of this ThematicGradientSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A ThematicGradientSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps?: ThematicGradientSettingsProps): ThematicGradientSettings {\r\n if (undefined === changedProps)\r\n return ThematicGradientSettings.fromJSON(this.toJSON());\r\n\r\n const props: ThematicGradientSettingsProps = {\r\n mode: undefined !== changedProps.mode ? changedProps.mode : this.mode,\r\n stepCount: undefined !== changedProps.stepCount ? changedProps.stepCount : this.stepCount,\r\n marginColor: undefined !== changedProps.marginColor ? changedProps.marginColor : this.marginColor.tbgr,\r\n colorScheme: undefined !== changedProps.colorScheme ? changedProps.colorScheme : this.colorScheme,\r\n customKeys: undefined !== changedProps.customKeys ? changedProps.customKeys : this.customKeys.map((key) => ({ value: key.value, color: key.color.tbgr })),\r\n colorMix: undefined !== changedProps.colorMix ? changedProps.colorMix : this.colorMix,\r\n transparencyMode: changedProps.transparencyMode ?? this.transparencyMode,\r\n };\r\n\r\n return ThematicGradientSettings.fromJSON(props);\r\n }\r\n}\r\n\r\n/** JSON representation of a [[ThematicDisplaySensor]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ThematicDisplaySensorProps {\r\n /** The world position of the sensor in X, Y, and Z. Defaults to {0,0,0}. */\r\n position?: XYZProps;\r\n /** The value of the sensor used when accessing the thematic gradient texture; expected range is 0 to 1. Defaults to 0. */\r\n value?: number;\r\n}\r\n\r\n/** A sensor in world space, used for [[ThematicDisplayMode.InverseDistanceWeightedSensors]].\r\n * @public\r\n */\r\nexport class ThematicDisplaySensor {\r\n /** The world position of the sensor in X, Y, and Z. Defaults to {0,0,0}. */\r\n public position: Readonly<Point3d>;\r\n /** The value of the sensor used when accessing the thematic gradient texture; expected range is 0 to 1. Defaults to 0. */\r\n public readonly value: number;\r\n\r\n private constructor(json?: ThematicDisplaySensorProps) {\r\n if (undefined === json) {\r\n this.position = Point3d.fromJSON();\r\n this.value = 0;\r\n } else {\r\n this.position = Point3d.fromJSON(json.position);\r\n this.value = (typeof json.value !== \"number\") ? 0 : json.value;\r\n if (this.value < 0)\r\n this.value = 0;\r\n else if (this.value > 1)\r\n this.value = 1;\r\n }\r\n }\r\n\r\n public equals(other: ThematicDisplaySensor): boolean {\r\n return (this.value === other.value) && this.position.isAlmostEqual(other.position);\r\n }\r\n\r\n public static fromJSON(json?: ThematicDisplaySensorProps) {\r\n return new ThematicDisplaySensor(json);\r\n }\r\n\r\n public toJSON(): ThematicDisplaySensorProps {\r\n return {\r\n position: this.position.toJSON(),\r\n value: this.value,\r\n };\r\n }\r\n}\r\n\r\n/** JSON representation of a [[ThematicDisplaySensorSettings]] for [[ThematicDisplayMode.InverseDistanceWeightedSensors]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ThematicDisplaySensorSettingsProps {\r\n /** This is the list of sensors. Defaults to an empty array. */\r\n sensors?: ThematicDisplaySensorProps[];\r\n /** This is the distance cutoff in meters. For a position on screen to be affected by a sensor, it must be at least this close to the sensor.\r\n * If this is zero or negative, then no distance cutoff is applied (all sensors affect all positions regardless of nearness).\r\n * Defaults to zero.\r\n * @note Using a suitable distance cutoff imparts a significant performance benefit. The larger this value becomes, performance will degrade.\r\n */\r\n distanceCutoff?: number;\r\n}\r\n\r\n/** Settings for sensor-based thematic display for [[ThematicDisplayMode.InverseDistanceWeightedSensors]].\r\n * @public\r\n */\r\nexport class ThematicDisplaySensorSettings {\r\n /** This is the list of sensors. Defaults to an empty array. */\r\n public readonly sensors: ThematicDisplaySensor[];\r\n /** This is the distance cutoff in meters. For a position on screen to be affected by a sensor, it must be at least this close to the sensor.\r\n * If this is zero or negative, then no distance cutoff is applied (all sensors affect all positions regardless of nearness).\r\n * Defaults to zero.\r\n * @note Using a suitable distance cutoff imparts a significant performance benefit. The larger this value becomes, performance will degrade.\r\n */\r\n public readonly distanceCutoff: number;\r\n\r\n private constructor(json?: ThematicDisplaySensorSettingsProps) {\r\n this.sensors = [];\r\n if (undefined !== json) {\r\n if (json.sensors !== undefined && json.sensors !== null) {\r\n json.sensors.forEach((sensorJSON) => this.sensors.push(ThematicDisplaySensor.fromJSON(sensorJSON)));\r\n }\r\n this.distanceCutoff = (typeof json.distanceCutoff === \"number\") ? json.distanceCutoff : 0;\r\n } else {\r\n this.distanceCutoff = 0;\r\n }\r\n }\r\n\r\n public equals(other: ThematicDisplaySensorSettings): boolean {\r\n if (this.distanceCutoff !== other.distanceCutoff)\r\n return false;\r\n\r\n const thisSensors = this.sensors;\r\n const otherSensors = other.sensors;\r\n\r\n if (thisSensors.length !== otherSensors.length)\r\n return false;\r\n\r\n for (let i = 0; i < thisSensors.length; i++) {\r\n if (!thisSensors[i].equals(otherSensors[i]))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public static fromJSON(json?: ThematicDisplaySensorSettingsProps) {\r\n return new ThematicDisplaySensorSettings(json);\r\n }\r\n\r\n public toJSON(): ThematicDisplaySensorSettingsProps {\r\n const json: ThematicDisplaySensorSettingsProps = {};\r\n\r\n json.sensors = [];\r\n this.sensors.forEach((sensor) => json.sensors!.push(sensor.toJSON()));\r\n\r\n json.distanceCutoff = this.distanceCutoff;\r\n\r\n return json;\r\n }\r\n}\r\n\r\n/** The thematic display mode. This determines how to apply the thematic color gradient to the geometry.\r\n * @public\r\n * @extensions\r\n */\r\nexport enum ThematicDisplayMode {\r\n /** The color gradient will be mapped to surface geometry and point clouds based on world height in meters. */\r\n Height = 0,\r\n /** The color gradient will be mapped to surface geometry and point clouds using inverse distance weighting based on world positions and corresponding values from a list of sensors.\r\n * @note Performance will decrease as more sensors are added.\r\n */\r\n InverseDistanceWeightedSensors = 1,\r\n /** The color gradient will be mapped to surface geometry based on the slope of the surface. The slope value is calculated based on the angle between the surface and the axis specified in the associated [[ThematicDisplay]] object.\r\n * @note This display mode does not affect point clouds.\r\n */\r\n Slope = 2,\r\n /** The color gradient will be mapped to surface geometry based on the direction of a sun shining on the surface.\r\n * @note This display mode does not affect point clouds.\r\n */\r\n HillShade = 3,\r\n}\r\n\r\n/** JSON representation of the thematic display setup of a [[DisplayStyle3d]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ThematicDisplayProps {\r\n /** The thematic display mode. This determines how to apply the thematic color gradient to the geometry. Defaults to [[ThematicDisplayMode.Height]]. */\r\n displayMode?: ThematicDisplayMode;\r\n /** The settings used to create a color gradient applied to the geometry. Defaults to an instantiation using [[ThematicGradientSettings.fromJSON]] with no arguments. */\r\n gradientSettings?: ThematicGradientSettingsProps;\r\n /** The range to use when applying the thematic gradient for height and slope mode.\r\n * For [[ThematicDisplayMode.Height]], this is world space in meters and represents the range in which to apply the gradient along the specified axis.\r\n * For [[ThematicDisplayMode.Slope]], this is a range in degrees with a minimum low value of 0 degrees and a maximum high value of 90 degrees.\r\n * Defaults to a null range.\r\n */\r\n range?: Range1dProps;\r\n /** For [[ThematicDisplayMode.Height]], this is the axis along which to apply the thematic gradient in the scene. For [[ThematicDisplayMode.Slope]], calculating the slope of a surface is done in relation to the axis. Defaults to {0,0,0}. */\r\n axis?: XYZProps;\r\n /** For [[ThematicDisplayMode.HillShade]], this is the direction of the sun in world space. Defaults to {0,0,0}. */\r\n sunDirection?: XYZProps;\r\n /** For [[ThematicDisplayMode.InverseDistanceWeightedSensors]], these are the settings that control the sensors. Defaults to an instantiation using [[ThematicDisplaySensorSettings.fromJSON]] with no arguments.\r\n * @public\r\n */\r\n sensorSettings?: ThematicDisplaySensorSettingsProps;\r\n}\r\n\r\n/** The thematic display setup of a [[DisplayStyle3d]].\r\n * Thematic display allows a user to colorize a scene using a color gradient in a way that provides a visual cue about certain attributes of the rendered geometry. This scene colorization will be done based on certain geometric attributes like height, surface slope, position of surfaces relative to a sun position, or geometric position relative to a list of sensors.\r\n * The documentation for [[ThematicDisplayMode]] describes how each mode colorizes the scene.\r\n * @note Applying thematic display to geometry prevents shadows from applying to the same geometry.\r\n * @public\r\n */\r\nexport class ThematicDisplay {\r\n /** The thematic display mode. This determines how to apply the thematic color gradient to the geometry. Defaults to [[ThematicDisplayMode.Height]]. */\r\n public readonly displayMode: ThematicDisplayMode;\r\n /** The settings used to create a color gradient applied to the geometry. Defaults to an instantiation using [[ThematicGradientSettings.fromJSON]] with no arguments. */\r\n public readonly gradientSettings: ThematicGradientSettings;\r\n /** The range to use when applying the thematic gradient for height and slope mode.\r\n * For [[ThematicDisplayMode.Height]], this is world space in meters and represents the range in which to apply the gradient along the specified axis.\r\n * For [[ThematicDisplayMode.Slope]], this is a range in radians with a minimum low value of 0 degrees and a maximum high value of 90 degrees.\r\n * Defaults to a null range.\r\n */\r\n public readonly range: Range1d;\r\n /** For [[ThematicDisplayMode.Height]], this is the axis along which to apply the thematic gradient in the scene. For [[ThematicDisplayMode.Slope]], the slope of a surface is calculated in relation to this axis. Defaults to {0,0,0}. */\r\n public readonly axis: Vector3d;\r\n /** For [[ThematicDisplayMode.HillShade]], this is the direction of the sun in world space. Defaults to {0,0,0}. */\r\n public readonly sunDirection: Vector3d;\r\n /** For [[ThematicDisplayMode.InverseDistanceWeightedSensors]], these are the settings that control the sensors. Defaults to an instantiation using [[ThematicDisplaySensorSettings.fromJSON]] with no arguments.\r\n * @public\r\n */\r\n public readonly sensorSettings: ThematicDisplaySensorSettings;\r\n\r\n public equals(other: ThematicDisplay): boolean {\r\n if (this.displayMode !== other.displayMode)\r\n return false;\r\n if (!this.gradientSettings.equals(other.gradientSettings))\r\n return false;\r\n if (!this.range.isAlmostEqual(other.range))\r\n return false;\r\n if (!this.axis.isAlmostEqual(other.axis))\r\n return false;\r\n if (!this.sunDirection.isAlmostEqual(other.sunDirection))\r\n return false;\r\n if (!this.sensorSettings.equals(other.sensorSettings))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n private constructor(json?: ThematicDisplayProps) {\r\n if (undefined === json) {\r\n this.displayMode = ThematicDisplayMode.Height;\r\n this.gradientSettings = ThematicGradientSettings.fromJSON();\r\n this.axis = Vector3d.fromJSON();\r\n this.range = Range1d.fromJSON();\r\n this.sunDirection = Vector3d.fromJSON();\r\n this.sensorSettings = ThematicDisplaySensorSettings.fromJSON();\r\n } else {\r\n this.displayMode = (json.displayMode !== undefined && json.displayMode !== null) ? json.displayMode : ThematicDisplayMode.Height;\r\n if (this.displayMode < ThematicDisplayMode.Height || this.displayMode > ThematicDisplayMode.HillShade)\r\n this.displayMode = ThematicDisplayMode.Height;\r\n this.gradientSettings = ThematicGradientSettings.fromJSON(json.gradientSettings);\r\n this.axis = Vector3d.fromJSON(json.axis);\r\n this.range = Range1d.fromJSON(json.range);\r\n this.sunDirection = Vector3d.fromJSON(json.sunDirection);\r\n this.sensorSettings = ThematicDisplaySensorSettings.fromJSON(json.sensorSettings);\r\n }\r\n if (ThematicDisplayMode.Height !== this.displayMode) {\r\n // Disallow isoline and stepped-with-delimiter gradient modes in any mode other than height.\r\n if (ThematicGradientMode.IsoLines === this.gradientSettings.mode || ThematicGradientMode.SteppedWithDelimiter === this.gradientSettings.mode) {\r\n const gradientSettingsJSON = this.gradientSettings.toJSON();\r\n gradientSettingsJSON.mode = ThematicGradientMode.Smooth;\r\n this.gradientSettings = ThematicGradientSettings.fromJSON(gradientSettingsJSON);\r\n }\r\n if (ThematicDisplayMode.Slope === this.displayMode) {\r\n if (this.range.low < 0.0)\r\n this.range.low = 0.0;\r\n if (this.range.high > 90.0)\r\n this.range.high = 90.0;\r\n }\r\n }\r\n }\r\n\r\n public static fromJSON(json?: ThematicDisplayProps) {\r\n return new ThematicDisplay(json);\r\n }\r\n\r\n public toJSON(): ThematicDisplayProps {\r\n const json: ThematicDisplayProps = {\r\n displayMode: this.displayMode,\r\n gradientSettings: this.gradientSettings.toJSON(),\r\n axis: this.axis.toJSON(),\r\n sunDirection: this.sunDirection.toJSON(),\r\n range: this.range.toJSON(),\r\n };\r\n\r\n if (this.sensorSettings.sensors.length > 0)\r\n json.sensorSettings = this.sensorSettings.toJSON();\r\n\r\n return json;\r\n }\r\n}\r\n"]}
|
package/lib/esm/Thumbnail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thumbnail.js","sourceRoot":"","sources":["../../src/Thumbnail.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\n/** Metadata about a thumbnail image. Often this is redundant with information in the image itself, but is held\n * outside of the image so it can be obtained without having to decode the image data.\n * @see [[ThumbnailProps]]\n * @public\n * @extensions\n */\nexport interface ThumbnailFormatProps {\n /** X size of the image, in pixels. */\n width: number;\n /** Y size of image, in pixels. */\n height: number;\n /** Encoding of the image */\n format: \"jpeg\" | \"png\";\n}\n\n/** Describes a thumbnail image for an [[IModel]] or [ViewDefinition]($backend).\n * @see [IModelDb.Views.getThumbnail]($backend) or [IModelConnection.Views.getThumbnail]($frontend) to obtain a thumbnail for a view.\n * @public\n * @extensions\n */\nexport interface ThumbnailProps extends ThumbnailFormatProps {\n /** The image encoded as specified by [[ThumbnailFormatProps.format]]. */\n image: Uint8Array;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Thumbnail.js","sourceRoot":"","sources":["../../src/Thumbnail.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","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\n/** Metadata about a thumbnail image. Often this is redundant with information in the image itself, but is held\r\n * outside of the image so it can be obtained without having to decode the image data.\r\n * @see [[ThumbnailProps]]\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ThumbnailFormatProps {\r\n /** X size of the image, in pixels. */\r\n width: number;\r\n /** Y size of image, in pixels. */\r\n height: number;\r\n /** Encoding of the image */\r\n format: \"jpeg\" | \"png\";\r\n}\r\n\r\n/** Describes a thumbnail image for an [[IModel]] or [ViewDefinition]($backend).\r\n * @see [IModelDb.Views.getThumbnail]($backend) or [IModelConnection.Views.getThumbnail]($frontend) to obtain a thumbnail for a view.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ThumbnailProps extends ThumbnailFormatProps {\r\n /** The image encoded as specified by [[ThumbnailFormatProps.format]]. */\r\n image: Uint8Array;\r\n}\r\n"]}
|