@itwin/frontend-devtools 4.6.0-dev.22 → 4.6.0-dev.23
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/lib/cjs/FrontEndDevTools.js +1 -1
- package/lib/cjs/FrontEndDevTools.js.map +1 -1
- package/lib/cjs/effects/Convolution.js +6 -6
- package/lib/cjs/effects/Convolution.js.map +1 -1
- package/lib/cjs/effects/EffectTools.js +2 -2
- package/lib/cjs/effects/EffectTools.js.map +1 -1
- package/lib/cjs/effects/Explosion.js +1 -1
- package/lib/cjs/effects/Explosion.js.map +1 -1
- package/lib/cjs/effects/FlipImage.js +2 -2
- package/lib/cjs/effects/FlipImage.js.map +1 -1
- package/lib/cjs/effects/LensDistortion.js +2 -2
- package/lib/cjs/effects/LensDistortion.js.map +1 -1
- package/lib/cjs/effects/Saturation.js +2 -2
- package/lib/cjs/effects/Saturation.js.map +1 -1
- package/lib/cjs/effects/Snow.js +2 -2
- package/lib/cjs/effects/Snow.js.map +1 -1
- package/lib/cjs/effects/Vignette.js +2 -2
- package/lib/cjs/effects/Vignette.js.map +1 -1
- package/lib/cjs/tools/AnimationIntervalTool.js +1 -1
- package/lib/cjs/tools/AnimationIntervalTool.js.map +1 -1
- package/lib/cjs/tools/ChangeUnitsTool.js +1 -1
- package/lib/cjs/tools/ChangeUnitsTool.js.map +1 -1
- package/lib/cjs/tools/ClipTools.js +4 -4
- package/lib/cjs/tools/ClipTools.js.map +1 -1
- package/lib/cjs/tools/DisplayStyleTools.js +10 -10
- package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
- package/lib/cjs/tools/EmphasizeElementsTool.js +5 -5
- package/lib/cjs/tools/EmphasizeElementsTool.js.map +1 -1
- package/lib/cjs/tools/FrustumDecoration.js +3 -3
- package/lib/cjs/tools/FrustumDecoration.js.map +1 -1
- package/lib/cjs/tools/InspectElementTool.js +1 -1
- package/lib/cjs/tools/InspectElementTool.js.map +1 -1
- package/lib/cjs/tools/MapLayerTool.js +20 -20
- package/lib/cjs/tools/MapLayerTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTileLoadTime.js +1 -1
- package/lib/cjs/tools/MeasureTileLoadTime.js.map +1 -1
- package/lib/cjs/tools/ModelAppearanceTools.js +8 -8
- package/lib/cjs/tools/ModelAppearanceTools.js.map +1 -1
- package/lib/cjs/tools/PlanProjectionTools.js +3 -3
- package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
- package/lib/cjs/tools/PlanarMaskTools.js +12 -12
- package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
- package/lib/cjs/tools/ProjectExtents.js +1 -1
- package/lib/cjs/tools/ProjectExtents.js.map +1 -1
- package/lib/cjs/tools/RealityModelTools.js +10 -10
- package/lib/cjs/tools/RealityModelTools.js.map +1 -1
- package/lib/cjs/tools/RealityTransitionTool.js +1 -1
- package/lib/cjs/tools/RealityTransitionTool.js.map +1 -1
- package/lib/cjs/tools/RenderSystemTools.js +3 -3
- package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
- package/lib/cjs/tools/RenderTargetTools.js +10 -10
- package/lib/cjs/tools/RenderTargetTools.js.map +1 -1
- package/lib/cjs/tools/ReportWebGLCompatibilityTool.js +1 -1
- package/lib/cjs/tools/ReportWebGLCompatibilityTool.js.map +1 -1
- package/lib/cjs/tools/SavedViews.js +3 -3
- package/lib/cjs/tools/SavedViews.js.map +1 -1
- package/lib/cjs/tools/ScheduleScriptTools.js +3 -3
- package/lib/cjs/tools/ScheduleScriptTools.js.map +1 -1
- package/lib/cjs/tools/SelectionTools.js +2 -2
- package/lib/cjs/tools/SelectionTools.js.map +1 -1
- package/lib/cjs/tools/SetGpuMemoryLimitTool.js +1 -1
- package/lib/cjs/tools/SetGpuMemoryLimitTool.js.map +1 -1
- package/lib/cjs/tools/SourceAspectIdTools.js +2 -2
- package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
- package/lib/cjs/tools/TileRequestDecoration.js +1 -1
- package/lib/cjs/tools/TileRequestDecoration.js.map +1 -1
- package/lib/cjs/tools/TileTreeBoundsDecoration.js +1 -1
- package/lib/cjs/tools/TileTreeBoundsDecoration.js.map +1 -1
- package/lib/cjs/tools/ToolTipProvider.js +1 -1
- package/lib/cjs/tools/ToolTipProvider.js.map +1 -1
- package/lib/cjs/tools/ViewportTools.js +19 -19
- package/lib/cjs/tools/ViewportTools.js.map +1 -1
- package/lib/cjs/tools/parseArgs.js.map +1 -1
- package/lib/cjs/tools/parseBoolean.js.map +1 -1
- package/lib/cjs/tools/parseToggle.js.map +1 -1
- package/lib/cjs/ui/ColorInput.js.map +1 -1
- package/lib/cjs/ui/ComboBox.js.map +1 -1
- package/lib/cjs/ui/DataList.js.map +1 -1
- package/lib/cjs/ui/NumericInput.js.map +1 -1
- package/lib/cjs/ui/RadioBox.js.map +1 -1
- package/lib/cjs/ui/Slider.js.map +1 -1
- package/lib/cjs/ui/TextBox.js.map +1 -1
- package/lib/cjs/widgets/DiagnosticsPanel.js.map +1 -1
- package/lib/cjs/widgets/FpsTracker.js.map +1 -1
- package/lib/cjs/widgets/GpuProfiler.js.map +1 -1
- package/lib/cjs/widgets/KeyinField.js +1 -1
- package/lib/cjs/widgets/KeyinField.js.map +1 -1
- package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
- package/lib/cjs/widgets/RenderCommandBreakdown.js.map +1 -1
- package/lib/cjs/widgets/TileMemoryBreakdown.js.map +1 -1
- package/lib/cjs/widgets/TileStatisticsTracker.js.map +1 -1
- package/lib/cjs/widgets/ToolSettingsTracker.js +1 -1
- package/lib/cjs/widgets/ToolSettingsTracker.js.map +1 -1
- package/lib/esm/FrontEndDevTools.js +1 -2
- package/lib/esm/FrontEndDevTools.js.map +1 -1
- package/lib/esm/effects/Convolution.js +6 -12
- package/lib/esm/effects/Convolution.js.map +1 -1
- package/lib/esm/effects/EffectTools.js +2 -4
- package/lib/esm/effects/EffectTools.js.map +1 -1
- package/lib/esm/effects/Explosion.js +1 -2
- package/lib/esm/effects/Explosion.js.map +1 -1
- package/lib/esm/effects/FlipImage.js +2 -4
- package/lib/esm/effects/FlipImage.js.map +1 -1
- package/lib/esm/effects/LensDistortion.js +2 -4
- package/lib/esm/effects/LensDistortion.js.map +1 -1
- package/lib/esm/effects/Saturation.js +2 -4
- package/lib/esm/effects/Saturation.js.map +1 -1
- package/lib/esm/effects/Snow.js +2 -4
- package/lib/esm/effects/Snow.js.map +1 -1
- package/lib/esm/effects/Vignette.js +2 -4
- package/lib/esm/effects/Vignette.js.map +1 -1
- package/lib/esm/tools/AnimationIntervalTool.js +1 -2
- package/lib/esm/tools/AnimationIntervalTool.js.map +1 -1
- package/lib/esm/tools/ChangeUnitsTool.js +1 -2
- package/lib/esm/tools/ChangeUnitsTool.js.map +1 -1
- package/lib/esm/tools/ClipTools.js +4 -8
- package/lib/esm/tools/ClipTools.js.map +1 -1
- package/lib/esm/tools/DisplayStyleTools.js +10 -20
- package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
- package/lib/esm/tools/EmphasizeElementsTool.js +5 -10
- package/lib/esm/tools/EmphasizeElementsTool.js.map +1 -1
- package/lib/esm/tools/FrustumDecoration.js +3 -6
- package/lib/esm/tools/FrustumDecoration.js.map +1 -1
- package/lib/esm/tools/InspectElementTool.js +1 -2
- package/lib/esm/tools/InspectElementTool.js.map +1 -1
- package/lib/esm/tools/MapLayerTool.js +20 -40
- package/lib/esm/tools/MapLayerTool.js.map +1 -1
- package/lib/esm/tools/MeasureTileLoadTime.js +1 -2
- package/lib/esm/tools/MeasureTileLoadTime.js.map +1 -1
- package/lib/esm/tools/ModelAppearanceTools.js +8 -16
- package/lib/esm/tools/ModelAppearanceTools.js.map +1 -1
- package/lib/esm/tools/PlanProjectionTools.js +3 -6
- package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
- package/lib/esm/tools/PlanarMaskTools.js +12 -24
- package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
- package/lib/esm/tools/ProjectExtents.js +1 -2
- package/lib/esm/tools/ProjectExtents.js.map +1 -1
- package/lib/esm/tools/RealityModelTools.js +10 -20
- package/lib/esm/tools/RealityModelTools.js.map +1 -1
- package/lib/esm/tools/RealityTransitionTool.js +1 -2
- package/lib/esm/tools/RealityTransitionTool.js.map +1 -1
- package/lib/esm/tools/RenderSystemTools.js +3 -6
- package/lib/esm/tools/RenderSystemTools.js.map +1 -1
- package/lib/esm/tools/RenderTargetTools.js +10 -20
- package/lib/esm/tools/RenderTargetTools.js.map +1 -1
- package/lib/esm/tools/ReportWebGLCompatibilityTool.js +1 -2
- package/lib/esm/tools/ReportWebGLCompatibilityTool.js.map +1 -1
- package/lib/esm/tools/SavedViews.js +3 -6
- package/lib/esm/tools/SavedViews.js.map +1 -1
- package/lib/esm/tools/ScheduleScriptTools.js +3 -6
- package/lib/esm/tools/ScheduleScriptTools.js.map +1 -1
- package/lib/esm/tools/SelectionTools.js +2 -4
- package/lib/esm/tools/SelectionTools.js.map +1 -1
- package/lib/esm/tools/SetGpuMemoryLimitTool.js +1 -2
- package/lib/esm/tools/SetGpuMemoryLimitTool.js.map +1 -1
- package/lib/esm/tools/SourceAspectIdTools.js +2 -4
- package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
- package/lib/esm/tools/TileRequestDecoration.js +1 -2
- package/lib/esm/tools/TileRequestDecoration.js.map +1 -1
- package/lib/esm/tools/TileTreeBoundsDecoration.js +1 -2
- package/lib/esm/tools/TileTreeBoundsDecoration.js.map +1 -1
- package/lib/esm/tools/ToolTipProvider.js +1 -2
- package/lib/esm/tools/ToolTipProvider.js.map +1 -1
- package/lib/esm/tools/ViewportTools.js +19 -38
- package/lib/esm/tools/ViewportTools.js.map +1 -1
- package/lib/esm/tools/parseArgs.js.map +1 -1
- package/lib/esm/tools/parseBoolean.js.map +1 -1
- package/lib/esm/tools/parseToggle.js.map +1 -1
- package/lib/esm/ui/ColorInput.js.map +1 -1
- package/lib/esm/ui/ComboBox.js.map +1 -1
- package/lib/esm/ui/DataList.js.map +1 -1
- package/lib/esm/ui/NumericInput.js.map +1 -1
- package/lib/esm/ui/RadioBox.js.map +1 -1
- package/lib/esm/ui/Slider.js.map +1 -1
- package/lib/esm/ui/TextBox.js.map +1 -1
- package/lib/esm/widgets/DiagnosticsPanel.js.map +1 -1
- package/lib/esm/widgets/FpsTracker.js.map +1 -1
- package/lib/esm/widgets/GpuProfiler.js.map +1 -1
- package/lib/esm/widgets/KeyinField.js.map +1 -1
- package/lib/esm/widgets/MemoryTracker.js.map +1 -1
- package/lib/esm/widgets/RenderCommandBreakdown.js.map +1 -1
- package/lib/esm/widgets/TileMemoryBreakdown.js.map +1 -1
- package/lib/esm/widgets/TileStatisticsTracker.js.map +1 -1
- package/lib/esm/widgets/ToolSettingsTracker.js +1 -2
- package/lib/esm/widgets/ToolSettingsTracker.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrustumDecoration.js","sourceRoot":"","sources":["../../../src/tools/FrustumDecoration.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { Map4d, Point3d } from \"@itwin/core-geometry\";\r\nimport { ColorByName, ColorDef, Frustum, LinePixels, Npc } from \"@itwin/core-common\";\r\nimport {\r\n CoordSystem, DecorateContext, Decorator, GraphicBuilder, GraphicType, IModelApp, Tool, Viewport, ViewState, ViewState3d,\r\n} from \"@itwin/core-frontend\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\ninterface FrustumDecorationOptions {\r\n showPreloadFrustum?: boolean;\r\n showBackgroundIntersections?: boolean;\r\n}\r\n\r\n/**\r\n * Decorates the viewport with a graphical depiction of a Frustum.\r\n * This is obviously only useful when drawn inside a viewport using a *different* Frustum.\r\n * Options for doing so include:\r\n * - Having more than one viewport, and drawing the frustum of one viewport inside the other viewports; and\r\n * - Allowing the user to take a snapshot of the current frustum, then navigate the view to inspect it within the same viewport.\r\n */\r\nclass FrustumDecoration {\r\n private readonly _worldFrustum: Frustum;\r\n private readonly _adjustedWorldFrustum: Frustum;\r\n private readonly _preloadFrustum: Frustum;\r\n private readonly _npcFrustum: Frustum;\r\n private readonly _worldToNpcMap: Map4d;\r\n private readonly _eyePoint: Point3d;\r\n private readonly _focalPlane: number;\r\n private readonly _isCameraOn: boolean;\r\n\r\n private constructor(vp: Viewport, view: ViewState3d, private readonly _options?: FrustumDecorationOptions) {\r\n this._worldFrustum = vp.getFrustum(CoordSystem.World, false);\r\n this._adjustedWorldFrustum = vp.getFrustum(CoordSystem.World, true);\r\n this._preloadFrustum = vp.viewingSpace.getPreloadFrustum();\r\n this._npcFrustum = vp.getFrustum(CoordSystem.Npc, true);\r\n this._worldToNpcMap = vp.viewingSpace.worldToNpcMap.clone();\r\n this._eyePoint = view.camera.getEyePoint().clone();\r\n this._focalPlane = vp.worldToNpc(view.getTargetPoint()).z;\r\n this._isCameraOn = vp.isCameraOn;\r\n }\r\n\r\n public static create(vp: Viewport, options?: FrustumDecorationOptions): FrustumDecoration | undefined {\r\n const view = vp.view.isSpatialView() ? vp.view : undefined;\r\n return undefined !== view ? new FrustumDecoration(vp, view, options) : undefined;\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n\r\n if (this._isCameraOn)\r\n FrustumDecoration.drawEyePositionAndFocalPlane(builder, this._npcFrustum, this._worldToNpcMap, this._eyePoint, this._focalPlane, context.viewport);\r\n\r\n FrustumDecoration.drawFrustumBox(builder, this._worldFrustum, false, context.viewport); // show original frustum...\r\n FrustumDecoration.drawFrustumBox(builder, this._adjustedWorldFrustum, true, context.viewport); // show adjusted frustum...\r\n const options = this._options;\r\n if (options !== undefined) {\r\n if (options.showPreloadFrustum)\r\n FrustumDecoration.drawPreloadFrustum(builder, this._preloadFrustum);\r\n\r\n if (options?.showBackgroundIntersections) {\r\n const backgroundMapGeometry = context.viewport.view.displayStyle.getBackgroundMapGeometry();\r\n if (backgroundMapGeometry)\r\n backgroundMapGeometry.addFrustumDecorations(builder, this._adjustedWorldFrustum);\r\n }\r\n }\r\n context.addDecorationFromBuilder(builder);\r\n }\r\n\r\n public static drawPreloadFrustum(builder: GraphicBuilder, frustum: Frustum) {\r\n const preloadColor = ColorDef.create(ColorByName.coral);\r\n builder.setSymbology(preloadColor, preloadColor, 1, LinePixels.Code2);\r\n builder.addFrustum(frustum);\r\n }\r\n\r\n public static drawFrustumBox(builder: GraphicBuilder, frustum: Frustum, adjustedBox: boolean, vp: Viewport): void {\r\n const backPts = this.getPlanePts(frustum.points, false); // back plane\r\n const frontPts = this.getPlanePts(frustum.points, true); // front plane\r\n\r\n const bgColor = vp.view.backgroundColor;\r\n const backAndBottomColor = ColorDef.red.adjustedForContrast(bgColor);\r\n const frontAndTopLeftColor = ColorDef.blue.adjustedForContrast(bgColor);\r\n const frontAndTopRightColor = ColorDef.green.adjustedForContrast(bgColor);\r\n const edgeWeight = adjustedBox ? 2 : 1;\r\n const edgeStyle = adjustedBox ? LinePixels.Solid : LinePixels.Code2;\r\n\r\n // Back plane\r\n builder.setSymbology(backAndBottomColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(backPts);\r\n\r\n // Front plane\r\n builder.setSymbology(frontAndTopLeftColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(frontPts);\r\n\r\n // Bottom edge\r\n builder.setSymbology(backAndBottomColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(this.getEdgePts(backPts, frontPts, 0));\r\n builder.addLineString(this.getEdgePts(backPts, frontPts, 1));\r\n\r\n // Top edge\r\n builder.setSymbology(frontAndTopRightColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(this.getEdgePts(backPts, frontPts, 2));\r\n builder.setSymbology(frontAndTopLeftColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(this.getEdgePts(backPts, frontPts, 3));\r\n }\r\n\r\n private static getEdgePts(startPts: Point3d[], endPts: Point3d[], index: number): Point3d[] {\r\n return [\r\n startPts[index],\r\n endPts[index],\r\n ];\r\n }\r\n\r\n private static getPlanePts(frustPts: Point3d[], front: boolean): Point3d[] {\r\n const baseIndex = front ? Npc._001 : Npc._000;\r\n const planePts = [\r\n frustPts[baseIndex + Npc._000],\r\n frustPts[baseIndex + Npc._100],\r\n frustPts[baseIndex + Npc._110],\r\n frustPts[baseIndex + Npc._010],\r\n ];\r\n\r\n planePts.push(planePts[0]);\r\n return planePts;\r\n }\r\n\r\n public static drawEyePositionAndFocalPlane(builder: GraphicBuilder, npcFrustum: Frustum, worldToNpcMap: Map4d, eyePoint: Point3d, focusPlaneNpc: number, vp: Viewport): void {\r\n // Eye position...\r\n const contrastColor = vp.getContrastToBackgroundColor();\r\n builder.setSymbology(contrastColor, ColorDef.black, 8);\r\n builder.addPointString([eyePoint]);\r\n\r\n // Focal plane...\r\n const focalPtsNpc = FrustumDecoration.getPlanePts(npcFrustum.points, false);\r\n const focalPtsWorld: Point3d[] = [];\r\n for (const npcPt of focalPtsNpc)\r\n focalPtsWorld.push(Point3d.create(npcPt.x, npcPt.y, focusPlaneNpc));\r\n worldToNpcMap.transform1.multiplyPoint3dArrayQuietNormalize(focalPtsWorld);\r\n\r\n const bgColor = vp.view.backgroundColor;\r\n const focalPlaneColor = ColorDef.green.adjustedForContrast(bgColor);\r\n const focalTransColor = focalPlaneColor.withTransparency(100);\r\n builder.setSymbology(focalPlaneColor, focalTransColor, 2);\r\n builder.addLineString(focalPtsWorld);\r\n builder.addShape(focalPtsWorld);\r\n }\r\n}\r\n\r\n/**\r\n * Decorates the viewport with a graphical depiction of a Frustum.\r\n * This is obviously only useful when drawn inside a viewport using a *different* Frustum.\r\n * Options for doing so include:\r\n * - Having more than one viewport, and drawing the frustum of one viewport inside the other viewports; and\r\n * - Allowing the user to take a snapshot of the current frustum, then navigate the view to inspect it within the same viewport.\r\n * @beta\r\n */\r\nexport class FrustumDecorator implements Decorator {\r\n private readonly _decoration?: FrustumDecoration;\r\n\r\n private constructor(vp: Viewport, options?: FrustumDecorationOptions) {\r\n this._decoration = FrustumDecoration.create(vp, options);\r\n }\r\n\r\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\r\n public readonly useCachedDecorations = true;\r\n\r\n public decorate(context: DecorateContext): void {\r\n if (undefined !== this._decoration)\r\n this._decoration.decorate(context);\r\n }\r\n\r\n private static _instance?: FrustumDecorator;\r\n\r\n /** Add the decoration to the specified viewport. */\r\n public static enable(vp: Viewport, options?: FrustumDecorationOptions): void {\r\n FrustumDecorator.disable();\r\n FrustumDecorator._instance = new FrustumDecorator(vp, options);\r\n IModelApp.viewManager.addDecorator(FrustumDecorator._instance);\r\n }\r\n\r\n /** Remove the decoration from the specified viewport. */\r\n public static disable(): void {\r\n const instance = FrustumDecorator._instance;\r\n if (undefined !== instance) {\r\n IModelApp.viewManager.dropDecorator(instance);\r\n FrustumDecorator._instance = undefined;\r\n }\r\n }\r\n\r\n public static get isEnabled() { return undefined !== FrustumDecorator._instance; }\r\n}\r\n\r\n/** Enable (\"ON\"), disable (\"OFF\"), or toggle (\"TOGGLE\" or omitted) the [[FrustumDecorator]].\r\n * @beta\r\n */\r\nexport class ToggleFrustumSnapshotTool extends Tool {\r\n public static override toolId = \"ToggleFrustumSnapshot\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(enable?: boolean, showPreloadFrustum?: boolean, showBackgroundIntersections?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return true;\r\n\r\n if (undefined === enable)\r\n enable = !FrustumDecorator.isEnabled;\r\n\r\n if (enable !== FrustumDecorator.isEnabled) {\r\n if (enable) {\r\n FrustumDecorator.enable(vp, { showPreloadFrustum, showBackgroundIntersections });\r\n vp.onChangeView.addOnce(() => FrustumDecorator.disable());\r\n } else {\r\n FrustumDecorator.disable();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n let showPreload, showBackgroundIntersections, enable;\r\n for (const arg of args) {\r\n if (arg === \"preload\")\r\n showPreload = true;\r\n else if (arg === \"background\")\r\n showBackgroundIntersections = true;\r\n else\r\n enable = parseToggle(arg);\r\n }\r\n\r\n if (typeof enable !== \"string\")\r\n await this.run(enable, showPreload, showBackgroundIntersections);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * Decorates the viewport with a graphical depiction of a Frustum from the currently selected viewport.\r\n * Only useful when more than one spatial viewport is open.\r\n */\r\nclass SelectedViewFrustumDecoration {\r\n private static _decorator?: SelectedViewFrustumDecoration;\r\n protected _targetVp: Viewport;\r\n protected _removeDecorationListener?: () => void;\r\n protected _removeViewChangedListener?: () => void;\r\n\r\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\r\n public readonly useCachedDecorations = true;\r\n\r\n public constructor(vp: Viewport, private _options?: FrustumDecorationOptions) {\r\n this._targetVp = vp;\r\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\r\n this._removeViewChangedListener = vp.onViewChanged.addListener(this.onViewChanged, this); // eslint-disable-line @typescript-eslint/unbound-method\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n }\r\n\r\n protected stop(): void {\r\n if (this._removeDecorationListener) {\r\n this._removeDecorationListener();\r\n this._removeDecorationListener = undefined;\r\n }\r\n if (this._removeViewChangedListener) {\r\n this._removeViewChangedListener();\r\n this._removeViewChangedListener = undefined;\r\n }\r\n\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n }\r\n\r\n public onViewChanged(targetVp: Viewport): void {\r\n if (targetVp !== this._targetVp)\r\n return;\r\n const decorator = SelectedViewFrustumDecoration._decorator;\r\n if (undefined !== decorator) {\r\n for (const vp of IModelApp.viewManager) {\r\n if (vp !== this._targetVp)\r\n vp.invalidateCachedDecorations(decorator);\r\n }\r\n }\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const vp = context.viewport;\r\n if (!this._targetVp.view.isSpatialView() || vp === this._targetVp || !vp.view.isSpatialView())\r\n return;\r\n\r\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n\r\n if (this._targetVp.isCameraOn) {\r\n const npcFrustum = this._targetVp.getFrustum(CoordSystem.Npc, true);\r\n const focalPlane = this._targetVp.worldToNpc(this._targetVp.view.getTargetPoint()).z;\r\n FrustumDecoration.drawEyePositionAndFocalPlane(builder, npcFrustum, this._targetVp.viewingSpace.worldToNpcMap, this._targetVp.view.camera.getEyePoint(), focalPlane, context.viewport);\r\n }\r\n\r\n const worldFrustum = this._targetVp.getFrustum(CoordSystem.World, false);\r\n const adjustedWorldFrustum = this._targetVp.getFrustum(CoordSystem.World, true);\r\n\r\n FrustumDecoration.drawFrustumBox(builder, worldFrustum, false, context.viewport); // show original frustum...\r\n FrustumDecoration.drawFrustumBox(builder, adjustedWorldFrustum, true, context.viewport); // show adjusted frustum...\r\n if (this._options && this._options.showPreloadFrustum)\r\n FrustumDecoration.drawPreloadFrustum(builder, context.viewport.viewingSpace.getPreloadFrustum());\r\n\r\n context.addDecorationFromBuilder(builder);\r\n }\r\n\r\n // Returns true if decoration becomes enabled.\r\n public static toggle(vp: Viewport, enabled?: boolean): boolean {\r\n if (undefined !== enabled) {\r\n const alreadyEnabled = undefined !== SelectedViewFrustumDecoration._decorator;\r\n if (enabled === alreadyEnabled)\r\n return alreadyEnabled;\r\n }\r\n\r\n if (undefined === SelectedViewFrustumDecoration._decorator) {\r\n SelectedViewFrustumDecoration._decorator = new SelectedViewFrustumDecoration(vp);\r\n return true;\r\n } else {\r\n SelectedViewFrustumDecoration._decorator.stop();\r\n SelectedViewFrustumDecoration._decorator = undefined;\r\n return false;\r\n }\r\n }\r\n}\r\n\r\n/** Enable (\"ON\"), disable (\"OFF\"), or toggle (\"TOGGLE\" or omitted) the selected view frustum decoration.\r\n * @beta\r\n */\r\nexport class ToggleSelectedViewFrustumTool extends Tool {\r\n public static override toolId = \"ToggleSelectedViewFrustum\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(enable?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n if (SelectedViewFrustumDecoration.toggle(vp, enable)) {\r\n const remove = vp.onChangeView.addListener((_vp: Viewport, prev: ViewState) => {\r\n if (!prev.hasSameCoordinates(vp.view)) {\r\n SelectedViewFrustumDecoration.toggle(vp, false);\r\n remove();\r\n }\r\n });\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\")\r\n await this.run(enable);\r\n\r\n return true;\r\n }\r\n}\r\n\r\nclass ShadowFrustumDecoration {\r\n private static _instance?: ShadowFrustumDecoration;\r\n private _targetVp: Viewport;\r\n private _cleanup?: () => void;\r\n\r\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\r\n public readonly useCachedDecorations = true;\r\n\r\n public constructor(vp: Viewport) {\r\n this._targetVp = vp;\r\n const removeDecorator = IModelApp.viewManager.addDecorator(this);\r\n const removeOnRender = vp.onRender.addListener((_) => this.onRender());\r\n this._cleanup = () => {\r\n removeDecorator();\r\n removeOnRender();\r\n };\r\n\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n }\r\n\r\n private stop(): void {\r\n if (undefined !== this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n }\r\n\r\n public onRender(): void {\r\n const decorator = ShadowFrustumDecoration._instance;\r\n if (undefined !== decorator) {\r\n for (const vp of IModelApp.viewManager) {\r\n if (vp !== this._targetVp)\r\n vp.invalidateCachedDecorations(decorator);\r\n }\r\n }\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const frustum = this._targetVp.target.debugControl!.shadowFrustum;\r\n if (undefined === frustum)\r\n return;\r\n\r\n const thisVp = context.viewport;\r\n if (thisVp === this._targetVp || !thisVp.view.isSpatialView())\r\n return;\r\n\r\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n FrustumDecoration.drawFrustumBox(builder, frustum, false, thisVp);\r\n context.addDecorationFromBuilder(builder);\r\n }\r\n\r\n public static toggle(vp: Viewport, enabled?: boolean): void {\r\n const instance = ShadowFrustumDecoration._instance;\r\n if (undefined !== enabled) {\r\n const alreadyEnabled = undefined !== instance;\r\n if (enabled === alreadyEnabled)\r\n return;\r\n }\r\n\r\n if (undefined === instance) {\r\n ShadowFrustumDecoration._instance = new ShadowFrustumDecoration(vp);\r\n } else {\r\n instance.stop();\r\n ShadowFrustumDecoration._instance = undefined;\r\n }\r\n }\r\n}\r\n\r\n/** Toggle visualization of the selected viewport's shadow frustum in all other viewports.\r\n * @beta\r\n */\r\nexport class ToggleShadowFrustumTool extends Tool {\r\n public static override toolId = \"ToggleShadowFrustum\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(enable?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined !== vp && vp.view.isSpatialView())\r\n ShadowFrustumDecoration.toggle(vp, enable);\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\")\r\n await this.run(enable);\r\n\r\n return true;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"FrustumDecoration.js","sourceRoot":"","sources":["../../../src/tools/FrustumDecoration.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { Map4d, Point3d } from \"@itwin/core-geometry\";\r\nimport { ColorByName, ColorDef, Frustum, LinePixels, Npc } from \"@itwin/core-common\";\r\nimport {\r\n CoordSystem, DecorateContext, Decorator, GraphicBuilder, GraphicType, IModelApp, Tool, Viewport, ViewState, ViewState3d,\r\n} from \"@itwin/core-frontend\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\ninterface FrustumDecorationOptions {\r\n showPreloadFrustum?: boolean;\r\n showBackgroundIntersections?: boolean;\r\n}\r\n\r\n/**\r\n * Decorates the viewport with a graphical depiction of a Frustum.\r\n * This is obviously only useful when drawn inside a viewport using a *different* Frustum.\r\n * Options for doing so include:\r\n * - Having more than one viewport, and drawing the frustum of one viewport inside the other viewports; and\r\n * - Allowing the user to take a snapshot of the current frustum, then navigate the view to inspect it within the same viewport.\r\n */\r\nclass FrustumDecoration {\r\n private readonly _worldFrustum: Frustum;\r\n private readonly _adjustedWorldFrustum: Frustum;\r\n private readonly _preloadFrustum: Frustum;\r\n private readonly _npcFrustum: Frustum;\r\n private readonly _worldToNpcMap: Map4d;\r\n private readonly _eyePoint: Point3d;\r\n private readonly _focalPlane: number;\r\n private readonly _isCameraOn: boolean;\r\n\r\n private constructor(vp: Viewport, view: ViewState3d, private readonly _options?: FrustumDecorationOptions) {\r\n this._worldFrustum = vp.getFrustum(CoordSystem.World, false);\r\n this._adjustedWorldFrustum = vp.getFrustum(CoordSystem.World, true);\r\n this._preloadFrustum = vp.viewingSpace.getPreloadFrustum();\r\n this._npcFrustum = vp.getFrustum(CoordSystem.Npc, true);\r\n this._worldToNpcMap = vp.viewingSpace.worldToNpcMap.clone();\r\n this._eyePoint = view.camera.getEyePoint().clone();\r\n this._focalPlane = vp.worldToNpc(view.getTargetPoint()).z;\r\n this._isCameraOn = vp.isCameraOn;\r\n }\r\n\r\n public static create(vp: Viewport, options?: FrustumDecorationOptions): FrustumDecoration | undefined {\r\n const view = vp.view.isSpatialView() ? vp.view : undefined;\r\n return undefined !== view ? new FrustumDecoration(vp, view, options) : undefined;\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n\r\n if (this._isCameraOn)\r\n FrustumDecoration.drawEyePositionAndFocalPlane(builder, this._npcFrustum, this._worldToNpcMap, this._eyePoint, this._focalPlane, context.viewport);\r\n\r\n FrustumDecoration.drawFrustumBox(builder, this._worldFrustum, false, context.viewport); // show original frustum...\r\n FrustumDecoration.drawFrustumBox(builder, this._adjustedWorldFrustum, true, context.viewport); // show adjusted frustum...\r\n const options = this._options;\r\n if (options !== undefined) {\r\n if (options.showPreloadFrustum)\r\n FrustumDecoration.drawPreloadFrustum(builder, this._preloadFrustum);\r\n\r\n if (options?.showBackgroundIntersections) {\r\n const backgroundMapGeometry = context.viewport.view.displayStyle.getBackgroundMapGeometry();\r\n if (backgroundMapGeometry)\r\n backgroundMapGeometry.addFrustumDecorations(builder, this._adjustedWorldFrustum);\r\n }\r\n }\r\n context.addDecorationFromBuilder(builder);\r\n }\r\n\r\n public static drawPreloadFrustum(builder: GraphicBuilder, frustum: Frustum) {\r\n const preloadColor = ColorDef.create(ColorByName.coral);\r\n builder.setSymbology(preloadColor, preloadColor, 1, LinePixels.Code2);\r\n builder.addFrustum(frustum);\r\n }\r\n\r\n public static drawFrustumBox(builder: GraphicBuilder, frustum: Frustum, adjustedBox: boolean, vp: Viewport): void {\r\n const backPts = this.getPlanePts(frustum.points, false); // back plane\r\n const frontPts = this.getPlanePts(frustum.points, true); // front plane\r\n\r\n const bgColor = vp.view.backgroundColor;\r\n const backAndBottomColor = ColorDef.red.adjustedForContrast(bgColor);\r\n const frontAndTopLeftColor = ColorDef.blue.adjustedForContrast(bgColor);\r\n const frontAndTopRightColor = ColorDef.green.adjustedForContrast(bgColor);\r\n const edgeWeight = adjustedBox ? 2 : 1;\r\n const edgeStyle = adjustedBox ? LinePixels.Solid : LinePixels.Code2;\r\n\r\n // Back plane\r\n builder.setSymbology(backAndBottomColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(backPts);\r\n\r\n // Front plane\r\n builder.setSymbology(frontAndTopLeftColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(frontPts);\r\n\r\n // Bottom edge\r\n builder.setSymbology(backAndBottomColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(this.getEdgePts(backPts, frontPts, 0));\r\n builder.addLineString(this.getEdgePts(backPts, frontPts, 1));\r\n\r\n // Top edge\r\n builder.setSymbology(frontAndTopRightColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(this.getEdgePts(backPts, frontPts, 2));\r\n builder.setSymbology(frontAndTopLeftColor, ColorDef.black, edgeWeight, edgeStyle);\r\n builder.addLineString(this.getEdgePts(backPts, frontPts, 3));\r\n }\r\n\r\n private static getEdgePts(startPts: Point3d[], endPts: Point3d[], index: number): Point3d[] {\r\n return [\r\n startPts[index],\r\n endPts[index],\r\n ];\r\n }\r\n\r\n private static getPlanePts(frustPts: Point3d[], front: boolean): Point3d[] {\r\n const baseIndex = front ? Npc._001 : Npc._000;\r\n const planePts = [\r\n frustPts[baseIndex + Npc._000],\r\n frustPts[baseIndex + Npc._100],\r\n frustPts[baseIndex + Npc._110],\r\n frustPts[baseIndex + Npc._010],\r\n ];\r\n\r\n planePts.push(planePts[0]);\r\n return planePts;\r\n }\r\n\r\n public static drawEyePositionAndFocalPlane(builder: GraphicBuilder, npcFrustum: Frustum, worldToNpcMap: Map4d, eyePoint: Point3d, focusPlaneNpc: number, vp: Viewport): void {\r\n // Eye position...\r\n const contrastColor = vp.getContrastToBackgroundColor();\r\n builder.setSymbology(contrastColor, ColorDef.black, 8);\r\n builder.addPointString([eyePoint]);\r\n\r\n // Focal plane...\r\n const focalPtsNpc = FrustumDecoration.getPlanePts(npcFrustum.points, false);\r\n const focalPtsWorld: Point3d[] = [];\r\n for (const npcPt of focalPtsNpc)\r\n focalPtsWorld.push(Point3d.create(npcPt.x, npcPt.y, focusPlaneNpc));\r\n worldToNpcMap.transform1.multiplyPoint3dArrayQuietNormalize(focalPtsWorld);\r\n\r\n const bgColor = vp.view.backgroundColor;\r\n const focalPlaneColor = ColorDef.green.adjustedForContrast(bgColor);\r\n const focalTransColor = focalPlaneColor.withTransparency(100);\r\n builder.setSymbology(focalPlaneColor, focalTransColor, 2);\r\n builder.addLineString(focalPtsWorld);\r\n builder.addShape(focalPtsWorld);\r\n }\r\n}\r\n\r\n/**\r\n * Decorates the viewport with a graphical depiction of a Frustum.\r\n * This is obviously only useful when drawn inside a viewport using a *different* Frustum.\r\n * Options for doing so include:\r\n * - Having more than one viewport, and drawing the frustum of one viewport inside the other viewports; and\r\n * - Allowing the user to take a snapshot of the current frustum, then navigate the view to inspect it within the same viewport.\r\n * @beta\r\n */\r\nexport class FrustumDecorator implements Decorator {\r\n private readonly _decoration?: FrustumDecoration;\r\n\r\n private constructor(vp: Viewport, options?: FrustumDecorationOptions) {\r\n this._decoration = FrustumDecoration.create(vp, options);\r\n }\r\n\r\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\r\n public readonly useCachedDecorations = true;\r\n\r\n public decorate(context: DecorateContext): void {\r\n if (undefined !== this._decoration)\r\n this._decoration.decorate(context);\r\n }\r\n\r\n private static _instance?: FrustumDecorator;\r\n\r\n /** Add the decoration to the specified viewport. */\r\n public static enable(vp: Viewport, options?: FrustumDecorationOptions): void {\r\n FrustumDecorator.disable();\r\n FrustumDecorator._instance = new FrustumDecorator(vp, options);\r\n IModelApp.viewManager.addDecorator(FrustumDecorator._instance);\r\n }\r\n\r\n /** Remove the decoration from the specified viewport. */\r\n public static disable(): void {\r\n const instance = FrustumDecorator._instance;\r\n if (undefined !== instance) {\r\n IModelApp.viewManager.dropDecorator(instance);\r\n FrustumDecorator._instance = undefined;\r\n }\r\n }\r\n\r\n public static get isEnabled() { return undefined !== FrustumDecorator._instance; }\r\n}\r\n\r\n/** Enable (\"ON\"), disable (\"OFF\"), or toggle (\"TOGGLE\" or omitted) the [[FrustumDecorator]].\r\n * @beta\r\n */\r\nexport class ToggleFrustumSnapshotTool extends Tool {\r\n public static override toolId = \"ToggleFrustumSnapshot\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n public override async run(enable?: boolean, showPreloadFrustum?: boolean, showBackgroundIntersections?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return true;\r\n\r\n if (undefined === enable)\r\n enable = !FrustumDecorator.isEnabled;\r\n\r\n if (enable !== FrustumDecorator.isEnabled) {\r\n if (enable) {\r\n FrustumDecorator.enable(vp, { showPreloadFrustum, showBackgroundIntersections });\r\n vp.onChangeView.addOnce(() => FrustumDecorator.disable());\r\n } else {\r\n FrustumDecorator.disable();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n let showPreload, showBackgroundIntersections, enable;\r\n for (const arg of args) {\r\n if (arg === \"preload\")\r\n showPreload = true;\r\n else if (arg === \"background\")\r\n showBackgroundIntersections = true;\r\n else\r\n enable = parseToggle(arg);\r\n }\r\n\r\n if (typeof enable !== \"string\")\r\n await this.run(enable, showPreload, showBackgroundIntersections);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * Decorates the viewport with a graphical depiction of a Frustum from the currently selected viewport.\r\n * Only useful when more than one spatial viewport is open.\r\n */\r\nclass SelectedViewFrustumDecoration {\r\n private static _decorator?: SelectedViewFrustumDecoration;\r\n protected _targetVp: Viewport;\r\n protected _removeDecorationListener?: () => void;\r\n protected _removeViewChangedListener?: () => void;\r\n\r\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\r\n public readonly useCachedDecorations = true;\r\n\r\n public constructor(vp: Viewport, private _options?: FrustumDecorationOptions) {\r\n this._targetVp = vp;\r\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\r\n this._removeViewChangedListener = vp.onViewChanged.addListener(this.onViewChanged, this); // eslint-disable-line @typescript-eslint/unbound-method\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n }\r\n\r\n protected stop(): void {\r\n if (this._removeDecorationListener) {\r\n this._removeDecorationListener();\r\n this._removeDecorationListener = undefined;\r\n }\r\n if (this._removeViewChangedListener) {\r\n this._removeViewChangedListener();\r\n this._removeViewChangedListener = undefined;\r\n }\r\n\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n }\r\n\r\n public onViewChanged(targetVp: Viewport): void {\r\n if (targetVp !== this._targetVp)\r\n return;\r\n const decorator = SelectedViewFrustumDecoration._decorator;\r\n if (undefined !== decorator) {\r\n for (const vp of IModelApp.viewManager) {\r\n if (vp !== this._targetVp)\r\n vp.invalidateCachedDecorations(decorator);\r\n }\r\n }\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const vp = context.viewport;\r\n if (!this._targetVp.view.isSpatialView() || vp === this._targetVp || !vp.view.isSpatialView())\r\n return;\r\n\r\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n\r\n if (this._targetVp.isCameraOn) {\r\n const npcFrustum = this._targetVp.getFrustum(CoordSystem.Npc, true);\r\n const focalPlane = this._targetVp.worldToNpc(this._targetVp.view.getTargetPoint()).z;\r\n FrustumDecoration.drawEyePositionAndFocalPlane(builder, npcFrustum, this._targetVp.viewingSpace.worldToNpcMap, this._targetVp.view.camera.getEyePoint(), focalPlane, context.viewport);\r\n }\r\n\r\n const worldFrustum = this._targetVp.getFrustum(CoordSystem.World, false);\r\n const adjustedWorldFrustum = this._targetVp.getFrustum(CoordSystem.World, true);\r\n\r\n FrustumDecoration.drawFrustumBox(builder, worldFrustum, false, context.viewport); // show original frustum...\r\n FrustumDecoration.drawFrustumBox(builder, adjustedWorldFrustum, true, context.viewport); // show adjusted frustum...\r\n if (this._options && this._options.showPreloadFrustum)\r\n FrustumDecoration.drawPreloadFrustum(builder, context.viewport.viewingSpace.getPreloadFrustum());\r\n\r\n context.addDecorationFromBuilder(builder);\r\n }\r\n\r\n // Returns true if decoration becomes enabled.\r\n public static toggle(vp: Viewport, enabled?: boolean): boolean {\r\n if (undefined !== enabled) {\r\n const alreadyEnabled = undefined !== SelectedViewFrustumDecoration._decorator;\r\n if (enabled === alreadyEnabled)\r\n return alreadyEnabled;\r\n }\r\n\r\n if (undefined === SelectedViewFrustumDecoration._decorator) {\r\n SelectedViewFrustumDecoration._decorator = new SelectedViewFrustumDecoration(vp);\r\n return true;\r\n } else {\r\n SelectedViewFrustumDecoration._decorator.stop();\r\n SelectedViewFrustumDecoration._decorator = undefined;\r\n return false;\r\n }\r\n }\r\n}\r\n\r\n/** Enable (\"ON\"), disable (\"OFF\"), or toggle (\"TOGGLE\" or omitted) the selected view frustum decoration.\r\n * @beta\r\n */\r\nexport class ToggleSelectedViewFrustumTool extends Tool {\r\n public static override toolId = \"ToggleSelectedViewFrustum\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(enable?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || !vp.view.isSpatialView())\r\n return false;\r\n if (SelectedViewFrustumDecoration.toggle(vp, enable)) {\r\n const remove = vp.onChangeView.addListener((_vp: Viewport, prev: ViewState) => {\r\n if (!prev.hasSameCoordinates(vp.view)) {\r\n SelectedViewFrustumDecoration.toggle(vp, false);\r\n remove();\r\n }\r\n });\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\")\r\n await this.run(enable);\r\n\r\n return true;\r\n }\r\n}\r\n\r\nclass ShadowFrustumDecoration {\r\n private static _instance?: ShadowFrustumDecoration;\r\n private _targetVp: Viewport;\r\n private _cleanup?: () => void;\r\n\r\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\r\n public readonly useCachedDecorations = true;\r\n\r\n public constructor(vp: Viewport) {\r\n this._targetVp = vp;\r\n const removeDecorator = IModelApp.viewManager.addDecorator(this);\r\n const removeOnRender = vp.onRender.addListener((_) => this.onRender());\r\n this._cleanup = () => {\r\n removeDecorator();\r\n removeOnRender();\r\n };\r\n\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n }\r\n\r\n private stop(): void {\r\n if (undefined !== this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n\r\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\r\n }\r\n\r\n public onRender(): void {\r\n const decorator = ShadowFrustumDecoration._instance;\r\n if (undefined !== decorator) {\r\n for (const vp of IModelApp.viewManager) {\r\n if (vp !== this._targetVp)\r\n vp.invalidateCachedDecorations(decorator);\r\n }\r\n }\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n const frustum = this._targetVp.target.debugControl!.shadowFrustum;\r\n if (undefined === frustum)\r\n return;\r\n\r\n const thisVp = context.viewport;\r\n if (thisVp === this._targetVp || !thisVp.view.isSpatialView())\r\n return;\r\n\r\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\r\n FrustumDecoration.drawFrustumBox(builder, frustum, false, thisVp);\r\n context.addDecorationFromBuilder(builder);\r\n }\r\n\r\n public static toggle(vp: Viewport, enabled?: boolean): void {\r\n const instance = ShadowFrustumDecoration._instance;\r\n if (undefined !== enabled) {\r\n const alreadyEnabled = undefined !== instance;\r\n if (enabled === alreadyEnabled)\r\n return;\r\n }\r\n\r\n if (undefined === instance) {\r\n ShadowFrustumDecoration._instance = new ShadowFrustumDecoration(vp);\r\n } else {\r\n instance.stop();\r\n ShadowFrustumDecoration._instance = undefined;\r\n }\r\n }\r\n}\r\n\r\n/** Toggle visualization of the selected viewport's shadow frustum in all other viewports.\r\n * @beta\r\n */\r\nexport class ToggleShadowFrustumTool extends Tool {\r\n public static override toolId = \"ToggleShadowFrustum\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override async run(enable?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined !== vp && vp.view.isSpatialView())\r\n ShadowFrustumDecoration.toggle(vp, enable);\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\")\r\n await this.run(enable);\r\n\r\n return true;\r\n }\r\n}\r\n"]}
|
|
@@ -194,6 +194,6 @@ class InspectElementTool extends core_frontend_1.PrimitiveTool {
|
|
|
194
194
|
return this.run();
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
|
-
InspectElementTool.toolId = "InspectElement";
|
|
198
197
|
exports.InspectElementTool = InspectElementTool;
|
|
198
|
+
InspectElementTool.toolId = "InspectElement";
|
|
199
199
|
//# sourceMappingURL=InspectElementTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InspectElementTool.js","sourceRoot":"","sources":["../../../src/tools/InspectElementTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyError, Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometrySummaryOptions, GeometrySummaryVerbosity, IModelReadRpcInterface } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, CoreTools, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, MessageBoxIconType, MessageBoxType,\r\n NotifyMessageDetails, OutputMessagePriority, PrimitiveTool,\r\n} from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:\r\n * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as \"0x12cb\";\r\n * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;\r\n * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and\r\n * - `verbosity=0|1|2` controlling the verbosity of the output for each geometric primitive in the geometry stream. Higher values = more detailed information. Note verbosity=2 can produce megabytes of data for certain types of geometric primitives like large meshes.\r\n * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.\r\n * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.\r\n * - `refs=0|1` where 1 indicates that for geometry parts a list of all elements referencing that part should be included in the output. This is extremely computationally expensive.\r\n * If no id is specified, the tool runs in interactive mode: first operating upon the selection set (if any), then allowing the user to select additional elements.\r\n * @beta\r\n */\r\nexport class InspectElementTool extends PrimitiveTool {\r\n public static override toolId = \"InspectElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 6; }\r\n\r\n private _options: GeometrySummaryOptions = {};\r\n private _elementIds?: Id64String[];\r\n private _modal = false;\r\n private _useSelection = false;\r\n private _doCopy = false;\r\n private _explodeParts = false;\r\n\r\n constructor(options?: GeometrySummaryOptions, elementIds?: Id64String[]) {\r\n super();\r\n if (undefined !== options)\r\n this._options = { ...options };\r\n\r\n this._elementIds = elementIds;\r\n }\r\n\r\n private setupAndPromptForNextAction(): void {\r\n this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);\r\n if (!this._useSelection)\r\n IModelApp.accuSnap.enableLocate(true);\r\n\r\n this.showPrompt();\r\n }\r\n\r\n private showPrompt(): void {\r\n CoreTools.outputPromptByKey(this._useSelection ? \"ElementSet.Prompts.ConfirmSelection\" : \"ElementSet.Prompts.IdentifyElement\");\r\n }\r\n\r\n public override autoLockTarget(): void { }\r\n\r\n public override requireWriteableTarget(): boolean { return false; }\r\n\r\n public override async onUnsuspend() {\r\n this.showPrompt();\r\n }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n\r\n if (undefined !== this._elementIds)\r\n this.process(this._elementIds).then(async () => {\r\n await this.onReinitialize();\r\n }).catch((err) => {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, err.toString()));\r\n });\r\n else {\r\n this.setupAndPromptForNextAction();\r\n }\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (this._useSelection) {\r\n if (undefined !== ev.viewport) {\r\n const ids: Id64Array = [];\r\n ev.viewport.iModel.selectionSet.elements.forEach((id) => {\r\n if (!Id64.isInvalid(id) && !Id64.isTransient(id))\r\n ids.push(id);\r\n });\r\n\r\n if (0 === ids.length)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.NotSupportedElmType\")));\r\n else\r\n await this.process(ids);\r\n\r\n await this.onReinitialize();\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n if (undefined === hit || !hit.isElementHit)\r\n return EventHandled.No;\r\n\r\n await this.process([hit.sourceId]);\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onReinitialize() {\r\n if (this._useSelection || undefined !== this._elementIds) {\r\n await this.exitTool();\r\n } else {\r\n await this.onRestartTool();\r\n }\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new InspectElementTool();\r\n if (!await tool.run())\r\n return this.exitTool();\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out: LocateResponse): Promise<LocateFilterStatus> {\r\n return hit.isElementHit ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n private async process(elementIds: Id64String[]) {\r\n const request = {\r\n elementIds,\r\n options: this._options,\r\n };\r\n let messageDetails: NotifyMessageDetails;\r\n try {\r\n let str = await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n if (this._explodeParts) {\r\n const regex = /^part id: (0x[a-f0-9]+)/gm;\r\n const partIds = new Set<string>();\r\n let match;\r\n while (null !== (match = regex.exec(str)))\r\n partIds.add(match[1]);\r\n\r\n if (partIds.size > 0) {\r\n request.elementIds = Array.from(partIds);\r\n str += `\\npart ids: ${JSON.stringify(request.elementIds)}\\n`;\r\n str += await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n }\r\n }\r\n\r\n if (this._doCopy)\r\n copyStringToClipboard(str);\r\n\r\n const brief = `Summary ${this._doCopy ? \"copied to clipboard.\" : \"complete.\"}`;\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, brief, str);\r\n\r\n if (this._modal) {\r\n const div = document.createElement(\"div\");\r\n const appendText = (toAppend: string) => {\r\n const txt = document.createElement(\"div\");\r\n txt.innerText = toAppend;\r\n div.append(txt);\r\n };\r\n\r\n const lines = str.split(\"\\n\");\r\n const maxLines = 30;\r\n let curLine = 0;\r\n for (const line of lines) {\r\n appendText(line);\r\n if (++curLine > maxLines) {\r\n appendText(\"...\");\r\n break;\r\n }\r\n }\r\n\r\n await IModelApp.notifications.openMessageBox(MessageBoxType.Ok, div, MessageBoxIconType.Information);\r\n }\r\n } catch (err) {\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Error, \"Error occurred while generating summary\", BentleyError.getErrorMessage(err));\r\n }\r\n\r\n IModelApp.notifications.outputMessage(messageDetails);\r\n }\r\n\r\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\r\n const args = parseArgs(inputArgs);\r\n const ids = args.get(\"i\");\r\n if (undefined !== ids)\r\n this._elementIds = ids.split(\",\");\r\n\r\n const verbosity = args.getInteger(\"v\");\r\n if (undefined !== verbosity) {\r\n switch (verbosity) {\r\n case 0:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Basic;\r\n break;\r\n case 1:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Detailed;\r\n break;\r\n case 2:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Full;\r\n break;\r\n }\r\n }\r\n\r\n const symbology = args.getBoolean(\"s\");\r\n if (undefined !== symbology)\r\n this._options.verboseSymbology = symbology;\r\n\r\n const placement = args.getBoolean(\"p\");\r\n if (undefined !== placement)\r\n this._options.includePlacement = placement;\r\n\r\n const parts = args.getBoolean(\"r\");\r\n if (true === parts && undefined !== IModelApp.viewManager.selectedView)\r\n this._options.includePartReferences = IModelApp.viewManager.selectedView.view.is3d() ? \"3d\" : \"2d\";\r\n\r\n const modal = args.getBoolean(\"m\");\r\n if (undefined !== modal)\r\n this._modal = modal;\r\n\r\n const doCopy = args.getBoolean(\"c\");\r\n if (undefined !== doCopy)\r\n this._doCopy = doCopy;\r\n\r\n this._explodeParts = true === args.getBoolean(\"e\");\r\n\r\n return this.run();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"InspectElementTool.js","sourceRoot":"","sources":["../../../src/tools/InspectElementTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { BentleyError, Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometrySummaryOptions, GeometrySummaryVerbosity, IModelReadRpcInterface } from \"@itwin/core-common\";\r\nimport {\r\n BeButtonEvent, CoreTools, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, MessageBoxIconType, MessageBoxType,\r\n NotifyMessageDetails, OutputMessagePriority, PrimitiveTool,\r\n} from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:\r\n * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as \"0x12cb\";\r\n * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;\r\n * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and\r\n * - `verbosity=0|1|2` controlling the verbosity of the output for each geometric primitive in the geometry stream. Higher values = more detailed information. Note verbosity=2 can produce megabytes of data for certain types of geometric primitives like large meshes.\r\n * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.\r\n * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.\r\n * - `refs=0|1` where 1 indicates that for geometry parts a list of all elements referencing that part should be included in the output. This is extremely computationally expensive.\r\n * If no id is specified, the tool runs in interactive mode: first operating upon the selection set (if any), then allowing the user to select additional elements.\r\n * @beta\r\n */\r\nexport class InspectElementTool extends PrimitiveTool {\r\n public static override toolId = \"InspectElement\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 6; }\r\n\r\n private _options: GeometrySummaryOptions = {};\r\n private _elementIds?: Id64String[];\r\n private _modal = false;\r\n private _useSelection = false;\r\n private _doCopy = false;\r\n private _explodeParts = false;\r\n\r\n constructor(options?: GeometrySummaryOptions, elementIds?: Id64String[]) {\r\n super();\r\n if (undefined !== options)\r\n this._options = { ...options };\r\n\r\n this._elementIds = elementIds;\r\n }\r\n\r\n private setupAndPromptForNextAction(): void {\r\n this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);\r\n if (!this._useSelection)\r\n IModelApp.accuSnap.enableLocate(true);\r\n\r\n this.showPrompt();\r\n }\r\n\r\n private showPrompt(): void {\r\n CoreTools.outputPromptByKey(this._useSelection ? \"ElementSet.Prompts.ConfirmSelection\" : \"ElementSet.Prompts.IdentifyElement\");\r\n }\r\n\r\n public override autoLockTarget(): void { }\r\n\r\n public override requireWriteableTarget(): boolean { return false; }\r\n\r\n public override async onUnsuspend() {\r\n this.showPrompt();\r\n }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n\r\n if (undefined !== this._elementIds)\r\n this.process(this._elementIds).then(async () => {\r\n await this.onReinitialize();\r\n }).catch((err) => {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, err.toString()));\r\n });\r\n else {\r\n this.setupAndPromptForNextAction();\r\n }\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (this._useSelection) {\r\n if (undefined !== ev.viewport) {\r\n const ids: Id64Array = [];\r\n ev.viewport.iModel.selectionSet.elements.forEach((id) => {\r\n if (!Id64.isInvalid(id) && !Id64.isTransient(id))\r\n ids.push(id);\r\n });\r\n\r\n if (0 === ids.length)\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.NotSupportedElmType\")));\r\n else\r\n await this.process(ids);\r\n\r\n await this.onReinitialize();\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\r\n if (undefined === hit || !hit.isElementHit)\r\n return EventHandled.No;\r\n\r\n await this.process([hit.sourceId]);\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onReinitialize() {\r\n if (this._useSelection || undefined !== this._elementIds) {\r\n await this.exitTool();\r\n } else {\r\n await this.onRestartTool();\r\n }\r\n }\r\n\r\n public async onRestartTool() {\r\n const tool = new InspectElementTool();\r\n if (!await tool.run())\r\n return this.exitTool();\r\n }\r\n\r\n public override async filterHit(hit: HitDetail, _out: LocateResponse): Promise<LocateFilterStatus> {\r\n return hit.isElementHit ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\r\n }\r\n\r\n private async process(elementIds: Id64String[]) {\r\n const request = {\r\n elementIds,\r\n options: this._options,\r\n };\r\n let messageDetails: NotifyMessageDetails;\r\n try {\r\n let str = await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n if (this._explodeParts) {\r\n const regex = /^part id: (0x[a-f0-9]+)/gm;\r\n const partIds = new Set<string>();\r\n let match;\r\n while (null !== (match = regex.exec(str)))\r\n partIds.add(match[1]);\r\n\r\n if (partIds.size > 0) {\r\n request.elementIds = Array.from(partIds);\r\n str += `\\npart ids: ${JSON.stringify(request.elementIds)}\\n`;\r\n str += await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\r\n }\r\n }\r\n\r\n if (this._doCopy)\r\n copyStringToClipboard(str);\r\n\r\n const brief = `Summary ${this._doCopy ? \"copied to clipboard.\" : \"complete.\"}`;\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, brief, str);\r\n\r\n if (this._modal) {\r\n const div = document.createElement(\"div\");\r\n const appendText = (toAppend: string) => {\r\n const txt = document.createElement(\"div\");\r\n txt.innerText = toAppend;\r\n div.append(txt);\r\n };\r\n\r\n const lines = str.split(\"\\n\");\r\n const maxLines = 30;\r\n let curLine = 0;\r\n for (const line of lines) {\r\n appendText(line);\r\n if (++curLine > maxLines) {\r\n appendText(\"...\");\r\n break;\r\n }\r\n }\r\n\r\n await IModelApp.notifications.openMessageBox(MessageBoxType.Ok, div, MessageBoxIconType.Information);\r\n }\r\n } catch (err) {\r\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Error, \"Error occurred while generating summary\", BentleyError.getErrorMessage(err));\r\n }\r\n\r\n IModelApp.notifications.outputMessage(messageDetails);\r\n }\r\n\r\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\r\n const args = parseArgs(inputArgs);\r\n const ids = args.get(\"i\");\r\n if (undefined !== ids)\r\n this._elementIds = ids.split(\",\");\r\n\r\n const verbosity = args.getInteger(\"v\");\r\n if (undefined !== verbosity) {\r\n switch (verbosity) {\r\n case 0:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Basic;\r\n break;\r\n case 1:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Detailed;\r\n break;\r\n case 2:\r\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Full;\r\n break;\r\n }\r\n }\r\n\r\n const symbology = args.getBoolean(\"s\");\r\n if (undefined !== symbology)\r\n this._options.verboseSymbology = symbology;\r\n\r\n const placement = args.getBoolean(\"p\");\r\n if (undefined !== placement)\r\n this._options.includePlacement = placement;\r\n\r\n const parts = args.getBoolean(\"r\");\r\n if (true === parts && undefined !== IModelApp.viewManager.selectedView)\r\n this._options.includePartReferences = IModelApp.viewManager.selectedView.view.is3d() ? \"3d\" : \"2d\";\r\n\r\n const modal = args.getBoolean(\"m\");\r\n if (undefined !== modal)\r\n this._modal = modal;\r\n\r\n const doCopy = args.getBoolean(\"c\");\r\n if (undefined !== doCopy)\r\n this._doCopy = doCopy;\r\n\r\n this._explodeParts = true === args.getBoolean(\"e\");\r\n\r\n return this.run();\r\n }\r\n}\r\n"]}
|
|
@@ -92,8 +92,8 @@ class AttachModelMapLayerTool extends core_frontend_1.Tool {
|
|
|
92
92
|
async onRestartTool() {
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
AttachModelMapLayerTool.toolId = "AttachModelMapLayerTool";
|
|
96
95
|
exports.AttachModelMapLayerTool = AttachModelMapLayerTool;
|
|
96
|
+
AttachModelMapLayerTool.toolId = "AttachModelMapLayerTool";
|
|
97
97
|
/** Attach a map layer from URL base class. */
|
|
98
98
|
class AttachMapLayerByURLBaseTool extends AttachMapLayerBaseTool {
|
|
99
99
|
static get minArgs() { return 1; }
|
|
@@ -127,8 +127,8 @@ class AttachWmsMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
|
127
127
|
return this.run(core_frontend_1.WmsUtilities.getBaseUrl(args[0]), args[1], args[2], args[3]);
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
AttachWmsMapLayerByUrlTool.toolId = "AttachWmsMapLayerTool";
|
|
131
130
|
exports.AttachWmsMapLayerByUrlTool = AttachWmsMapLayerByUrlTool;
|
|
131
|
+
AttachWmsMapLayerByUrlTool.toolId = "AttachWmsMapLayerTool";
|
|
132
132
|
/** This tool attaches a WMTS map layer from a given URL.
|
|
133
133
|
* @beta
|
|
134
134
|
*/
|
|
@@ -141,40 +141,40 @@ class AttachWmtsMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
|
141
141
|
return this.run(core_frontend_1.WmsUtilities.getBaseUrl(args[0]), args[1], args[2], args[3]);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
-
AttachWmtsMapLayerByUrlTool.toolId = "AttachWmtsMapLayerTool";
|
|
145
144
|
exports.AttachWmtsMapLayerByUrlTool = AttachWmtsMapLayerByUrlTool;
|
|
145
|
+
AttachWmtsMapLayerByUrlTool.toolId = "AttachWmtsMapLayerTool";
|
|
146
146
|
/** This tool attaches an ArcGIS map layer from a given URL.
|
|
147
147
|
* @beta
|
|
148
148
|
*/
|
|
149
149
|
class AttachArcGISMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
150
150
|
constructor() { super("ArcGIS"); }
|
|
151
151
|
}
|
|
152
|
-
AttachArcGISMapLayerByUrlTool.toolId = "AttachArcGISMapLayerTool";
|
|
153
152
|
exports.AttachArcGISMapLayerByUrlTool = AttachArcGISMapLayerByUrlTool;
|
|
153
|
+
AttachArcGISMapLayerByUrlTool.toolId = "AttachArcGISMapLayerTool";
|
|
154
154
|
/** This tool attaches an ArcGIS map layer from a given URL.
|
|
155
155
|
* @beta
|
|
156
156
|
*/
|
|
157
157
|
class AttachArcGISFeatureMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
158
158
|
constructor() { super("ArcGISFeature"); }
|
|
159
159
|
}
|
|
160
|
-
AttachArcGISFeatureMapLayerByUrlTool.toolId = "AttachArcGISFeatureMapLayerTool";
|
|
161
160
|
exports.AttachArcGISFeatureMapLayerByUrlTool = AttachArcGISFeatureMapLayerByUrlTool;
|
|
161
|
+
AttachArcGISFeatureMapLayerByUrlTool.toolId = "AttachArcGISFeatureMapLayerTool";
|
|
162
162
|
/** This tool attaches an ArcGIS map layer from a given URL.
|
|
163
163
|
* @beta
|
|
164
164
|
*/
|
|
165
165
|
class AttachOgcApiFeaturesMapLayerTool extends AttachMapLayerByURLBaseTool {
|
|
166
166
|
constructor() { super("OgcApiFeatures"); }
|
|
167
167
|
}
|
|
168
|
-
AttachOgcApiFeaturesMapLayerTool.toolId = "AttachOgcApiFeaturesMapLayerTool";
|
|
169
168
|
exports.AttachOgcApiFeaturesMapLayerTool = AttachOgcApiFeaturesMapLayerTool;
|
|
169
|
+
AttachOgcApiFeaturesMapLayerTool.toolId = "AttachOgcApiFeaturesMapLayerTool";
|
|
170
170
|
/** This tool attaches a map layer from a given tile URL.
|
|
171
171
|
* @beta
|
|
172
172
|
*/
|
|
173
173
|
class AttachTileURLMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
174
174
|
constructor() { super("TileURL"); }
|
|
175
175
|
}
|
|
176
|
-
AttachTileURLMapLayerByUrlTool.toolId = "AttachTileURLMapLayerTool";
|
|
177
176
|
exports.AttachTileURLMapLayerByUrlTool = AttachTileURLMapLayerByUrlTool;
|
|
177
|
+
AttachTileURLMapLayerByUrlTool.toolId = "AttachTileURLMapLayerTool";
|
|
178
178
|
/** This tool add a Map Layer from a specified name (look up in MapLayerSources.json).
|
|
179
179
|
* @beta
|
|
180
180
|
*/
|
|
@@ -204,8 +204,8 @@ class AttachMapLayerTool extends AttachMapLayerBaseTool {
|
|
|
204
204
|
return this.run(args[0]);
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
|
-
AttachMapLayerTool.toolId = "AttachMapLayerTool";
|
|
208
207
|
exports.AttachMapLayerTool = AttachMapLayerTool;
|
|
208
|
+
AttachMapLayerTool.toolId = "AttachMapLayerTool";
|
|
209
209
|
/** This tool attaches a Overlay map layer.
|
|
210
210
|
* @beta
|
|
211
211
|
*/
|
|
@@ -215,8 +215,8 @@ class AttachMapOverlayTool extends AttachMapLayerTool {
|
|
|
215
215
|
this._isBackground = false;
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
AttachMapOverlayTool.toolId = "AttachMapOverlayTool";
|
|
219
218
|
exports.AttachMapOverlayTool = AttachMapOverlayTool;
|
|
219
|
+
AttachMapOverlayTool.toolId = "AttachMapOverlayTool";
|
|
220
220
|
/** Sets map layer base tool.
|
|
221
221
|
* @beta
|
|
222
222
|
*/
|
|
@@ -226,8 +226,8 @@ class SetMapBaseTool extends AttachMapLayerTool {
|
|
|
226
226
|
this._isBase = true;
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
|
-
SetMapBaseTool.toolId = "SetMapBaseTool";
|
|
230
229
|
exports.SetMapBaseTool = SetMapBaseTool;
|
|
230
|
+
SetMapBaseTool.toolId = "SetMapBaseTool";
|
|
231
231
|
/** Detach Map Layers Tool.
|
|
232
232
|
* @beta
|
|
233
233
|
*/
|
|
@@ -247,8 +247,8 @@ class DetachMapLayersTool extends core_frontend_1.Tool {
|
|
|
247
247
|
return true;
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
|
-
DetachMapLayersTool.toolId = "DetachMapLayersTool";
|
|
251
250
|
exports.DetachMapLayersTool = DetachMapLayersTool;
|
|
251
|
+
DetachMapLayersTool.toolId = "DetachMapLayersTool";
|
|
252
252
|
function parseLayerIndex(args) {
|
|
253
253
|
const layerIndex = args.length > 1 ? parseInt(args[1], 10) : 0;
|
|
254
254
|
return isNaN(layerIndex) ? 0 : layerIndex;
|
|
@@ -286,8 +286,8 @@ class MapLayerVisibilityTool extends core_frontend_1.Tool {
|
|
|
286
286
|
return true;
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
|
-
MapLayerVisibilityTool.toolId = "SetMapLayerVisibility";
|
|
290
289
|
exports.MapLayerVisibilityTool = MapLayerVisibilityTool;
|
|
290
|
+
MapLayerVisibilityTool.toolId = "SetMapLayerVisibility";
|
|
291
291
|
/** This tool reorders map layers.
|
|
292
292
|
* @beta
|
|
293
293
|
*/
|
|
@@ -316,8 +316,8 @@ class ReorderMapLayers extends core_frontend_1.Tool {
|
|
|
316
316
|
return true;
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
|
-
ReorderMapLayers.toolId = "ReorderMapLayers";
|
|
320
319
|
exports.ReorderMapLayers = ReorderMapLayers;
|
|
320
|
+
ReorderMapLayers.toolId = "ReorderMapLayers";
|
|
321
321
|
/** This tool sets the transparency of a map layer.
|
|
322
322
|
* @beta
|
|
323
323
|
*/
|
|
@@ -347,8 +347,8 @@ class MapLayerTransparencyTool extends core_frontend_1.Tool {
|
|
|
347
347
|
return true;
|
|
348
348
|
}
|
|
349
349
|
}
|
|
350
|
-
MapLayerTransparencyTool.toolId = "SetMapLayerTransparency";
|
|
351
350
|
exports.MapLayerTransparencyTool = MapLayerTransparencyTool;
|
|
351
|
+
MapLayerTransparencyTool.toolId = "SetMapLayerTransparency";
|
|
352
352
|
/** This tool sets the visibility of the map sublayer.
|
|
353
353
|
* @beta
|
|
354
354
|
*/
|
|
@@ -377,8 +377,8 @@ class MapLayerSubLayerVisibilityTool extends core_frontend_1.Tool {
|
|
|
377
377
|
return true;
|
|
378
378
|
}
|
|
379
379
|
}
|
|
380
|
-
MapLayerSubLayerVisibilityTool.toolId = "SetMapSubLayerVisibility";
|
|
381
380
|
exports.MapLayerSubLayerVisibilityTool = MapLayerSubLayerVisibilityTool;
|
|
381
|
+
MapLayerSubLayerVisibilityTool.toolId = "SetMapSubLayerVisibility";
|
|
382
382
|
/** This tool changes the viewport so it is zoomed to the range of a map layer.
|
|
383
383
|
* @beta
|
|
384
384
|
*/
|
|
@@ -404,8 +404,8 @@ class MapLayerZoomTool extends core_frontend_1.Tool {
|
|
|
404
404
|
return true;
|
|
405
405
|
}
|
|
406
406
|
}
|
|
407
|
-
MapLayerZoomTool.toolId = "MapLayerZoom";
|
|
408
407
|
exports.MapLayerZoomTool = MapLayerZoomTool;
|
|
408
|
+
MapLayerZoomTool.toolId = "MapLayerZoom";
|
|
409
409
|
/** This tool toggles whether to apply terrain heights to the map.
|
|
410
410
|
* @beta
|
|
411
411
|
*/
|
|
@@ -434,8 +434,8 @@ class ToggleTerrainTool extends core_frontend_1.Tool {
|
|
|
434
434
|
return true;
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
|
-
ToggleTerrainTool.toolId = "ToggleTerrain";
|
|
438
437
|
exports.ToggleTerrainTool = ToggleTerrainTool;
|
|
438
|
+
ToggleTerrainTool.toolId = "ToggleTerrain";
|
|
439
439
|
/** This tool changes the color of the base map.
|
|
440
440
|
* @beta
|
|
441
441
|
*/
|
|
@@ -463,8 +463,8 @@ class MapBaseColorTool extends core_frontend_1.Tool {
|
|
|
463
463
|
return (isNaN(red) || red < 0 || red > 255 || isNaN(green) || green < 0 || green > 255 || isNaN(blue) || blue < 0 || blue > 255) ? false : this.run(core_common_1.ColorDef.from(red, green, blue));
|
|
464
464
|
}
|
|
465
465
|
}
|
|
466
|
-
MapBaseColorTool.toolId = "SetMapBaseColorTool";
|
|
467
466
|
exports.MapBaseColorTool = MapBaseColorTool;
|
|
467
|
+
MapBaseColorTool.toolId = "SetMapBaseColorTool";
|
|
468
468
|
/** This tool changes the transparency of the base map.
|
|
469
469
|
* @beta
|
|
470
470
|
*/
|
|
@@ -490,8 +490,8 @@ class MapBaseTransparencyTool extends core_frontend_1.Tool {
|
|
|
490
490
|
return (isNaN(transparency) || transparency < 0 || transparency > 1) ? false : this.run(transparency);
|
|
491
491
|
}
|
|
492
492
|
}
|
|
493
|
-
MapBaseTransparencyTool.toolId = "SetMapBaseTransparencyTool";
|
|
494
493
|
exports.MapBaseTransparencyTool = MapBaseTransparencyTool;
|
|
494
|
+
MapBaseTransparencyTool.toolId = "SetMapBaseTransparencyTool";
|
|
495
495
|
/** This tool changes the visibility of the base map.
|
|
496
496
|
* @beta
|
|
497
497
|
*/
|
|
@@ -517,6 +517,6 @@ class MapBaseVisibilityTool extends core_frontend_1.Tool {
|
|
|
517
517
|
return (visible !== undefined ? this.run(visible) : false);
|
|
518
518
|
}
|
|
519
519
|
}
|
|
520
|
-
MapBaseVisibilityTool.toolId = "SetMapBaseVisibilityTool";
|
|
521
520
|
exports.MapBaseVisibilityTool = MapBaseVisibilityTool;
|
|
521
|
+
MapBaseVisibilityTool.toolId = "SetMapBaseVisibilityTool";
|
|
522
522
|
//# sourceMappingURL=MapLayerTool.js.map
|