@itwin/frontend-devtools 5.0.0-dev.3 → 5.0.0-dev.34

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.
Files changed (199) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/lib/cjs/ClipboardUtilities.js.map +1 -1
  3. package/lib/cjs/FrontEndDevTools.js +1 -1
  4. package/lib/cjs/FrontEndDevTools.js.map +1 -1
  5. package/lib/cjs/effects/Convolution.js +23 -23
  6. package/lib/cjs/effects/Convolution.js.map +1 -1
  7. package/lib/cjs/effects/EffectTools.js +2 -2
  8. package/lib/cjs/effects/EffectTools.js.map +1 -1
  9. package/lib/cjs/effects/Explosion.js +2 -2
  10. package/lib/cjs/effects/Explosion.js.map +1 -1
  11. package/lib/cjs/effects/FlipImage.js +22 -22
  12. package/lib/cjs/effects/FlipImage.js.map +1 -1
  13. package/lib/cjs/effects/LensDistortion.js +25 -25
  14. package/lib/cjs/effects/LensDistortion.js.map +1 -1
  15. package/lib/cjs/effects/Random.js.map +1 -1
  16. package/lib/cjs/effects/Saturation.js +30 -30
  17. package/lib/cjs/effects/Saturation.js.map +1 -1
  18. package/lib/cjs/effects/Snow.js +2 -2
  19. package/lib/cjs/effects/Snow.js.map +1 -1
  20. package/lib/cjs/effects/Vignette.js +41 -41
  21. package/lib/cjs/effects/Vignette.js.map +1 -1
  22. package/lib/cjs/frontend-devtools.js.map +1 -1
  23. package/lib/cjs/tools/AnimationIntervalTool.js +1 -1
  24. package/lib/cjs/tools/AnimationIntervalTool.js.map +1 -1
  25. package/lib/cjs/tools/ChangeUnitsTool.js +1 -1
  26. package/lib/cjs/tools/ChangeUnitsTool.js.map +1 -1
  27. package/lib/cjs/tools/ClipTools.js +4 -4
  28. package/lib/cjs/tools/ClipTools.js.map +1 -1
  29. package/lib/cjs/tools/DisplayStyleTools.js +10 -10
  30. package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
  31. package/lib/cjs/tools/EmphasizeElementsTool.js +5 -5
  32. package/lib/cjs/tools/EmphasizeElementsTool.js.map +1 -1
  33. package/lib/cjs/tools/FrustumDecoration.js +3 -3
  34. package/lib/cjs/tools/FrustumDecoration.js.map +1 -1
  35. package/lib/cjs/tools/InspectElementTool.js +1 -1
  36. package/lib/cjs/tools/InspectElementTool.js.map +1 -1
  37. package/lib/cjs/tools/MapLayerTool.js +20 -20
  38. package/lib/cjs/tools/MapLayerTool.js.map +1 -1
  39. package/lib/cjs/tools/MeasureTileLoadTime.js +1 -1
  40. package/lib/cjs/tools/MeasureTileLoadTime.js.map +1 -1
  41. package/lib/cjs/tools/ModelAppearanceTools.js +9 -9
  42. package/lib/cjs/tools/ModelAppearanceTools.js.map +1 -1
  43. package/lib/cjs/tools/PlanProjectionTools.js +3 -3
  44. package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
  45. package/lib/cjs/tools/PlanarMaskTools.js +13 -13
  46. package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
  47. package/lib/cjs/tools/ProjectExtents.js +1 -1
  48. package/lib/cjs/tools/ProjectExtents.js.map +1 -1
  49. package/lib/cjs/tools/RealityModelTools.js +10 -10
  50. package/lib/cjs/tools/RealityModelTools.js.map +1 -1
  51. package/lib/cjs/tools/RealityTransitionTool.js +1 -1
  52. package/lib/cjs/tools/RealityTransitionTool.js.map +1 -1
  53. package/lib/cjs/tools/RenderSystemTools.js +3 -3
  54. package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
  55. package/lib/cjs/tools/RenderTargetTools.js +11 -11
  56. package/lib/cjs/tools/RenderTargetTools.js.map +1 -1
  57. package/lib/cjs/tools/ReportWebGLCompatibilityTool.js +1 -1
  58. package/lib/cjs/tools/ReportWebGLCompatibilityTool.js.map +1 -1
  59. package/lib/cjs/tools/SavedViews.js +3 -3
  60. package/lib/cjs/tools/SavedViews.js.map +1 -1
  61. package/lib/cjs/tools/ScheduleScriptTools.js +3 -3
  62. package/lib/cjs/tools/ScheduleScriptTools.js.map +1 -1
  63. package/lib/cjs/tools/SelectionTools.js +2 -2
  64. package/lib/cjs/tools/SelectionTools.js.map +1 -1
  65. package/lib/cjs/tools/SetGpuMemoryLimitTool.js +1 -1
  66. package/lib/cjs/tools/SetGpuMemoryLimitTool.js.map +1 -1
  67. package/lib/cjs/tools/SourceAspectIdTools.js +2 -2
  68. package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
  69. package/lib/cjs/tools/TileRequestDecoration.js +1 -1
  70. package/lib/cjs/tools/TileRequestDecoration.js.map +1 -1
  71. package/lib/cjs/tools/TileTreeBoundsDecoration.js +1 -1
  72. package/lib/cjs/tools/TileTreeBoundsDecoration.js.map +1 -1
  73. package/lib/cjs/tools/ToolTipProvider.js +1 -1
  74. package/lib/cjs/tools/ToolTipProvider.js.map +1 -1
  75. package/lib/cjs/tools/ViewportTools.js +19 -19
  76. package/lib/cjs/tools/ViewportTools.js.map +1 -1
  77. package/lib/cjs/tools/parseArgs.js.map +1 -1
  78. package/lib/cjs/tools/parseBoolean.js.map +1 -1
  79. package/lib/cjs/tools/parseToggle.js.map +1 -1
  80. package/lib/cjs/ui/Button.js.map +1 -1
  81. package/lib/cjs/ui/CheckBox.js.map +1 -1
  82. package/lib/cjs/ui/ColorInput.js.map +1 -1
  83. package/lib/cjs/ui/ComboBox.js.map +1 -1
  84. package/lib/cjs/ui/DataList.js.map +1 -1
  85. package/lib/cjs/ui/NestedMenu.js.map +1 -1
  86. package/lib/cjs/ui/NumericInput.js.map +1 -1
  87. package/lib/cjs/ui/RadioBox.js.map +1 -1
  88. package/lib/cjs/ui/Slider.js.map +1 -1
  89. package/lib/cjs/ui/TextBox.js.map +1 -1
  90. package/lib/cjs/widgets/DiagnosticsPanel.js.map +1 -1
  91. package/lib/cjs/widgets/FpsTracker.js.map +1 -1
  92. package/lib/cjs/widgets/GpuProfiler.js.map +1 -1
  93. package/lib/cjs/widgets/KeyinField.js.map +1 -1
  94. package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
  95. package/lib/cjs/widgets/RenderCommandBreakdown.js.map +1 -1
  96. package/lib/cjs/widgets/TileMemoryBreakdown.js.map +1 -1
  97. package/lib/cjs/widgets/TileStatisticsTracker.js.map +1 -1
  98. package/lib/cjs/widgets/ToolSettingsTracker.js +1 -1
  99. package/lib/cjs/widgets/ToolSettingsTracker.js.map +1 -1
  100. package/lib/esm/ClipboardUtilities.js.map +1 -1
  101. package/lib/esm/FrontEndDevTools.js +1 -1
  102. package/lib/esm/FrontEndDevTools.js.map +1 -1
  103. package/lib/esm/effects/Convolution.js +23 -23
  104. package/lib/esm/effects/Convolution.js.map +1 -1
  105. package/lib/esm/effects/EffectTools.js +2 -2
  106. package/lib/esm/effects/EffectTools.js.map +1 -1
  107. package/lib/esm/effects/Explosion.js +2 -2
  108. package/lib/esm/effects/Explosion.js.map +1 -1
  109. package/lib/esm/effects/FlipImage.js +22 -22
  110. package/lib/esm/effects/FlipImage.js.map +1 -1
  111. package/lib/esm/effects/LensDistortion.js +25 -25
  112. package/lib/esm/effects/LensDistortion.js.map +1 -1
  113. package/lib/esm/effects/Random.js.map +1 -1
  114. package/lib/esm/effects/Saturation.js +30 -30
  115. package/lib/esm/effects/Saturation.js.map +1 -1
  116. package/lib/esm/effects/Snow.js +2 -2
  117. package/lib/esm/effects/Snow.js.map +1 -1
  118. package/lib/esm/effects/Vignette.js +41 -41
  119. package/lib/esm/effects/Vignette.js.map +1 -1
  120. package/lib/esm/frontend-devtools.js.map +1 -1
  121. package/lib/esm/tools/AnimationIntervalTool.js +1 -1
  122. package/lib/esm/tools/AnimationIntervalTool.js.map +1 -1
  123. package/lib/esm/tools/ChangeUnitsTool.js +1 -1
  124. package/lib/esm/tools/ChangeUnitsTool.js.map +1 -1
  125. package/lib/esm/tools/ClipTools.js +4 -4
  126. package/lib/esm/tools/ClipTools.js.map +1 -1
  127. package/lib/esm/tools/DisplayStyleTools.js +10 -10
  128. package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
  129. package/lib/esm/tools/EmphasizeElementsTool.js +5 -5
  130. package/lib/esm/tools/EmphasizeElementsTool.js.map +1 -1
  131. package/lib/esm/tools/FrustumDecoration.js +3 -3
  132. package/lib/esm/tools/FrustumDecoration.js.map +1 -1
  133. package/lib/esm/tools/InspectElementTool.js +1 -1
  134. package/lib/esm/tools/InspectElementTool.js.map +1 -1
  135. package/lib/esm/tools/MapLayerTool.js +20 -20
  136. package/lib/esm/tools/MapLayerTool.js.map +1 -1
  137. package/lib/esm/tools/MeasureTileLoadTime.js +1 -1
  138. package/lib/esm/tools/MeasureTileLoadTime.js.map +1 -1
  139. package/lib/esm/tools/ModelAppearanceTools.js +9 -9
  140. package/lib/esm/tools/ModelAppearanceTools.js.map +1 -1
  141. package/lib/esm/tools/PlanProjectionTools.js +3 -3
  142. package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
  143. package/lib/esm/tools/PlanarMaskTools.js +13 -13
  144. package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
  145. package/lib/esm/tools/ProjectExtents.js +1 -1
  146. package/lib/esm/tools/ProjectExtents.js.map +1 -1
  147. package/lib/esm/tools/RealityModelTools.js +10 -10
  148. package/lib/esm/tools/RealityModelTools.js.map +1 -1
  149. package/lib/esm/tools/RealityTransitionTool.js +1 -1
  150. package/lib/esm/tools/RealityTransitionTool.js.map +1 -1
  151. package/lib/esm/tools/RenderSystemTools.js +3 -3
  152. package/lib/esm/tools/RenderSystemTools.js.map +1 -1
  153. package/lib/esm/tools/RenderTargetTools.js +11 -11
  154. package/lib/esm/tools/RenderTargetTools.js.map +1 -1
  155. package/lib/esm/tools/ReportWebGLCompatibilityTool.js +1 -1
  156. package/lib/esm/tools/ReportWebGLCompatibilityTool.js.map +1 -1
  157. package/lib/esm/tools/SavedViews.js +3 -3
  158. package/lib/esm/tools/SavedViews.js.map +1 -1
  159. package/lib/esm/tools/ScheduleScriptTools.js +3 -3
  160. package/lib/esm/tools/ScheduleScriptTools.js.map +1 -1
  161. package/lib/esm/tools/SelectionTools.js +2 -2
  162. package/lib/esm/tools/SelectionTools.js.map +1 -1
  163. package/lib/esm/tools/SetGpuMemoryLimitTool.js +1 -1
  164. package/lib/esm/tools/SetGpuMemoryLimitTool.js.map +1 -1
  165. package/lib/esm/tools/SourceAspectIdTools.js +2 -2
  166. package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
  167. package/lib/esm/tools/TileRequestDecoration.js +1 -1
  168. package/lib/esm/tools/TileRequestDecoration.js.map +1 -1
  169. package/lib/esm/tools/TileTreeBoundsDecoration.js +1 -1
  170. package/lib/esm/tools/TileTreeBoundsDecoration.js.map +1 -1
  171. package/lib/esm/tools/ToolTipProvider.js +1 -1
  172. package/lib/esm/tools/ToolTipProvider.js.map +1 -1
  173. package/lib/esm/tools/ViewportTools.js +19 -19
  174. package/lib/esm/tools/ViewportTools.js.map +1 -1
  175. package/lib/esm/tools/parseArgs.js.map +1 -1
  176. package/lib/esm/tools/parseBoolean.js.map +1 -1
  177. package/lib/esm/tools/parseToggle.js.map +1 -1
  178. package/lib/esm/ui/Button.js.map +1 -1
  179. package/lib/esm/ui/CheckBox.js.map +1 -1
  180. package/lib/esm/ui/ColorInput.js.map +1 -1
  181. package/lib/esm/ui/ComboBox.js.map +1 -1
  182. package/lib/esm/ui/DataList.js.map +1 -1
  183. package/lib/esm/ui/NestedMenu.js.map +1 -1
  184. package/lib/esm/ui/NumericInput.js.map +1 -1
  185. package/lib/esm/ui/RadioBox.js.map +1 -1
  186. package/lib/esm/ui/Slider.js.map +1 -1
  187. package/lib/esm/ui/TextBox.js.map +1 -1
  188. package/lib/esm/widgets/DiagnosticsPanel.js.map +1 -1
  189. package/lib/esm/widgets/FpsTracker.js.map +1 -1
  190. package/lib/esm/widgets/GpuProfiler.js.map +1 -1
  191. package/lib/esm/widgets/KeyinField.js.map +1 -1
  192. package/lib/esm/widgets/MemoryTracker.js.map +1 -1
  193. package/lib/esm/widgets/RenderCommandBreakdown.js.map +1 -1
  194. package/lib/esm/widgets/TileMemoryBreakdown.js.map +1 -1
  195. package/lib/esm/widgets/TileStatisticsTracker.js.map +1 -1
  196. package/lib/esm/widgets/ToolSettingsTracker.js +1 -1
  197. package/lib/esm/widgets/ToolSettingsTracker.js.map +1 -1
  198. package/lib/public/locales/en/FrontendDevTools.json +494 -494
  199. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"ClipTools.js","sourceRoot":"","sources":["../../../src/tools/ClipTools.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport {\r\n ClipIntersectionStyle, ClipStyle, ClipStyleProps, ColorByName, ColorDef, CutStyleProps, LinePixels, RenderMode, RgbColor,\r\n} from \"@itwin/core-common\";\r\nimport { IModelApp, Tool, Viewport } from \"@itwin/core-frontend\";\r\nimport { parseToggle } from \"./parseToggle\";\r\nimport { parseBoolean } from \"./parseBoolean\";\r\nimport { DisplayStyleTool } from \"./DisplayStyleTools\";\r\n\r\n/** This tool specifies or un-specifies a clip color to use for pixels inside or outside the clip region.\r\n * Arguments can be:\r\n * - clear\r\n * - inside <color string> | clear\r\n * - outside <color string> | clear\r\n * <color string> must be in one of the following forms:\r\n * \"rgb(255,0,0)\"\r\n * \"rgba(255,0,0,255)\"\r\n * \"rgb(100%,0%,0%)\"\r\n * \"hsl(120,50%,50%)\"\r\n * \"#rrbbgg\"\r\n * \"blanchedAlmond\" (see possible values from [[ColorByName]]). Case insensitive.\r\n * @see [ColorDef]\r\n * @beta\r\n */\r\nexport class ClipColorTool extends Tool {\r\n public static override toolId = \"ClipColorTool\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n\r\n private _clearClipColors() {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined !== vp) {\r\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\r\n props.insideColor = props.outsideColor = undefined;\r\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\r\n }\r\n }\r\n\r\n private setClipColor(colStr: string, which: \"insideColor\" | \"outsideColor\") {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp) {\r\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\r\n props[which] = colStr === \"clear\" ? undefined : RgbColor.fromColorDef(ColorDef.fromString(colStr));\r\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\r\n }\r\n }\r\n\r\n /** This runs the tool using the given arguments, specifying or unspecifying a clip color to use for pixels inside or outside the clip region.\r\n * Arguments can be:\r\n * - clear\r\n * - inside <color string> | clear\r\n * - outside <color string> | clear\r\n * <color string> must be in one of the following forms:\r\n * \"rgb(255,0,0)\"\r\n * \"rgba(255,0,0,255)\"\r\n * \"rgb(100%,0%,0%)\"\r\n * \"hsl(120,50%,50%)\"\r\n * \"#rrbbgg\"\r\n * \"blanchedAlmond\" (see possible values from [[ColorByName]]). Case insensitive.\r\n * @beta\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n if (1 === args.length) {\r\n if (args[0] === \"clear\")\r\n this._clearClipColors();\r\n\r\n return true;\r\n }\r\n\r\n const which = args[0];\r\n if (which === \"inside\" || which === \"outside\")\r\n this.setClipColor(args[1], \"inside\" === which ? \"insideColor\" : \"outsideColor\");\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** This tool specifies or un-specifies a color and width to use for pixels within the specified width of a clip plane.\r\n * Arguments can be:\r\n * - off\r\n * - default\r\n * - color <color string>\r\n * - width <number>\r\n * <color string> must be in one of the following forms:\r\n * \"rgb(255,0,0)\"\r\n * \"rgba(255,0,0,255)\"\r\n * \"rgb(100%,0%,0%)\"\r\n * \"hsl(120,50%,50%)\"\r\n * \"#rrbbgg\"\r\n * \"blanchedAlmond\" (see possible values from [[ColorByName]]). Case insensitive.\r\n * @see [ColorDef]\r\n * @beta\r\n */\r\nexport class ClipIntersectionTool extends Tool {\r\n public static override toolId = \"ClipIntersectionTool\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 4; }\r\n\r\n private _toggleIntersectionStyle(toggle: boolean) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined !== vp) {\r\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\r\n props.colorizeIntersection = toggle;\r\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\r\n }\r\n }\r\n\r\n private _defaultClipIntersection() {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined !== vp) {\r\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\r\n if (!props.intersectionStyle) {\r\n props.intersectionStyle = ClipIntersectionStyle.defaults;\r\n } else {\r\n props.intersectionStyle.color = RgbColor.fromColorDef(ColorDef.white);\r\n props.intersectionStyle.width = 1;\r\n }\r\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\r\n }\r\n }\r\n\r\n private setClipIntersection(colStr: string, width: number) {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp) {\r\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\r\n\r\n if (!props.intersectionStyle) {\r\n props.intersectionStyle = ClipIntersectionStyle.defaults;\r\n }\r\n if (colStr) {\r\n props.intersectionStyle.color = RgbColor.fromColorDef(ColorDef.fromString(colStr));\r\n }\r\n if (width) {\r\n props.intersectionStyle.width = width;\r\n }\r\n\r\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\r\n }\r\n }\r\n\r\n /** This runs the tool using the given arguments, specifying or unspecifying a color and width to use for pixels within the specified width of a clip plane.\r\n * Arguments can be:\r\n * - off\r\n * - default\r\n * - color <color string>\r\n * - width <number>\r\n * <color string> must be in one of the following forms:\r\n * \"rgb(255,0,0)\"\r\n * \"rgba(255,0,0,255)\"\r\n * \"rgb(100%,0%,0%)\"\r\n * \"hsl(120,50%,50%)\"\r\n * \"#rrbbgg\"\r\n * \"blanchedAlmond\" (see possible values from [[ColorByName]]). Case insensitive.\r\n * @beta\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n if (args[0] === \"off\") {\r\n this._toggleIntersectionStyle(false);\r\n return true;\r\n }\r\n\r\n this._toggleIntersectionStyle(true);\r\n if (args[0] === \"default\") {\r\n this._defaultClipIntersection();\r\n return true;\r\n }\r\n\r\n args[0] === \"color\" ? this.setClipIntersection(args[1], +args[3]) : this.setClipIntersection(args[3], +args[1]);\r\n return true;\r\n }\r\n}\r\n\r\n/** Controls a view state's view details' flag for producing cut geometry for a clip style.\r\n * @beta\r\n */\r\nexport class ToggleSectionCutTool extends Tool {\r\n public static override toolId = \"ToggleSectionCut\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n /** This method runs the tool, controlling a view state's view details' flag for producing cut geometry for a clip style.\r\n * @param produceCutGeometry whether to produce cut geometry\r\n */\r\n public override async run(produceCutGeometry?: boolean): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp) {\r\n const style = vp.view.displayStyle.settings.clipStyle;\r\n produceCutGeometry = produceCutGeometry ?? !style.produceCutGeometry;\r\n if (produceCutGeometry !== style.produceCutGeometry) {\r\n const json = {\r\n ...vp.view.displayStyle.settings.clipStyle.toJSON(),\r\n produceCutGeometry,\r\n };\r\n\r\n vp.view.displayStyle.settings.clipStyle = ClipStyle.fromJSON(json);\r\n vp.invalidateScene();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Executes this tool's run method with args[0] containing `produceCutGeometry`.\r\n * @see [[run]]\r\n */\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable !== \"string\")\r\n await this.run(enable);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Simple tool that toggles a hard-coded clip style overriding various aspects of the cut geometry appearance.\r\n * @beta\r\n */\r\nexport class TestClipStyleTool extends DisplayStyleTool {\r\n public static override toolId = \"TestClipStyle\";\r\n public static override get maxArgs() { return 2; }\r\n public static override get minArgs() { return 1; }\r\n\r\n private _useStyle = false;\r\n private _style?: CutStyleProps;\r\n\r\n protected override get require3d() { return true; }\r\n\r\n protected async parse(args: string[]): Promise<boolean> {\r\n this._useStyle = parseBoolean(args[0]) ?? false;\r\n if (this._useStyle && args.length > 1)\r\n this._style = JSON.parse(args[1]);\r\n return true;\r\n }\r\n\r\n protected async execute(vp: Viewport) {\r\n const props: ClipStyleProps = { produceCutGeometry: true };\r\n if (this._useStyle) {\r\n if (this._style)\r\n props.cutStyle = this._style;\r\n else\r\n props.cutStyle = {\r\n viewflags: {\r\n renderMode: RenderMode.SmoothShade,\r\n visibleEdges: true,\r\n hiddenEdges: false,\r\n },\r\n appearance: {\r\n rgb: { r: 0xff, g: 0x7f, b: 0 },\r\n transparency: 0.5,\r\n nonLocatable: true,\r\n },\r\n hiddenLine: {\r\n visible: {\r\n ovrColor: true,\r\n color: ColorByName.blue,\r\n pattern: LinePixels.Solid,\r\n width: 3,\r\n },\r\n },\r\n };\r\n }\r\n\r\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\r\n vp.invalidateRenderPlan();\r\n vp.setFeatureOverrideProviderChanged();\r\n\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ClipTools.js","sourceRoot":"","sources":["../../../src/tools/ClipTools.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 {\n ClipIntersectionStyle, ClipStyle, ClipStyleProps, ColorByName, ColorDef, CutStyleProps, LinePixels, RenderMode, RgbColor,\n} from \"@itwin/core-common\";\nimport { IModelApp, Tool, Viewport } from \"@itwin/core-frontend\";\nimport { parseToggle } from \"./parseToggle\";\nimport { parseBoolean } from \"./parseBoolean\";\nimport { DisplayStyleTool } from \"./DisplayStyleTools\";\n\n/** This tool specifies or un-specifies a clip color to use for pixels inside or outside the clip region.\n * Arguments can be:\n * - clear\n * - inside <color string> | clear\n * - outside <color string> | clear\n * <color string> must be in one of the following forms:\n * \"rgb(255,0,0)\"\n * \"rgba(255,0,0,255)\"\n * \"rgb(100%,0%,0%)\"\n * \"hsl(120,50%,50%)\"\n * \"#rrbbgg\"\n * \"blanchedAlmond\" (see possible values from [[ColorByName]]). Case insensitive.\n * @see [ColorDef]\n * @beta\n */\nexport class ClipColorTool extends Tool {\n public static override toolId = \"ClipColorTool\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n\n private _clearClipColors() {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined !== vp) {\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\n props.insideColor = props.outsideColor = undefined;\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\n }\n }\n\n private setClipColor(colStr: string, which: \"insideColor\" | \"outsideColor\") {\n const vp = IModelApp.viewManager.selectedView;\n if (vp) {\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\n props[which] = colStr === \"clear\" ? undefined : RgbColor.fromColorDef(ColorDef.fromString(colStr));\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\n }\n }\n\n /** This runs the tool using the given arguments, specifying or unspecifying a clip color to use for pixels inside or outside the clip region.\n * Arguments can be:\n * - clear\n * - inside <color string> | clear\n * - outside <color string> | clear\n * <color string> must be in one of the following forms:\n * \"rgb(255,0,0)\"\n * \"rgba(255,0,0,255)\"\n * \"rgb(100%,0%,0%)\"\n * \"hsl(120,50%,50%)\"\n * \"#rrbbgg\"\n * \"blanchedAlmond\" (see possible values from [[ColorByName]]). Case insensitive.\n * @beta\n */\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n if (1 === args.length) {\n if (args[0] === \"clear\")\n this._clearClipColors();\n\n return true;\n }\n\n const which = args[0];\n if (which === \"inside\" || which === \"outside\")\n this.setClipColor(args[1], \"inside\" === which ? \"insideColor\" : \"outsideColor\");\n\n return true;\n }\n}\n\n/** This tool specifies or un-specifies a color and width to use for pixels within the specified width of a clip plane.\n * Arguments can be:\n * - off\n * - default\n * - color <color string>\n * - width <number>\n * <color string> must be in one of the following forms:\n * \"rgb(255,0,0)\"\n * \"rgba(255,0,0,255)\"\n * \"rgb(100%,0%,0%)\"\n * \"hsl(120,50%,50%)\"\n * \"#rrbbgg\"\n * \"blanchedAlmond\" (see possible values from [[ColorByName]]). Case insensitive.\n * @see [ColorDef]\n * @beta\n */\nexport class ClipIntersectionTool extends Tool {\n public static override toolId = \"ClipIntersectionTool\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 4; }\n\n private _toggleIntersectionStyle(toggle: boolean) {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined !== vp) {\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\n props.colorizeIntersection = toggle;\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\n }\n }\n\n private _defaultClipIntersection() {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined !== vp) {\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\n if (!props.intersectionStyle) {\n props.intersectionStyle = ClipIntersectionStyle.defaults;\n } else {\n props.intersectionStyle.color = RgbColor.fromColorDef(ColorDef.white);\n props.intersectionStyle.width = 1;\n }\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\n }\n }\n\n private setClipIntersection(colStr: string, width: number) {\n const vp = IModelApp.viewManager.selectedView;\n if (vp) {\n const props = vp.displayStyle.settings.clipStyle.toJSON() ?? {};\n\n if (!props.intersectionStyle) {\n props.intersectionStyle = ClipIntersectionStyle.defaults;\n }\n if (colStr) {\n props.intersectionStyle.color = RgbColor.fromColorDef(ColorDef.fromString(colStr));\n }\n if (width) {\n props.intersectionStyle.width = width;\n }\n\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\n }\n }\n\n /** This runs the tool using the given arguments, specifying or unspecifying a color and width to use for pixels within the specified width of a clip plane.\n * Arguments can be:\n * - off\n * - default\n * - color <color string>\n * - width <number>\n * <color string> must be in one of the following forms:\n * \"rgb(255,0,0)\"\n * \"rgba(255,0,0,255)\"\n * \"rgb(100%,0%,0%)\"\n * \"hsl(120,50%,50%)\"\n * \"#rrbbgg\"\n * \"blanchedAlmond\" (see possible values from [[ColorByName]]). Case insensitive.\n * @beta\n */\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n if (args[0] === \"off\") {\n this._toggleIntersectionStyle(false);\n return true;\n }\n\n this._toggleIntersectionStyle(true);\n if (args[0] === \"default\") {\n this._defaultClipIntersection();\n return true;\n }\n\n args[0] === \"color\" ? this.setClipIntersection(args[1], +args[3]) : this.setClipIntersection(args[3], +args[1]);\n return true;\n }\n}\n\n/** Controls a view state's view details' flag for producing cut geometry for a clip style.\n * @beta\n */\nexport class ToggleSectionCutTool extends Tool {\n public static override toolId = \"ToggleSectionCut\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n /** This method runs the tool, controlling a view state's view details' flag for producing cut geometry for a clip style.\n * @param produceCutGeometry whether to produce cut geometry\n */\n public override async run(produceCutGeometry?: boolean): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (vp) {\n const style = vp.view.displayStyle.settings.clipStyle;\n produceCutGeometry = produceCutGeometry ?? !style.produceCutGeometry;\n if (produceCutGeometry !== style.produceCutGeometry) {\n const json = {\n ...vp.view.displayStyle.settings.clipStyle.toJSON(),\n produceCutGeometry,\n };\n\n vp.view.displayStyle.settings.clipStyle = ClipStyle.fromJSON(json);\n vp.invalidateScene();\n }\n }\n\n return true;\n }\n\n /** Executes this tool's run method with args[0] containing `produceCutGeometry`.\n * @see [[run]]\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\n/** Simple tool that toggles a hard-coded clip style overriding various aspects of the cut geometry appearance.\n * @beta\n */\nexport class TestClipStyleTool extends DisplayStyleTool {\n public static override toolId = \"TestClipStyle\";\n public static override get maxArgs() { return 2; }\n public static override get minArgs() { return 1; }\n\n private _useStyle = false;\n private _style?: CutStyleProps;\n\n protected override get require3d() { return true; }\n\n protected async parse(args: string[]): Promise<boolean> {\n this._useStyle = parseBoolean(args[0]) ?? false;\n if (this._useStyle && args.length > 1)\n this._style = JSON.parse(args[1]);\n return true;\n }\n\n protected async execute(vp: Viewport) {\n const props: ClipStyleProps = { produceCutGeometry: true };\n if (this._useStyle) {\n if (this._style)\n props.cutStyle = this._style;\n else\n props.cutStyle = {\n viewflags: {\n renderMode: RenderMode.SmoothShade,\n visibleEdges: true,\n hiddenEdges: false,\n },\n appearance: {\n rgb: { r: 0xff, g: 0x7f, b: 0 },\n transparency: 0.5,\n nonLocatable: true,\n },\n hiddenLine: {\n visible: {\n ovrColor: true,\n color: ColorByName.blue,\n pattern: LinePixels.Solid,\n width: 3,\n },\n },\n };\n }\n\n vp.displayStyle.settings.clipStyle = ClipStyle.fromJSON(props);\n vp.invalidateRenderPlan();\n vp.setFeatureOverrideProviderChanged();\n\n return true;\n }\n}\n"]}
