@itwin/frontend-devtools 3.0.0-dev.72
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 +723 -0
- package/LICENSE.md +9 -0
- package/README.md +321 -0
- package/lib/ClipboardUtilities.d.ts +9 -0
- package/lib/ClipboardUtilities.d.ts.map +1 -0
- package/lib/ClipboardUtilities.js +27 -0
- package/lib/ClipboardUtilities.js.map +1 -0
- package/lib/FrontEndDevTools.d.ts +19 -0
- package/lib/FrontEndDevTools.d.ts.map +1 -0
- package/lib/FrontEndDevTools.js +203 -0
- package/lib/FrontEndDevTools.js.map +1 -0
- package/lib/effects/Convolution.d.ts +69 -0
- package/lib/effects/Convolution.d.ts.map +1 -0
- package/lib/effects/Convolution.js +166 -0
- package/lib/effects/Convolution.js.map +1 -0
- package/lib/effects/EffectTools.d.ts +34 -0
- package/lib/effects/EffectTools.d.ts.map +1 -0
- package/lib/effects/EffectTools.js +69 -0
- package/lib/effects/EffectTools.js.map +1 -0
- package/lib/effects/Explosion.d.ts +13 -0
- package/lib/effects/Explosion.d.ts.map +1 -0
- package/lib/effects/Explosion.js +168 -0
- package/lib/effects/Explosion.js.map +1 -0
- package/lib/effects/FlipImage.d.ts +31 -0
- package/lib/effects/FlipImage.d.ts.map +1 -0
- package/lib/effects/FlipImage.js +100 -0
- package/lib/effects/FlipImage.js.map +1 -0
- package/lib/effects/LensDistortion.d.ts +35 -0
- package/lib/effects/LensDistortion.d.ts.map +1 -0
- package/lib/effects/LensDistortion.js +110 -0
- package/lib/effects/LensDistortion.js.map +1 -0
- package/lib/effects/Random.d.ts +25 -0
- package/lib/effects/Random.d.ts.map +1 -0
- package/lib/effects/Random.js +50 -0
- package/lib/effects/Random.js.map +1 -0
- package/lib/effects/Saturation.d.ts +31 -0
- package/lib/effects/Saturation.d.ts.map +1 -0
- package/lib/effects/Saturation.js +86 -0
- package/lib/effects/Saturation.js.map +1 -0
- package/lib/effects/Snow.d.ts +77 -0
- package/lib/effects/Snow.d.ts.map +1 -0
- package/lib/effects/Snow.js +187 -0
- package/lib/effects/Snow.js.map +1 -0
- package/lib/effects/Vignette.d.ts +40 -0
- package/lib/effects/Vignette.d.ts.map +1 -0
- package/lib/effects/Vignette.js +109 -0
- package/lib/effects/Vignette.js.map +1 -0
- package/lib/frontend-devtools.d.ts +82 -0
- package/lib/frontend-devtools.d.ts.map +1 -0
- package/lib/frontend-devtools.js +98 -0
- package/lib/frontend-devtools.js.map +1 -0
- package/lib/public/locales/en/FrontendDevTools.json +449 -0
- package/lib/public/sprites/particle_explosion.png +0 -0
- package/lib/public/sprites/particle_flame.png +0 -0
- package/lib/public/sprites/particle_snow.png +0 -0
- package/lib/tools/AnimationIntervalTool.d.ts +16 -0
- package/lib/tools/AnimationIntervalTool.d.ts.map +1 -0
- package/lib/tools/AnimationIntervalTool.js +31 -0
- package/lib/tools/AnimationIntervalTool.js.map +1 -0
- package/lib/tools/ChangeUnitsTool.d.ts +16 -0
- package/lib/tools/ChangeUnitsTool.d.ts.map +1 -0
- package/lib/tools/ChangeUnitsTool.js +42 -0
- package/lib/tools/ChangeUnitsTool.js.map +1 -0
- package/lib/tools/ClipTools.d.ts +68 -0
- package/lib/tools/ClipTools.d.ts.map +1 -0
- package/lib/tools/ClipTools.js +162 -0
- package/lib/tools/ClipTools.js.map +1 -0
- package/lib/tools/DisplayStyleTools.d.ts +99 -0
- package/lib/tools/DisplayStyleTools.d.ts.map +1 -0
- package/lib/tools/DisplayStyleTools.js +242 -0
- package/lib/tools/DisplayStyleTools.js.map +1 -0
- package/lib/tools/EmphasizeElementsTool.d.ts +61 -0
- package/lib/tools/EmphasizeElementsTool.d.ts.map +1 -0
- package/lib/tools/EmphasizeElementsTool.js +155 -0
- package/lib/tools/EmphasizeElementsTool.js.map +1 -0
- package/lib/tools/FrustumDecoration.d.ts +58 -0
- package/lib/tools/FrustumDecoration.d.ts.map +1 -0
- package/lib/tools/FrustumDecoration.js +372 -0
- package/lib/tools/FrustumDecoration.js.map +1 -0
- package/lib/tools/InspectElementTool.d.ts +42 -0
- package/lib/tools/InspectElementTool.d.ts.map +1 -0
- package/lib/tools/InspectElementTool.js +185 -0
- package/lib/tools/InspectElementTool.js.map +1 -0
- package/lib/tools/MapLayerTool.d.ts +248 -0
- package/lib/tools/MapLayerTool.d.ts.map +1 -0
- package/lib/tools/MapLayerTool.js +462 -0
- package/lib/tools/MapLayerTool.js.map +1 -0
- package/lib/tools/MeasureTileLoadTime.d.ts +13 -0
- package/lib/tools/MeasureTileLoadTime.d.ts.map +1 -0
- package/lib/tools/MeasureTileLoadTime.js +61 -0
- package/lib/tools/MeasureTileLoadTime.js.map +1 -0
- package/lib/tools/ModelAppearanceTools.d.ts +87 -0
- package/lib/tools/ModelAppearanceTools.d.ts.map +1 -0
- package/lib/tools/ModelAppearanceTools.js +184 -0
- package/lib/tools/ModelAppearanceTools.js.map +1 -0
- package/lib/tools/PlanProjectionTools.d.ts +41 -0
- package/lib/tools/PlanProjectionTools.d.ts.map +1 -0
- package/lib/tools/PlanProjectionTools.js +150 -0
- package/lib/tools/PlanProjectionTools.js.map +1 -0
- package/lib/tools/PlanarMaskTools.d.ts +182 -0
- package/lib/tools/PlanarMaskTools.d.ts.map +1 -0
- package/lib/tools/PlanarMaskTools.js +366 -0
- package/lib/tools/PlanarMaskTools.js.map +1 -0
- package/lib/tools/ProjectExtents.d.ts +41 -0
- package/lib/tools/ProjectExtents.d.ts.map +1 -0
- package/lib/tools/ProjectExtents.js +108 -0
- package/lib/tools/ProjectExtents.js.map +1 -0
- package/lib/tools/RealityModelTools.d.ts +117 -0
- package/lib/tools/RealityModelTools.d.ts.map +1 -0
- package/lib/tools/RealityModelTools.js +269 -0
- package/lib/tools/RealityModelTools.js.map +1 -0
- package/lib/tools/RealityTransitionTool.d.ts +26 -0
- package/lib/tools/RealityTransitionTool.d.ts.map +1 -0
- package/lib/tools/RealityTransitionTool.js +110 -0
- package/lib/tools/RealityTransitionTool.js.map +1 -0
- package/lib/tools/RenderSystemTools.d.ts +46 -0
- package/lib/tools/RenderSystemTools.d.ts.map +1 -0
- package/lib/tools/RenderSystemTools.js +81 -0
- package/lib/tools/RenderSystemTools.js.map +1 -0
- package/lib/tools/RenderTargetTools.d.ts +101 -0
- package/lib/tools/RenderTargetTools.d.ts.map +1 -0
- package/lib/tools/RenderTargetTools.js +167 -0
- package/lib/tools/RenderTargetTools.js.map +1 -0
- package/lib/tools/ReportWebGLCompatibilityTool.d.ts +12 -0
- package/lib/tools/ReportWebGLCompatibilityTool.d.ts.map +1 -0
- package/lib/tools/ReportWebGLCompatibilityTool.js +31 -0
- package/lib/tools/ReportWebGLCompatibilityTool.js.map +1 -0
- package/lib/tools/SavedViews.d.ts +47 -0
- package/lib/tools/SavedViews.d.ts.map +1 -0
- package/lib/tools/SavedViews.js +137 -0
- package/lib/tools/SavedViews.js.map +1 -0
- package/lib/tools/SelectionTools.d.ts +17 -0
- package/lib/tools/SelectionTools.d.ts.map +1 -0
- package/lib/tools/SelectionTools.js +28 -0
- package/lib/tools/SelectionTools.js.map +1 -0
- package/lib/tools/SetGpuMemoryLimitTool.d.ts +16 -0
- package/lib/tools/SetGpuMemoryLimitTool.d.ts.map +1 -0
- package/lib/tools/SetGpuMemoryLimitTool.js +34 -0
- package/lib/tools/SetGpuMemoryLimitTool.js.map +1 -0
- package/lib/tools/SourceAspectIdTools.d.ts +41 -0
- package/lib/tools/SourceAspectIdTools.d.ts.map +1 -0
- package/lib/tools/SourceAspectIdTools.js +105 -0
- package/lib/tools/SourceAspectIdTools.js.map +1 -0
- package/lib/tools/TileRequestDecoration.d.ts +13 -0
- package/lib/tools/TileRequestDecoration.d.ts.map +1 -0
- package/lib/tools/TileRequestDecoration.js +84 -0
- package/lib/tools/TileRequestDecoration.js.map +1 -0
- package/lib/tools/TileTreeBoundsDecoration.d.ts +12 -0
- package/lib/tools/TileTreeBoundsDecoration.d.ts.map +1 -0
- package/lib/tools/TileTreeBoundsDecoration.js +75 -0
- package/lib/tools/TileTreeBoundsDecoration.js.map +1 -0
- package/lib/tools/ToolTipProvider.d.ts +16 -0
- package/lib/tools/ToolTipProvider.d.ts.map +1 -0
- package/lib/tools/ToolTipProvider.js +67 -0
- package/lib/tools/ToolTipProvider.js.map +1 -0
- package/lib/tools/ViewportTools.d.ts +194 -0
- package/lib/tools/ViewportTools.d.ts.map +1 -0
- package/lib/tools/ViewportTools.js +451 -0
- package/lib/tools/ViewportTools.js.map +1 -0
- package/lib/tools/parseArgs.d.ts +24 -0
- package/lib/tools/parseArgs.d.ts.map +1 -0
- package/lib/tools/parseArgs.js +52 -0
- package/lib/tools/parseArgs.js.map +1 -0
- package/lib/tools/parseBoolean.d.ts +9 -0
- package/lib/tools/parseBoolean.d.ts.map +1 -0
- package/lib/tools/parseBoolean.js +27 -0
- package/lib/tools/parseBoolean.js.map +1 -0
- package/lib/tools/parseToggle.d.ts +9 -0
- package/lib/tools/parseToggle.d.ts.map +1 -0
- package/lib/tools/parseToggle.js +26 -0
- package/lib/tools/parseToggle.js.map +1 -0
- package/lib/ui/Button.d.ts +30 -0
- package/lib/ui/Button.d.ts.map +1 -0
- package/lib/ui/Button.js +27 -0
- package/lib/ui/Button.js.map +1 -0
- package/lib/ui/CheckBox.d.ts +24 -0
- package/lib/ui/CheckBox.d.ts.map +1 -0
- package/lib/ui/CheckBox.js +28 -0
- package/lib/ui/CheckBox.js.map +1 -0
- package/lib/ui/ColorInput.d.ts +28 -0
- package/lib/ui/ColorInput.d.ts.map +1 -0
- package/lib/ui/ColorInput.js +54 -0
- package/lib/ui/ColorInput.js.map +1 -0
- package/lib/ui/ComboBox.d.ts +29 -0
- package/lib/ui/ComboBox.d.ts.map +1 -0
- package/lib/ui/ComboBox.js +43 -0
- package/lib/ui/ComboBox.js.map +1 -0
- package/lib/ui/DataList.d.ts +28 -0
- package/lib/ui/DataList.d.ts.map +1 -0
- package/lib/ui/DataList.js +40 -0
- package/lib/ui/DataList.js.map +1 -0
- package/lib/ui/NestedMenu.d.ts +20 -0
- package/lib/ui/NestedMenu.d.ts.map +1 -0
- package/lib/ui/NestedMenu.js +47 -0
- package/lib/ui/NestedMenu.js.map +1 -0
- package/lib/ui/NumericInput.d.ts +35 -0
- package/lib/ui/NumericInput.d.ts.map +1 -0
- package/lib/ui/NumericInput.js +60 -0
- package/lib/ui/NumericInput.js.map +1 -0
- package/lib/ui/RadioBox.d.ts +29 -0
- package/lib/ui/RadioBox.d.ts.map +1 -0
- package/lib/ui/RadioBox.js +77 -0
- package/lib/ui/RadioBox.js.map +1 -0
- package/lib/ui/Slider.d.ts +25 -0
- package/lib/ui/Slider.d.ts.map +1 -0
- package/lib/ui/Slider.js +33 -0
- package/lib/ui/Slider.js.map +1 -0
- package/lib/ui/TextBox.d.ts +33 -0
- package/lib/ui/TextBox.d.ts.map +1 -0
- package/lib/ui/TextBox.js +57 -0
- package/lib/ui/TextBox.js.map +1 -0
- package/lib/widgets/DiagnosticsPanel.d.ts +36 -0
- package/lib/widgets/DiagnosticsPanel.d.ts.map +1 -0
- package/lib/widgets/DiagnosticsPanel.js +76 -0
- package/lib/widgets/DiagnosticsPanel.js.map +1 -0
- package/lib/widgets/FpsTracker.d.ts +20 -0
- package/lib/widgets/FpsTracker.d.ts.map +1 -0
- package/lib/widgets/FpsTracker.js +57 -0
- package/lib/widgets/FpsTracker.js.map +1 -0
- package/lib/widgets/GpuProfiler.d.ts +17 -0
- package/lib/widgets/GpuProfiler.d.ts.map +1 -0
- package/lib/widgets/GpuProfiler.js +193 -0
- package/lib/widgets/GpuProfiler.js.map +1 -0
- package/lib/widgets/KeyinField.d.ts +62 -0
- package/lib/widgets/KeyinField.d.ts.map +1 -0
- package/lib/widgets/KeyinField.js +188 -0
- package/lib/widgets/KeyinField.js.map +1 -0
- package/lib/widgets/MemoryTracker.d.ts +28 -0
- package/lib/widgets/MemoryTracker.d.ts.map +1 -0
- package/lib/widgets/MemoryTracker.js +244 -0
- package/lib/widgets/MemoryTracker.js.map +1 -0
- package/lib/widgets/TileMemoryBreakdown.d.ts +31 -0
- package/lib/widgets/TileMemoryBreakdown.d.ts.map +1 -0
- package/lib/widgets/TileMemoryBreakdown.js +205 -0
- package/lib/widgets/TileMemoryBreakdown.js.map +1 -0
- package/lib/widgets/TileStatisticsTracker.d.ts +22 -0
- package/lib/widgets/TileStatisticsTracker.d.ts.map +1 -0
- package/lib/widgets/TileStatisticsTracker.js +143 -0
- package/lib/widgets/TileStatisticsTracker.js.map +1 -0
- package/lib/widgets/ToolSettingsTracker.d.ts +10 -0
- package/lib/widgets/ToolSettingsTracker.d.ts.map +1 -0
- package/lib/widgets/ToolSettingsTracker.js +182 -0
- package/lib/widgets/ToolSettingsTracker.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrustumDecoration.js","sourceRoot":"","sources":["../../src/tools/FrustumDecoration.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { Map4d, Point3d } from \"@itwin/core-geometry\";\nimport { ColorByName, ColorDef, Frustum, LinePixels, Npc } from \"@itwin/core-common\";\nimport {\n CoordSystem, DecorateContext, Decorator, GraphicBuilder, GraphicType, IModelApp, Tool, Viewport, ViewState, ViewState3d,\n} from \"@itwin/core-frontend\";\nimport { parseToggle } from \"./parseToggle\";\n\ninterface FrustumDecorationOptions {\n showPreloadFrustum?: boolean;\n showBackgroundIntersections?: boolean;\n}\n\n/**\n * Decorates the viewport with a graphical depiction of a Frustum.\n * This is obviously only useful when drawn inside a viewport using a *different* Frustum.\n * Options for doing so include:\n * - Having more than one viewport, and drawing the frustum of one viewport inside the other viewports; and\n * - Allowing the user to take a snapshot of the current frustum, then navigate the view to inspect it within the same viewport.\n */\nclass FrustumDecoration {\n private readonly _worldFrustum: Frustum;\n private readonly _adjustedWorldFrustum: Frustum;\n private readonly _preloadFrustum: Frustum;\n private readonly _npcFrustum: Frustum;\n private readonly _worldToNpcMap: Map4d;\n private readonly _eyePoint: Point3d;\n private readonly _focalPlane: number;\n private readonly _isCameraOn: boolean;\n\n private constructor(vp: Viewport, view: ViewState3d, private readonly _options?: FrustumDecorationOptions) {\n this._worldFrustum = vp.getFrustum(CoordSystem.World, false);\n this._adjustedWorldFrustum = vp.getFrustum(CoordSystem.World, true);\n this._preloadFrustum = vp.viewingSpace.getPreloadFrustum();\n this._npcFrustum = vp.getFrustum(CoordSystem.Npc, true);\n this._worldToNpcMap = vp.viewingSpace.worldToNpcMap.clone();\n this._eyePoint = view.camera.getEyePoint().clone();\n this._focalPlane = vp.worldToNpc(view.getTargetPoint()).z;\n this._isCameraOn = vp.isCameraOn;\n }\n\n public static create(vp: Viewport, options?: FrustumDecorationOptions): FrustumDecoration | undefined {\n const view = vp.view.isSpatialView() ? vp.view : undefined;\n return undefined !== view ? new FrustumDecoration(vp, view, options) : undefined;\n }\n\n public decorate(context: DecorateContext): void {\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\n\n if (this._isCameraOn)\n FrustumDecoration.drawEyePositionAndFocalPlane(builder, this._npcFrustum, this._worldToNpcMap, this._eyePoint, this._focalPlane, context.viewport);\n\n FrustumDecoration.drawFrustumBox(builder, this._worldFrustum, false, context.viewport); // show original frustum...\n FrustumDecoration.drawFrustumBox(builder, this._adjustedWorldFrustum, true, context.viewport); // show adjusted frustum...\n const options = this._options;\n if (options !== undefined) {\n if (options.showPreloadFrustum)\n FrustumDecoration.drawPreloadFrustum(builder, this._preloadFrustum);\n\n if (options?.showBackgroundIntersections) {\n const backgroundMapGeometry = context.viewport.view.displayStyle.getBackgroundMapGeometry();\n if (backgroundMapGeometry)\n backgroundMapGeometry.addFrustumDecorations(builder, this._adjustedWorldFrustum);\n }\n }\n context.addDecorationFromBuilder(builder);\n }\n\n public static drawPreloadFrustum(builder: GraphicBuilder, frustum: Frustum) {\n const preloadColor = ColorDef.create(ColorByName.coral);\n builder.setSymbology(preloadColor, preloadColor, 1, 2);\n builder.addFrustum(frustum);\n }\n\n public static drawFrustumBox(builder: GraphicBuilder, frustum: Frustum, adjustedBox: boolean, vp: Viewport): void {\n const backPts = this.getPlanePts(frustum.points, false); // back plane\n const frontPts = this.getPlanePts(frustum.points, true); // front plane\n\n const bgColor = vp.view.backgroundColor;\n const backAndBottomColor = ColorDef.red.adjustedForContrast(bgColor);\n const frontAndTopLeftColor = ColorDef.blue.adjustedForContrast(bgColor);\n const frontAndTopRightColor = ColorDef.green.adjustedForContrast(bgColor);\n const edgeWeight = adjustedBox ? 2 : 1;\n const edgeStyle = adjustedBox ? LinePixels.Solid : LinePixels.Code2;\n\n // Back plane\n builder.setSymbology(backAndBottomColor, ColorDef.black, edgeWeight, edgeStyle);\n builder.addLineString(backPts);\n\n // Front plane\n builder.setSymbology(frontAndTopLeftColor, ColorDef.black, edgeWeight, edgeStyle);\n builder.addLineString(frontPts);\n\n // Bottom edge\n builder.setSymbology(backAndBottomColor, ColorDef.black, edgeWeight, edgeStyle);\n builder.addLineString(this.getEdgePts(backPts, frontPts, 0));\n builder.addLineString(this.getEdgePts(backPts, frontPts, 1));\n\n // Top edge\n builder.setSymbology(frontAndTopRightColor, ColorDef.black, edgeWeight, edgeStyle);\n builder.addLineString(this.getEdgePts(backPts, frontPts, 2));\n builder.setSymbology(frontAndTopLeftColor, ColorDef.black, edgeWeight, edgeStyle);\n builder.addLineString(this.getEdgePts(backPts, frontPts, 3));\n }\n\n private static getEdgePts(startPts: Point3d[], endPts: Point3d[], index: number): Point3d[] {\n return [\n startPts[index],\n endPts[index],\n ];\n }\n\n private static getPlanePts(frustPts: Point3d[], front: boolean): Point3d[] {\n const baseIndex = front ? Npc._001 : Npc._000;\n const planePts = [\n frustPts[baseIndex + Npc._000],\n frustPts[baseIndex + Npc._100],\n frustPts[baseIndex + Npc._110],\n frustPts[baseIndex + Npc._010],\n ];\n\n planePts.push(planePts[0]);\n return planePts;\n }\n\n public static drawEyePositionAndFocalPlane(builder: GraphicBuilder, npcFrustum: Frustum, worldToNpcMap: Map4d, eyePoint: Point3d, focusPlaneNpc: number, vp: Viewport): void {\n // Eye position...\n const contrastColor = vp.getContrastToBackgroundColor();\n builder.setSymbology(contrastColor, ColorDef.black, 8);\n builder.addPointString([eyePoint]);\n\n // Focal plane...\n const focalPtsNpc = FrustumDecoration.getPlanePts(npcFrustum.points, false);\n const focalPtsWorld: Point3d[] = [];\n for (const npcPt of focalPtsNpc)\n focalPtsWorld.push(Point3d.create(npcPt.x, npcPt.y, focusPlaneNpc));\n worldToNpcMap.transform1.multiplyPoint3dArrayQuietNormalize(focalPtsWorld);\n\n const bgColor = vp.view.backgroundColor;\n const focalPlaneColor = ColorDef.green.adjustedForContrast(bgColor);\n const focalTransColor = focalPlaneColor.withTransparency(100);\n builder.setSymbology(focalPlaneColor, focalTransColor, 2);\n builder.addLineString(focalPtsWorld);\n builder.addShape(focalPtsWorld);\n }\n}\n\n/**\n * Decorates the viewport with a graphical depiction of a Frustum.\n * This is obviously only useful when drawn inside a viewport using a *different* Frustum.\n * Options for doing so include:\n * - Having more than one viewport, and drawing the frustum of one viewport inside the other viewports; and\n * - Allowing the user to take a snapshot of the current frustum, then navigate the view to inspect it within the same viewport.\n * @beta\n */\nexport class FrustumDecorator implements Decorator {\n private readonly _decoration?: FrustumDecoration;\n\n private constructor(vp: Viewport, options?: FrustumDecorationOptions) {\n this._decoration = FrustumDecoration.create(vp, options);\n }\n\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\n public readonly useCachedDecorations = true;\n\n public decorate(context: DecorateContext): void {\n if (undefined !== this._decoration)\n this._decoration.decorate(context);\n }\n\n private static _instance?: FrustumDecorator;\n\n /** Add the decoration to the specified viewport. */\n public static enable(vp: Viewport, options?: FrustumDecorationOptions): void {\n FrustumDecorator.disable();\n FrustumDecorator._instance = new FrustumDecorator(vp, options);\n IModelApp.viewManager.addDecorator(FrustumDecorator._instance);\n }\n\n /** Remove the decoration from the specified viewport. */\n public static disable(): void {\n const instance = FrustumDecorator._instance;\n if (undefined !== instance) {\n IModelApp.viewManager.dropDecorator(instance);\n FrustumDecorator._instance = undefined;\n }\n }\n\n public static get isEnabled() { return undefined !== FrustumDecorator._instance; }\n}\n\n/** Enable (\"ON\"), disable (\"OFF\"), or toggle (\"TOGGLE\" or omitted) the [[FrustumDecorator]].\n * @beta\n */\nexport class ToggleFrustumSnapshotTool extends Tool {\n public static override toolId = \"ToggleFrustumSnapshot\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n\n public override async run(enable?: boolean, showPreloadFrustum?: boolean, showBackgroundIntersections?: boolean): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return true;\n\n if (undefined === enable)\n enable = !FrustumDecorator.isEnabled;\n\n if (enable !== FrustumDecorator.isEnabled) {\n if (enable) {\n FrustumDecorator.enable(vp, { showPreloadFrustum, showBackgroundIntersections });\n vp.onChangeView.addOnce(() => FrustumDecorator.disable());\n } else {\n FrustumDecorator.disable();\n }\n }\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n let showPreload, showBackgroundIntersections, enable;\n for (const arg of args) {\n if (arg === \"preload\")\n showPreload = true;\n else if (arg === \"background\")\n showBackgroundIntersections = true;\n else\n enable = parseToggle(arg);\n }\n\n if (typeof enable !== \"string\")\n await this.run(enable, showPreload, showBackgroundIntersections);\n\n return true;\n }\n}\n\n/**\n * Decorates the viewport with a graphical depiction of a Frustum from the currently selected viewport.\n * Only useful when more than one spatial viewport is open.\n */\nclass SelectedViewFrustumDecoration {\n private static _decorator?: SelectedViewFrustumDecoration;\n protected _targetVp: Viewport;\n protected _removeDecorationListener?: () => void;\n protected _removeViewChangedListener?: () => void;\n\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\n public readonly useCachedDecorations = true;\n\n public constructor(vp: Viewport, private _options?: FrustumDecorationOptions) {\n this._targetVp = vp;\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\n this._removeViewChangedListener = vp.onViewChanged.addListener(this.onViewChanged, this); // eslint-disable-line @typescript-eslint/unbound-method\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\n }\n\n protected stop(): void {\n if (this._removeDecorationListener) {\n this._removeDecorationListener();\n this._removeDecorationListener = undefined;\n }\n if (this._removeViewChangedListener) {\n this._removeViewChangedListener();\n this._removeViewChangedListener = undefined;\n }\n\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\n }\n\n public onViewChanged(targetVp: Viewport): void {\n if (targetVp !== this._targetVp)\n return;\n const decorator = SelectedViewFrustumDecoration._decorator;\n if (undefined !== decorator) {\n for (const vp of IModelApp.viewManager) {\n if (vp !== this._targetVp)\n vp.invalidateCachedDecorations(decorator);\n }\n }\n }\n\n public decorate(context: DecorateContext): void {\n const vp = context.viewport;\n if (!this._targetVp.view.isSpatialView() || vp === this._targetVp || !vp.view.isSpatialView())\n return;\n\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\n\n if (this._targetVp.isCameraOn) {\n const npcFrustum = this._targetVp.getFrustum(CoordSystem.Npc, true);\n const focalPlane = this._targetVp.worldToNpc(this._targetVp.view.getTargetPoint()).z;\n FrustumDecoration.drawEyePositionAndFocalPlane(builder, npcFrustum, this._targetVp.viewingSpace.worldToNpcMap, this._targetVp.view.camera.getEyePoint(), focalPlane, context.viewport);\n }\n\n const worldFrustum = this._targetVp.getFrustum(CoordSystem.World, false);\n const adjustedWorldFrustum = this._targetVp.getFrustum(CoordSystem.World, true);\n\n FrustumDecoration.drawFrustumBox(builder, worldFrustum, false, context.viewport); // show original frustum...\n FrustumDecoration.drawFrustumBox(builder, adjustedWorldFrustum, true, context.viewport); // show adjusted frustum...\n if (this._options && this._options.showPreloadFrustum)\n FrustumDecoration.drawPreloadFrustum(builder, context.viewport.viewingSpace.getPreloadFrustum());\n\n context.addDecorationFromBuilder(builder);\n }\n\n // Returns true if decoration becomes enabled.\n public static toggle(vp: Viewport, enabled?: boolean): boolean {\n if (undefined !== enabled) {\n const alreadyEnabled = undefined !== SelectedViewFrustumDecoration._decorator;\n if (enabled === alreadyEnabled)\n return alreadyEnabled;\n }\n\n if (undefined === SelectedViewFrustumDecoration._decorator) {\n SelectedViewFrustumDecoration._decorator = new SelectedViewFrustumDecoration(vp);\n return true;\n } else {\n SelectedViewFrustumDecoration._decorator.stop();\n SelectedViewFrustumDecoration._decorator = undefined;\n return false;\n }\n }\n}\n\n/** Enable (\"ON\"), disable (\"OFF\"), or toggle (\"TOGGLE\" or omitted) the selected view frustum decoration.\n * @beta\n */\nexport class ToggleSelectedViewFrustumTool extends Tool {\n public static override toolId = \"ToggleSelectedViewFrustum\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n public override async run(enable?: boolean): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp || !vp.view.isSpatialView())\n return false;\n if (SelectedViewFrustumDecoration.toggle(vp, enable)) {\n const remove = vp.onChangeView.addListener((_vp: Viewport, prev: ViewState) => {\n if (!prev.hasSameCoordinates(vp.view)) {\n SelectedViewFrustumDecoration.toggle(vp, false);\n remove();\n }\n });\n }\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const enable = parseToggle(args[0]);\n if (typeof enable !== \"string\")\n await this.run(enable);\n\n return true;\n }\n}\n\nclass ShadowFrustumDecoration {\n private static _instance?: ShadowFrustumDecoration;\n private _targetVp: Viewport;\n private _cleanup?: () => void;\n\n /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */\n public readonly useCachedDecorations = true;\n\n public constructor(vp: Viewport) {\n this._targetVp = vp;\n const removeDecorator = IModelApp.viewManager.addDecorator(this);\n const removeOnRender = vp.onRender.addListener((_) => this.onRender());\n this._cleanup = () => { removeDecorator(); removeOnRender(); };\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\n }\n\n private stop(): void {\n if (undefined !== this._cleanup) {\n this._cleanup();\n this._cleanup = undefined;\n }\n\n IModelApp.viewManager.invalidateCachedDecorationsAllViews(this);\n }\n\n public onRender(): void {\n const decorator = ShadowFrustumDecoration._instance;\n if (undefined !== decorator) {\n for (const vp of IModelApp.viewManager) {\n if (vp !== this._targetVp)\n vp.invalidateCachedDecorations(decorator);\n }\n }\n }\n\n public decorate(context: DecorateContext): void {\n const frustum = this._targetVp.target.debugControl!.shadowFrustum;\n if (undefined === frustum)\n return;\n\n const thisVp = context.viewport;\n if (thisVp === this._targetVp || !thisVp.view.isSpatialView())\n return;\n\n const builder = context.createGraphicBuilder(GraphicType.WorldDecoration);\n FrustumDecoration.drawFrustumBox(builder, frustum, false, thisVp);\n context.addDecorationFromBuilder(builder);\n }\n\n public static toggle(vp: Viewport, enabled?: boolean): void {\n const instance = ShadowFrustumDecoration._instance;\n if (undefined !== enabled) {\n const alreadyEnabled = undefined !== instance;\n if (enabled === alreadyEnabled)\n return;\n }\n\n if (undefined === instance) {\n ShadowFrustumDecoration._instance = new ShadowFrustumDecoration(vp);\n } else {\n instance.stop();\n ShadowFrustumDecoration._instance = undefined;\n }\n }\n}\n\n/** Toggle visualization of the selected viewport's shadow frustum in all other viewports.\n * @beta\n */\nexport class ToggleShadowFrustumTool extends Tool {\n public static override toolId = \"ToggleShadowFrustum\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n public override async run(enable?: boolean): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined !== vp && vp.view.isSpatialView())\n ShadowFrustumDecoration.toggle(vp, enable);\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const enable = parseToggle(args[0]);\n if (typeof enable !== \"string\")\n await this.run(enable);\n\n return true;\n }\n}\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Tools
|
|
3
|
+
*/
|
|
4
|
+
import { Id64String } from "@itwin/core-bentley";
|
|
5
|
+
import { GeometrySummaryOptions } from "@itwin/core-common";
|
|
6
|
+
import { BeButtonEvent, EventHandled, HitDetail, LocateFilterStatus, LocateResponse, PrimitiveTool } from "@itwin/core-frontend";
|
|
7
|
+
/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:
|
|
8
|
+
* - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as "0x12cb";
|
|
9
|
+
* - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;
|
|
10
|
+
* - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and
|
|
11
|
+
* - `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.
|
|
12
|
+
* - `modal=0|1` where 1 indicates the output should appear in a modal dialog.
|
|
13
|
+
* - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.
|
|
14
|
+
* - `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.
|
|
15
|
+
* 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.
|
|
16
|
+
* @beta
|
|
17
|
+
*/
|
|
18
|
+
export declare class InspectElementTool extends PrimitiveTool {
|
|
19
|
+
static toolId: string;
|
|
20
|
+
static get minArgs(): number;
|
|
21
|
+
static get maxArgs(): number;
|
|
22
|
+
private _options;
|
|
23
|
+
private _elementIds?;
|
|
24
|
+
private _modal;
|
|
25
|
+
private _useSelection;
|
|
26
|
+
private _doCopy;
|
|
27
|
+
constructor(options?: GeometrySummaryOptions, elementIds?: Id64String[]);
|
|
28
|
+
private setupAndPromptForNextAction;
|
|
29
|
+
private showPrompt;
|
|
30
|
+
autoLockTarget(): void;
|
|
31
|
+
requireWriteableTarget(): boolean;
|
|
32
|
+
onUnsuspend(): Promise<void>;
|
|
33
|
+
onPostInstall(): Promise<void>;
|
|
34
|
+
onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled>;
|
|
35
|
+
onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled>;
|
|
36
|
+
onReinitialize(): Promise<void>;
|
|
37
|
+
onRestartTool(): Promise<void>;
|
|
38
|
+
filterHit(hit: HitDetail, _out: LocateResponse): Promise<LocateFilterStatus>;
|
|
39
|
+
private process;
|
|
40
|
+
parseAndRun(...inputArgs: string[]): Promise<boolean>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=InspectElementTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InspectElementTool.d.ts","sourceRoot":"","sources":["../../src/tools/InspectElementTool.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAiC,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAoD,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EACL,aAAa,EAAa,YAAY,EAAE,SAAS,EAAa,kBAAkB,EAAE,cAAc,EACnD,aAAa,EAC3D,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAuB,MAAM,SAAoB;IACjD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAElD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,CAAC,EAAE,sBAAsB,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE;IAQvE,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,UAAU;IAIF,cAAc,IAAI,IAAI;IAEtB,sBAAsB,IAAI,OAAO;IAE3B,WAAW;IAIX,aAAa;IAcb,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA4B1D,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAK1D,cAAc;IAQvB,aAAa;IAMJ,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAIpF,OAAO;IA0CC,WAAW,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA2C5E"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.InspectElementTool = void 0;
|
|
8
|
+
/** @packageDocumentation
|
|
9
|
+
* @module Tools
|
|
10
|
+
*/
|
|
11
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
|
+
const core_common_1 = require("@itwin/core-common");
|
|
13
|
+
const core_frontend_1 = require("@itwin/core-frontend");
|
|
14
|
+
const ClipboardUtilities_1 = require("../ClipboardUtilities");
|
|
15
|
+
const parseArgs_1 = require("./parseArgs");
|
|
16
|
+
/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:
|
|
17
|
+
* - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as "0x12cb";
|
|
18
|
+
* - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;
|
|
19
|
+
* - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and
|
|
20
|
+
* - `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.
|
|
21
|
+
* - `modal=0|1` where 1 indicates the output should appear in a modal dialog.
|
|
22
|
+
* - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.
|
|
23
|
+
* - `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.
|
|
24
|
+
* 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.
|
|
25
|
+
* @beta
|
|
26
|
+
*/
|
|
27
|
+
class InspectElementTool extends core_frontend_1.PrimitiveTool {
|
|
28
|
+
constructor(options, elementIds) {
|
|
29
|
+
super();
|
|
30
|
+
this._options = {};
|
|
31
|
+
this._modal = false;
|
|
32
|
+
this._useSelection = false;
|
|
33
|
+
this._doCopy = false;
|
|
34
|
+
if (undefined !== options)
|
|
35
|
+
this._options = Object.assign({}, options);
|
|
36
|
+
this._elementIds = elementIds;
|
|
37
|
+
}
|
|
38
|
+
static get minArgs() { return 0; }
|
|
39
|
+
static get maxArgs() { return 6; }
|
|
40
|
+
setupAndPromptForNextAction() {
|
|
41
|
+
this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);
|
|
42
|
+
if (!this._useSelection)
|
|
43
|
+
core_frontend_1.IModelApp.accuSnap.enableLocate(true);
|
|
44
|
+
this.showPrompt();
|
|
45
|
+
}
|
|
46
|
+
showPrompt() {
|
|
47
|
+
core_frontend_1.CoreTools.outputPromptByKey(this._useSelection ? "ElementSet.Prompts.ConfirmSelection" : "ElementSet.Prompts.IdentifyElement");
|
|
48
|
+
}
|
|
49
|
+
autoLockTarget() { }
|
|
50
|
+
requireWriteableTarget() { return false; }
|
|
51
|
+
async onUnsuspend() {
|
|
52
|
+
this.showPrompt();
|
|
53
|
+
}
|
|
54
|
+
async onPostInstall() {
|
|
55
|
+
await super.onPostInstall();
|
|
56
|
+
if (undefined !== this._elementIds)
|
|
57
|
+
this.process(this._elementIds).then(async () => {
|
|
58
|
+
await this.onReinitialize();
|
|
59
|
+
}).catch((err) => {
|
|
60
|
+
core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, err.toString()));
|
|
61
|
+
});
|
|
62
|
+
else {
|
|
63
|
+
this.setupAndPromptForNextAction();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async onDataButtonDown(ev) {
|
|
67
|
+
if (this._useSelection) {
|
|
68
|
+
if (undefined !== ev.viewport) {
|
|
69
|
+
const ids = [];
|
|
70
|
+
ev.viewport.iModel.selectionSet.elements.forEach((id) => {
|
|
71
|
+
if (!core_bentley_1.Id64.isInvalid(id) && !core_bentley_1.Id64.isTransient(id))
|
|
72
|
+
ids.push(id);
|
|
73
|
+
});
|
|
74
|
+
if (0 === ids.length)
|
|
75
|
+
core_frontend_1.IModelApp.notifications.outputMessage(new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, core_frontend_1.CoreTools.translate("ElementSet.Error.NotSupportedElmType")));
|
|
76
|
+
else
|
|
77
|
+
await this.process(ids);
|
|
78
|
+
await this.onReinitialize();
|
|
79
|
+
return core_frontend_1.EventHandled.Yes;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const hit = await core_frontend_1.IModelApp.locateManager.doLocate(new core_frontend_1.LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);
|
|
83
|
+
if (undefined === hit || !hit.isElementHit)
|
|
84
|
+
return core_frontend_1.EventHandled.No;
|
|
85
|
+
await this.process([hit.sourceId]);
|
|
86
|
+
this.setupAndPromptForNextAction();
|
|
87
|
+
return core_frontend_1.EventHandled.No;
|
|
88
|
+
}
|
|
89
|
+
async onResetButtonUp(_ev) {
|
|
90
|
+
await this.onReinitialize();
|
|
91
|
+
return core_frontend_1.EventHandled.No;
|
|
92
|
+
}
|
|
93
|
+
async onReinitialize() {
|
|
94
|
+
if (this._useSelection || undefined !== this._elementIds) {
|
|
95
|
+
await this.exitTool();
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
await this.onRestartTool();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async onRestartTool() {
|
|
102
|
+
const tool = new InspectElementTool();
|
|
103
|
+
if (!await tool.run())
|
|
104
|
+
return this.exitTool();
|
|
105
|
+
}
|
|
106
|
+
async filterHit(hit, _out) {
|
|
107
|
+
return hit.isElementHit ? core_frontend_1.LocateFilterStatus.Accept : core_frontend_1.LocateFilterStatus.Reject;
|
|
108
|
+
}
|
|
109
|
+
async process(elementIds) {
|
|
110
|
+
const request = {
|
|
111
|
+
elementIds,
|
|
112
|
+
options: this._options,
|
|
113
|
+
};
|
|
114
|
+
let messageDetails;
|
|
115
|
+
try {
|
|
116
|
+
const str = await core_common_1.IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);
|
|
117
|
+
if (this._doCopy)
|
|
118
|
+
(0, ClipboardUtilities_1.copyStringToClipboard)(str);
|
|
119
|
+
const brief = `Summary ${this._doCopy ? "copied to clipboard." : "complete."}`;
|
|
120
|
+
messageDetails = new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Info, brief, str);
|
|
121
|
+
if (this._modal) {
|
|
122
|
+
const div = document.createElement("div");
|
|
123
|
+
const appendText = (toAppend) => {
|
|
124
|
+
const txt = document.createElement("div");
|
|
125
|
+
txt.innerText = toAppend;
|
|
126
|
+
div.append(txt);
|
|
127
|
+
};
|
|
128
|
+
const lines = str.split("\n");
|
|
129
|
+
const maxLines = 30;
|
|
130
|
+
let curLine = 0;
|
|
131
|
+
for (const line of lines) {
|
|
132
|
+
appendText(line);
|
|
133
|
+
if (++curLine > maxLines) {
|
|
134
|
+
appendText("...");
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
await core_frontend_1.IModelApp.notifications.openMessageBox(core_frontend_1.MessageBoxType.Ok, div, core_frontend_1.MessageBoxIconType.Information);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
messageDetails = new core_frontend_1.NotifyMessageDetails(core_frontend_1.OutputMessagePriority.Error, "Error occurred while generating summary", core_bentley_1.BentleyError.getErrorMessage(err));
|
|
143
|
+
}
|
|
144
|
+
core_frontend_1.IModelApp.notifications.outputMessage(messageDetails);
|
|
145
|
+
}
|
|
146
|
+
async parseAndRun(...inputArgs) {
|
|
147
|
+
const args = (0, parseArgs_1.parseArgs)(inputArgs);
|
|
148
|
+
const ids = args.get("i");
|
|
149
|
+
if (undefined !== ids)
|
|
150
|
+
this._elementIds = ids.split(",");
|
|
151
|
+
const verbosity = args.getInteger("v");
|
|
152
|
+
if (undefined !== verbosity) {
|
|
153
|
+
switch (verbosity) {
|
|
154
|
+
case 0:
|
|
155
|
+
this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Basic;
|
|
156
|
+
break;
|
|
157
|
+
case 1:
|
|
158
|
+
this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Detailed;
|
|
159
|
+
break;
|
|
160
|
+
case 2:
|
|
161
|
+
this._options.geometryVerbosity = core_common_1.GeometrySummaryVerbosity.Full;
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const symbology = args.getBoolean("s");
|
|
166
|
+
if (undefined !== symbology)
|
|
167
|
+
this._options.verboseSymbology = symbology;
|
|
168
|
+
const placement = args.getBoolean("p");
|
|
169
|
+
if (undefined !== placement)
|
|
170
|
+
this._options.includePlacement = placement;
|
|
171
|
+
const parts = args.getBoolean("r");
|
|
172
|
+
if (true === parts && undefined !== core_frontend_1.IModelApp.viewManager.selectedView)
|
|
173
|
+
this._options.includePartReferences = core_frontend_1.IModelApp.viewManager.selectedView.view.is3d() ? "3d" : "2d";
|
|
174
|
+
const modal = args.getBoolean("m");
|
|
175
|
+
if (undefined !== modal)
|
|
176
|
+
this._modal = modal;
|
|
177
|
+
const doCopy = args.getBoolean("c");
|
|
178
|
+
if (undefined !== doCopy)
|
|
179
|
+
this._doCopy = doCopy;
|
|
180
|
+
return this.run();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.InspectElementTool = InspectElementTool;
|
|
184
|
+
InspectElementTool.toolId = "InspectElement";
|
|
185
|
+
//# sourceMappingURL=InspectElementTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InspectElementTool.js","sourceRoot":"","sources":["../../src/tools/InspectElementTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { BentleyError, Id64, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { GeometrySummaryOptions, GeometrySummaryVerbosity, IModelReadRpcInterface } from \"@itwin/core-common\";\nimport {\n BeButtonEvent, CoreTools, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, MessageBoxIconType, MessageBoxType,\n NotifyMessageDetails, OutputMessagePriority, PrimitiveTool,\n} from \"@itwin/core-frontend\";\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\nimport { parseArgs } from \"./parseArgs\";\n\n/** Creates a readable text summary of a geometric element or geometry part. The keyin takes the following arguments, all of which are optional:\n * - `id=elementId,elementId,elementId` comma-separated list of element Ids where each `elementId` is a hexadecimal element Id such as \"0x12cb\";\n * - `symbology=0|1` where 1 indicates detailed symbology information should be included in the output;\n * - `placement=0|1` where 1 indicates detailed geometric element placement should be included; and\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.\n * - `modal=0|1` where 1 indicates the output should appear in a modal dialog.\n * - `copy=0|1` where 1 indicates the output should be copied to the clipboard. Defaults to true.\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.\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.\n * @beta\n */\nexport class InspectElementTool extends PrimitiveTool {\n public static override toolId = \"InspectElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 6; }\n\n private _options: GeometrySummaryOptions = {};\n private _elementIds?: Id64String[];\n private _modal = false;\n private _useSelection = false;\n private _doCopy = false;\n\n constructor(options?: GeometrySummaryOptions, elementIds?: Id64String[]) {\n super();\n if (undefined !== options)\n this._options = { ...options };\n\n this._elementIds = elementIds;\n }\n\n private setupAndPromptForNextAction(): void {\n this._useSelection = (undefined !== this.targetView && this.targetView.iModel.selectionSet.isActive);\n if (!this._useSelection)\n IModelApp.accuSnap.enableLocate(true);\n\n this.showPrompt();\n }\n\n private showPrompt(): void {\n CoreTools.outputPromptByKey(this._useSelection ? \"ElementSet.Prompts.ConfirmSelection\" : \"ElementSet.Prompts.IdentifyElement\");\n }\n\n public override autoLockTarget(): void { }\n\n public override requireWriteableTarget(): boolean { return false; }\n\n public override async onUnsuspend() {\n this.showPrompt();\n }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n\n if (undefined !== this._elementIds)\n this.process(this._elementIds).then(async () => {\n await this.onReinitialize();\n }).catch((err) => {\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, err.toString()));\n });\n else {\n this.setupAndPromptForNextAction();\n }\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (this._useSelection) {\n if (undefined !== ev.viewport) {\n const ids: Id64Array = [];\n ev.viewport.iModel.selectionSet.elements.forEach((id) => {\n if (!Id64.isInvalid(id) && !Id64.isTransient(id))\n ids.push(id);\n });\n\n if (0 === ids.length)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, CoreTools.translate(\"ElementSet.Error.NotSupportedElmType\")));\n else\n await this.process(ids);\n\n await this.onReinitialize();\n return EventHandled.Yes;\n }\n }\n\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\n if (undefined === hit || !hit.isElementHit)\n return EventHandled.No;\n\n await this.process([hit.sourceId]);\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.onReinitialize();\n return EventHandled.No;\n }\n\n public override async onReinitialize() {\n if (this._useSelection || undefined !== this._elementIds) {\n await this.exitTool();\n } else {\n await this.onRestartTool();\n }\n }\n\n public async onRestartTool() {\n const tool = new InspectElementTool();\n if (!await tool.run())\n return this.exitTool();\n }\n\n public override async filterHit(hit: HitDetail, _out: LocateResponse): Promise<LocateFilterStatus> {\n return hit.isElementHit ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n }\n\n private async process(elementIds: Id64String[]) {\n const request = {\n elementIds,\n options: this._options,\n };\n let messageDetails: NotifyMessageDetails;\n try {\n const str = await IModelReadRpcInterface.getClientForRouting(this.iModel.routingContext.token).getGeometrySummary(this.iModel.getRpcProps(), request);\n if (this._doCopy)\n copyStringToClipboard(str);\n\n const brief = `Summary ${this._doCopy ? \"copied to clipboard.\" : \"complete.\"}`;\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, brief, str);\n\n if (this._modal) {\n const div = document.createElement(\"div\");\n const appendText = (toAppend: string) => {\n const txt = document.createElement(\"div\");\n txt.innerText = toAppend;\n div.append(txt);\n };\n\n const lines = str.split(\"\\n\");\n const maxLines = 30;\n let curLine = 0;\n for (const line of lines) {\n appendText(line);\n if (++curLine > maxLines) {\n appendText(\"...\");\n break;\n }\n }\n\n await IModelApp.notifications.openMessageBox(MessageBoxType.Ok, div, MessageBoxIconType.Information);\n }\n } catch (err) {\n messageDetails = new NotifyMessageDetails(OutputMessagePriority.Error, \"Error occurred while generating summary\", BentleyError.getErrorMessage(err));\n }\n\n IModelApp.notifications.outputMessage(messageDetails);\n }\n\n public override async parseAndRun(...inputArgs: string[]): Promise<boolean> {\n const args = parseArgs(inputArgs);\n const ids = args.get(\"i\");\n if (undefined !== ids)\n this._elementIds = ids.split(\",\");\n\n const verbosity = args.getInteger(\"v\");\n if (undefined !== verbosity) {\n switch (verbosity) {\n case 0:\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Basic;\n break;\n case 1:\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Detailed;\n break;\n case 2:\n this._options.geometryVerbosity = GeometrySummaryVerbosity.Full;\n break;\n }\n }\n\n const symbology = args.getBoolean(\"s\");\n if (undefined !== symbology)\n this._options.verboseSymbology = symbology;\n\n const placement = args.getBoolean(\"p\");\n if (undefined !== placement)\n this._options.includePlacement = placement;\n\n const parts = args.getBoolean(\"r\");\n if (true === parts && undefined !== IModelApp.viewManager.selectedView)\n this._options.includePartReferences = IModelApp.viewManager.selectedView.view.is3d() ? \"3d\" : \"2d\";\n\n const modal = args.getBoolean(\"m\");\n if (undefined !== modal)\n this._modal = modal;\n\n const doCopy = args.getBoolean(\"c\");\n if (undefined !== doCopy)\n this._doCopy = doCopy;\n\n return this.run();\n }\n}\n"]}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Tools
|
|
3
|
+
*/
|
|
4
|
+
import { ColorDef } from "@itwin/core-common";
|
|
5
|
+
import { MapLayerSource, Tool } from "@itwin/core-frontend";
|
|
6
|
+
/** Base class for attaching map layer tool. */
|
|
7
|
+
declare class AttachMapLayerBaseTool extends Tool {
|
|
8
|
+
protected _isBackground: boolean;
|
|
9
|
+
protected _isBase: boolean;
|
|
10
|
+
constructor(_isBackground?: boolean, _isBase?: boolean);
|
|
11
|
+
protected doAttach(source?: MapLayerSource): void;
|
|
12
|
+
}
|
|
13
|
+
/** Attach a map layer from URL base class. */
|
|
14
|
+
declare class AttachMapLayerByURLBaseTool extends AttachMapLayerBaseTool {
|
|
15
|
+
protected _formatId: string;
|
|
16
|
+
static get minArgs(): number;
|
|
17
|
+
static get maxArgs(): number;
|
|
18
|
+
constructor(_formatId: string);
|
|
19
|
+
run(url: string, name?: string, userName?: string, password?: string): Promise<boolean>;
|
|
20
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
21
|
+
}
|
|
22
|
+
/** This tool attaches a WMS map layer from a given URL.
|
|
23
|
+
* @beta
|
|
24
|
+
*/
|
|
25
|
+
export declare class AttachWmsMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
26
|
+
static toolId: string;
|
|
27
|
+
constructor();
|
|
28
|
+
/** This method runs the tool, attaching a WMS map layer from a given URL.
|
|
29
|
+
* @param args contains url, name, userName, password in array order
|
|
30
|
+
*/
|
|
31
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
/** This tool attaches a WMTS map layer from a given URL.
|
|
34
|
+
* @beta
|
|
35
|
+
*/
|
|
36
|
+
export declare class AttachWmtsMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
37
|
+
static toolId: string;
|
|
38
|
+
constructor();
|
|
39
|
+
/** This method runs the tool, attaching a WMTS map layer from a given URL.
|
|
40
|
+
* @param args contains url, name, userName, password in array order
|
|
41
|
+
*/
|
|
42
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
43
|
+
}
|
|
44
|
+
/** This tool attaches an ArcGIS map layer from a given URL.
|
|
45
|
+
* @beta
|
|
46
|
+
*/
|
|
47
|
+
export declare class AttachArcGISMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
48
|
+
static toolId: string;
|
|
49
|
+
constructor();
|
|
50
|
+
}
|
|
51
|
+
/** This tool attaches a map layer from a given tile URL.
|
|
52
|
+
* @beta
|
|
53
|
+
*/
|
|
54
|
+
export declare class AttachTileURLMapLayerByUrlTool extends AttachMapLayerByURLBaseTool {
|
|
55
|
+
static toolId: string;
|
|
56
|
+
constructor();
|
|
57
|
+
}
|
|
58
|
+
/** This tool add a Map Layer from a specified name (look up in MapLayerSources.json).
|
|
59
|
+
* @beta
|
|
60
|
+
*/
|
|
61
|
+
export declare class AttachMapLayerTool extends AttachMapLayerBaseTool {
|
|
62
|
+
static toolId: string;
|
|
63
|
+
static get minArgs(): number;
|
|
64
|
+
static get maxArgs(): number;
|
|
65
|
+
/** This method runs the tool, adding a map layer from a specified name in MayLayerSources.json.
|
|
66
|
+
* @param name the name of the map layer to add
|
|
67
|
+
*/
|
|
68
|
+
run(name: string): Promise<boolean>;
|
|
69
|
+
/** Executes this tool's run method with args[0] containing `name`.
|
|
70
|
+
* @see [[run]]
|
|
71
|
+
*/
|
|
72
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
73
|
+
}
|
|
74
|
+
/** This tool attaches a Overlay map layer.
|
|
75
|
+
* @beta
|
|
76
|
+
*/
|
|
77
|
+
export declare class AttachMapOverlayTool extends AttachMapLayerTool {
|
|
78
|
+
static toolId: string;
|
|
79
|
+
constructor();
|
|
80
|
+
}
|
|
81
|
+
/** Sets map layer base tool.
|
|
82
|
+
* @beta
|
|
83
|
+
*/
|
|
84
|
+
export declare class SetMapBaseTool extends AttachMapLayerTool {
|
|
85
|
+
static toolId: string;
|
|
86
|
+
constructor();
|
|
87
|
+
}
|
|
88
|
+
/** Detach Map Layers Tool.
|
|
89
|
+
* @beta
|
|
90
|
+
*/
|
|
91
|
+
export declare class DetachMapLayersTool extends Tool {
|
|
92
|
+
static toolId: string;
|
|
93
|
+
static get minArgs(): number;
|
|
94
|
+
static get maxArgs(): number;
|
|
95
|
+
parseAndRun(..._args: string[]): Promise<boolean>;
|
|
96
|
+
run(): Promise<boolean>;
|
|
97
|
+
}
|
|
98
|
+
/** This tool sets the visibility of the map layer.
|
|
99
|
+
* @beta
|
|
100
|
+
*/
|
|
101
|
+
export declare class MapLayerVisibilityTool extends Tool {
|
|
102
|
+
static toolId: string;
|
|
103
|
+
static get minArgs(): number;
|
|
104
|
+
static get maxArgs(): number;
|
|
105
|
+
/** This method runs the tool, setting the visibility of a map layer.
|
|
106
|
+
* @param layerIndex the index of the layer to change
|
|
107
|
+
* @param visible a boolean that should be true if the layer should be visible
|
|
108
|
+
*/
|
|
109
|
+
run(layerIndex: number, enable?: boolean): Promise<boolean>;
|
|
110
|
+
/** Executes this tool's run method with args[0] containing `enable` and args[1] containing `layerIndex`.
|
|
111
|
+
* @see [[run]]
|
|
112
|
+
*/
|
|
113
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
114
|
+
}
|
|
115
|
+
/** This tool reorders map layers.
|
|
116
|
+
* @beta
|
|
117
|
+
*/
|
|
118
|
+
export declare class ReorderMapLayers extends Tool {
|
|
119
|
+
static toolId: string;
|
|
120
|
+
static get minArgs(): number;
|
|
121
|
+
static get maxArgs(): number;
|
|
122
|
+
/** This method runs the tool, reordering the map layers.
|
|
123
|
+
* @param from a numeric value specifying the layer index that is being moved
|
|
124
|
+
* @param from a numeric value specifying the layer index to move that layer to
|
|
125
|
+
*/
|
|
126
|
+
run(from: number, to: number): Promise<boolean>;
|
|
127
|
+
/** Executes this tool's run method with args[0] containing `from` and args[1] containing `to`.
|
|
128
|
+
* @see [[run]]
|
|
129
|
+
*/
|
|
130
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
131
|
+
}
|
|
132
|
+
/** This tool sets the transparency of a map layer.
|
|
133
|
+
* @beta
|
|
134
|
+
*/
|
|
135
|
+
export declare class MapLayerTransparencyTool extends Tool {
|
|
136
|
+
static toolId: string;
|
|
137
|
+
static get minArgs(): number;
|
|
138
|
+
static get maxArgs(): number;
|
|
139
|
+
/** This method runs the tool, setting the transparency of a map layer.
|
|
140
|
+
* @param layerIndex the index of the layer to change
|
|
141
|
+
* @param transparency a numeric value in the range 0.0 (fully opaque) to 1.0 (fully transparent)
|
|
142
|
+
*/
|
|
143
|
+
run(layerIndex: number, transparency: number): Promise<boolean>;
|
|
144
|
+
/** Executes this tool's run method with args[0] containing `transparency` and args[1] containing `layerIndex`.
|
|
145
|
+
* @see [[run]]
|
|
146
|
+
*/
|
|
147
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
148
|
+
}
|
|
149
|
+
/** This tool sets the visibility of the map sublayer.
|
|
150
|
+
* @beta
|
|
151
|
+
*/
|
|
152
|
+
export declare class MapLayerSubLayerVisibilityTool extends Tool {
|
|
153
|
+
static toolId: string;
|
|
154
|
+
static get minArgs(): number;
|
|
155
|
+
static get maxArgs(): number;
|
|
156
|
+
/** This method runs the tool, setting the visibility of a map sublayer.
|
|
157
|
+
* @param layerIndex the index of the layer to change
|
|
158
|
+
* @param visible a boolean that should be true if the sublayer should be visible
|
|
159
|
+
*/
|
|
160
|
+
run(layerIndex: number, visible: boolean): Promise<boolean>;
|
|
161
|
+
/** Executes this tool's run method with args[0] containing `transparency` and args[1] containing `layerIndex`.
|
|
162
|
+
* @see [[run]]
|
|
163
|
+
*/
|
|
164
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
165
|
+
}
|
|
166
|
+
/** This tool changes the viewport so it is zoomed to the range of a map layer.
|
|
167
|
+
* @beta
|
|
168
|
+
*/
|
|
169
|
+
export declare class MapLayerZoomTool extends Tool {
|
|
170
|
+
static toolId: string;
|
|
171
|
+
static get minArgs(): number;
|
|
172
|
+
static get maxArgs(): number;
|
|
173
|
+
/** This method runs the tool, changing the viewport so it is zoomed to the range of a map layer.
|
|
174
|
+
* @param layerIndex the index of the layer whose range to zoom to
|
|
175
|
+
*/
|
|
176
|
+
run(layerIndex: number): Promise<boolean>;
|
|
177
|
+
/** Executes this tool's run method with args[0] containing `layerIndex`.
|
|
178
|
+
* @see [[run]]
|
|
179
|
+
*/
|
|
180
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
181
|
+
}
|
|
182
|
+
/** This tool toggles whether to apply terrain heights to the map.
|
|
183
|
+
* @beta
|
|
184
|
+
*/
|
|
185
|
+
export declare class ToggleTerrainTool extends Tool {
|
|
186
|
+
static toolId: string;
|
|
187
|
+
static get minArgs(): number;
|
|
188
|
+
static get maxArgs(): number;
|
|
189
|
+
/** This method runs the tool, changing whether to apply terrain heights to the map.
|
|
190
|
+
* @param enable whether or not to enable terrain heights on the map
|
|
191
|
+
*/
|
|
192
|
+
run(enable?: boolean): Promise<boolean>;
|
|
193
|
+
/** Executes this tool's run method with args[0] containing `enable`.
|
|
194
|
+
* @see [[run]]
|
|
195
|
+
*/
|
|
196
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
197
|
+
}
|
|
198
|
+
/** This tool changes the color of the base map.
|
|
199
|
+
* @beta
|
|
200
|
+
*/
|
|
201
|
+
export declare class MapBaseColorTool extends Tool {
|
|
202
|
+
static toolId: string;
|
|
203
|
+
static get minArgs(): number;
|
|
204
|
+
static get maxArgs(): number;
|
|
205
|
+
/** This method runs the tool, changing the color of the base map.
|
|
206
|
+
* @param color the color for the base map
|
|
207
|
+
*/
|
|
208
|
+
run(color: ColorDef): Promise<boolean>;
|
|
209
|
+
/** Executes this tool's run method with args[0] containing a 0 to 255 red component, args[1] containing a 0 to 255 green component, and args[2] containing a 0 to 255 blue component.
|
|
210
|
+
* These rgb values will be used to construct the `color` parameter passed to this tool's run method.
|
|
211
|
+
* @see [[run]]
|
|
212
|
+
*/
|
|
213
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
214
|
+
}
|
|
215
|
+
/** This tool changes the transparency of the base map.
|
|
216
|
+
* @beta
|
|
217
|
+
*/
|
|
218
|
+
export declare class MapBaseTransparencyTool extends Tool {
|
|
219
|
+
static toolId: string;
|
|
220
|
+
static get minArgs(): number;
|
|
221
|
+
static get maxArgs(): number;
|
|
222
|
+
/** This method runs the tool, changing the transparency of the base map.
|
|
223
|
+
* @param transparency a numeric value in range 0.0 to 1.0 whether 0.0 means fully opaque and 1.0 means fully transparent
|
|
224
|
+
*/
|
|
225
|
+
run(transparency: number): Promise<boolean>;
|
|
226
|
+
/** Executes this tool's run method with args[0] containing `transparency`.
|
|
227
|
+
* @see [[run]]
|
|
228
|
+
*/
|
|
229
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
230
|
+
}
|
|
231
|
+
/** This tool changes the visibility of the base map.
|
|
232
|
+
* @beta
|
|
233
|
+
*/
|
|
234
|
+
export declare class MapBaseVisibilityTool extends Tool {
|
|
235
|
+
static toolId: string;
|
|
236
|
+
static get minArgs(): number;
|
|
237
|
+
static get maxArgs(): number;
|
|
238
|
+
/** This method runs the tool, changing the visibility of the base map.
|
|
239
|
+
* @param visible a boolean which specifies whether or not to make the base map visible
|
|
240
|
+
*/
|
|
241
|
+
run(visible: boolean): Promise<boolean>;
|
|
242
|
+
/** Executes this tool's run method with args[0] containing `visible`.
|
|
243
|
+
* @see [[run]]
|
|
244
|
+
*/
|
|
245
|
+
parseAndRun(...args: string[]): Promise<boolean>;
|
|
246
|
+
}
|
|
247
|
+
export {};
|
|
248
|
+
//# sourceMappingURL=MapLayerTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapLayerTool.d.ts","sourceRoot":"","sources":["../../src/tools/MapLayerTool.ts"],"names":[],"mappings":"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"}
|