@itwin/frontend-devtools 3.0.0-extension.1 → 3.1.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.
Files changed (101) hide show
  1. package/CHANGELOG.md +76 -1
  2. package/LICENSE.md +1 -1
  3. package/README.md +28 -3
  4. package/lib/cjs/FrontEndDevTools.d.ts.map +1 -1
  5. package/lib/cjs/FrontEndDevTools.js +6 -1
  6. package/lib/cjs/FrontEndDevTools.js.map +1 -1
  7. package/lib/cjs/effects/Explosion.d.ts.map +1 -1
  8. package/lib/cjs/effects/Explosion.js +3 -2
  9. package/lib/cjs/effects/Explosion.js.map +1 -1
  10. package/lib/cjs/effects/Snow.d.ts.map +1 -1
  11. package/lib/cjs/effects/Snow.js +3 -2
  12. package/lib/cjs/effects/Snow.js.map +1 -1
  13. package/lib/cjs/frontend-devtools.d.ts +1 -1
  14. package/lib/cjs/frontend-devtools.js +1 -1
  15. package/lib/cjs/frontend-devtools.js.map +1 -1
  16. package/lib/cjs/tools/ClipTools.d.ts +2 -2
  17. package/lib/cjs/tools/ClipTools.d.ts.map +1 -1
  18. package/lib/cjs/tools/ClipTools.js +2 -2
  19. package/lib/cjs/tools/ClipTools.js.map +1 -1
  20. package/lib/cjs/tools/DisplayStyleTools.d.ts +75 -16
  21. package/lib/cjs/tools/DisplayStyleTools.d.ts.map +1 -1
  22. package/lib/cjs/tools/DisplayStyleTools.js +219 -15
  23. package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
  24. package/lib/cjs/tools/PlanProjectionTools.d.ts +6 -6
  25. package/lib/cjs/tools/PlanProjectionTools.d.ts.map +1 -1
  26. package/lib/cjs/tools/PlanProjectionTools.js +6 -6
  27. package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
  28. package/lib/cjs/tools/PlanarMaskTools.d.ts +3 -2
  29. package/lib/cjs/tools/PlanarMaskTools.d.ts.map +1 -1
  30. package/lib/cjs/tools/PlanarMaskTools.js +47 -22
  31. package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
  32. package/lib/cjs/tools/RenderSystemTools.d.ts +0 -7
  33. package/lib/cjs/tools/RenderSystemTools.d.ts.map +1 -1
  34. package/lib/cjs/tools/RenderSystemTools.js +1 -11
  35. package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
  36. package/lib/cjs/tools/SourceAspectIdTools.js +1 -1
  37. package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
  38. package/lib/cjs/tools/ViewportTools.d.ts +15 -0
  39. package/lib/cjs/tools/ViewportTools.d.ts.map +1 -1
  40. package/lib/cjs/tools/ViewportTools.js +46 -1
  41. package/lib/cjs/tools/ViewportTools.js.map +1 -1
  42. package/lib/cjs/widgets/DiagnosticsPanel.d.ts +2 -0
  43. package/lib/cjs/widgets/DiagnosticsPanel.d.ts.map +1 -1
  44. package/lib/cjs/widgets/DiagnosticsPanel.js +6 -0
  45. package/lib/cjs/widgets/DiagnosticsPanel.js.map +1 -1
  46. package/lib/cjs/widgets/MemoryTracker.js +2 -2
  47. package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
  48. package/lib/cjs/widgets/RenderCommandBreakdown.d.ts +16 -0
  49. package/lib/cjs/widgets/RenderCommandBreakdown.d.ts.map +1 -0
  50. package/lib/cjs/widgets/RenderCommandBreakdown.js +69 -0
  51. package/lib/cjs/widgets/RenderCommandBreakdown.js.map +1 -0
  52. package/lib/esm/FrontEndDevTools.d.ts.map +1 -1
  53. package/lib/esm/FrontEndDevTools.js +9 -4
  54. package/lib/esm/FrontEndDevTools.js.map +1 -1
  55. package/lib/esm/effects/Explosion.d.ts.map +1 -1
  56. package/lib/esm/effects/Explosion.js +3 -2
  57. package/lib/esm/effects/Explosion.js.map +1 -1
  58. package/lib/esm/effects/Snow.d.ts.map +1 -1
  59. package/lib/esm/effects/Snow.js +3 -2
  60. package/lib/esm/effects/Snow.js.map +1 -1
  61. package/lib/esm/frontend-devtools.d.ts +1 -1
  62. package/lib/esm/frontend-devtools.js +1 -1
  63. package/lib/esm/frontend-devtools.js.map +1 -1
  64. package/lib/esm/tools/ClipTools.d.ts +2 -2
  65. package/lib/esm/tools/ClipTools.d.ts.map +1 -1
  66. package/lib/esm/tools/ClipTools.js +2 -2
  67. package/lib/esm/tools/ClipTools.js.map +1 -1
  68. package/lib/esm/tools/DisplayStyleTools.d.ts +75 -16
  69. package/lib/esm/tools/DisplayStyleTools.d.ts.map +1 -1
  70. package/lib/esm/tools/DisplayStyleTools.js +215 -16
  71. package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
  72. package/lib/esm/tools/PlanProjectionTools.d.ts +6 -6
  73. package/lib/esm/tools/PlanProjectionTools.d.ts.map +1 -1
  74. package/lib/esm/tools/PlanProjectionTools.js +6 -6
  75. package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
  76. package/lib/esm/tools/PlanarMaskTools.d.ts +3 -2
  77. package/lib/esm/tools/PlanarMaskTools.d.ts.map +1 -1
  78. package/lib/esm/tools/PlanarMaskTools.js +47 -22
  79. package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
  80. package/lib/esm/tools/RenderSystemTools.d.ts +0 -7
  81. package/lib/esm/tools/RenderSystemTools.d.ts.map +1 -1
  82. package/lib/esm/tools/RenderSystemTools.js +0 -9
  83. package/lib/esm/tools/RenderSystemTools.js.map +1 -1
  84. package/lib/esm/tools/SourceAspectIdTools.js +1 -1
  85. package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
  86. package/lib/esm/tools/ViewportTools.d.ts +15 -0
  87. package/lib/esm/tools/ViewportTools.d.ts.map +1 -1
  88. package/lib/esm/tools/ViewportTools.js +44 -0
  89. package/lib/esm/tools/ViewportTools.js.map +1 -1
  90. package/lib/esm/widgets/DiagnosticsPanel.d.ts +2 -0
  91. package/lib/esm/widgets/DiagnosticsPanel.d.ts.map +1 -1
  92. package/lib/esm/widgets/DiagnosticsPanel.js +6 -0
  93. package/lib/esm/widgets/DiagnosticsPanel.js.map +1 -1
  94. package/lib/esm/widgets/MemoryTracker.js +2 -2
  95. package/lib/esm/widgets/MemoryTracker.js.map +1 -1
  96. package/lib/esm/widgets/RenderCommandBreakdown.d.ts +16 -0
  97. package/lib/esm/widgets/RenderCommandBreakdown.d.ts.map +1 -0
  98. package/lib/esm/widgets/RenderCommandBreakdown.js +65 -0
  99. package/lib/esm/widgets/RenderCommandBreakdown.js.map +1 -0
  100. package/lib/public/locales/en/FrontendDevTools.json +464 -449
  101. package/package.json +10 -10
