@itwin/frontend-devtools 4.6.0-dev.8 → 4.7.0-dev.0
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 +11 -1
- package/README.md +6 -5
- package/lib/cjs/FrontEndDevTools.d.ts.map +1 -1
- package/lib/cjs/FrontEndDevTools.js +2 -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.d.ts +7 -0
- package/lib/cjs/tools/MapLayerTool.d.ts.map +1 -1
- package/lib/cjs/tools/MapLayerTool.js +28 -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.d.ts.map +1 -1
- package/lib/esm/FrontEndDevTools.js +3 -3
- 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.d.ts +7 -0
- package/lib/esm/tools/MapLayerTool.d.ts.map +1 -1
- package/lib/esm/tools/MapLayerTool.js +26 -38
- 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/lib/public/locales/en/FrontendDevTools.json +3 -0
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelAppearanceTools.js","sourceRoot":"","sources":["../../../src/tools/ModelAppearanceTools.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 { FeatureAppearance, FeatureAppearanceProps, LinePixels, RgbColorProps } from \"@itwin/core-common\";\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, SpatialViewState, Tool, Viewport } from \"@itwin/core-frontend\";\nimport { parseBoolean } from \"./parseBoolean\";\n\nfunction changeModelAppearanceOverrides(vp: Viewport | undefined, overrides: FeatureAppearanceProps, name: string): boolean {\n let changed = false;\n if (vp !== undefined && vp.view instanceof SpatialViewState)\n vp.view.forEachModel((model) => {\n if (name === undefined || model.name === name) {\n changed = true;\n const existingOverrides = vp.displayStyle.settings.getModelAppearanceOverride(model.id);\n vp.overrideModelAppearance(model.id, existingOverrides ? existingOverrides.clone(overrides) : FeatureAppearance.fromJSON(overrides));\n }\n });\n\n return changed;\n}\n\nfunction modelChangedString(name: string) {\n return name === undefined ? `All Models` : `Model: ${name}`;\n}\n\n/** Set model appearance override for transparency in display style.\n * @beta\n */\nexport class SetModelTransparencyTool extends Tool {\n public static override toolId = \"SetModelTransparencyTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(transparency: number, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { transparency }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to transparency: ${transparency}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run(parseFloat(args[0]), args[1]);\n }\n}\n\n/** Set model appearance override for line weight in display style.\n * @beta\n */\nexport class SetModelLineWeightTool extends Tool {\n public static override toolId = \"SetModelLineWeightTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(weight: number, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { weight }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to line weight: ${weight}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run(parseFloat(args[0]), args[1]);\n }\n}\n\n/** Set model appearance override for line code in display style.\n * @beta\n */\nexport class SetModelLineCodeTool extends Tool {\n public static override toolId = \"SetModelLineCodeTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n public static linePixels = [LinePixels.Code0, LinePixels.Code1, LinePixels.Code2, LinePixels.Code3, LinePixels.Code4, LinePixels.Code5, LinePixels.Code6, LinePixels.Code7];\n\n public override async run(lineCode: number, name: string): Promise<boolean> {\n if (lineCode < 0 || lineCode >= SetModelLineCodeTool.linePixels.length)\n return false;\n\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { linePixels: SetModelLineCodeTool.linePixels[lineCode] }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to line code: ${lineCode}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run(parseFloat(args[0]), args[1]);\n }\n}\n\n/** Set model appearance override for nonLocatable in display style.\n * @beta\n */\nexport class SetModelLocateTool extends Tool {\n public static override toolId = \"SetModelLocateTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(locate: boolean, name: string): Promise<boolean> {\n const nonLocatable = locate ? undefined : true;\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { nonLocatable }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to locate: ${locate}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const locate = parseBoolean(args[0]);\n return locate === undefined ? false : this.run(locate, args[1]);\n }\n}\n\n/** Set model appearance override for emphasized in display style.\n * @beta\n */\nexport class SetModelEmphasizedTool extends Tool {\n public static override toolId = \"SetModelEmphasizedTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(emphasized: true | undefined, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { emphasized }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Mode: ${name} set to emphasized: ${emphasized}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const emphasized = parseBoolean(args[0]);\n return emphasized === undefined ? false : this.run(emphasized ? true : undefined, args[1]);\n }\n}\n\n/** Set model appearance override for ignoreMaterials in display style.\n * @beta\n */\nexport class SetModelIgnoresMaterialsTool extends Tool {\n public static override toolId = \"SetModelIgnoresMaterialsTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(ignoresMaterial: true | undefined, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { ignoresMaterial }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Mode: ${name} set to ignore Materials: ${ignoresMaterial}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const ignoresMaterial = parseBoolean(args[0]);\n return ignoresMaterial === undefined ? false : this.run(ignoresMaterial ? true : undefined, args[1]);\n }\n}\n\n/** Set model appearance override for color in display style.\n * @beta\n */\nexport class SetModelColorTool extends Tool {\n public static override toolId = \"SetModelColorTool\";\n public static override get minArgs() { return 3; }\n public static override get maxArgs() { return 4; }\n\n public override async run(rgb: RgbColorProps, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { rgb }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to RGB color: (${rgb.r}, ${rgb.g}, ${rgb.b})`));\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run({ r: parseFloat(args[0]), g: parseFloat(args[1]), b: parseFloat(args[2]) }, args[3]);\n }\n}\n\n/** clear model appearance overrides in display style.\n * @beta\n */\nexport class ClearModelAppearanceOverrides extends Tool {\n public static override toolId = \"ClearModelAppearanceOverrides\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n public override async run(name?: string): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (vp !== undefined && vp.view instanceof SpatialViewState) {\n vp.view.forEachModel((model) => {\n if (name === undefined || model.name === name)\n vp.dropModelAppearanceOverride(model.id);\n });\n }\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run(args[0]);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ModelAppearanceTools.js","sourceRoot":"","sources":["../../../src/tools/ModelAppearanceTools.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 { FeatureAppearance, FeatureAppearanceProps, LinePixels, RgbColorProps } from \"@itwin/core-common\";\nimport { IModelApp, NotifyMessageDetails, OutputMessagePriority, SpatialViewState, Tool, Viewport } from \"@itwin/core-frontend\";\nimport { parseBoolean } from \"./parseBoolean\";\n\nfunction changeModelAppearanceOverrides(vp: Viewport | undefined, overrides: FeatureAppearanceProps, name: string): boolean {\n let changed = false;\n if (vp !== undefined && vp.view instanceof SpatialViewState)\n vp.view.forEachModel((model) => {\n if (name === undefined || model.name === name) {\n changed = true;\n const existingOverrides = vp.displayStyle.settings.getModelAppearanceOverride(model.id);\n vp.overrideModelAppearance(model.id, existingOverrides ? existingOverrides.clone(overrides) : FeatureAppearance.fromJSON(overrides));\n }\n });\n\n return changed;\n}\n\nfunction modelChangedString(name: string) {\n return name === undefined ? `All Models` : `Model: ${name}`;\n}\n\n/** Set model appearance override for transparency in display style.\n * @beta\n */\nexport class SetModelTransparencyTool extends Tool {\n public static override toolId = \"SetModelTransparencyTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(transparency: number, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { transparency }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to transparency: ${transparency}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run(parseFloat(args[0]), args[1]);\n }\n}\n\n/** Set model appearance override for line weight in display style.\n * @beta\n */\nexport class SetModelLineWeightTool extends Tool {\n public static override toolId = \"SetModelLineWeightTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(weight: number, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { weight }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to line weight: ${weight}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run(parseFloat(args[0]), args[1]);\n }\n}\n\n/** Set model appearance override for line code in display style.\n * @beta\n */\nexport class SetModelLineCodeTool extends Tool {\n public static override toolId = \"SetModelLineCodeTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n public static linePixels = [LinePixels.Code0, LinePixels.Code1, LinePixels.Code2, LinePixels.Code3, LinePixels.Code4, LinePixels.Code5, LinePixels.Code6, LinePixels.Code7];\n\n public override async run(lineCode: number, name: string): Promise<boolean> {\n if (lineCode < 0 || lineCode >= SetModelLineCodeTool.linePixels.length)\n return false;\n\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { linePixels: SetModelLineCodeTool.linePixels[lineCode] }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to line code: ${lineCode}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run(parseFloat(args[0]), args[1]);\n }\n}\n\n/** Set model appearance override for nonLocatable in display style.\n * @beta\n */\nexport class SetModelLocateTool extends Tool {\n public static override toolId = \"SetModelLocateTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(locate: boolean, name: string): Promise<boolean> {\n const nonLocatable = locate ? undefined : true;\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { nonLocatable }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to locate: ${locate}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const locate = parseBoolean(args[0]);\n return locate === undefined ? false : this.run(locate, args[1]);\n }\n}\n\n/** Set model appearance override for emphasized in display style.\n * @beta\n */\nexport class SetModelEmphasizedTool extends Tool {\n public static override toolId = \"SetModelEmphasizedTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(emphasized: true | undefined, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { emphasized }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Mode: ${name} set to emphasized: ${emphasized}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const emphasized = parseBoolean(args[0]);\n return emphasized === undefined ? false : this.run(emphasized ? true : undefined, args[1]);\n }\n}\n\n/** Set model appearance override for ignoreMaterials in display style.\n * @beta\n */\nexport class SetModelIgnoresMaterialsTool extends Tool {\n public static override toolId = \"SetModelIgnoresMaterialsTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n public override async run(ignoresMaterial: true | undefined, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { ignoresMaterial }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `Mode: ${name} set to ignore Materials: ${ignoresMaterial}`));\n\n return changed;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const ignoresMaterial = parseBoolean(args[0]);\n return ignoresMaterial === undefined ? false : this.run(ignoresMaterial ? true : undefined, args[1]);\n }\n}\n\n/** Set model appearance override for color in display style.\n * @beta\n */\nexport class SetModelColorTool extends Tool {\n public static override toolId = \"SetModelColorTool\";\n public static override get minArgs() { return 3; }\n public static override get maxArgs() { return 4; }\n\n public override async run(rgb: RgbColorProps, name: string): Promise<boolean> {\n const changed = changeModelAppearanceOverrides(IModelApp.viewManager.selectedView, { rgb }, name);\n\n if (changed)\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, `${modelChangedString(name)} set to RGB color: (${rgb.r}, ${rgb.g}, ${rgb.b})`));\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run({ r: parseFloat(args[0]), g: parseFloat(args[1]), b: parseFloat(args[2]) }, args[3]);\n }\n}\n\n/** clear model appearance overrides in display style.\n * @beta\n */\nexport class ClearModelAppearanceOverrides extends Tool {\n public static override toolId = \"ClearModelAppearanceOverrides\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n public override async run(name?: string): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (vp !== undefined && vp.view instanceof SpatialViewState) {\n vp.view.forEachModel((model) => {\n if (name === undefined || model.name === name)\n vp.dropModelAppearanceOverride(model.id);\n });\n }\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n return this.run(args[0]);\n }\n}\n"]}
|
|
@@ -13,7 +13,7 @@ import { parseArgs } from "./parseArgs";
|
|
|
13
13
|
/** Dumps a JSON representation of the plan projection settings for the current viewport.
|
|
14
14
|
* @beta
|
|
15
15
|
*/
|
|
16
|
-
class DumpPlanProjectionSettingsTool extends DisplayStyleTool {
|
|
16
|
+
export class DumpPlanProjectionSettingsTool extends DisplayStyleTool {
|
|
17
17
|
constructor() {
|
|
18
18
|
super(...arguments);
|
|
19
19
|
this._copyToClipboard = false;
|
|
@@ -44,11 +44,10 @@ class DumpPlanProjectionSettingsTool extends DisplayStyleTool {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
DumpPlanProjectionSettingsTool.toolId = "DumpLayerSettings";
|
|
47
|
-
export { DumpPlanProjectionSettingsTool };
|
|
48
47
|
/** Changes subcategory display priority.
|
|
49
48
|
* @beta
|
|
50
49
|
*/
|
|
51
|
-
class OverrideSubCategoryPriorityTool extends DisplayStyleTool {
|
|
50
|
+
export class OverrideSubCategoryPriorityTool extends DisplayStyleTool {
|
|
52
51
|
constructor() {
|
|
53
52
|
super(...arguments);
|
|
54
53
|
this._subcatIds = new Set();
|
|
@@ -81,11 +80,10 @@ class OverrideSubCategoryPriorityTool extends DisplayStyleTool {
|
|
|
81
80
|
}
|
|
82
81
|
}
|
|
83
82
|
OverrideSubCategoryPriorityTool.toolId = "OverrideSubCategoryPriority";
|
|
84
|
-
export { OverrideSubCategoryPriorityTool };
|
|
85
83
|
/** Changes plan projection settings for one or more models.
|
|
86
84
|
* @beta
|
|
87
85
|
*/
|
|
88
|
-
class ChangePlanProjectionSettingsTool extends DisplayStyleTool {
|
|
86
|
+
export class ChangePlanProjectionSettingsTool extends DisplayStyleTool {
|
|
89
87
|
constructor() {
|
|
90
88
|
super(...arguments);
|
|
91
89
|
this._modelIds = new Set();
|
|
@@ -143,5 +141,4 @@ class ChangePlanProjectionSettingsTool extends DisplayStyleTool {
|
|
|
143
141
|
}
|
|
144
142
|
}
|
|
145
143
|
ChangePlanProjectionSettingsTool.toolId = "ChangeLayerSettings";
|
|
146
|
-
export { ChangePlanProjectionSettingsTool };
|
|
147
144
|
//# sourceMappingURL=PlanProjectionTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanProjectionTools.js","sourceRoot":"","sources":["../../../src/tools/PlanProjectionTools.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 { PlanProjectionSettings, PlanProjectionSettingsProps, SubCategoryOverride } from \"@itwin/core-common\";\nimport { DisplayStyle3dState, IModelApp, ModelState, NotifyMessageDetails, OutputMessagePriority, Viewport } from \"@itwin/core-frontend\";\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\nimport { DisplayStyleTool } from \"./DisplayStyleTools\";\nimport { parseArgs } from \"./parseArgs\";\n\n/** Dumps a JSON representation of the plan projection settings for the current viewport.\n * @beta\n */\nexport class DumpPlanProjectionSettingsTool extends DisplayStyleTool {\n public static override toolId = \"DumpLayerSettings\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n private _copyToClipboard = false;\n\n protected override get require3d() { return true; }\n\n protected async parse(args: string[]) {\n if (1 === args.length)\n this._copyToClipboard = \"c\" === args[0].toLowerCase();\n\n return true;\n }\n\n protected async execute(vp: Viewport) {\n const settings = (vp.displayStyle as DisplayStyle3dState).settings.planProjectionSettings;\n if (undefined === settings) {\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, \"No plan projection settings defined\"));\n return false;\n }\n\n const props = [];\n for (const [modelId, value] of settings)\n props.push({ modelId, settings: value.toJSON() });\n\n const json = JSON.stringify(props);\n if (this._copyToClipboard)\n copyStringToClipboard(json);\n\n const messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, \"Dumped plan projection settings\", json);\n IModelApp.notifications.outputMessage(messageDetails);\n\n return false;\n }\n}\n\n/** Changes subcategory display priority.\n * @beta\n */\nexport abstract class OverrideSubCategoryPriorityTool extends DisplayStyleTool {\n public static override toolId = \"OverrideSubCategoryPriority\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n private readonly _subcatIds = new Set<string>();\n private _priority?: number;\n\n protected async execute(vp: Viewport) {\n const style = vp.displayStyle;\n for (const id of this._subcatIds) {\n const ovr = style.getSubCategoryOverride(id);\n if (undefined === ovr) {\n if (undefined !== this._priority)\n style.overrideSubCategory(id, SubCategoryOverride.fromJSON({ priority: this._priority }));\n } else {\n const props = ovr.toJSON();\n props.priority = this._priority;\n style.overrideSubCategory(id, SubCategoryOverride.fromJSON(props));\n }\n }\n\n return true;\n }\n\n protected async parse(args: string[]) {\n for (const id of args[0].split(\",\"))\n this._subcatIds.add(id);\n\n const priority = parseInt(args[1], 10);\n if (!Number.isNaN(priority))\n this._priority = priority;\n\n return true;\n }\n}\n\n/** Changes plan projection settings for one or more models.\n * @beta\n */\nexport abstract class ChangePlanProjectionSettingsTool extends DisplayStyleTool {\n public static override toolId = \"ChangeLayerSettings\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 5; }\n\n private readonly _modelIds = new Set<string>();\n private _settings?: PlanProjectionSettings;\n\n protected override get require3d() { return true; }\n\n protected async execute(vp: Viewport) {\n const settings = (vp.displayStyle as DisplayStyle3dState).settings;\n for (const modelId of this._modelIds)\n settings.setPlanProjectionSettings(modelId, this._settings);\n\n return true;\n }\n\n protected async parse(inputArgs: string[]) {\n if (!this.parseModels(inputArgs[0]))\n return false;\n\n const args = parseArgs(inputArgs.slice(1));\n const props: PlanProjectionSettingsProps = {};\n\n props.transparency = args.getFloat(\"t\");\n props.overlay = args.getBoolean(\"o\");\n props.enforceDisplayPriority = args.getBoolean(\"p\");\n props.elevation = args.getFloat(\"e\");\n\n this._settings = PlanProjectionSettings.fromJSON(props);\n return true;\n }\n\n private parseModels(models: string) {\n const vp = IModelApp.viewManager.selectedView!; // already validated by super.parseAndRun\n models = models.toLowerCase();\n\n const isPlanProjection = (modelId: string) => {\n const model = vp.iModel.models.getLoaded(modelId);\n return undefined !== model && isPlanProjectionModel(model);\n };\n const isPlanProjectionModel = (model: ModelState) => {\n const model3d = model.asGeometricModel3d;\n return undefined !== model3d && model3d.isPlanProjection;\n };\n\n switch (models[0]) {\n case \"a\": // all models in selector\n vp.view.forEachModel((model) => {\n if (isPlanProjectionModel(model))\n this._modelIds.add(model.id);\n });\n break;\n case \"0\": // comma-separated list of Ids\n for (const modelId of models.split(\",\"))\n if (isPlanProjection(modelId))\n this._modelIds.add(modelId);\n\n break;\n }\n\n if (this._modelIds.size === 0) {\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, \"No plan projection models\"));\n return false;\n }\n\n return true;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PlanProjectionTools.js","sourceRoot":"","sources":["../../../src/tools/PlanProjectionTools.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 { PlanProjectionSettings, PlanProjectionSettingsProps, SubCategoryOverride } from \"@itwin/core-common\";\nimport { DisplayStyle3dState, IModelApp, ModelState, NotifyMessageDetails, OutputMessagePriority, Viewport } from \"@itwin/core-frontend\";\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\nimport { DisplayStyleTool } from \"./DisplayStyleTools\";\nimport { parseArgs } from \"./parseArgs\";\n\n/** Dumps a JSON representation of the plan projection settings for the current viewport.\n * @beta\n */\nexport class DumpPlanProjectionSettingsTool extends DisplayStyleTool {\n public static override toolId = \"DumpLayerSettings\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n private _copyToClipboard = false;\n\n protected override get require3d() { return true; }\n\n protected async parse(args: string[]) {\n if (1 === args.length)\n this._copyToClipboard = \"c\" === args[0].toLowerCase();\n\n return true;\n }\n\n protected async execute(vp: Viewport) {\n const settings = (vp.displayStyle as DisplayStyle3dState).settings.planProjectionSettings;\n if (undefined === settings) {\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, \"No plan projection settings defined\"));\n return false;\n }\n\n const props = [];\n for (const [modelId, value] of settings)\n props.push({ modelId, settings: value.toJSON() });\n\n const json = JSON.stringify(props);\n if (this._copyToClipboard)\n copyStringToClipboard(json);\n\n const messageDetails = new NotifyMessageDetails(OutputMessagePriority.Info, \"Dumped plan projection settings\", json);\n IModelApp.notifications.outputMessage(messageDetails);\n\n return false;\n }\n}\n\n/** Changes subcategory display priority.\n * @beta\n */\nexport abstract class OverrideSubCategoryPriorityTool extends DisplayStyleTool {\n public static override toolId = \"OverrideSubCategoryPriority\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n private readonly _subcatIds = new Set<string>();\n private _priority?: number;\n\n protected async execute(vp: Viewport) {\n const style = vp.displayStyle;\n for (const id of this._subcatIds) {\n const ovr = style.getSubCategoryOverride(id);\n if (undefined === ovr) {\n if (undefined !== this._priority)\n style.overrideSubCategory(id, SubCategoryOverride.fromJSON({ priority: this._priority }));\n } else {\n const props = ovr.toJSON();\n props.priority = this._priority;\n style.overrideSubCategory(id, SubCategoryOverride.fromJSON(props));\n }\n }\n\n return true;\n }\n\n protected async parse(args: string[]) {\n for (const id of args[0].split(\",\"))\n this._subcatIds.add(id);\n\n const priority = parseInt(args[1], 10);\n if (!Number.isNaN(priority))\n this._priority = priority;\n\n return true;\n }\n}\n\n/** Changes plan projection settings for one or more models.\n * @beta\n */\nexport abstract class ChangePlanProjectionSettingsTool extends DisplayStyleTool {\n public static override toolId = \"ChangeLayerSettings\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 5; }\n\n private readonly _modelIds = new Set<string>();\n private _settings?: PlanProjectionSettings;\n\n protected override get require3d() { return true; }\n\n protected async execute(vp: Viewport) {\n const settings = (vp.displayStyle as DisplayStyle3dState).settings;\n for (const modelId of this._modelIds)\n settings.setPlanProjectionSettings(modelId, this._settings);\n\n return true;\n }\n\n protected async parse(inputArgs: string[]) {\n if (!this.parseModels(inputArgs[0]))\n return false;\n\n const args = parseArgs(inputArgs.slice(1));\n const props: PlanProjectionSettingsProps = {};\n\n props.transparency = args.getFloat(\"t\");\n props.overlay = args.getBoolean(\"o\");\n props.enforceDisplayPriority = args.getBoolean(\"p\");\n props.elevation = args.getFloat(\"e\");\n\n this._settings = PlanProjectionSettings.fromJSON(props);\n return true;\n }\n\n private parseModels(models: string) {\n const vp = IModelApp.viewManager.selectedView!; // already validated by super.parseAndRun\n models = models.toLowerCase();\n\n const isPlanProjection = (modelId: string) => {\n const model = vp.iModel.models.getLoaded(modelId);\n return undefined !== model && isPlanProjectionModel(model);\n };\n const isPlanProjectionModel = (model: ModelState) => {\n const model3d = model.asGeometricModel3d;\n return undefined !== model3d && model3d.isPlanProjection;\n };\n\n switch (models[0]) {\n case \"a\": // all models in selector\n vp.view.forEachModel((model) => {\n if (isPlanProjectionModel(model))\n this._modelIds.add(model.id);\n });\n break;\n case \"0\": // comma-separated list of Ids\n for (const modelId of models.split(\",\"))\n if (isPlanProjection(modelId))\n this._modelIds.add(modelId);\n\n break;\n }\n\n if (this._modelIds.size === 0) {\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, \"No plan projection models\"));\n return false;\n }\n\n return true;\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ import { parseBoolean } from "./parseBoolean";
|
|
|
8
8
|
/** Set Map Masking by selected models.
|
|
9
9
|
* @beta
|
|
10
10
|
*/
|
|
11
|
-
class SetMapHigherPriorityMasking extends Tool {
|
|
11
|
+
export class SetMapHigherPriorityMasking extends Tool {
|
|
12
12
|
static get minArgs() { return 0; }
|
|
13
13
|
static get maxArgs() { return 2; }
|
|
14
14
|
async run(transparency, invert) {
|
|
@@ -28,11 +28,10 @@ class SetMapHigherPriorityMasking extends Tool {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
SetMapHigherPriorityMasking.toolId = "SetMapHigherPriorityMask";
|
|
31
|
-
export { SetMapHigherPriorityMasking };
|
|
32
31
|
/** Unmask Mask.
|
|
33
32
|
* @beta
|
|
34
33
|
*/
|
|
35
|
-
class UnmaskMapTool extends Tool {
|
|
34
|
+
export class UnmaskMapTool extends Tool {
|
|
36
35
|
static get minArgs() { return 0; }
|
|
37
36
|
static get maxArgs() { return 0; }
|
|
38
37
|
async run() {
|
|
@@ -45,7 +44,6 @@ class UnmaskMapTool extends Tool {
|
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
46
|
UnmaskMapTool.toolId = "UnmaskMap";
|
|
48
|
-
export { UnmaskMapTool };
|
|
49
47
|
/** Base class for the reality model planar masking tools.
|
|
50
48
|
* @beta
|
|
51
49
|
*/
|
|
@@ -182,7 +180,7 @@ export class PlanarMaskBaseTool extends PrimitiveTool {
|
|
|
182
180
|
/** Tool to mask background map by elements
|
|
183
181
|
* @beta
|
|
184
182
|
*/
|
|
185
|
-
class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {
|
|
183
|
+
export class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {
|
|
186
184
|
static get minArgs() { return 0; }
|
|
187
185
|
static get maxArgs() { return 2; }
|
|
188
186
|
targetModelRequired() { return false; }
|
|
@@ -195,11 +193,10 @@ class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {
|
|
|
195
193
|
}
|
|
196
194
|
}
|
|
197
195
|
MaskBackgroundMapByElementTool.toolId = "MaskBackgroundMapByElement";
|
|
198
|
-
export { MaskBackgroundMapByElementTool };
|
|
199
196
|
/** Tool to mask background map by excluded elements
|
|
200
197
|
* @beta
|
|
201
198
|
*/
|
|
202
|
-
class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {
|
|
199
|
+
export class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {
|
|
203
200
|
static get minArgs() { return 0; }
|
|
204
201
|
static get maxArgs() { return 2; }
|
|
205
202
|
targetModelRequired() { return false; }
|
|
@@ -212,11 +209,10 @@ class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {
|
|
|
212
209
|
}
|
|
213
210
|
}
|
|
214
211
|
MaskBackgroundMapByExcludedElementTool.toolId = "MaskBackgroundMapByExcludedElement";
|
|
215
|
-
export { MaskBackgroundMapByExcludedElementTool };
|
|
216
212
|
/** Tool to mask background map by SubCategories
|
|
217
213
|
* @beta
|
|
218
214
|
*/
|
|
219
|
-
class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {
|
|
215
|
+
export class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {
|
|
220
216
|
static get minArgs() { return 0; }
|
|
221
217
|
static get maxArgs() { return 2; }
|
|
222
218
|
targetModelRequired() { return false; }
|
|
@@ -230,11 +226,10 @@ class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {
|
|
|
230
226
|
}
|
|
231
227
|
}
|
|
232
228
|
MaskBackgroundMapBySubCategoryTool.toolId = "MaskBackgroundMapBySubCategory";
|
|
233
|
-
export { MaskBackgroundMapBySubCategoryTool };
|
|
234
229
|
/** Tool to mask background map by geometric models
|
|
235
230
|
* @beta
|
|
236
231
|
*/
|
|
237
|
-
class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {
|
|
232
|
+
export class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {
|
|
238
233
|
static get minArgs() { return 0; }
|
|
239
234
|
static get maxArgs() { return 2; }
|
|
240
235
|
targetModelRequired() { return false; }
|
|
@@ -247,11 +242,10 @@ class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {
|
|
|
247
242
|
}
|
|
248
243
|
}
|
|
249
244
|
MaskBackgroundMapByModelTool.toolId = "MaskBackgroundMapByModel";
|
|
250
|
-
export { MaskBackgroundMapByModelTool };
|
|
251
245
|
/** Tool to mask reality model by elements
|
|
252
246
|
* @beta
|
|
253
247
|
*/
|
|
254
|
-
class MaskRealityModelByElementTool extends PlanarMaskBaseTool {
|
|
248
|
+
export class MaskRealityModelByElementTool extends PlanarMaskBaseTool {
|
|
255
249
|
static get minArgs() { return 0; }
|
|
256
250
|
static get maxArgs() { return 2; }
|
|
257
251
|
targetModelRequired() { return true; }
|
|
@@ -265,11 +259,10 @@ class MaskRealityModelByElementTool extends PlanarMaskBaseTool {
|
|
|
265
259
|
}
|
|
266
260
|
}
|
|
267
261
|
MaskRealityModelByElementTool.toolId = "MaskRealityModelByElement";
|
|
268
|
-
export { MaskRealityModelByElementTool };
|
|
269
262
|
/** Tool to mask reality model by excluded elements
|
|
270
263
|
* @beta
|
|
271
264
|
*/
|
|
272
|
-
class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {
|
|
265
|
+
export class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {
|
|
273
266
|
static get minArgs() { return 0; }
|
|
274
267
|
static get maxArgs() { return 2; }
|
|
275
268
|
targetModelRequired() { return true; }
|
|
@@ -283,11 +276,10 @@ class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {
|
|
|
283
276
|
}
|
|
284
277
|
}
|
|
285
278
|
MaskRealityModelByExcludedElementTool.toolId = "MaskRealityModelByExcludedElement";
|
|
286
|
-
export { MaskRealityModelByExcludedElementTool };
|
|
287
279
|
/** Tool to mask reality model by geometric models
|
|
288
280
|
* @beta
|
|
289
281
|
*/
|
|
290
|
-
class MaskRealityModelByModelTool extends PlanarMaskBaseTool {
|
|
282
|
+
export class MaskRealityModelByModelTool extends PlanarMaskBaseTool {
|
|
291
283
|
static get minArgs() { return 0; }
|
|
292
284
|
static get maxArgs() { return 2; }
|
|
293
285
|
targetModelRequired() { return true; }
|
|
@@ -301,11 +293,10 @@ class MaskRealityModelByModelTool extends PlanarMaskBaseTool {
|
|
|
301
293
|
}
|
|
302
294
|
}
|
|
303
295
|
MaskRealityModelByModelTool.toolId = "MaskRealityModelByModel";
|
|
304
|
-
export { MaskRealityModelByModelTool };
|
|
305
296
|
/** Tool to mask reality model by SubCategories
|
|
306
297
|
* @beta
|
|
307
298
|
*/
|
|
308
|
-
class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {
|
|
299
|
+
export class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {
|
|
309
300
|
static get minArgs() { return 0; }
|
|
310
301
|
static get maxArgs() { return 2; }
|
|
311
302
|
targetModelRequired() { return true; }
|
|
@@ -320,11 +311,10 @@ class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {
|
|
|
320
311
|
}
|
|
321
312
|
}
|
|
322
313
|
MaskRealityModelBySubCategoryTool.toolId = "MaskRealityModelBySubCategory";
|
|
323
|
-
export { MaskRealityModelBySubCategoryTool };
|
|
324
314
|
/** Tool to mask reality model by higher priority models.
|
|
325
315
|
* @beta
|
|
326
316
|
*/
|
|
327
|
-
class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {
|
|
317
|
+
export class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {
|
|
328
318
|
constructor() {
|
|
329
319
|
super(...arguments);
|
|
330
320
|
this._priority = 0;
|
|
@@ -356,11 +346,10 @@ class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {
|
|
|
356
346
|
}
|
|
357
347
|
}
|
|
358
348
|
SetHigherPriorityRealityModelMasking.toolId = "SetHigherPriorityRealityModelMasking";
|
|
359
|
-
export { SetHigherPriorityRealityModelMasking };
|
|
360
349
|
/** Remove masks from reality model.
|
|
361
350
|
* @beta
|
|
362
351
|
*/
|
|
363
|
-
class UnmaskRealityModelTool extends PlanarMaskBaseTool {
|
|
352
|
+
export class UnmaskRealityModelTool extends PlanarMaskBaseTool {
|
|
364
353
|
targetModelRequired() { return true; }
|
|
365
354
|
showPrompt() {
|
|
366
355
|
IModelApp.notifications.outputPromptByKey("FrontendDevTools:tools.UnmaskRealityModel.Prompts.IdentifyRealityModel");
|
|
@@ -384,5 +373,4 @@ class UnmaskRealityModelTool extends PlanarMaskBaseTool {
|
|
|
384
373
|
}
|
|
385
374
|
}
|
|
386
375
|
UnmaskRealityModelTool.toolId = "UnmaskRealityModel";
|
|
387
|
-
export { UnmaskRealityModelTool };
|
|
388
376
|
//# sourceMappingURL=PlanarMaskTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanarMaskTools.js","sourceRoot":"","sources":["../../../src/tools/PlanarMaskTools.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 { Id64String } from \"@itwin/core-bentley\";\nimport { PlanarClipMaskMode, PlanarClipMaskPriority, PlanarClipMaskSettings } from \"@itwin/core-common\";\nimport {\n BeButtonEvent, ContextRealityModelState, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, PrimitiveTool, ScreenViewport, Tool,\n} from \"@itwin/core-frontend\";\nimport { parseBoolean } from \"./parseBoolean\";\n\n/** Set Map Masking by selected models.\n * @beta\n */\nexport class SetMapHigherPriorityMasking extends Tool {\n public static override toolId = \"SetMapHigherPriorityMask\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n\n public override async run(transparency: number, invert: boolean): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return false;\n\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.Priority, priority: PlanarClipMaskPriority.BackgroundMap, transparency, invert } });\n vp.invalidateRenderPlan();\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const transparency = parseFloat(args[0]);\n let invert;\n if (args.length > 1)\n invert = parseBoolean(args[1]);\n return this.run((transparency !== undefined && transparency < 1.0) ? transparency : 0, invert === true);\n }\n}\n\n/** Unmask Mask.\n * @beta\n */\nexport class UnmaskMapTool extends Tool {\n public static override toolId = \"UnmaskMap\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 0; }\n\n public override async run(): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return false;\n\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.None, transparency: 0, invert: false } });\n vp.invalidateRenderPlan();\n return true;\n }\n}\n\n/** Base class for the reality model planar masking tools.\n * @beta\n */\nexport abstract class PlanarMaskBaseTool extends PrimitiveTool {\n protected readonly _acceptedModelIds = new Set<Id64String>();\n protected readonly _acceptedSubCategoryIds = new Set<Id64String>();\n protected readonly _acceptedElementIds = new Set<Id64String>();\n protected _transparency: number = 0;\n protected _useSelection: boolean = false;\n protected _invert: boolean = false;\n protected _targetMaskModel?: Id64String | ContextRealityModelState;\n\n public override requireWriteableTarget(): boolean { return false; }\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n\n public override async onUnsuspend() { this.showPrompt(); }\n private setupAndPromptForNextAction(): void {\n this._useSelection = (undefined !== this.targetView && this.iModel.selectionSet.isActive);\n this.initLocateElements(!this._useSelection || (this.targetModelRequired() && !this._targetMaskModel));\n IModelApp.locateManager.options.allowDecorations = true; // So we can select \"contextual\" reality models.\n this.showPrompt();\n }\n protected targetModelRequired(): boolean { return true; }\n protected elementRequired(): boolean { return true; }\n protected allowSelection(): boolean { return true; }\n protected abstract showPrompt(): void;\n protected abstract createToolInstance(): PlanarMaskBaseTool;\n protected abstract applyMask(vp: ScreenViewport): void;\n private clearIds() {\n this._acceptedElementIds.clear();\n this._acceptedModelIds.clear();\n }\n public override async exitTool() {\n await super.exitTool();\n this._transparency = 0;\n }\n\n public async onRestartTool() {\n this.clearIds();\n this._acceptedSubCategoryIds.clear();\n const tool = this.createToolInstance();\n if (!await tool.run())\n await this.exitTool();\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const transparency = parseFloat(args[0]);\n this._transparency = (transparency !== undefined && transparency < 1.0) ? transparency : 0;\n if (args.length > 1)\n this._invert = parseBoolean(args[1]) === true;\n\n return this.run();\n }\n\n public override async onCleanup() {\n if (0 !== this._acceptedElementIds.size)\n this.iModel.hilited.setHilite(this._acceptedElementIds, false);\n this.clearIds();\n }\n\n public override async filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus> {\n if (!hit.modelId)\n return LocateFilterStatus.Reject;\n\n if (undefined === this._targetMaskModel && this.targetModelRequired()) {\n if (undefined !== hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId))\n return LocateFilterStatus.Accept;\n\n const model = this.iModel.models.getLoaded(hit.modelId)?.asSpatialModel;\n return model?.isRealityModel ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n } else\n return (hit.isElementHit && !hit.isModelHit && !this._acceptedElementIds.has(hit.sourceId)) ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return EventHandled.No;\n\n if (undefined !== hit && undefined === this._targetMaskModel && this.targetModelRequired()) {\n if (hit.modelId) {\n this._targetMaskModel = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId) ?? hit.modelId;\n if (!this.elementRequired()) {\n this.applyMask(vp);\n await this.onRestartTool();\n }\n }\n } else if (this._useSelection && this.iModel.selectionSet.isActive) {\n const elements = await this.iModel.elements.getProps(this.iModel.selectionSet.elements);\n for (const element of elements) {\n if (element.id && element.model) {\n this._acceptedElementIds.add(element.id);\n this._acceptedModelIds.add(element.model);\n }\n }\n this.applyMask(vp);\n await this.exitTool();\n return EventHandled.No;\n } else if (undefined !== hit && hit.isElementHit) {\n const sourceId = hit.sourceId;\n if (!this._acceptedElementIds.has(sourceId)) {\n this._acceptedElementIds.add(sourceId);\n this._acceptedModelIds.add(hit.modelId!);\n if (hit.subCategoryId)\n this._acceptedSubCategoryIds.add(hit.subCategoryId);\n this.applyMask(vp);\n }\n }\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n protected createSubCategoryMask() {\n return PlanarClipMaskSettings.create({\n subCategoryIds: this._acceptedSubCategoryIds,\n modelIds: this._acceptedModelIds,\n transparency: this._transparency,\n invert: this._invert,\n });\n }\n\n protected createElementMask(option: \"include\" | \"exclude\") {\n return PlanarClipMaskSettings.create({\n elementIds: this._acceptedElementIds,\n exclude: \"exclude\" === option,\n modelIds: this._acceptedModelIds,\n transparency: this._transparency,\n invert: this._invert,\n });\n }\n\n protected createModelMask() {\n return PlanarClipMaskSettings.create({ modelIds: this._acceptedModelIds, transparency: this._transparency, invert: this._invert });\n }\n\n protected setRealityModelMask(vp: ScreenViewport, mask: PlanarClipMaskSettings): void {\n if (typeof this._targetMaskModel === \"string\")\n vp.displayStyle.settings.planarClipMasks.set(this._targetMaskModel, mask);\n else if (undefined !== this._targetMaskModel)\n this._targetMaskModel.planarClipMaskSettings = mask;\n }\n}\n/** Tool to mask background map by elements\n * @beta\n */\nexport class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"include\").toJSON() });\n }\n}\n/** Tool to mask background map by excluded elements\n * @beta\n */\nexport class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByExcludedElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByExcludedElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByExcludedElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"exclude\").toJSON() });\n }\n}\n\n/** Tool to mask background map by SubCategories\n * @beta\n */\nexport class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapBySubCategory\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.MaskBackgroundMapBySubCategory.Prompts.IdentifyMaskSubCategory\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapBySubCategoryTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createSubCategoryMask().toJSON() });\n }\n}\n\n/** Tool to mask background map by geometric models\n * @beta\n */\nexport class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByModel\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByModel.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createModelMask().toJSON() });\n }\n}\n\n/** Tool to mask reality model by elements\n * @beta\n */\nexport class MaskRealityModelByElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createElementMask(\"include\"));\n }\n}\n\n/** Tool to mask reality model by excluded elements\n * @beta\n */\nexport class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByExcludedElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByExcludedElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByExcludedElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createElementMask(\"exclude\"));\n }\n}\n\n/** Tool to mask reality model by geometric models\n * @beta\n */\n\nexport class MaskRealityModelByModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByModel\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createModelMask());\n }\n}\n\n/** Tool to mask reality model by SubCategories\n * @beta\n */\nexport class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelBySubCategory\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : \"IdentifyMaskSubCategory\"}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelBySubCategoryTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createSubCategoryMask());\n }\n}\n\n/** Tool to mask reality model by higher priority models.\n * @beta\n */\nexport class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {\n public static override toolId = \"SetHigherPriorityRealityModelMasking\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 3; }\n protected override targetModelRequired() { return true; }\n protected override elementRequired() { return false; }\n private _priority = 0;\n\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.SetHigherPriorityRealityModelMasking.Prompts.IdentifyRealityModel\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new SetHigherPriorityRealityModelMasking(); }\n protected applyMask(vp: ScreenViewport): void {\n const basePriority = this._targetMaskModel === vp.displayStyle.getOSMBuildingRealityModel() ? PlanarClipMaskPriority.GlobalRealityModel : PlanarClipMaskPriority.RealityModel;\n this.setRealityModelMask(vp, PlanarClipMaskSettings.create({ priority: basePriority + this._priority, transparency: this._transparency, invert: this._invert }));\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n await super.parseAndRun(...args);\n const priority = parseInt(args[0], 10);\n this._priority = (priority === undefined || isNaN(priority)) ? 0 : priority;\n if (args.length > 1) {\n const value = parseInt(args[1], 10);\n if (!isNaN(value) && value >= 0 && value <= 1)\n this._transparency = value;\n }\n if (args.length > 2)\n this._invert = parseBoolean(args[2]) === true;\n\n return this.run();\n }\n}\n\n/** Remove masks from reality model.\n * @beta\n */\nexport class UnmaskRealityModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"UnmaskRealityModel\";\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.UnmaskRealityModel.Prompts.IdentifyRealityModel\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new UnmaskRealityModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n const settings = PlanarClipMaskSettings.create({ subCategoryIds: this._acceptedSubCategoryIds, modelIds: this._acceptedModelIds });\n this.setRealityModelMask(vp, settings);\n }\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\n if (hit?.modelId) {\n const model = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId);\n if (model)\n model.planarClipMaskSettings = undefined;\n else\n hit.viewport.displayStyle.settings.planarClipMasks.delete(hit.modelId);\n\n await this.onRestartTool();\n }\n\n return EventHandled.No;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PlanarMaskTools.js","sourceRoot":"","sources":["../../../src/tools/PlanarMaskTools.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 { Id64String } from \"@itwin/core-bentley\";\nimport { PlanarClipMaskMode, PlanarClipMaskPriority, PlanarClipMaskSettings } from \"@itwin/core-common\";\nimport {\n BeButtonEvent, ContextRealityModelState, EventHandled, HitDetail, IModelApp, LocateFilterStatus, LocateResponse, PrimitiveTool, ScreenViewport, Tool,\n} from \"@itwin/core-frontend\";\nimport { parseBoolean } from \"./parseBoolean\";\n\n/** Set Map Masking by selected models.\n * @beta\n */\nexport class SetMapHigherPriorityMasking extends Tool {\n public static override toolId = \"SetMapHigherPriorityMask\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n\n public override async run(transparency: number, invert: boolean): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return false;\n\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.Priority, priority: PlanarClipMaskPriority.BackgroundMap, transparency, invert } });\n vp.invalidateRenderPlan();\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const transparency = parseFloat(args[0]);\n let invert;\n if (args.length > 1)\n invert = parseBoolean(args[1]);\n return this.run((transparency !== undefined && transparency < 1.0) ? transparency : 0, invert === true);\n }\n}\n\n/** Unmask Mask.\n * @beta\n */\nexport class UnmaskMapTool extends Tool {\n public static override toolId = \"UnmaskMap\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 0; }\n\n public override async run(): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return false;\n\n vp.changeBackgroundMapProps({ planarClipMask: { mode: PlanarClipMaskMode.None, transparency: 0, invert: false } });\n vp.invalidateRenderPlan();\n return true;\n }\n}\n\n/** Base class for the reality model planar masking tools.\n * @beta\n */\nexport abstract class PlanarMaskBaseTool extends PrimitiveTool {\n protected readonly _acceptedModelIds = new Set<Id64String>();\n protected readonly _acceptedSubCategoryIds = new Set<Id64String>();\n protected readonly _acceptedElementIds = new Set<Id64String>();\n protected _transparency: number = 0;\n protected _useSelection: boolean = false;\n protected _invert: boolean = false;\n protected _targetMaskModel?: Id64String | ContextRealityModelState;\n\n public override requireWriteableTarget(): boolean { return false; }\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n\n public override async onUnsuspend() { this.showPrompt(); }\n private setupAndPromptForNextAction(): void {\n this._useSelection = (undefined !== this.targetView && this.iModel.selectionSet.isActive);\n this.initLocateElements(!this._useSelection || (this.targetModelRequired() && !this._targetMaskModel));\n IModelApp.locateManager.options.allowDecorations = true; // So we can select \"contextual\" reality models.\n this.showPrompt();\n }\n protected targetModelRequired(): boolean { return true; }\n protected elementRequired(): boolean { return true; }\n protected allowSelection(): boolean { return true; }\n protected abstract showPrompt(): void;\n protected abstract createToolInstance(): PlanarMaskBaseTool;\n protected abstract applyMask(vp: ScreenViewport): void;\n private clearIds() {\n this._acceptedElementIds.clear();\n this._acceptedModelIds.clear();\n }\n public override async exitTool() {\n await super.exitTool();\n this._transparency = 0;\n }\n\n public async onRestartTool() {\n this.clearIds();\n this._acceptedSubCategoryIds.clear();\n const tool = this.createToolInstance();\n if (!await tool.run())\n await this.exitTool();\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const transparency = parseFloat(args[0]);\n this._transparency = (transparency !== undefined && transparency < 1.0) ? transparency : 0;\n if (args.length > 1)\n this._invert = parseBoolean(args[1]) === true;\n\n return this.run();\n }\n\n public override async onCleanup() {\n if (0 !== this._acceptedElementIds.size)\n this.iModel.hilited.setHilite(this._acceptedElementIds, false);\n this.clearIds();\n }\n\n public override async filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus> {\n if (!hit.modelId)\n return LocateFilterStatus.Reject;\n\n if (undefined === this._targetMaskModel && this.targetModelRequired()) {\n if (undefined !== hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId))\n return LocateFilterStatus.Accept;\n\n const model = this.iModel.models.getLoaded(hit.modelId)?.asSpatialModel;\n return model?.isRealityModel ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n } else\n return (hit.isElementHit && !hit.isModelHit && !this._acceptedElementIds.has(hit.sourceId)) ? LocateFilterStatus.Accept : LocateFilterStatus.Reject;\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return EventHandled.No;\n\n if (undefined !== hit && undefined === this._targetMaskModel && this.targetModelRequired()) {\n if (hit.modelId) {\n this._targetMaskModel = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId) ?? hit.modelId;\n if (!this.elementRequired()) {\n this.applyMask(vp);\n await this.onRestartTool();\n }\n }\n } else if (this._useSelection && this.iModel.selectionSet.isActive) {\n const elements = await this.iModel.elements.getProps(this.iModel.selectionSet.elements);\n for (const element of elements) {\n if (element.id && element.model) {\n this._acceptedElementIds.add(element.id);\n this._acceptedModelIds.add(element.model);\n }\n }\n this.applyMask(vp);\n await this.exitTool();\n return EventHandled.No;\n } else if (undefined !== hit && hit.isElementHit) {\n const sourceId = hit.sourceId;\n if (!this._acceptedElementIds.has(sourceId)) {\n this._acceptedElementIds.add(sourceId);\n this._acceptedModelIds.add(hit.modelId!);\n if (hit.subCategoryId)\n this._acceptedSubCategoryIds.add(hit.subCategoryId);\n this.applyMask(vp);\n }\n }\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n protected createSubCategoryMask() {\n return PlanarClipMaskSettings.create({\n subCategoryIds: this._acceptedSubCategoryIds,\n modelIds: this._acceptedModelIds,\n transparency: this._transparency,\n invert: this._invert,\n });\n }\n\n protected createElementMask(option: \"include\" | \"exclude\") {\n return PlanarClipMaskSettings.create({\n elementIds: this._acceptedElementIds,\n exclude: \"exclude\" === option,\n modelIds: this._acceptedModelIds,\n transparency: this._transparency,\n invert: this._invert,\n });\n }\n\n protected createModelMask() {\n return PlanarClipMaskSettings.create({ modelIds: this._acceptedModelIds, transparency: this._transparency, invert: this._invert });\n }\n\n protected setRealityModelMask(vp: ScreenViewport, mask: PlanarClipMaskSettings): void {\n if (typeof this._targetMaskModel === \"string\")\n vp.displayStyle.settings.planarClipMasks.set(this._targetMaskModel, mask);\n else if (undefined !== this._targetMaskModel)\n this._targetMaskModel.planarClipMaskSettings = mask;\n }\n}\n/** Tool to mask background map by elements\n * @beta\n */\nexport class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"include\").toJSON() });\n }\n}\n/** Tool to mask background map by excluded elements\n * @beta\n */\nexport class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByExcludedElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByExcludedElement.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByExcludedElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createElementMask(\"exclude\").toJSON() });\n }\n}\n\n/** Tool to mask background map by SubCategories\n * @beta\n */\nexport class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapBySubCategory\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.MaskBackgroundMapBySubCategory.Prompts.IdentifyMaskSubCategory\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapBySubCategoryTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createSubCategoryMask().toJSON() });\n }\n}\n\n/** Tool to mask background map by geometric models\n * @beta\n */\nexport class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskBackgroundMapByModel\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return false; }\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(`FrontendDevTools:tools.MaskBackgroundMapByModel.Prompts.${this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\"}`);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskBackgroundMapByModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n vp.changeBackgroundMapProps({ planarClipMask: this.createModelMask().toJSON() });\n }\n}\n\n/** Tool to mask reality model by elements\n * @beta\n */\nexport class MaskRealityModelByElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createElementMask(\"include\"));\n }\n}\n\n/** Tool to mask reality model by excluded elements\n * @beta\n */\nexport class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByExcludedElement\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByExcludedElement.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskElement\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByExcludedElementTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createElementMask(\"exclude\"));\n }\n}\n\n/** Tool to mask reality model by geometric models\n * @beta\n */\n\nexport class MaskRealityModelByModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelByModel\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : (this._useSelection ? \"AcceptSelection\" : \"IdentifyMaskModel\")}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelByModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createModelMask());\n }\n}\n\n/** Tool to mask reality model by SubCategories\n * @beta\n */\nexport class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {\n public static override toolId = \"MaskRealityModelBySubCategory\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 2; }\n protected override targetModelRequired() { return true; }\n protected override allowSelection(): boolean { return false; } // Need picking to get subcategory.\n\n protected showPrompt(): void {\n const key = `FrontendDevTools:tools.MaskRealityModelByModel.Prompts.${this._targetMaskModel === undefined ? \"IdentifyRealityModel\" : \"IdentifyMaskSubCategory\"}`;\n IModelApp.notifications.outputPromptByKey(key);\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new MaskRealityModelBySubCategoryTool(); }\n protected applyMask(vp: ScreenViewport): void {\n this.setRealityModelMask(vp, this.createSubCategoryMask());\n }\n}\n\n/** Tool to mask reality model by higher priority models.\n * @beta\n */\nexport class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {\n public static override toolId = \"SetHigherPriorityRealityModelMasking\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 3; }\n protected override targetModelRequired() { return true; }\n protected override elementRequired() { return false; }\n private _priority = 0;\n\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.SetHigherPriorityRealityModelMasking.Prompts.IdentifyRealityModel\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new SetHigherPriorityRealityModelMasking(); }\n protected applyMask(vp: ScreenViewport): void {\n const basePriority = this._targetMaskModel === vp.displayStyle.getOSMBuildingRealityModel() ? PlanarClipMaskPriority.GlobalRealityModel : PlanarClipMaskPriority.RealityModel;\n this.setRealityModelMask(vp, PlanarClipMaskSettings.create({ priority: basePriority + this._priority, transparency: this._transparency, invert: this._invert }));\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n await super.parseAndRun(...args);\n const priority = parseInt(args[0], 10);\n this._priority = (priority === undefined || isNaN(priority)) ? 0 : priority;\n if (args.length > 1) {\n const value = parseInt(args[1], 10);\n if (!isNaN(value) && value >= 0 && value <= 1)\n this._transparency = value;\n }\n if (args.length > 2)\n this._invert = parseBoolean(args[2]) === true;\n\n return this.run();\n }\n}\n\n/** Remove masks from reality model.\n * @beta\n */\nexport class UnmaskRealityModelTool extends PlanarMaskBaseTool {\n public static override toolId = \"UnmaskRealityModel\";\n protected override targetModelRequired() { return true; }\n\n protected showPrompt(): void {\n IModelApp.notifications.outputPromptByKey(\"FrontendDevTools:tools.UnmaskRealityModel.Prompts.IdentifyRealityModel\");\n }\n protected createToolInstance(): PlanarMaskBaseTool { return new UnmaskRealityModelTool(); }\n protected applyMask(vp: ScreenViewport): void {\n const settings = PlanarClipMaskSettings.create({ subCategoryIds: this._acceptedSubCategoryIds, modelIds: this._acceptedModelIds });\n this.setRealityModelMask(vp, settings);\n }\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n const hit = await IModelApp.locateManager.doLocate(new LocateResponse(), true, ev.point, ev.viewport, ev.inputSource);\n if (hit?.modelId) {\n const model = hit.viewport.displayStyle.contextRealityModelStates.find((x) => x.modelId === hit.modelId);\n if (model)\n model.planarClipMaskSettings = undefined;\n else\n hit.viewport.displayStyle.settings.planarClipMasks.delete(hit.modelId);\n\n await this.onRestartTool();\n }\n\n return EventHandled.No;\n }\n}\n"]}
|
|
@@ -82,7 +82,7 @@ export function toggleProjectExtents(imodel, enabled) {
|
|
|
82
82
|
* @see [toggleProjectExtents]
|
|
83
83
|
* @beta
|
|
84
84
|
*/
|
|
85
|
-
class ToggleProjectExtentsTool extends Tool {
|
|
85
|
+
export class ToggleProjectExtentsTool extends Tool {
|
|
86
86
|
static get minArgs() { return 0; }
|
|
87
87
|
static get maxArgs() { return 1; }
|
|
88
88
|
async run(enable) {
|
|
@@ -102,5 +102,4 @@ class ToggleProjectExtentsTool extends Tool {
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
ToggleProjectExtentsTool.toolId = "ToggleProjectExtents";
|
|
105
|
-
export { ToggleProjectExtentsTool };
|
|
106
105
|
//# sourceMappingURL=ProjectExtents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectExtents.js","sourceRoot":"","sources":["../../../src/tools/ProjectExtents.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F;;GAEG;AAEH,OAAO,EAAoB,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAmB,WAAW,EAAE,SAAS,EAAoB,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,YAAY;AACZ,MAAM,OAAO,wBAAwB;IAKnC,YAAmB,MAAwB;QAuB3C,0HAA0H;QAC1G,yBAAoB,GAAG,IAAI,CAAC;QAvB1C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAES,IAAI,KAAW,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtD,wBAAwB,CAAC,GAAY;QAC7C,IAAI,IAAI,CAAC,yBAAyB,EAAE;
|
|
1
|
+
{"version":3,"file":"ProjectExtents.js","sourceRoot":"","sources":["../../../src/tools/ProjectExtents.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 { AxisAlignedBox3d, ColorDef, LinePixels } from \"@itwin/core-common\";\nimport { DecorateContext, GraphicType, IModelApp, IModelConnection, Tool } from \"@itwin/core-frontend\";\nimport { parseToggle } from \"./parseToggle\";\n\n/** @beta */\nexport class ProjectExtentsDecoration {\n private static _decorator?: ProjectExtentsDecoration;\n protected _removeDecorationListener?: () => void;\n protected _extents: AxisAlignedBox3d;\n\n public constructor(iModel: IModelConnection) {\n this._extents = iModel.projectExtents;\n this.updateDecorationListener(true);\n }\n\n protected stop(): void { this.updateDecorationListener(false); }\n\n protected updateDecorationListener(add: boolean): void {\n if (this._removeDecorationListener) {\n if (!add) {\n this._removeDecorationListener();\n this._removeDecorationListener = undefined;\n }\n } else if (add) {\n if (!this._removeDecorationListener)\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\n }\n }\n\n public static get isActive(): boolean {\n return undefined !== ProjectExtentsDecoration._decorator;\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 const vp = context.viewport;\n if (!vp.view.isSpatialView())\n return;\n\n const builderAccVis = context.createGraphicBuilder(GraphicType.WorldDecoration);\n const builderAccHid = context.createGraphicBuilder(GraphicType.WorldOverlay);\n const colorAccVis = ColorDef.white.adjustedForContrast(context.viewport.view.backgroundColor);\n const colorAccHid = colorAccVis.withAlpha(100);\n\n builderAccVis.setSymbology(colorAccVis, ColorDef.black, 3);\n builderAccHid.setSymbology(colorAccHid, ColorDef.black, 1, LinePixels.Code2);\n\n builderAccVis.addRangeBox(this._extents);\n builderAccHid.addRangeBox(this._extents);\n\n context.addDecorationFromBuilder(builderAccVis);\n context.addDecorationFromBuilder(builderAccHid);\n }\n\n // Returns true if extents become enabled.\n public static toggle(imodel: IModelConnection, enabled?: boolean): boolean {\n if (undefined !== enabled) {\n const alreadyEnabled = undefined !== ProjectExtentsDecoration._decorator;\n if (enabled === alreadyEnabled)\n return alreadyEnabled;\n }\n\n if (undefined === ProjectExtentsDecoration._decorator) {\n ProjectExtentsDecoration._decorator = new ProjectExtentsDecoration(imodel);\n return true;\n } else {\n ProjectExtentsDecoration._decorator.stop();\n ProjectExtentsDecoration._decorator = undefined;\n return false;\n }\n }\n}\n\n/** Enable or disable the project extents decoration. This decoration draws a box coinciding with the iModel's project extents.\n * @param imodel The iModel from which to obtain the extents.\n * @param enable If undefined, the current enabled state of the decoration will be inverted; otherwise it will be enabled if true, or disabled if false.\n * @returns true if the extents are now ON, false if they are now OFF.\n * @beta\n */\nexport function toggleProjectExtents(imodel: IModelConnection, enabled?: boolean): boolean {\n return ProjectExtentsDecoration.toggle(imodel, enabled);\n}\n\n/** Enable or disable project extents decoration.\n * The key-in takes at most 1 argument (case-insensitive):\n * - \"ON\" => enable project extents\n * - \"OFF\" => disable project extents\n * - \"TOGGLE\" or omitted => toggle project extents\n * @see [toggleProjectExtents]\n * @beta\n */\nexport class ToggleProjectExtentsTool extends Tool {\n public static override toolId = \"ToggleProjectExtents\";\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 const iModel = vp.iModel;\n if (toggleProjectExtents(iModel, enable))\n vp.onChangeView.addOnce(() => toggleProjectExtents(iModel, false));\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"]}
|