@@ -45,6 +45,7 @@ export class DisplayStyleTool extends Tool {
45
45
  * @beta
46
46
  */
47
47
  export class ChangeViewFlagsTool extends Tool {
48
+ static { this.toolId = "ChangeViewFlags"; }
48
49
  static get maxArgs() { return undefined; }
49
50
  static get minArgs() { return 1; }
50
51
  async run(vf, vp) {
@@ -89,11 +90,11 @@ export class ChangeViewFlagsTool extends Tool {
89
90
  return this.run(new ViewFlags(vf), vp);
90
91
  }
91
92
  }
92
- ChangeViewFlagsTool.toolId = "ChangeViewFlags";
93
93
  /** Toggles the skybox.
94
94
  * @beta
95
95
  */
96
96
  export class ToggleSkyboxTool extends DisplayStyleTool {
97
+ static { this.toolId = "ToggleSkybox"; }
97
98
  get require3d() { return true; }
98
99
  async parse(_args) { return true; } // no arguments
99
100
  async execute(vp) {
@@ -102,11 +103,11 @@ export class ToggleSkyboxTool extends DisplayStyleTool {
102
103
  return true;
103
104
  }
104
105
  }
105
- ToggleSkyboxTool.toolId = "ToggleSkybox";
106
106
  /** Defines a [SkySphere]($common) to apply to the current view.
107
107
  * @beta
108
108
  */
109
109
  export class SkySphereTool extends DisplayStyleTool {
110
+ static { this.toolId = "SetSkySphere"; }
110
111
  static get minArgs() { return 1; }
111
112
  static get maxArgs() { return 1; }
112
113
  get require3d() { return true; }
@@ -124,7 +125,6 @@ export class SkySphereTool extends DisplayStyleTool {
124
125
  return true;
125
126
  }
126
127
  }
127
- SkySphereTool.toolId = "SetSkySphere";
128
128
  /** Defines a [SkyCube]($common) to apply to the current view.
129
129
  * @beta
130
130
  */
@@ -133,6 +133,7 @@ export class SkyCubeTool extends DisplayStyleTool {
133
133
  super(...arguments);
134
134
  this._images = [];
135
135
  }
136
+ static { this.toolId = "SetSkyCube"; }
136
137
  static get minArgs() { return 1; }
137
138
  static get maxArgs() { return 6; }
138
139
  get require3d() { return true; }
@@ -187,7 +188,6 @@ export class SkyCubeTool extends DisplayStyleTool {
187
188
  return true;
188
189
  }
189
190
  }
190
- SkyCubeTool.toolId = "SetSkyCube";
191
191
  /** Outputs (and optionally copies to the clipboard) a "rendering style" as a partial DisplayStyle3dSettingsProps JSON object based
192
192
  * on the current view's display style settings.
193
193
  * All arguments are optional, of the form "name=value" where `value` is 0 for false or 1 for true. All arguments default to `false` if omitted.
@@ -209,6 +209,7 @@ export class SaveRenderingStyleTool extends DisplayStyleTool {
209
209
  this._copyToClipboard = false;
210
210
  this._quote = false;
211
211
  }
212
+ static { this.toolId = "SaveRenderingStyle"; }
212
213
  static get minArgs() { return 0; }
213
214
  static get maxArgs() { return 7; }
214
215
  async parse(inputArgs) {
@@ -235,12 +236,12 @@ export class SaveRenderingStyleTool extends DisplayStyleTool {
235
236
  return false;
236
237
  }
237
238
  }
238
- SaveRenderingStyleTool.toolId = "SaveRenderingStyle";
239
239
  /** Given a "rendering style" as a partial DisplayStyle3dSettingsProperties JSON string, apply it to the selected viewport's display style.
240
240
  * @see [DisplayStyleSettings.applyOverrides]($common) for details.
241
241
  * @beta
242
242
  */
243
243
  export class ApplyRenderingStyleTool extends DisplayStyleTool {
244
+ static { this.toolId = "ApplyRenderingStyle"; }
244
245
  static get minArgs() { return 1; }
245
246
  static get maxArgs() { return 1; }
246
247
  async parse(args) {
@@ -259,7 +260,6 @@ export class ApplyRenderingStyleTool extends DisplayStyleTool {
259
260
  return false;
260
261
  }
261
262
  }
262
- ApplyRenderingStyleTool.toolId = "ApplyRenderingStyle";
263
263
  /** Apply appearance overrides to one or more subcategories in the active viewport.
264
264
  * @beta
265
265
  */
@@ -269,6 +269,7 @@ export class OverrideSubCategoryTool extends DisplayStyleTool {
269
269
  this._overrideProps = {};
270
270
  this._subcategoryIds = [];
271
271
  }
272
+ static { this.toolId = "OverrideSubCategory"; }
272
273
  static get minArgs() { return 1; }
273
274
  static get maxArgs() { return 7; }
274
275
  async parse(inArgs) {
@@ -293,11 +294,11 @@ export class OverrideSubCategoryTool extends DisplayStyleTool {
293
294
  return true;
294
295
  }
295
296
  }
296
- OverrideSubCategoryTool.toolId = "OverrideSubCategory";
297
297
  /** Set whether background color is ignored when applying white-on-white reversal.
298
298
  * @beta
299
299
  */
300
300
  export class WoWIgnoreBackgroundTool extends DisplayStyleTool {
301
+ static { this.toolId = "WoWIgnoreBackground"; }
301
302
  static get minArgs() { return 0; }
302
303
  static get maxArgs() { return 1; }
303
304
  async parse(args) {
@@ -313,12 +314,12 @@ export class WoWIgnoreBackgroundTool extends DisplayStyleTool {
313
314
  return true;
314
315
  }
315
316
  }
316
- WoWIgnoreBackgroundTool.toolId = "WoWIgnoreBackground";
317
317
  /** Toggle whether surfaces display with overlaid wiremesh in the active viewport.
318
318
  * @see [ViewFlags.wiremesh]($common).
319
319
  * @beta
320
320
  */
321
321
  export class ToggleWiremeshTool extends DisplayStyleTool {
322
+ static { this.toolId = "ToggleWiremesh"; }
322
323
  static get minArgs() { return 0; }
323
324
  static get maxArgs() { return 1; }
324
325
  async parse(args) {
@@ -333,11 +334,11 @@ export class ToggleWiremeshTool extends DisplayStyleTool {
333
334
  return true;
334
335
  }
335
336
  }
336
- ToggleWiremeshTool.toolId = "ToggleWiremesh";
337
337
  /** Change the background color of the active viewport and optionally its transparency.
338
338
  * @beta
339
339
  */
340
340
  export class ChangeBackgroundColorTool extends DisplayStyleTool {
341
+ static { this.toolId = "ChangeBackgroundColor"; }
341
342
  static get minArgs() { return 1; }
342
343
  static get maxArgs() { return 1; }
343
344
  async parse(args) {
@@ -351,5 +352,4 @@ export class ChangeBackgroundColorTool extends DisplayStyleTool {
351
352
  return true;
352
353
  }
353
354
  }
354
- ChangeBackgroundColorTool.toolId = "ChangeBackgroundColor";
355
355
  //# sourceMappingURL=DisplayStyleTools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayStyleTools.js","sourceRoot":"","sources":["../../../src/tools/DisplayStyleTools.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport {\r\n ColorDef, DisplayStyle3dSettingsProps, DisplayStyleOverridesOptions, RenderMode, SkyCube, SkySphere,\r\n SubCategoryAppearance, SubCategoryOverride, ViewFlags, ViewFlagsProperties, WhiteOnWhiteReversalSettings,\r\n} from \"@itwin/core-common\";\r\nimport {\r\n DisplayStyle3dState, IModelApp, NotifyMessageDetails, OutputMessagePriority, Tool, Viewport,\r\n} from \"@itwin/core-frontend\";\r\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\r\nimport { parseArgs } from \"./parseArgs\";\r\nimport { parseToggle } from \"./parseToggle\";\r\n\r\ntype BooleanFlagName =\r\n \"dimensions\" | \"patterns\" | \"weights\" | \"styles\" | \"transparency\" | \"fill\" | \"textures\" | \"materials\" | \"acsTriad\" | \"grid\" | \"visibleEdges\" |\r\n \"hiddenEdges\" | \"lighting\" | \"shadows\" | \"clipVolume\" | \"constructions\" | \"monochrome\" | \"backgroundMap\" | \"ambientOcclusion\" | \"forceSurfaceDiscard\"\r\n | \"wiremesh\";\r\n\r\n// Compiler has the info to construct this array for us, but we have no access to it...\r\nconst booleanFlagNames: BooleanFlagName[] = [\r\n \"dimensions\", \"patterns\", \"weights\", \"styles\", \"transparency\", \"fill\", \"textures\", \"materials\", \"acsTriad\", \"grid\", \"visibleEdges\",\r\n \"hiddenEdges\", \"lighting\", \"shadows\", \"clipVolume\", \"constructions\", \"monochrome\", \"backgroundMap\", \"ambientOcclusion\", \"forceSurfaceDiscard\",\r\n \"wiremesh\",\r\n];\r\n\r\nconst lowercaseBooleanFlagNames = booleanFlagNames.map((name) => name.toLowerCase());\r\n\r\n/** Modifies the selected viewport's DisplayStyleState.\r\n * @beta\r\n */\r\nexport abstract class DisplayStyleTool extends Tool {\r\n protected get require3d() { return false; }\r\n // Return true if the display style was modified - we will invalidate the viewport's render plan.\r\n protected abstract execute(vp: Viewport): Promise<boolean>;\r\n // Return false if failed to parse.\r\n protected abstract parse(args: string[], vp: Viewport): Promise<boolean>;\r\n\r\n public override async run(): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined !== vp && (!this.require3d || vp.view.is3d()) && await this.execute(vp))\r\n vp.displayStyle = vp.view.displayStyle;\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined !== vp && (!this.require3d || vp.view.is3d()) && await this.parse(args, vp))\r\n return this.run();\r\n else\r\n return false;\r\n }\r\n}\r\n\r\n/** Modifies the selected viewport's ViewFlags.\r\n * The keyin syntax is as follows:\r\n * fdt change viewflags flag=value\r\n * Where 'flag' is one of the BooleanFlagName values, or \"renderMode\"; and value is an integer.\r\n * For boolean flags, value is 0 for false or 1 for true. For renderMode, value is one of the RenderMode enum values.\r\n * Flag names are case-insensitive.\r\n * @beta\r\n */\r\nexport class ChangeViewFlagsTool extends Tool {\r\n public static override toolId = \"ChangeViewFlags\";\r\n public static override get maxArgs() { return undefined; }\r\n public static override get minArgs() { return 1; }\r\n\r\n public override async run(vf: ViewFlags, vp?: Viewport): Promise<boolean> {\r\n if (undefined !== vf && undefined !== vp)\r\n vp.viewFlags = vf;\r\n\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp || 0 === args.length)\r\n return true;\r\n\r\n const vf: Partial<ViewFlagsProperties> = { ...vp.viewFlags };\r\n for (const arg of args) {\r\n const parts = arg.split(\"=\");\r\n if (2 !== parts.length)\r\n continue;\r\n\r\n const value = parseInt(parts[1], 10);\r\n if (Number.isNaN(value))\r\n continue;\r\n\r\n const name = parts[0].toLowerCase();\r\n if (name === \"rendermode\") {\r\n switch (value) {\r\n case RenderMode.SmoothShade:\r\n case RenderMode.Wireframe:\r\n case RenderMode.HiddenLine:\r\n case RenderMode.SolidFill:\r\n vf.renderMode = value;\r\n vp.invalidateRenderPlan();\r\n break;\r\n }\r\n\r\n continue;\r\n }\r\n\r\n if (0 !== value && 1 !== value)\r\n continue;\r\n\r\n const index = lowercaseBooleanFlagNames.indexOf(name);\r\n if (-1 !== index) {\r\n const propName = booleanFlagNames[index];\r\n vf[propName] = 0 !== value;\r\n vp.invalidateRenderPlan();\r\n }\r\n }\r\n\r\n return this.run(new ViewFlags(vf), vp);\r\n }\r\n}\r\n\r\n/** Toggles the skybox.\r\n * @beta\r\n */\r\nexport class ToggleSkyboxTool extends DisplayStyleTool {\r\n public static override toolId = \"ToggleSkybox\";\r\n\r\n public override get require3d() { return true; }\r\n\r\n public async parse(_args: string[]): Promise<boolean> { return true; } // no arguments\r\n\r\n public async execute(vp: Viewport) {\r\n const style = vp.view.displayStyle as DisplayStyle3dState;\r\n style.environment = style.environment.withDisplay({ sky: !style.environment.displaySky });\r\n return true;\r\n }\r\n}\r\n\r\n/** Defines a [SkySphere]($common) to apply to the current view.\r\n * @beta\r\n */\r\nexport class SkySphereTool extends DisplayStyleTool {\r\n private _image?: string;\r\n\r\n public static override toolId = \"SetSkySphere\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public override get require3d() { return true; }\r\n\r\n public async parse(args: string[]) {\r\n this._image = args[0];\r\n return true;\r\n }\r\n\r\n public async execute(vp: Viewport) {\r\n if (this._image && vp.view.is3d()) {\r\n vp.view.displayStyle.environment = vp.view.displayStyle.environment.clone({\r\n displaySky: true,\r\n sky: new SkySphere(this._image),\r\n });\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Defines a [SkyCube]($common) to apply to the current view.\r\n * @beta\r\n */\r\nexport class SkyCubeTool extends DisplayStyleTool {\r\n private _images: string[] = [];\r\n\r\n public static override toolId = \"SetSkyCube\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 6; }\r\n\r\n public override get require3d() { return true; }\r\n\r\n public async parse(args: string[]) {\r\n this._images = [...args];\r\n return true;\r\n }\r\n\r\n public async execute(vp: Viewport) {\r\n const imgs = this._images;\r\n if (imgs.length === 0 || !vp.view.is3d())\r\n return true;\r\n\r\n let top, bottom, left, right, front, back;\r\n switch (imgs.length) {\r\n case 1:\r\n top = bottom = left = right = front = back = imgs[0];\r\n break;\r\n case 2:\r\n top = bottom = imgs[0];\r\n left = right = front = back = imgs[1];\r\n break;\r\n case 3:\r\n top = bottom = imgs[0];\r\n left = right = imgs[1];\r\n front = back = imgs[2];\r\n break;\r\n case 4:\r\n top = imgs[0];\r\n bottom = imgs[1];\r\n left = right = imgs[2];\r\n front = back = imgs[3];\r\n break;\r\n case 5:\r\n top = bottom = imgs[0];\r\n left = imgs[1];\r\n right = imgs[2];\r\n front = imgs[3];\r\n back = imgs[4];\r\n break;\r\n default:\r\n top = imgs[0];\r\n bottom = imgs[1];\r\n left = imgs[2];\r\n right = imgs[3];\r\n front = imgs[4];\r\n back = imgs[5];\r\n break;\r\n }\r\n\r\n vp.view.displayStyle.environment = vp.view.displayStyle.environment.clone({\r\n displaySky: true,\r\n sky: new SkyCube({ top, bottom, left, right, front, back }),\r\n });\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Outputs (and optionally copies to the clipboard) a \"rendering style\" as a partial DisplayStyle3dSettingsProps JSON object based\r\n * on the current view's display style settings.\r\n * All arguments are optional, of the form \"name=value\" where `value` is 0 for false or 1 for true. All arguments default to `false` if omitted.\r\n * @see [DisplayStyleSettings.toOverrides]($common) for details.\r\n * Arguments:\r\n * * `all`: include all settings.\r\n * * `imodel`: include iModel-specific settings.\r\n * * `project`: include iTwin-specific (formerly known as project) settings.\r\n * * `map`: include background map settings.\r\n * * `drawingaids`: include drawing aid decoration settings.\r\n * * `copy`: copy result to system clipboard.\r\n * * `quote`: format the JSON so it can be parsed directly by [ApplyRenderingStyleTool].\r\n * @beta\r\n */\r\nexport class SaveRenderingStyleTool extends DisplayStyleTool {\r\n private _options: DisplayStyleOverridesOptions = {};\r\n private _copyToClipboard = false;\r\n private _quote = false;\r\n\r\n public static override toolId = \"SaveRenderingStyle\";\r\n\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 7; }\r\n\r\n public async parse(inputArgs: string[]) {\r\n const args = parseArgs(inputArgs);\r\n function getArg(name: string): true | undefined {\r\n return args.getBoolean(name) ? true : undefined;\r\n }\r\n\r\n this._options.includeAll = getArg(\"a\");\r\n this._options.includeIModelSpecific = getArg(\"i\");\r\n this._options.includeITwinSpecific = getArg(\"p\"); // \"p\" for backwards compatibility with old \"project\" terminology\r\n this._options.includeBackgroundMap = getArg(\"m\");\r\n this._options.includeDrawingAids = getArg(\"d\");\r\n this._copyToClipboard = true === getArg(\"c\");\r\n this._quote = true === getArg(\"q\");\r\n\r\n return true;\r\n }\r\n\r\n public async execute(vp: Viewport) {\r\n let json = JSON.stringify(vp.displayStyle.settings.toOverrides(this._options));\r\n if (this._quote)\r\n json = `\"${json.replace(/\"/g, '\"\"')}\"`;\r\n\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, \"Rendering style saved\", json));\r\n if (this._copyToClipboard)\r\n copyStringToClipboard(json);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/** Given a \"rendering style\" as a partial DisplayStyle3dSettingsProperties JSON string, apply it to the selected viewport's display style.\r\n * @see [DisplayStyleSettings.applyOverrides]($common) for details.\r\n * @beta\r\n */\r\nexport class ApplyRenderingStyleTool extends DisplayStyleTool {\r\n private _overrides?: DisplayStyle3dSettingsProps;\r\n\r\n public static override toolId = \"ApplyRenderingStyle\";\r\n\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public async parse(args: string[]) {\r\n try {\r\n this._overrides = JSON.parse(args[0]);\r\n return true;\r\n } catch {\r\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, \"Invalid JSON\"));\r\n return false;\r\n }\r\n }\r\n\r\n public async execute(vp: Viewport) {\r\n if (this._overrides)\r\n vp.overrideDisplayStyle(this._overrides);\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/** Apply appearance overrides to one or more subcategories in the active viewport.\r\n * @beta\r\n */\r\nexport class OverrideSubCategoryTool extends DisplayStyleTool {\r\n private _overrideProps: SubCategoryAppearance.Props = {};\r\n private _subcategoryIds: string[] = [];\r\n\r\n public static override toolId = \"OverrideSubCategory\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 7; }\r\n\r\n public async parse(inArgs: string[]) {\r\n const args = parseArgs(inArgs);\r\n const ids = args.get(\"i\");\r\n if (ids)\r\n this._subcategoryIds = ids.split(\",\");\r\n\r\n const props = this._overrideProps;\r\n props.color = args.getInteger(\"c\");\r\n props.weight = args.getInteger(\"w\");\r\n props.priority = args.getInteger(\"p\");\r\n props.transp = args.getFloat(\"t\");\r\n props.material = args.get(\"m\");\r\n\r\n const visible = args.getBoolean(\"v\");\r\n props.invisible = typeof visible === \"boolean\" ? !visible : undefined;\r\n return true;\r\n }\r\n\r\n public async execute(vp: Viewport) {\r\n const ovr = SubCategoryOverride.fromJSON(this._overrideProps);\r\n for (const id of this._subcategoryIds)\r\n vp.displayStyle.overrideSubCategory(id, ovr);\r\n\r\n return true;\r\n }\r\n}\r\n\r\n/** Set whether background color is ignored when applying white-on-white reversal.\r\n * @beta\r\n */\r\nexport class WoWIgnoreBackgroundTool extends DisplayStyleTool {\r\n private _ignore?: boolean;\r\n\r\n public static override toolId = \"WoWIgnoreBackground\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public async parse(args: string[]) {\r\n const ignore = parseToggle(args[0]);\r\n if (typeof ignore === \"string\")\r\n return false;\r\n\r\n this._ignore = ignore;\r\n return true;\r\n }\r\n\r\n public async execute(vp: Viewport) {\r\n const ignoreBackgroundColor = this._ignore ?? !vp.displayStyle.settings.whiteOnWhiteReversal.ignoreBackgroundColor;\r\n vp.displayStyle.settings.whiteOnWhiteReversal = WhiteOnWhiteReversalSettings.fromJSON({ ignoreBackgroundColor });\r\n return true;\r\n }\r\n}\r\n\r\n/** Toggle whether surfaces display with overlaid wiremesh in the active viewport.\r\n * @see [ViewFlags.wiremesh]($common).\r\n * @beta\r\n */\r\nexport class ToggleWiremeshTool extends DisplayStyleTool {\r\n private _enable?: boolean;\r\n\r\n public static override toolId = \"ToggleWiremesh\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public async parse(args: string[]) {\r\n const enable = parseToggle(args[0]);\r\n if (typeof enable === \"string\")\r\n return false;\r\n\r\n this._enable = enable;\r\n return true;\r\n }\r\n\r\n public async execute(vp: Viewport) {\r\n vp.viewFlags = vp.viewFlags.with(\"wiremesh\", this._enable ?? !vp.viewFlags.wiremesh);\r\n return true;\r\n }\r\n}\r\n\r\n/** Change the background color of the active viewport and optionally its transparency.\r\n * @beta\r\n */\r\nexport class ChangeBackgroundColorTool extends DisplayStyleTool {\r\n private _color?: ColorDef;\r\n\r\n public static override toolId = \"ChangeBackgroundColor\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 1; }\r\n\r\n public async parse(args: string[]) {\r\n this._color = ColorDef.fromString(args[0]);\r\n return true;\r\n }\r\n\r\n public async execute(vp: Viewport) {\r\n if (!this._color)\r\n return false;\r\n\r\n vp.displayStyle.backgroundColor = this._color;\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DisplayStyleTools.js","sourceRoot":"","sources":["../../../src/tools/DisplayStyleTools.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 {\n ColorDef, DisplayStyle3dSettingsProps, DisplayStyleOverridesOptions, RenderMode, SkyCube, SkySphere,\n SubCategoryAppearance, SubCategoryOverride, ViewFlags, ViewFlagsProperties, WhiteOnWhiteReversalSettings,\n} from \"@itwin/core-common\";\nimport {\n DisplayStyle3dState, IModelApp, NotifyMessageDetails, OutputMessagePriority, Tool, Viewport,\n} from \"@itwin/core-frontend\";\nimport { copyStringToClipboard } from \"../ClipboardUtilities\";\nimport { parseArgs } from \"./parseArgs\";\nimport { parseToggle } from \"./parseToggle\";\n\ntype BooleanFlagName =\n \"dimensions\" | \"patterns\" | \"weights\" | \"styles\" | \"transparency\" | \"fill\" | \"textures\" | \"materials\" | \"acsTriad\" | \"grid\" | \"visibleEdges\" |\n \"hiddenEdges\" | \"lighting\" | \"shadows\" | \"clipVolume\" | \"constructions\" | \"monochrome\" | \"backgroundMap\" | \"ambientOcclusion\" | \"forceSurfaceDiscard\"\n | \"wiremesh\";\n\n// Compiler has the info to construct this array for us, but we have no access to it...\nconst booleanFlagNames: BooleanFlagName[] = [\n \"dimensions\", \"patterns\", \"weights\", \"styles\", \"transparency\", \"fill\", \"textures\", \"materials\", \"acsTriad\", \"grid\", \"visibleEdges\",\n \"hiddenEdges\", \"lighting\", \"shadows\", \"clipVolume\", \"constructions\", \"monochrome\", \"backgroundMap\", \"ambientOcclusion\", \"forceSurfaceDiscard\",\n \"wiremesh\",\n];\n\nconst lowercaseBooleanFlagNames = booleanFlagNames.map((name) => name.toLowerCase());\n\n/** Modifies the selected viewport's DisplayStyleState.\n * @beta\n */\nexport abstract class DisplayStyleTool extends Tool {\n protected get require3d() { return false; }\n // Return true if the display style was modified - we will invalidate the viewport's render plan.\n protected abstract execute(vp: Viewport): Promise<boolean>;\n // Return false if failed to parse.\n protected abstract parse(args: string[], vp: Viewport): Promise<boolean>;\n\n public override async run(): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined !== vp && (!this.require3d || vp.view.is3d()) && await this.execute(vp))\n vp.displayStyle = vp.view.displayStyle;\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined !== vp && (!this.require3d || vp.view.is3d()) && await this.parse(args, vp))\n return this.run();\n else\n return false;\n }\n}\n\n/** Modifies the selected viewport's ViewFlags.\n * The keyin syntax is as follows:\n * fdt change viewflags flag=value\n * Where 'flag' is one of the BooleanFlagName values, or \"renderMode\"; and value is an integer.\n * For boolean flags, value is 0 for false or 1 for true. For renderMode, value is one of the RenderMode enum values.\n * Flag names are case-insensitive.\n * @beta\n */\nexport class ChangeViewFlagsTool extends Tool {\n public static override toolId = \"ChangeViewFlags\";\n public static override get maxArgs() { return undefined; }\n public static override get minArgs() { return 1; }\n\n public override async run(vf: ViewFlags, vp?: Viewport): Promise<boolean> {\n if (undefined !== vf && undefined !== vp)\n vp.viewFlags = vf;\n\n return true;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp || 0 === args.length)\n return true;\n\n const vf: Partial<ViewFlagsProperties> = { ...vp.viewFlags };\n for (const arg of args) {\n const parts = arg.split(\"=\");\n if (2 !== parts.length)\n continue;\n\n const value = parseInt(parts[1], 10);\n if (Number.isNaN(value))\n continue;\n\n const name = parts[0].toLowerCase();\n if (name === \"rendermode\") {\n switch (value) {\n case RenderMode.SmoothShade:\n case RenderMode.Wireframe:\n case RenderMode.HiddenLine:\n case RenderMode.SolidFill:\n vf.renderMode = value;\n vp.invalidateRenderPlan();\n break;\n }\n\n continue;\n }\n\n if (0 !== value && 1 !== value)\n continue;\n\n const index = lowercaseBooleanFlagNames.indexOf(name);\n if (-1 !== index) {\n const propName = booleanFlagNames[index];\n vf[propName] = 0 !== value;\n vp.invalidateRenderPlan();\n }\n }\n\n return this.run(new ViewFlags(vf), vp);\n }\n}\n\n/** Toggles the skybox.\n * @beta\n */\nexport class ToggleSkyboxTool extends DisplayStyleTool {\n public static override toolId = \"ToggleSkybox\";\n\n public override get require3d() { return true; }\n\n public async parse(_args: string[]): Promise<boolean> { return true; } // no arguments\n\n public async execute(vp: Viewport) {\n const style = vp.view.displayStyle as DisplayStyle3dState;\n style.environment = style.environment.withDisplay({ sky: !style.environment.displaySky });\n return true;\n }\n}\n\n/** Defines a [SkySphere]($common) to apply to the current view.\n * @beta\n */\nexport class SkySphereTool extends DisplayStyleTool {\n private _image?: string;\n\n public static override toolId = \"SetSkySphere\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 1; }\n\n public override get require3d() { return true; }\n\n public async parse(args: string[]) {\n this._image = args[0];\n return true;\n }\n\n public async execute(vp: Viewport) {\n if (this._image && vp.view.is3d()) {\n vp.view.displayStyle.environment = vp.view.displayStyle.environment.clone({\n displaySky: true,\n sky: new SkySphere(this._image),\n });\n }\n\n return true;\n }\n}\n\n/** Defines a [SkyCube]($common) to apply to the current view.\n * @beta\n */\nexport class SkyCubeTool extends DisplayStyleTool {\n private _images: string[] = [];\n\n public static override toolId = \"SetSkyCube\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 6; }\n\n public override get require3d() { return true; }\n\n public async parse(args: string[]) {\n this._images = [...args];\n return true;\n }\n\n public async execute(vp: Viewport) {\n const imgs = this._images;\n if (imgs.length === 0 || !vp.view.is3d())\n return true;\n\n let top, bottom, left, right, front, back;\n switch (imgs.length) {\n case 1:\n top = bottom = left = right = front = back = imgs[0];\n break;\n case 2:\n top = bottom = imgs[0];\n left = right = front = back = imgs[1];\n break;\n case 3:\n top = bottom = imgs[0];\n left = right = imgs[1];\n front = back = imgs[2];\n break;\n case 4:\n top = imgs[0];\n bottom = imgs[1];\n left = right = imgs[2];\n front = back = imgs[3];\n break;\n case 5:\n top = bottom = imgs[0];\n left = imgs[1];\n right = imgs[2];\n front = imgs[3];\n back = imgs[4];\n break;\n default:\n top = imgs[0];\n bottom = imgs[1];\n left = imgs[2];\n right = imgs[3];\n front = imgs[4];\n back = imgs[5];\n break;\n }\n\n vp.view.displayStyle.environment = vp.view.displayStyle.environment.clone({\n displaySky: true,\n sky: new SkyCube({ top, bottom, left, right, front, back }),\n });\n\n return true;\n }\n}\n\n/** Outputs (and optionally copies to the clipboard) a \"rendering style\" as a partial DisplayStyle3dSettingsProps JSON object based\n * on the current view's display style settings.\n * All arguments are optional, of the form \"name=value\" where `value` is 0 for false or 1 for true. All arguments default to `false` if omitted.\n * @see [DisplayStyleSettings.toOverrides]($common) for details.\n * Arguments:\n * * `all`: include all settings.\n * * `imodel`: include iModel-specific settings.\n * * `project`: include iTwin-specific (formerly known as project) settings.\n * * `map`: include background map settings.\n * * `drawingaids`: include drawing aid decoration settings.\n * * `copy`: copy result to system clipboard.\n * * `quote`: format the JSON so it can be parsed directly by [ApplyRenderingStyleTool].\n * @beta\n */\nexport class SaveRenderingStyleTool extends DisplayStyleTool {\n private _options: DisplayStyleOverridesOptions = {};\n private _copyToClipboard = false;\n private _quote = false;\n\n public static override toolId = \"SaveRenderingStyle\";\n\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 7; }\n\n public async parse(inputArgs: string[]) {\n const args = parseArgs(inputArgs);\n function getArg(name: string): true | undefined {\n return args.getBoolean(name) ? true : undefined;\n }\n\n this._options.includeAll = getArg(\"a\");\n this._options.includeIModelSpecific = getArg(\"i\");\n this._options.includeITwinSpecific = getArg(\"p\"); // \"p\" for backwards compatibility with old \"project\" terminology\n this._options.includeBackgroundMap = getArg(\"m\");\n this._options.includeDrawingAids = getArg(\"d\");\n this._copyToClipboard = true === getArg(\"c\");\n this._quote = true === getArg(\"q\");\n\n return true;\n }\n\n public async execute(vp: Viewport) {\n let json = JSON.stringify(vp.displayStyle.settings.toOverrides(this._options));\n if (this._quote)\n json = `\"${json.replace(/\"/g, '\"\"')}\"`;\n\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Info, \"Rendering style saved\", json));\n if (this._copyToClipboard)\n copyStringToClipboard(json);\n\n return false;\n }\n}\n\n/** Given a \"rendering style\" as a partial DisplayStyle3dSettingsProperties JSON string, apply it to the selected viewport's display style.\n * @see [DisplayStyleSettings.applyOverrides]($common) for details.\n * @beta\n */\nexport class ApplyRenderingStyleTool extends DisplayStyleTool {\n private _overrides?: DisplayStyle3dSettingsProps;\n\n public static override toolId = \"ApplyRenderingStyle\";\n\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 1; }\n\n public async parse(args: string[]) {\n try {\n this._overrides = JSON.parse(args[0]);\n return true;\n } catch {\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, \"Invalid JSON\"));\n return false;\n }\n }\n\n public async execute(vp: Viewport) {\n if (this._overrides)\n vp.overrideDisplayStyle(this._overrides);\n\n return false;\n }\n}\n\n/** Apply appearance overrides to one or more subcategories in the active viewport.\n * @beta\n */\nexport class OverrideSubCategoryTool extends DisplayStyleTool {\n private _overrideProps: SubCategoryAppearance.Props = {};\n private _subcategoryIds: string[] = [];\n\n public static override toolId = \"OverrideSubCategory\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 7; }\n\n public async parse(inArgs: string[]) {\n const args = parseArgs(inArgs);\n const ids = args.get(\"i\");\n if (ids)\n this._subcategoryIds = ids.split(\",\");\n\n const props = this._overrideProps;\n props.color = args.getInteger(\"c\");\n props.weight = args.getInteger(\"w\");\n props.priority = args.getInteger(\"p\");\n props.transp = args.getFloat(\"t\");\n props.material = args.get(\"m\");\n\n const visible = args.getBoolean(\"v\");\n props.invisible = typeof visible === \"boolean\" ? !visible : undefined;\n return true;\n }\n\n public async execute(vp: Viewport) {\n const ovr = SubCategoryOverride.fromJSON(this._overrideProps);\n for (const id of this._subcategoryIds)\n vp.displayStyle.overrideSubCategory(id, ovr);\n\n return true;\n }\n}\n\n/** Set whether background color is ignored when applying white-on-white reversal.\n * @beta\n */\nexport class WoWIgnoreBackgroundTool extends DisplayStyleTool {\n private _ignore?: boolean;\n\n public static override toolId = \"WoWIgnoreBackground\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n public async parse(args: string[]) {\n const ignore = parseToggle(args[0]);\n if (typeof ignore === \"string\")\n return false;\n\n this._ignore = ignore;\n return true;\n }\n\n public async execute(vp: Viewport) {\n const ignoreBackgroundColor = this._ignore ?? !vp.displayStyle.settings.whiteOnWhiteReversal.ignoreBackgroundColor;\n vp.displayStyle.settings.whiteOnWhiteReversal = WhiteOnWhiteReversalSettings.fromJSON({ ignoreBackgroundColor });\n return true;\n }\n}\n\n/** Toggle whether surfaces display with overlaid wiremesh in the active viewport.\n * @see [ViewFlags.wiremesh]($common).\n * @beta\n */\nexport class ToggleWiremeshTool extends DisplayStyleTool {\n private _enable?: boolean;\n\n public static override toolId = \"ToggleWiremesh\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n\n public async parse(args: string[]) {\n const enable = parseToggle(args[0]);\n if (typeof enable === \"string\")\n return false;\n\n this._enable = enable;\n return true;\n }\n\n public async execute(vp: Viewport) {\n vp.viewFlags = vp.viewFlags.with(\"wiremesh\", this._enable ?? !vp.viewFlags.wiremesh);\n return true;\n }\n}\n\n/** Change the background color of the active viewport and optionally its transparency.\n * @beta\n */\nexport class ChangeBackgroundColorTool extends DisplayStyleTool {\n private _color?: ColorDef;\n\n public static override toolId = \"ChangeBackgroundColor\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 1; }\n\n public async parse(args: string[]) {\n this._color = ColorDef.fromString(args[0]);\n return true;\n }\n\n public async execute(vp: Viewport) {\n if (!this._color)\n return false;\n\n vp.displayStyle.backgroundColor = this._color;\n return true;\n }\n}\n"]}
@@ -35,6 +35,7 @@ export class EmphasizeSelectedElementsTool extends EmphasizeElementsTool {
35
35
  super(...arguments);
36
36
  this._type = 0 /* OverrideType.None */;
37
37
  }
38
+ static { this.toolId = "EmphasizeSelectedElements"; }
38
39
  static get minArgs() { return 0; }
39
40
  static get maxArgs() { return 1; }
40
41
  execute(emph, vp) {
@@ -69,30 +70,30 @@ export class EmphasizeSelectedElementsTool extends EmphasizeElementsTool {
69
70
  return this.run(args);
70
71
  }
71
72
  }
72
- EmphasizeSelectedElementsTool.toolId = "EmphasizeSelectedElements";
73
73
  /** Isolate all selected elements so that *only* those elements will be drawn.
74
74
  * @beta
75
75
  */
76
76
  export class IsolateSelectedElementsTool extends EmphasizeElementsTool {
77
+ static { this.toolId = "IsolateSelectedElements"; }
77
78
  execute(emph, vp) {
78
79
  emph.isolateSelectedElements(vp, true, true);
79
80
  }
80
81
  }
81
- IsolateSelectedElementsTool.toolId = "IsolateSelectedElements";
82
82
  /** Clear the set of isolated elements.
83
83
  * @beta
84
84
  */
85
85
  export class ClearIsolatedElementsTool extends EmphasizeElementsTool {
86
+ static { this.toolId = "ClearIsolatedElements"; }
86
87
  get _wantCreate() { return false; }
87
88
  execute(emph, vp) {
88
89
  emph.clearIsolatedElements(vp);
89
90
  }
90
91
  }
91
- ClearIsolatedElementsTool.toolId = "ClearIsolatedElements";
92
92
  /** Reset [EmphasizeElements]($frontend) for the active [Viewport]($frontend).
93
93
  * @beta
94
94
  */
95
95
  export class ClearEmphasizedElementsTool extends EmphasizeElementsTool {
96
+ static { this.toolId = "ClearEmphasizedElements"; }
96
97
  get _wantCreate() { return false; }
97
98
  get _wantClear() { return true; }
98
99
  execute(emph, vp) {
@@ -100,7 +101,6 @@ export class ClearEmphasizedElementsTool extends EmphasizeElementsTool {
100
101
  vp.isFadeOutActive = false;
101
102
  }
102
103
  }
103
- ClearEmphasizedElementsTool.toolId = "ClearEmphasizedElements";
104
104
  /** Emphasize the set of elements currently visible in the view based on [Viewport.queryVisibleFeatures]($frontend).
105
105
  * @beta
106
106
  */
@@ -109,6 +109,7 @@ export class EmphasizeVisibleElementsTool extends EmphasizeElementsTool {
109
109
  super(...arguments);
110
110
  this._options = { source: "screen" };
111
111
  }
112
+ static { this.toolId = "EmphasizeVisibleElements"; }
112
113
  static get minArgs() { return 1; }
113
114
  static get maxArgs() { return 2; }
114
115
  get _wantClear() { return true; }
@@ -142,5 +143,4 @@ export class EmphasizeVisibleElementsTool extends EmphasizeElementsTool {
142
143
  vp.isFadeOutActive = true;
143
144
  }
144
145
  }
145
- EmphasizeVisibleElementsTool.toolId = "EmphasizeVisibleElements";
146
146
  //# sourceMappingURL=EmphasizeElementsTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmphasizeElementsTool.js","sourceRoot":"","sources":["../../../src/tools/EmphasizeElementsTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tools\r\n */\r\n\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { EmphasizeElements, IModelApp, QueryVisibleFeaturesOptions, ScreenViewport, Tool } from \"@itwin/core-frontend\";\r\nimport { parseArgs } from \"./parseArgs\";\r\n\r\n/** Applies the `EmphasizeElements` API in some way to the selected Viewport.\r\n * @beta\r\n */\r\nexport abstract class EmphasizeElementsTool extends Tool {\r\n protected get _wantCreate(): boolean { return true; }\r\n protected get _wantClear(): boolean { return false; }\r\n protected abstract execute(emph: EmphasizeElements, vp: ScreenViewport): void;\r\n\r\n public override async run(_args: any[]): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (undefined === vp)\r\n return true;\r\n\r\n if (this._wantClear)\r\n EmphasizeElements.clear(vp);\r\n\r\n const emph = this._wantCreate ? EmphasizeElements.getOrCreate(vp) : EmphasizeElements.get(vp);\r\n if (undefined !== emph)\r\n this.execute(emph, vp);\r\n\r\n return true;\r\n }\r\n}\r\n\r\nconst enum OverrideType { // eslint-disable-line no-restricted-syntax\r\n None = 0,\r\n Color = 1 << 0,\r\n Emphasis = 1 << 1,\r\n Both = Color | Emphasis,\r\n}\r\n\r\n/** If any elements are selected, emphasize them all by overriding their color to be orange; and de-emphasize all other elements by drawing them transparent grey.\r\n * @beta\r\n */\r\nexport class EmphasizeSelectedElementsTool extends EmphasizeElementsTool {\r\n public static override toolId = \"EmphasizeSelectedElements\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 1; }\r\n private _type = OverrideType.None;\r\n\r\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\r\n if (OverrideType.None === (this._type & OverrideType.Color) || emph.overrideSelectedElements(vp, ColorDef.white, undefined, true, false)) {\r\n emph.wantEmphasis = OverrideType.None !== (this._type & OverrideType.Emphasis);\r\n if (emph.emphasizeSelectedElements(vp, undefined, true)) {\r\n vp.isFadeOutActive = true;\r\n return;\r\n }\r\n }\r\n\r\n // Empty selection set - clear any previous overrides.\r\n EmphasizeElements.clear(vp);\r\n emph.wantEmphasis = false;\r\n vp.isFadeOutActive = false;\r\n }\r\n\r\n public override async parseAndRun(...args: string[]): Promise<boolean> {\r\n if (1 === args.length) {\r\n switch (args[0].toLowerCase()[0]) {\r\n case \"n\":\r\n break;\r\n case \"c\":\r\n this._type = OverrideType.Color;\r\n break;\r\n case \"e\":\r\n this._type = OverrideType.Emphasis;\r\n break;\r\n case \"b\":\r\n this._type = OverrideType.Both;\r\n break;\r\n }\r\n }\r\n\r\n return this.run(args);\r\n }\r\n}\r\n\r\n/** Isolate all selected elements so that *only* those elements will be drawn.\r\n * @beta\r\n */\r\nexport class IsolateSelectedElementsTool extends EmphasizeElementsTool {\r\n public static override toolId = \"IsolateSelectedElements\";\r\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\r\n emph.isolateSelectedElements(vp, true, true);\r\n }\r\n}\r\n\r\n/** Clear the set of isolated elements.\r\n * @beta\r\n */\r\nexport class ClearIsolatedElementsTool extends EmphasizeElementsTool {\r\n public static override toolId = \"ClearIsolatedElements\";\r\n protected override get _wantCreate() { return false; }\r\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\r\n emph.clearIsolatedElements(vp);\r\n }\r\n}\r\n\r\n/** Reset [EmphasizeElements]($frontend) for the active [Viewport]($frontend).\r\n * @beta\r\n */\r\nexport class ClearEmphasizedElementsTool extends EmphasizeElementsTool {\r\n public static override toolId = \"ClearEmphasizedElements\";\r\n protected override get _wantCreate() { return false; }\r\n protected override get _wantClear() { return true; }\r\n\r\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\r\n emph.clearEmphasizedElements(vp);\r\n vp.isFadeOutActive = false;\r\n }\r\n}\r\n\r\n/** Emphasize the set of elements currently visible in the view based on [Viewport.queryVisibleFeatures]($frontend).\r\n * @beta\r\n */\r\nexport class EmphasizeVisibleElementsTool extends EmphasizeElementsTool {\r\n public static override toolId = \"EmphasizeVisibleElements\";\r\n public static override get minArgs() { return 1; }\r\n public static override get maxArgs() { return 2; }\r\n private _options: QueryVisibleFeaturesOptions = { source: \"screen\" };\r\n protected override get _wantClear() { return true; }\r\n\r\n public override async parseAndRun(...input: string[]): Promise<boolean> {\r\n const args = parseArgs(input);\r\n const includeNonLocatable = args.getBoolean(\"n\");\r\n let source: \"screen\" | \"tiles\";\r\n switch (input[0].toLowerCase()) {\r\n case \"screen\":\r\n source = \"screen\";\r\n break;\r\n case \"tiles\":\r\n source = \"tiles\";\r\n break;\r\n default:\r\n return false;\r\n }\r\n\r\n this._options = { source, includeNonLocatable };\r\n return this.run(input);\r\n }\r\n\r\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\r\n const elementIds = new Set<string>();\r\n vp.queryVisibleFeatures(this._options, (features) => {\r\n for (const feature of features) {\r\n if (feature.iModel === vp.iModel && Id64.isValid(feature.elementId))\r\n elementIds.add(feature.elementId);\r\n }\r\n });\r\n\r\n emph.wantEmphasis = true;\r\n if (emph.emphasizeElements(elementIds, vp))\r\n vp.isFadeOutActive = true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"EmphasizeElementsTool.js","sourceRoot":"","sources":["../../../src/tools/EmphasizeElementsTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { Id64 } from \"@itwin/core-bentley\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { EmphasizeElements, IModelApp, QueryVisibleFeaturesOptions, ScreenViewport, Tool } from \"@itwin/core-frontend\";\nimport { parseArgs } from \"./parseArgs\";\n\n/** Applies the `EmphasizeElements` API in some way to the selected Viewport.\n * @beta\n */\nexport abstract class EmphasizeElementsTool extends Tool {\n protected get _wantCreate(): boolean { return true; }\n protected get _wantClear(): boolean { return false; }\n protected abstract execute(emph: EmphasizeElements, vp: ScreenViewport): void;\n\n public override async run(_args: any[]): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (undefined === vp)\n return true;\n\n if (this._wantClear)\n EmphasizeElements.clear(vp);\n\n const emph = this._wantCreate ? EmphasizeElements.getOrCreate(vp) : EmphasizeElements.get(vp);\n if (undefined !== emph)\n this.execute(emph, vp);\n\n return true;\n }\n}\n\nconst enum OverrideType { // eslint-disable-line no-restricted-syntax\n None = 0,\n Color = 1 << 0,\n Emphasis = 1 << 1,\n Both = Color | Emphasis,\n}\n\n/** If any elements are selected, emphasize them all by overriding their color to be orange; and de-emphasize all other elements by drawing them transparent grey.\n * @beta\n */\nexport class EmphasizeSelectedElementsTool extends EmphasizeElementsTool {\n public static override toolId = \"EmphasizeSelectedElements\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 1; }\n private _type = OverrideType.None;\n\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\n if (OverrideType.None === (this._type & OverrideType.Color) || emph.overrideSelectedElements(vp, ColorDef.white, undefined, true, false)) {\n emph.wantEmphasis = OverrideType.None !== (this._type & OverrideType.Emphasis);\n if (emph.emphasizeSelectedElements(vp, undefined, true)) {\n vp.isFadeOutActive = true;\n return;\n }\n }\n\n // Empty selection set - clear any previous overrides.\n EmphasizeElements.clear(vp);\n emph.wantEmphasis = false;\n vp.isFadeOutActive = false;\n }\n\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n if (1 === args.length) {\n switch (args[0].toLowerCase()[0]) {\n case \"n\":\n break;\n case \"c\":\n this._type = OverrideType.Color;\n break;\n case \"e\":\n this._type = OverrideType.Emphasis;\n break;\n case \"b\":\n this._type = OverrideType.Both;\n break;\n }\n }\n\n return this.run(args);\n }\n}\n\n/** Isolate all selected elements so that *only* those elements will be drawn.\n * @beta\n */\nexport class IsolateSelectedElementsTool extends EmphasizeElementsTool {\n public static override toolId = \"IsolateSelectedElements\";\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\n emph.isolateSelectedElements(vp, true, true);\n }\n}\n\n/** Clear the set of isolated elements.\n * @beta\n */\nexport class ClearIsolatedElementsTool extends EmphasizeElementsTool {\n public static override toolId = \"ClearIsolatedElements\";\n protected override get _wantCreate() { return false; }\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\n emph.clearIsolatedElements(vp);\n }\n}\n\n/** Reset [EmphasizeElements]($frontend) for the active [Viewport]($frontend).\n * @beta\n */\nexport class ClearEmphasizedElementsTool extends EmphasizeElementsTool {\n public static override toolId = \"ClearEmphasizedElements\";\n protected override get _wantCreate() { return false; }\n protected override get _wantClear() { return true; }\n\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\n emph.clearEmphasizedElements(vp);\n vp.isFadeOutActive = false;\n }\n}\n\n/** Emphasize the set of elements currently visible in the view based on [Viewport.queryVisibleFeatures]($frontend).\n * @beta\n */\nexport class EmphasizeVisibleElementsTool extends EmphasizeElementsTool {\n public static override toolId = \"EmphasizeVisibleElements\";\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return 2; }\n private _options: QueryVisibleFeaturesOptions = { source: \"screen\" };\n protected override get _wantClear() { return true; }\n\n public override async parseAndRun(...input: string[]): Promise<boolean> {\n const args = parseArgs(input);\n const includeNonLocatable = args.getBoolean(\"n\");\n let source: \"screen\" | \"tiles\";\n switch (input[0].toLowerCase()) {\n case \"screen\":\n source = \"screen\";\n break;\n case \"tiles\":\n source = \"tiles\";\n break;\n default:\n return false;\n }\n\n this._options = { source, includeNonLocatable };\n return this.run(input);\n }\n\n public execute(emph: EmphasizeElements, vp: ScreenViewport): void {\n const elementIds = new Set<string>();\n vp.queryVisibleFeatures(this._options, (features) => {\n for (const feature of features) {\n if (feature.iModel === vp.iModel && Id64.isValid(feature.elementId))\n elementIds.add(feature.elementId);\n }\n });\n\n emph.wantEmphasis = true;\n if (emph.emphasizeElements(elementIds, vp))\n vp.isFadeOutActive = true;\n }\n}\n"]}
@@ -154,6 +154,7 @@ export class FrustumDecorator {
154
154
  * @beta
155
155
  */
156
156
  export class ToggleFrustumSnapshotTool extends Tool {
157
+ static { this.toolId = "ToggleFrustumSnapshot"; }
157
158
  static get minArgs() { return 0; }
158
159
  static get maxArgs() { return 2; }
159
160
  async run(enable, showPreloadFrustum, showBackgroundIntersections) {
@@ -188,7 +189,6 @@ export class ToggleFrustumSnapshotTool extends Tool {
188
189
  return true;
189
190
  }
190
191
  }
191
- ToggleFrustumSnapshotTool.toolId = "ToggleFrustumSnapshot";
192
192
  /**
193
193
  * Decorates the viewport with a graphical depiction of a Frustum from the currently selected viewport.
194
194
  * Only useful when more than one spatial viewport is open.
@@ -265,6 +265,7 @@ class SelectedViewFrustumDecoration {
265
265
  * @beta
266
266
  */
267
267
  export class ToggleSelectedViewFrustumTool extends Tool {
268
+ static { this.toolId = "ToggleSelectedViewFrustum"; }
268
269
  static get minArgs() { return 0; }
269
270
  static get maxArgs() { return 1; }
270
271
  async run(enable) {
@@ -288,7 +289,6 @@ export class ToggleSelectedViewFrustumTool extends Tool {
288
289
  return true;
289
290
  }
290
291
  }
291
- ToggleSelectedViewFrustumTool.toolId = "ToggleSelectedViewFrustum";
292
292
  class ShadowFrustumDecoration {
293
293
  constructor(vp) {
294
294
  /** This will allow the render system to cache and reuse the decorations created by this decorator's decorate() method. */
@@ -349,6 +349,7 @@ class ShadowFrustumDecoration {
349
349
  * @beta
350
350
  */
351
351
  export class ToggleShadowFrustumTool extends Tool {
352
+ static { this.toolId = "ToggleShadowFrustum"; }
352
353
  static get minArgs() { return 0; }
353
354
  static get maxArgs() { return 1; }
354
355
  async run(enable) {
@@ -364,5 +365,4 @@ export class ToggleShadowFrustumTool extends Tool {
364
365
  return true;
365
366
  }
366
367
  }
367
- ToggleShadowFrustumTool.toolId = "ToggleShadowFrustum";
368
368
  //# sourceMappingURL=FrustumDecoration.js.map