@@ -125,12 +125,12 @@ class TestClipStyleTool extends DisplayStyleTools_1.DisplayStyleTool {
125
125
  static get maxArgs() { return 1; }
126
126
  static get minArgs() { return 1; }
127
127
  get require3d() { return true; }
128
- parse(args) {
128
+ async parse(args) {
129
129
  var _a;
130
130
  this._useStyle = (_a = (0, parseBoolean_1.parseBoolean)(args[0])) !== null && _a !== void 0 ? _a : false;
131
131
  return true;
132
132
  }
133
- execute(vp) {
133
+ async execute(vp) {
134
134
  const props = { produceCutGeometry: true };
135
135
  if (this._useStyle) {
136
136
  props.cutStyle = {
@@ -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 ClipStyle, ClipStyleProps, ColorByName, ColorDef, 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/** 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 1; }\r\n public static override get minArgs() { return 1; }\r\n\r\n private _useStyle = false;\r\n\r\n protected override get require3d() { return true; }\r\n\r\n protected parse(args: string[]): boolean {\r\n this._useStyle = parseBoolean(args[0]) ?? false;\r\n return true;\r\n }\r\n\r\n protected execute(vp: Viewport): boolean {\r\n const props: ClipStyleProps = { produceCutGeometry: true };\r\n if (this._useStyle) {\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":["/*---------------------------------------------------------------------------------------------\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 ClipStyle, ClipStyleProps, ColorByName, ColorDef, 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/** 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 1; }\r\n public static override get minArgs() { return 1; }\r\n\r\n private _useStyle = false;\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 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 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,6 +1,3 @@
1
- /** @packageDocumentation
2
- * @module Tools
3
- */
4
1
  import { ViewFlags } from "@itwin/core-common";
5
2
  import { Tool, Viewport } from "@itwin/core-frontend";
6
3
  /** Modifies the selected viewport's DisplayStyleState.
@@ -8,8 +5,8 @@ import { Tool, Viewport } from "@itwin/core-frontend";
8
5
  */
9
6
  export declare abstract class DisplayStyleTool extends Tool {
10
7
  protected get require3d(): boolean;
11
- protected abstract execute(vp: Viewport): boolean;
12
- protected abstract parse(args: string[]): boolean;
8
+ protected abstract execute(vp: Viewport): Promise<boolean>;
9
+ protected abstract parse(args: string[], vp: Viewport): Promise<boolean>;
13
10
  run(): Promise<boolean>;
14
11
  parseAndRun(...args: string[]): Promise<boolean>;
15
12
  }
@@ -34,8 +31,32 @@ export declare class ChangeViewFlagsTool extends Tool {
34
31
  export declare class ToggleSkyboxTool extends DisplayStyleTool {
35
32
  static toolId: string;
36
33
  get require3d(): boolean;
37
- parse(_args: string[]): boolean;
38
- execute(vp: Viewport): boolean;
34
+ parse(_args: string[]): Promise<boolean>;
35
+ execute(vp: Viewport): Promise<boolean>;
36
+ }
37
+ /** Defines a [SkySphere]($common) to apply to the current view.
38
+ * @beta
39
+ */
40
+ export declare class SkySphereTool extends DisplayStyleTool {
41
+ private _image?;
42
+ static toolId: string;
43
+ static get minArgs(): number;
44
+ static get maxArgs(): number;
45
+ get require3d(): boolean;
46
+ parse(args: string[]): Promise<boolean>;
47
+ execute(vp: Viewport): Promise<boolean>;
48
+ }
49
+ /** Defines a [SkyCube]($common) to apply to the current view.
50
+ * @beta
51
+ */
52
+ export declare class SkyCubeTool extends DisplayStyleTool {
53
+ private _images;
54
+ static toolId: string;
55
+ static get minArgs(): number;
56
+ static get maxArgs(): number;
57
+ get require3d(): boolean;
58
+ parse(args: string[]): Promise<boolean>;
59
+ execute(vp: Viewport): Promise<boolean>;
39
60
  }
40
61
  /** Outputs (and optionally copies to the clipboard) a "rendering style" as a partial DisplayStyle3dSettingsProps JSON object based
41
62
  * on the current view's display style settings.
@@ -47,7 +68,7 @@ export declare class ToggleSkyboxTool extends DisplayStyleTool {
47
68
  * * `project`: include iTwin-specific (formerly known as project) settings.
48
69
  * * `map`: include background map settings.
49
70
  * * `drawingaids`: include drawing aid decoration settings.
50
- * * `copy`: copy result to system clipboarad.
71
+ * * `copy`: copy result to system clipboard.
51
72
  * * `quote`: format the JSON so it can be parsed directly by [ApplyRenderingStyleTool].
52
73
  * @beta
53
74
  */
@@ -58,8 +79,8 @@ export declare class SaveRenderingStyleTool extends DisplayStyleTool {
58
79
  static toolId: string;
59
80
  static get minArgs(): number;
60
81
  static get maxArgs(): number;
61
- parse(inputArgs: string[]): boolean;
62
- execute(vp: Viewport): boolean;
82
+ parse(inputArgs: string[]): Promise<boolean>;
83
+ execute(vp: Viewport): Promise<boolean>;
63
84
  }
64
85
  /** Given a "rendering style" as a partial DisplayStyle3dSettingsProperties JSON string, apply it to the selected viewport's display style.
65
86
  * @see [DisplayStyleSettings.applyOverrides]($common) for details.
@@ -70,8 +91,8 @@ export declare class ApplyRenderingStyleTool extends DisplayStyleTool {
70
91
  static toolId: string;
71
92
  static get minArgs(): number;
72
93
  static get maxArgs(): number;
73
- parse(args: string[]): boolean;
74
- execute(vp: Viewport): boolean;
94
+ parse(args: string[]): Promise<boolean>;
95
+ execute(vp: Viewport): Promise<boolean>;
75
96
  }
76
97
  /** Apply appearance overrides to one or more subcategories in the active viewport.
77
98
  * @beta
@@ -82,8 +103,23 @@ export declare class OverrideSubCategoryTool extends DisplayStyleTool {
82
103
  static toolId: string;
83
104
  static get minArgs(): number;
84
105
  static get maxArgs(): number;
85
- parse(inArgs: string[]): boolean;
86
- execute(vp: Viewport): boolean;
106
+ parse(inArgs: string[]): Promise<boolean>;
107
+ execute(vp: Viewport): Promise<boolean>;
108
+ }
109
+ /** Query the schedule script JSON from an element.
110
+ * @beta
111
+ */
112
+ export declare class QueryScheduleScriptTool extends DisplayStyleTool {
113
+ private _sourceId?;
114
+ private _action;
115
+ private _includeElementIds;
116
+ private _countElementIds;
117
+ private _expandElementIds;
118
+ static toolId: string;
119
+ static get minArgs(): number;
120
+ static get maxArgs(): number;
121
+ parse(input: string[], vp: Viewport): Promise<boolean>;
122
+ execute(vp: Viewport): Promise<boolean>;
87
123
  }
88
124
  /** Set whether background color is ignored when applying white-on-white reversal.
89
125
  * @beta
@@ -93,7 +129,30 @@ export declare class WoWIgnoreBackgroundTool extends DisplayStyleTool {
93
129
  static toolId: string;
94
130
  static get minArgs(): number;
95
131
  static get maxArgs(): number;
96
- parse(args: string[]): boolean;
97
- execute(vp: Viewport): boolean;
132
+ parse(args: string[]): Promise<boolean>;
133
+ execute(vp: Viewport): Promise<boolean>;
134
+ }
135
+ /** Toggle whether surfaces display with overlaid wiremesh in the active viewport.
136
+ * @see [ViewFlags.wiremesh]($common).
137
+ * @beta
138
+ */
139
+ export declare class ToggleWiremeshTool extends DisplayStyleTool {
140
+ private _enable?;
141
+ static toolId: string;
142
+ static get minArgs(): number;
143
+ static get maxArgs(): number;
144
+ parse(args: string[]): Promise<boolean>;
145
+ execute(vp: Viewport): Promise<boolean>;
146
+ }
147
+ /** Change the background color of the active viewport and optionally its transparency.
148
+ * @beta
149
+ */
150
+ export declare class ChangeBackgroundColorTool extends DisplayStyleTool {
151
+ private _color?;
152
+ static toolId: string;
153
+ static get minArgs(): number;
154
+ static get maxArgs(): number;
155
+ parse(args: string[]): Promise<boolean>;
156
+ execute(vp: Viewport): Promise<boolean>;
98
157
  }
99
158
  //# sourceMappingURL=DisplayStyleTools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayStyleTools.d.ts","sourceRoot":"","sources":["../../../src/tools/DisplayStyleTools.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAC8G,SAAS,EAE7H,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACqF,IAAI,EAAE,QAAQ,EACzG,MAAM,sBAAsB,CAAC;AAiB9B;;GAEG;AACH,8BAAsB,gBAAiB,SAAQ,IAAI;IACjD,SAAS,KAAK,SAAS,YAAoB;IAE3C,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;IAEjD,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO;IAE3B,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;IAQvB,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAOvE;AAED;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,IAAI;IAC3C,OAAuB,MAAM,SAAqB;IAClD,WAA2B,OAAO,cAAwB;IAC1D,WAA2B,OAAO,WAAgB;IAE5B,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAOnD,WAAW,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CA2CvE;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,OAAuB,MAAM,SAAkB;IAE/C,IAAoB,SAAS,YAAmB;IAEzC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE;IAErB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;CAKtC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAuB,MAAM,SAAwB;IAErD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAE3C,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE;IAiBzB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;CAWtC;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D,OAAO,CAAC,UAAU,CAAC,CAA8B;IAEjD,OAAuB,MAAM,SAAyB;IAEtD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAE3C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;IAUpB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;CAMtC;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAuB,MAAM,SAAyB;IACtD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAE3C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;IAkBhC,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;CAOtC;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D,OAAO,CAAC,OAAO,CAAC,CAAU;IAE1B,OAAuB,MAAM,SAAyB;IACtD,WAA2B,OAAO,WAAgB;IAClD,WAA2B,OAAO,WAAgB;IAE3C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO;IAS9B,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;CAKtC"}
1
+ {"version":3,"file":"DisplayStyleTools.d.ts","sourceRoot":"","sources":["../../../src/tools/DisplayStyleTools.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,11 @@
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.WoWIgnoreBackgroundTool = exports.OverrideSubCategoryTool = exports.ApplyRenderingStyleTool = exports.SaveRenderingStyleTool = exports.ToggleSkyboxTool = exports.ChangeViewFlagsTool = exports.DisplayStyleTool = void 0;
7
+ exports.ChangeBackgroundColorTool = exports.ToggleWiremeshTool = exports.WoWIgnoreBackgroundTool = exports.QueryScheduleScriptTool = exports.OverrideSubCategoryTool = exports.ApplyRenderingStyleTool = exports.SaveRenderingStyleTool = exports.SkyCubeTool = exports.SkySphereTool = exports.ToggleSkyboxTool = exports.ChangeViewFlagsTool = exports.DisplayStyleTool = void 0;
8
8
  /** @packageDocumentation
9
9
  * @module Tools
10
10
  */
11
+ const core_bentley_1 = require("@itwin/core-bentley");
11
12
  const core_common_1 = require("@itwin/core-common");
12
13
  const core_frontend_1 = require("@itwin/core-frontend");
13
14
  const ClipboardUtilities_1 = require("../ClipboardUtilities");
@@ -17,6 +18,7 @@ const parseToggle_1 = require("./parseToggle");
17
18
  const booleanFlagNames = [
18
19
  "dimensions", "patterns", "weights", "styles", "transparency", "fill", "textures", "materials", "acsTriad", "grid", "visibleEdges",
19
20
  "hiddenEdges", "lighting", "shadows", "clipVolume", "constructions", "monochrome", "backgroundMap", "ambientOcclusion", "forceSurfaceDiscard",
21
+ "wiremesh",
20
22
  ];
21
23
  const lowercaseBooleanFlagNames = booleanFlagNames.map((name) => name.toLowerCase());
22
24
  /** Modifies the selected viewport's DisplayStyleState.
@@ -26,13 +28,13 @@ class DisplayStyleTool extends core_frontend_1.Tool {
26
28
  get require3d() { return false; }
27
29
  async run() {
28
30
  const vp = core_frontend_1.IModelApp.viewManager.selectedView;
29
- if (undefined !== vp && (!this.require3d || vp.view.is3d()) && this.execute(vp))
31
+ if (undefined !== vp && (!this.require3d || vp.view.is3d()) && await this.execute(vp))
30
32
  vp.displayStyle = vp.view.displayStyle;
31
33
  return true;
32
34
  }
33
35
  async parseAndRun(...args) {
34
36
  const vp = core_frontend_1.IModelApp.viewManager.selectedView;
35
- if (undefined !== vp && (!this.require3d || vp.view.is3d()) && this.parse(args))
37
+ if (undefined !== vp && (!this.require3d || vp.view.is3d()) && await this.parse(args, vp))
36
38
  return this.run();
37
39
  else
38
40
  return false;
@@ -99,15 +101,102 @@ ChangeViewFlagsTool.toolId = "ChangeViewFlags";
99
101
  */
100
102
  class ToggleSkyboxTool extends DisplayStyleTool {
101
103
  get require3d() { return true; }
102
- parse(_args) { return true; } // no arguments
103
- execute(vp) {
104
+ async parse(_args) { return true; } // no arguments
105
+ async execute(vp) {
104
106
  const style = vp.view.displayStyle;
105
- style.environment = new core_frontend_1.Environment({ sky: { display: !style.environment.sky.display } });
107
+ style.environment = style.environment.withDisplay({ sky: !style.environment.displaySky });
106
108
  return true;
107
109
  }
108
110
  }
109
111
  exports.ToggleSkyboxTool = ToggleSkyboxTool;
110
112
  ToggleSkyboxTool.toolId = "ToggleSkybox";
113
+ /** Defines a [SkySphere]($common) to apply to the current view.
114
+ * @beta
115
+ */
116
+ class SkySphereTool extends DisplayStyleTool {
117
+ static get minArgs() { return 1; }
118
+ static get maxArgs() { return 1; }
119
+ get require3d() { return true; }
120
+ async parse(args) {
121
+ this._image = args[0];
122
+ return true;
123
+ }
124
+ async execute(vp) {
125
+ if (this._image && vp.view.is3d()) {
126
+ vp.view.displayStyle.environment = vp.view.displayStyle.environment.clone({
127
+ displaySky: true,
128
+ sky: new core_common_1.SkySphere(this._image),
129
+ });
130
+ }
131
+ return true;
132
+ }
133
+ }
134
+ exports.SkySphereTool = SkySphereTool;
135
+ SkySphereTool.toolId = "SetSkySphere";
136
+ /** Defines a [SkyCube]($common) to apply to the current view.
137
+ * @beta
138
+ */
139
+ class SkyCubeTool extends DisplayStyleTool {
140
+ constructor() {
141
+ super(...arguments);
142
+ this._images = [];
143
+ }
144
+ static get minArgs() { return 1; }
145
+ static get maxArgs() { return 6; }
146
+ get require3d() { return true; }
147
+ async parse(args) {
148
+ this._images = [...args];
149
+ return true;
150
+ }
151
+ async execute(vp) {
152
+ const imgs = this._images;
153
+ if (imgs.length === 0 || !vp.view.is3d())
154
+ return true;
155
+ let top, bottom, left, right, front, back;
156
+ switch (imgs.length) {
157
+ case 1:
158
+ top = bottom = left = right = front = back = imgs[0];
159
+ break;
160
+ case 2:
161
+ top = bottom = imgs[0];
162
+ left = right = front = back = imgs[1];
163
+ break;
164
+ case 3:
165
+ top = bottom = imgs[0];
166
+ left = right = imgs[1];
167
+ front = back = imgs[2];
168
+ break;
169
+ case 4:
170
+ top = imgs[0];
171
+ bottom = imgs[1];
172
+ left = right = imgs[2];
173
+ front = back = imgs[3];
174
+ break;
175
+ case 5:
176
+ top = bottom = imgs[0];
177
+ left = imgs[1];
178
+ right = imgs[2];
179
+ front = imgs[3];
180
+ back = imgs[4];
181
+ break;
182
+ default:
183
+ top = imgs[0];
184
+ bottom = imgs[1];
185
+ left = imgs[2];
186
+ right = imgs[3];
187
+ front = imgs[4];
188
+ back = imgs[5];
189
+ break;
190
+ }
191
+ vp.view.displayStyle.environment = vp.view.displayStyle.environment.clone({
192
+ displaySky: true,
193
+ sky: new core_common_1.SkyCube({ top, bottom, left, right, front, back }),
194
+ });
195
+ return true;
196
+ }
197
+ }
198
+ exports.SkyCubeTool = SkyCubeTool;
199
+ SkyCubeTool.toolId = "SetSkyCube";
111
200
  /** Outputs (and optionally copies to the clipboard) a "rendering style" as a partial DisplayStyle3dSettingsProps JSON object based
112
201
  * on the current view's display style settings.
113
202
  * 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.
@@ -118,7 +207,7 @@ ToggleSkyboxTool.toolId = "ToggleSkybox";
118
207
  * * `project`: include iTwin-specific (formerly known as project) settings.
119
208
  * * `map`: include background map settings.
120
209
  * * `drawingaids`: include drawing aid decoration settings.
121
- * * `copy`: copy result to system clipboarad.
210
+ * * `copy`: copy result to system clipboard.
122
211
  * * `quote`: format the JSON so it can be parsed directly by [ApplyRenderingStyleTool].
123
212
  * @beta
124
213
  */
@@ -131,7 +220,7 @@ class SaveRenderingStyleTool extends DisplayStyleTool {
131
220
  }
132
221
  static get minArgs() { return 0; }
133
222
  static get maxArgs() { return 7; }
134
- parse(inputArgs) {
223
+ async parse(inputArgs) {
135
224
  const args = (0, parseArgs_1.parseArgs)(inputArgs);
136
225
  function getArg(name) {
137
226
  return args.getBoolean(name) ? true : undefined;
@@ -145,7 +234,7 @@ class SaveRenderingStyleTool extends DisplayStyleTool {
145
234
  this._quote = true === getArg("q");
146
235
  return true;
147
236
  }
148
- execute(vp) {
237
+ async execute(vp) {
149
238
  let json = JSON.stringify(vp.displayStyle.settings.toOverrides(this._options));
150
239
  if (this._quote)
151
240
  json = `"${json.replace(/"/g, '""')}"`;
@@ -164,7 +253,7 @@ SaveRenderingStyleTool.toolId = "SaveRenderingStyle";
164
253
  class ApplyRenderingStyleTool extends DisplayStyleTool {
165
254
  static get minArgs() { return 1; }
166
255
  static get maxArgs() { return 1; }
167
- parse(args) {
256
+ async parse(args) {
168
257
  try {
169
258
  this._overrides = JSON.parse(args[0]);
170
259
  return true;
@@ -174,7 +263,7 @@ class ApplyRenderingStyleTool extends DisplayStyleTool {
174
263
  return false;
175
264
  }
176
265
  }
177
- execute(vp) {
266
+ async execute(vp) {
178
267
  if (this._overrides)
179
268
  vp.overrideDisplayStyle(this._overrides);
180
269
  return false;
@@ -193,7 +282,7 @@ class OverrideSubCategoryTool extends DisplayStyleTool {
193
282
  }
194
283
  static get minArgs() { return 1; }
195
284
  static get maxArgs() { return 7; }
196
- parse(inArgs) {
285
+ async parse(inArgs) {
197
286
  const args = (0, parseArgs_1.parseArgs)(inArgs);
198
287
  const ids = args.get("i");
199
288
  if (ids)
@@ -208,7 +297,7 @@ class OverrideSubCategoryTool extends DisplayStyleTool {
208
297
  props.invisible = typeof visible === "boolean" ? !visible : undefined;
209
298
  return true;
210
299
  }
211
- execute(vp) {
300
+ async execute(vp) {
212
301
  const ovr = core_common_1.SubCategoryOverride.fromJSON(this._overrideProps);
213
302
  for (const id of this._subcategoryIds)
214
303
  vp.displayStyle.overrideSubCategory(id, ovr);
@@ -217,20 +306,94 @@ class OverrideSubCategoryTool extends DisplayStyleTool {
217
306
  }
218
307
  exports.OverrideSubCategoryTool = OverrideSubCategoryTool;
219
308
  OverrideSubCategoryTool.toolId = "OverrideSubCategory";
309
+ /** Query the schedule script JSON from an element.
310
+ * @beta
311
+ */
312
+ class QueryScheduleScriptTool extends DisplayStyleTool {
313
+ constructor() {
314
+ super(...arguments);
315
+ this._action = "copy";
316
+ this._includeElementIds = false;
317
+ this._countElementIds = false;
318
+ this._expandElementIds = false;
319
+ }
320
+ static get minArgs() { return 0; }
321
+ static get maxArgs() { return 3; }
322
+ async parse(input, vp) {
323
+ var _a, _b, _c;
324
+ const args = (0, parseArgs_1.parseArgs)(input);
325
+ this._sourceId = (_a = args.get("i")) !== null && _a !== void 0 ? _a : (_b = vp.displayStyle.scheduleScriptReference) === null || _b === void 0 ? void 0 : _b.sourceId;
326
+ if (!this._sourceId)
327
+ return false;
328
+ const action = (_c = args.get("a")) !== null && _c !== void 0 ? _c : "";
329
+ this._action = action.length > 0 && "b" === action[0].toLowerCase() ? "break" : "copy";
330
+ this._includeElementIds = this._countElementIds = this._expandElementIds = false;
331
+ const ids = args.get("e");
332
+ if (ids && ids.length > 0) {
333
+ switch (ids[0].toLowerCase()) {
334
+ case "i":
335
+ this._includeElementIds = true;
336
+ break;
337
+ case "c":
338
+ this._includeElementIds = this._countElementIds = true;
339
+ break;
340
+ case "e":
341
+ this._includeElementIds = this._expandElementIds = true;
342
+ break;
343
+ }
344
+ }
345
+ return true;
346
+ }
347
+ async execute(vp) {
348
+ var _a, _b;
349
+ if (!this._sourceId || !this._action)
350
+ return false;
351
+ const opts = {
352
+ displayStyle: { omitScheduleScriptElementIds: !this._includeElementIds },
353
+ renderTimeline: { omitScriptElementIds: !this._includeElementIds },
354
+ };
355
+ let script;
356
+ const props = await vp.iModel.elements.loadProps(this._sourceId, opts);
357
+ if (props.script)
358
+ script = JSON.parse(props.script.script);
359
+ else if ((_b = (_a = props.jsonProperties) === null || _a === void 0 ? void 0 : _a.styles) === null || _b === void 0 ? void 0 : _b.scheduleScript)
360
+ script = props.jsonProperties.styles.scheduleScript;
361
+ if (!script)
362
+ return false;
363
+ if (this._countElementIds || this._expandElementIds) {
364
+ for (const model of script) {
365
+ for (const elem of model.elementTimelines) {
366
+ const elemIds = typeof elem.elementIds === "string" ? core_bentley_1.CompressedId64Set.decompressArray(elem.elementIds) : elem.elementIds;
367
+ if (this._countElementIds)
368
+ elem.elementIds = elemIds.length;
369
+ else
370
+ elem.elementIds = elemIds;
371
+ }
372
+ }
373
+ }
374
+ if (this._action === "break")
375
+ debugger; // eslint-disable-line no-debugger
376
+ else
377
+ (0, ClipboardUtilities_1.copyStringToClipboard)(JSON.stringify(script, null, 2));
378
+ return true;
379
+ }
380
+ }
381
+ exports.QueryScheduleScriptTool = QueryScheduleScriptTool;
382
+ QueryScheduleScriptTool.toolId = "QueryScheduleScript";
220
383
  /** Set whether background color is ignored when applying white-on-white reversal.
221
384
  * @beta
222
385
  */
223
386
  class WoWIgnoreBackgroundTool extends DisplayStyleTool {
224
387
  static get minArgs() { return 0; }
225
388
  static get maxArgs() { return 1; }
226
- parse(args) {
389
+ async parse(args) {
227
390
  const ignore = (0, parseToggle_1.parseToggle)(args[0]);
228
391
  if (typeof ignore === "string")
229
392
  return false;
230
393
  this._ignore = ignore;
231
394
  return true;
232
395
  }
233
- execute(vp) {
396
+ async execute(vp) {
234
397
  var _a;
235
398
  const ignoreBackgroundColor = (_a = this._ignore) !== null && _a !== void 0 ? _a : !vp.displayStyle.settings.whiteOnWhiteReversal.ignoreBackgroundColor;
236
399
  vp.displayStyle.settings.whiteOnWhiteReversal = core_common_1.WhiteOnWhiteReversalSettings.fromJSON({ ignoreBackgroundColor });
@@ -239,4 +402,45 @@ class WoWIgnoreBackgroundTool extends DisplayStyleTool {
239
402
  }
240
403
  exports.WoWIgnoreBackgroundTool = WoWIgnoreBackgroundTool;
241
404
  WoWIgnoreBackgroundTool.toolId = "WoWIgnoreBackground";
405
+ /** Toggle whether surfaces display with overlaid wiremesh in the active viewport.
406
+ * @see [ViewFlags.wiremesh]($common).
407
+ * @beta
408
+ */
409
+ class ToggleWiremeshTool extends DisplayStyleTool {
410
+ static get minArgs() { return 0; }
411
+ static get maxArgs() { return 1; }
412
+ async parse(args) {
413
+ const enable = (0, parseToggle_1.parseToggle)(args[0]);
414
+ if (typeof enable === "string")
415
+ return false;
416
+ this._enable = enable;
417
+ return true;
418
+ }
419
+ async execute(vp) {
420
+ var _a;
421
+ vp.viewFlags = vp.viewFlags.with("wiremesh", (_a = this._enable) !== null && _a !== void 0 ? _a : !vp.viewFlags.wiremesh);
422
+ return true;
423
+ }
424
+ }
425
+ exports.ToggleWiremeshTool = ToggleWiremeshTool;
426
+ ToggleWiremeshTool.toolId = "ToggleWiremesh";
427
+ /** Change the background color of the active viewport and optionally its transparency.
428
+ * @beta
429
+ */
430
+ class ChangeBackgroundColorTool extends DisplayStyleTool {
431
+ static get minArgs() { return 1; }
432
+ static get maxArgs() { return 1; }
433
+ async parse(args) {
434
+ this._color = core_common_1.ColorDef.fromString(args[0]);
435
+ return true;
436
+ }
437
+ async execute(vp) {
438
+ if (!this._color)
439
+ return false;
440
+ vp.displayStyle.backgroundColor = this._color;
441
+ return true;
442
+ }
443
+ }
444
+ exports.ChangeBackgroundColorTool = ChangeBackgroundColorTool;
445
+ ChangeBackgroundColorTool.toolId = "ChangeBackgroundColor";
242
446
  //# sourceMappingURL=DisplayStyleTools.js.map