@itwin/core-markup 5.10.0-dev.1 → 5.10.0-dev.4

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 (40) hide show
  1. package/lib/cjs/Markup.d.ts.map +1 -1
  2. package/lib/cjs/Markup.js +18 -11
  3. package/lib/cjs/Markup.js.map +1 -1
  4. package/lib/cjs/MarkupTool.d.ts.map +1 -1
  5. package/lib/cjs/MarkupTool.js +2 -1
  6. package/lib/cjs/MarkupTool.js.map +1 -1
  7. package/lib/cjs/RedlineTool.d.ts.map +1 -1
  8. package/lib/cjs/RedlineTool.js +10 -6
  9. package/lib/cjs/RedlineTool.js.map +1 -1
  10. package/lib/cjs/SelectTool.d.ts.map +1 -1
  11. package/lib/cjs/SelectTool.js +19 -16
  12. package/lib/cjs/SelectTool.js.map +1 -1
  13. package/lib/cjs/SvgJsExt.js.map +1 -1
  14. package/lib/cjs/TextEdit.d.ts.map +1 -1
  15. package/lib/cjs/TextEdit.js +5 -3
  16. package/lib/cjs/TextEdit.js.map +1 -1
  17. package/lib/cjs/Undo.js +6 -6
  18. package/lib/cjs/Undo.js.map +1 -1
  19. package/lib/cjs/core-markup.js.map +1 -1
  20. package/lib/esm/Markup.d.ts.map +1 -1
  21. package/lib/esm/Markup.js +19 -12
  22. package/lib/esm/Markup.js.map +1 -1
  23. package/lib/esm/MarkupTool.d.ts.map +1 -1
  24. package/lib/esm/MarkupTool.js +2 -1
  25. package/lib/esm/MarkupTool.js.map +1 -1
  26. package/lib/esm/RedlineTool.d.ts.map +1 -1
  27. package/lib/esm/RedlineTool.js +10 -6
  28. package/lib/esm/RedlineTool.js.map +1 -1
  29. package/lib/esm/SelectTool.d.ts.map +1 -1
  30. package/lib/esm/SelectTool.js +20 -17
  31. package/lib/esm/SelectTool.js.map +1 -1
  32. package/lib/esm/SvgJsExt.js.map +1 -1
  33. package/lib/esm/TextEdit.d.ts.map +1 -1
  34. package/lib/esm/TextEdit.js +5 -3
  35. package/lib/esm/TextEdit.js.map +1 -1
  36. package/lib/esm/Undo.js +7 -7
  37. package/lib/esm/Undo.js.map +1 -1
  38. package/lib/esm/core-markup.js.map +1 -1
  39. package/lib/public/locales/en/MarkupTools.json +98 -98
  40. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"RedlineTool.js","sourceRoot":"","sources":["../../src/RedlineTool.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 MarkupTools\r\n */\r\n\r\n// cspell:ignore rtmp stmp\r\n\r\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport {\r\n BeButtonEvent, CoordinateLockOverrides, CoreTools, EventHandled, IModelApp, QuantityType, ToolAssistance, ToolAssistanceImage,\r\n ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection,\r\n} from \"@itwin/core-frontend\";\r\nimport { G, Marker, Element as MarkupElement } from \"@svgdotjs/svg.js\";\r\nimport { MarkupApp } from \"./Markup\";\r\nimport { MarkupTool } from \"./MarkupTool\";\r\n\r\n/** Base class for tools that place new Markup elements\r\n * @public\r\n */\r\nexport abstract class RedlineTool extends MarkupTool {\r\n protected _minPoints = 1;\r\n protected _nRequiredPoints = 2;\r\n protected readonly _points: Point3d[] = [];\r\n\r\n protected onAdded(el: MarkupElement) {\r\n const markup = this.markup;\r\n const undo = markup.undo;\r\n undo.performOperation(this.keyin, () => undo.onAdded(el));\r\n markup.selected.restart(el);\r\n }\r\n protected isComplete(_ev: BeButtonEvent) { return this._points.length >= this._nRequiredPoints; }\r\n protected override setupAndPromptForNextAction(): void {\r\n super.setupAndPromptForNextAction();\r\n this.markup.disablePick();\r\n IModelApp.toolAdmin.setCursor(0 === this._points.length ? IModelApp.viewManager.crossHairCursor : IModelApp.viewManager.dynamicsCursor);\r\n }\r\n\r\n protected createMarkup(_svgMarkup: G, _ev: BeButtonEvent, _isDynamics: boolean): void { }\r\n protected clearDynamicsMarkup(_isDynamics: boolean): void { this.markup.svgDynamics!.clear(); }\r\n\r\n public override async onRestartTool() { return this.exitTool(); } // Default to single shot and return control to select tool...\r\n public override async onCleanup() { this.clearDynamicsMarkup(false); }\r\n\r\n public override async onReinitialize() {\r\n this.clearDynamicsMarkup(false);\r\n return super.onReinitialize();\r\n }\r\n\r\n public override async onUndoPreviousStep(): Promise<boolean> {\r\n return (0 === this._points.length) ? false : (this.onReinitialize(), true);\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n if (undefined === ev.viewport || this._points.length < this._minPoints)\r\n return;\r\n this.clearDynamicsMarkup(true);\r\n this.createMarkup(this.markup.svgDynamics!, ev, true);\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === ev.viewport)\r\n return EventHandled.No;\r\n\r\n this._points.push(MarkupApp.convertVpToVb(ev.viewPoint));\r\n if (!this.isComplete(ev)) {\r\n this.setupAndPromptForNextAction();\r\n return EventHandled.No;\r\n }\r\n\r\n this.createMarkup(this.markup.svgMarkup!, ev, false);\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n protected provideToolAssistance(mainInstrKey: string, singlePoint: boolean = false): void {\r\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, IModelApp.localization.getLocalizedString(mainInstrKey));\r\n const mouseInstructions: ToolAssistanceInstruction[] = [];\r\n const touchInstructions: ToolAssistanceInstruction[] = [];\r\n\r\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\r\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Exit\");\r\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\r\n touchInstructions.push(ToolAssistance.createInstruction(singlePoint ? ToolAssistanceImage.OneTouchTap : ToolAssistanceImage.OneTouchDrag, acceptMsg, false, ToolAssistanceInputMethod.Touch));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\r\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\r\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\r\n\r\n const sections: ToolAssistanceSection[] = [];\r\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\r\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\r\n\r\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\r\n IModelApp.notifications.setToolAssistance(instructions);\r\n }\r\n}\r\n\r\n/** Tool for placing Markup Lines\r\n * @public\r\n */\r\nexport class LineTool extends RedlineTool {\r\n public static override toolId = \"Markup.Line\";\r\n public static override iconSpec = \"icon-line\";\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartPoint\" : \"ElementSet.Prompts.EndPoint\")); }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const start = this._points[0];\r\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\r\n const element = svgMarkup.line(start.x, start.y, end.x, end.y);\r\n this.setCurrentStyle(element, false);\r\n if (!isDynamics)\r\n this.onAdded(element);\r\n }\r\n}\r\n\r\n/** Tool for placing Markup Rectangles\r\n * @public\r\n */\r\nexport class RectangleTool extends RedlineTool {\r\n public static override toolId = \"Markup.Rectangle\";\r\n public static override iconSpec = \"icon-rectangle\";\r\n\r\n constructor(protected _cornerRadius?: number) { super(); } // Specify radius to create a rectangle with rounded corners.\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartCorner\" : \"ElementSet.Prompts.OppositeCorner\")); }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const start = this._points[0];\r\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\r\n const vec = start.vectorTo(end);\r\n const width = Math.abs(vec.x);\r\n const height = Math.abs(vec.y);\r\n if (width < 1 || height < 1)\r\n return;\r\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\r\n const element = svgMarkup.rect(width, height).move(offset.x, offset.y);\r\n this.setCurrentStyle(element, true);\r\n if (undefined !== this._cornerRadius)\r\n element.radius(this._cornerRadius);\r\n if (!isDynamics)\r\n this.onAdded(element);\r\n }\r\n}\r\n\r\n/** Tool for placing Markup Polygons\r\n * @public\r\n */\r\nexport class PolygonTool extends RedlineTool {\r\n public static override toolId = \"Markup.Polygon\";\r\n public static override iconSpec = \"icon-polygon\";\r\n\r\n constructor(protected _numSides?: number) { super(); } // Specify number of polygon sides. Default if undefined is 5.\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(MarkupTool.toolKey + (0 === this._points.length ? \"Polygon.Prompts.FirstPoint\" : \"Polygon.Prompts.NextPoint\")); }\r\n\r\n protected getPoints(points: number[], center: Point3d, edge: Point3d, numSides: number, inscribe: boolean): boolean {\r\n if (numSides < 3 || numSides > 100)\r\n return false;\r\n let radius = center.distanceXY(edge);\r\n if (radius < 1)\r\n return false;\r\n const delta = (Math.PI * 2.0) / numSides;\r\n const vec = center.vectorTo(edge);\r\n let angle = Vector3d.unitX().planarRadiansTo(vec, Vector3d.unitZ());\r\n if (!inscribe) {\r\n const theta = delta * 0.5;\r\n angle -= theta;\r\n radius /= Math.cos(theta);\r\n }\r\n\r\n const rtmp = Point3d.create();\r\n const stmp = Point3d.create();\r\n for (let i = 0; i < numSides; i++, angle += delta) {\r\n rtmp.x = radius * Math.cos(angle);\r\n rtmp.y = radius * Math.sin(angle);\r\n rtmp.z = 0.0;\r\n center.plus(rtmp, stmp);\r\n points.push(stmp.x);\r\n points.push(stmp.y);\r\n }\r\n return true;\r\n }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const center = this._points[0];\r\n const edge = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\r\n const pts: number[] = [];\r\n if (!this.getPoints(pts, center, edge, undefined !== this._numSides ? this._numSides : 5, true))\r\n return;\r\n const element = svgMarkup.polygon(pts);\r\n this.setCurrentStyle(element, true);\r\n if (!isDynamics)\r\n this.onAdded(element);\r\n }\r\n}\r\n\r\n/** Tool for placing Markup Clouds\r\n * @public\r\n */\r\nexport class CloudTool extends RedlineTool {\r\n public static override toolId = \"Markup.Cloud\";\r\n public static override iconSpec = \"icon-cloud\";\r\n protected _cloud?: MarkupElement;\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartCorner\" : \"ElementSet.Prompts.OppositeCorner\")); }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const start = this._points[0];\r\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\r\n const vec = start.vectorTo(end);\r\n const width = Math.abs(vec.x);\r\n const height = Math.abs(vec.y);\r\n if (width < 10 || height < 10)\r\n return;\r\n if (undefined === this._cloud) {\r\n this._cloud = svgMarkup.path(MarkupApp.props.active.cloud.path);\r\n } else if (!isDynamics) {\r\n svgMarkup.add(this._cloud);\r\n }\r\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\r\n this._cloud.move(offset.x, offset.y);\r\n this._cloud.width(width);\r\n this._cloud.height(height);\r\n this.setCurrentStyle(this._cloud, true);\r\n if (!isDynamics)\r\n this.onAdded(this._cloud);\r\n }\r\n\r\n protected override clearDynamicsMarkup(isDynamics: boolean): void {\r\n if (!isDynamics)\r\n super.clearDynamicsMarkup(isDynamics); // For dynamics we don't create a new cloud each frame, we just set the width/height...\r\n }\r\n}\r\n\r\n/** Tool for placing Markup Circles\r\n * @public\r\n */\r\nexport class CircleTool extends RedlineTool {\r\n public static override toolId = \"Markup.Circle\";\r\n public static override iconSpec = \"icon-circle\";\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(MarkupTool.toolKey + (0 === this._points.length ? \"Circle.Prompts.FirstPoint\" : \"Circle.Prompts.NextPoint\")); }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const start = this._points[0];\r\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\r\n const radius = start.distanceXY(end);\r\n if (radius < 1)\r\n return;\r\n const element = svgMarkup.circle(radius * 2.0).center(start.x, start.y);\r\n this.setCurrentStyle(element, true);\r\n if (!isDynamics)\r\n this.onAdded(element);\r\n }\r\n}\r\n\r\n/** Tool for placing Markup Ellipses\r\n * @public\r\n */\r\nexport class EllipseTool extends RedlineTool {\r\n public static override toolId = \"Markup.Ellipse\";\r\n public static override iconSpec = \"icon-ellipse\";\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartCorner\" : \"ElementSet.Prompts.OppositeCorner\")); }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const start = this._points[0];\r\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\r\n const vec = start.vectorTo(end);\r\n const width = Math.abs(vec.x);\r\n const height = Math.abs(vec.y);\r\n if (width < 1 || height < 1)\r\n return;\r\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\r\n const element = svgMarkup.ellipse(width, height).move(offset.x, offset.y);\r\n this.setCurrentStyle(element, true);\r\n if (!isDynamics)\r\n this.onAdded(element);\r\n }\r\n}\r\n\r\n/** Tool for placing Markup Arrows\r\n * @public\r\n */\r\nexport class ArrowTool extends RedlineTool {\r\n public static override toolId = \"Markup.Arrow\";\r\n public static override iconSpec = \"icon-callout\";\r\n\r\n /** ctor for ArrowTool\r\n * @param _arrowPos \"start\", \"end\", or \"both\". If undefined = \"end\".\r\n */\r\n constructor(protected _arrowPos?: string) { super(); }\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartPoint\" : \"ElementSet.Prompts.EndPoint\")); }\r\n\r\n protected getOrCreateArrowMarker(color: string): Marker {\r\n const arrowProps = MarkupApp.props.active.arrow;\r\n return this.markup.createArrowMarker(color, arrowProps.length, arrowProps.width);\r\n }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const start = this._points[0];\r\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\r\n const vec = start.vectorTo(end);\r\n if (!vec.normalizeInPlace())\r\n return;\r\n const element = svgMarkup.line(start.x, start.y, end.x, end.y);\r\n this.setCurrentStyle(element, false);\r\n const marker = this.getOrCreateArrowMarker(element.css(\"stroke\"));\r\n const addToStart = (\"start\" === this._arrowPos || \"both\" === this._arrowPos);\r\n const addToEnd = (\"end\" === this._arrowPos || \"both\" === this._arrowPos);\r\n if (addToStart)\r\n element.marker(\"start\", marker);\r\n if (addToEnd || !addToStart)\r\n element.marker(\"end\", marker);\r\n if (!isDynamics)\r\n this.onAdded(element);\r\n }\r\n}\r\n\r\n/** Tool for measuring distances and placing Markups of them\r\n * @public\r\n */\r\nexport class DistanceTool extends ArrowTool {\r\n public static override toolId = \"Markup.Distance\";\r\n public static override iconSpec = \"icon-distance\";\r\n protected readonly _startPointWorld = new Point3d();\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartPoint\" : \"ElementSet.Prompts.EndPoint\")); }\r\n protected override setupAndPromptForNextAction(): void {\r\n IModelApp.accuSnap.enableSnap(true);\r\n IModelApp.toolAdmin.toolState.coordLockOvr = CoordinateLockOverrides.None;\r\n super.setupAndPromptForNextAction();\r\n }\r\n\r\n protected getFormattedDistance(distance: number): string | undefined {\r\n const formatterSpec = IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Length);\r\n if (undefined === formatterSpec)\r\n return undefined;\r\n return IModelApp.quantityFormatter.formatQuantity(distance, formatterSpec);\r\n }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const start = this._points[0];\r\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\r\n const vec = start.vectorTo(end);\r\n if (!vec.normalizeInPlace())\r\n return;\r\n const formatterSpec = IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Length);\r\n if (undefined === formatterSpec)\r\n return;\r\n\r\n const distanceLine = svgMarkup.line(start.x, start.y, end.x, end.y);\r\n this.setCurrentStyle(distanceLine, false);\r\n const marker = this.getOrCreateArrowMarker(distanceLine.css(\"stroke\"));\r\n distanceLine.marker(\"start\", marker);\r\n distanceLine.marker(\"end\", marker);\r\n\r\n const loc = start.interpolate(0.5, end);\r\n const distance = IModelApp.quantityFormatter.formatQuantity(this._startPointWorld.distance(ev.point), formatterSpec);\r\n const text = svgMarkup.plain(distance).addClass(MarkupApp.textClass).attr(\"text-anchor\", \"middle\").translate(loc.x, loc.y);\r\n this.setCurrentTextStyle(text);\r\n const textWithBg = this.createBoxedText(svgMarkup, text);\r\n\r\n if (!isDynamics) {\r\n const markup = this.markup;\r\n const undo = markup.undo;\r\n undo.performOperation(this.keyin, () => {\r\n undo.onAdded(distanceLine);\r\n undo.onAdded(textWithBg);\r\n });\r\n\r\n markup.selected.restart(textWithBg); // Select text+box so that user can freely position relative to distance line...\r\n }\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === await IModelApp.quantityFormatter.getFormatterSpecByQuantityType(QuantityType.Length)) {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n if (0 === this._points.length)\r\n this._startPointWorld.setFrom(ev.point);\r\n return super.onDataButtonDown(ev);\r\n }\r\n}\r\n\r\n/** Tool for placing Markup freehand sketches\r\n * @public\r\n */\r\nexport class SketchTool extends RedlineTool {\r\n public static override toolId = \"Markup.Sketch\";\r\n public static override iconSpec = \"icon-draw\";\r\n protected _minDistSquared = 100;\r\n\r\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartPoint\" : \"ElementSet.Prompts.EndPoint\")); }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\r\n return;\r\n const pts: number[] = [];\r\n const evPt = MarkupApp.convertVpToVb(ev.viewPoint);\r\n this._points.forEach((pt) => {\r\n pts.push(pt.x);\r\n pts.push(pt.y);\r\n });\r\n\r\n if (isDynamics && !evPt.isAlmostEqualXY(this._points[this._points.length - 1])) {\r\n pts.push(evPt.x);\r\n pts.push(evPt.y);\r\n }\r\n\r\n const isClosed = (this._points.length > 2 && (this._points[0].distanceSquaredXY(isDynamics ? evPt : this._points[this._points.length - 1]) < this._minDistSquared * 2));\r\n const element = isClosed ? svgMarkup.polygon(pts) : svgMarkup.polyline(pts);\r\n this.setCurrentStyle(element, isClosed);\r\n if (!isDynamics)\r\n this.onAdded(element);\r\n }\r\n\r\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\r\n const evPt = MarkupApp.convertVpToVb(ev.viewPoint);\r\n if (undefined !== ev.viewport && this._points.length > 0 && evPt.distanceSquaredXY(this._points[this._points.length - 1]) > this._minDistSquared)\r\n this._points.push(evPt);\r\n\r\n return super.onMouseMotion(ev);\r\n }\r\n}\r\n\r\n/** Tool for placing SVG symbols on a Markup\r\n * @public\r\n */\r\nexport class SymbolTool extends RedlineTool {\r\n public static override toolId = \"Markup.Symbol\";\r\n public static override iconSpec = \"icon-symbol\";\r\n protected _symbol?: MarkupElement;\r\n\r\n constructor(protected _symbolData?: string, protected _applyCurrentStyle?: boolean) { super(); }\r\n\r\n public override async onInstall(): Promise<boolean> {\r\n if (undefined === this._symbolData)\r\n return false;\r\n return super.onInstall();\r\n }\r\n\r\n protected override showPrompt(): void {\r\n this.provideToolAssistance(0 === this._points.length ? (`${MarkupTool.toolKey}Symbol.Prompts.FirstPoint`) : `${CoreTools.tools}ElementSet.Prompts.OppositeCorner`, true);\r\n }\r\n\r\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\r\n if (undefined === this._symbolData)\r\n return;\r\n if (this._points.length < this._minPoints)\r\n return;\r\n const start = this._points[0];\r\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[this._points.length - 1];\r\n const vec = start.vectorTo(end);\r\n const width = Math.abs(vec.x);\r\n const height = Math.abs(vec.y);\r\n if ((width < 10 || height < 10) && (isDynamics || this._points.length !== this._minPoints))\r\n return;\r\n if (undefined === this._symbol) {\r\n const symbol = svgMarkup.group().svg(this._symbolData); // creating group instead of using symbol because of inability to flash/hilite multi-color symbol instance...\r\n if (0 === symbol.children().length) {\r\n symbol.remove();\r\n this._symbolData = undefined;\r\n }\r\n try {\r\n symbol.flatten(symbol);\r\n } catch { }\r\n\r\n this._symbol = symbol;\r\n } else if (!isDynamics) {\r\n svgMarkup.add(this._symbol);\r\n }\r\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\r\n if (!isDynamics && this._points.length === this._minPoints)\r\n this._symbol.size(ev.viewport!.viewRect.width * 0.1).center(offset.x, offset.y);\r\n else if (!ev.isShiftKey)\r\n this._symbol.size(width).move(offset.x, offset.y);\r\n else\r\n this._symbol.size(width, height).move(offset.x, offset.y);\r\n if (this._applyCurrentStyle) {\r\n const active = MarkupApp.props.active; // Apply color and transparency only; using active stroke-width, etc. for pre-defined symbols is likely undesirable...\r\n this._symbol.forElementsOfGroup((child) => {\r\n const css = window.getComputedStyle(child.node);\r\n const toValue = (val: string | null, newVal: string) => (!val || val === \"none\") ? \"none\" : newVal;\r\n child.css({ \"fill\": toValue(css.fill, active.element.fill), \"stroke\": toValue(css.stroke, active.element.stroke), \"fill-opacity\": active.element[\"fill-opacity\"], \"stroke-opacity\": active.element[\"stroke-opacity\"] });\r\n });\r\n }\r\n if (!isDynamics)\r\n this.onAdded(this._symbol);\r\n }\r\n\r\n public override async onDataButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (undefined === ev.viewport || this._points.length !== this._minPoints)\r\n return EventHandled.No;\r\n\r\n this.createMarkup(this.markup.svgMarkup!, ev, false);\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\r\n await this.onReinitialize();\r\n return EventHandled.No;\r\n }\r\n\r\n protected override clearDynamicsMarkup(isDynamics: boolean): void {\r\n if (!isDynamics)\r\n super.clearDynamicsMarkup(isDynamics); // For dynamics we don't create a new symbol each frame, we just set the width/height...\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RedlineTool.js","sourceRoot":"","sources":["../../src/RedlineTool.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 MarkupTools\n */\n\n// cspell:ignore rtmp stmp\n\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\nimport { expectDefined } from \"@itwin/core-bentley\";\nimport {\n BeButtonEvent, CoordinateLockOverrides, CoreTools, EventHandled, IModelApp, QuantityType, ToolAssistance, ToolAssistanceImage,\n ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection,\n} from \"@itwin/core-frontend\";\nimport { G, Marker, Element as MarkupElement } from \"@svgdotjs/svg.js\";\nimport { MarkupApp } from \"./Markup\";\nimport { MarkupTool } from \"./MarkupTool\";\n\n/** Base class for tools that place new Markup elements\n * @public\n */\nexport abstract class RedlineTool extends MarkupTool {\n protected _minPoints = 1;\n protected _nRequiredPoints = 2;\n protected readonly _points: Point3d[] = [];\n\n protected onAdded(el: MarkupElement) {\n const markup = this.markup;\n const undo = markup.undo;\n undo.performOperation(this.keyin, () => undo.onAdded(el));\n markup.selected.restart(el);\n }\n protected isComplete(_ev: BeButtonEvent) { return this._points.length >= this._nRequiredPoints; }\n protected override setupAndPromptForNextAction(): void {\n super.setupAndPromptForNextAction();\n this.markup.disablePick();\n IModelApp.toolAdmin.setCursor(0 === this._points.length ? IModelApp.viewManager.crossHairCursor : IModelApp.viewManager.dynamicsCursor);\n }\n\n protected createMarkup(_svgMarkup: G, _ev: BeButtonEvent, _isDynamics: boolean): void { }\n protected clearDynamicsMarkup(_isDynamics: boolean): void {\n expectDefined(this.markup.svgDynamics).clear();\n }\n\n public override async onRestartTool() { return this.exitTool(); } // Default to single shot and return control to select tool...\n public override async onCleanup() { this.clearDynamicsMarkup(false); }\n\n public override async onReinitialize() {\n this.clearDynamicsMarkup(false);\n return super.onReinitialize();\n }\n\n public override async onUndoPreviousStep(): Promise<boolean> {\n return (0 === this._points.length) ? false : (this.onReinitialize(), true);\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n if (undefined === ev.viewport || this._points.length < this._minPoints)\n return;\n this.clearDynamicsMarkup(true);\n this.createMarkup(expectDefined(this.markup.svgDynamics), ev, true);\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport)\n return EventHandled.No;\n\n this._points.push(MarkupApp.convertVpToVb(ev.viewPoint));\n if (!this.isComplete(ev)) {\n this.setupAndPromptForNextAction();\n return EventHandled.No;\n }\n\n this.createMarkup(expectDefined(this.markup.svgMarkup), ev, false);\n await this.onReinitialize();\n return EventHandled.No;\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.onReinitialize();\n return EventHandled.No;\n }\n\n protected provideToolAssistance(mainInstrKey: string, singlePoint: boolean = false): void {\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, IModelApp.localization.getLocalizedString(mainInstrKey));\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n const touchInstructions: ToolAssistanceInstruction[] = [];\n\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Exit\");\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(singlePoint ? ToolAssistanceImage.OneTouchTap : ToolAssistanceImage.OneTouchDrag, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n}\n\n/** Tool for placing Markup Lines\n * @public\n */\nexport class LineTool extends RedlineTool {\n public static override toolId = \"Markup.Line\";\n public static override iconSpec = \"icon-line\";\n\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartPoint\" : \"ElementSet.Prompts.EndPoint\")); }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const start = this._points[0];\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\n const element = svgMarkup.line(start.x, start.y, end.x, end.y);\n this.setCurrentStyle(element, false);\n if (!isDynamics)\n this.onAdded(element);\n }\n}\n\n/** Tool for placing Markup Rectangles\n * @public\n */\nexport class RectangleTool extends RedlineTool {\n public static override toolId = \"Markup.Rectangle\";\n public static override iconSpec = \"icon-rectangle\";\n\n constructor(protected _cornerRadius?: number) { super(); } // Specify radius to create a rectangle with rounded corners.\n\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartCorner\" : \"ElementSet.Prompts.OppositeCorner\")); }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const start = this._points[0];\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\n const vec = start.vectorTo(end);\n const width = Math.abs(vec.x);\n const height = Math.abs(vec.y);\n if (width < 1 || height < 1)\n return;\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\n const element = svgMarkup.rect(width, height).move(offset.x, offset.y);\n this.setCurrentStyle(element, true);\n if (undefined !== this._cornerRadius)\n element.radius(this._cornerRadius);\n if (!isDynamics)\n this.onAdded(element);\n }\n}\n\n/** Tool for placing Markup Polygons\n * @public\n */\nexport class PolygonTool extends RedlineTool {\n public static override toolId = \"Markup.Polygon\";\n public static override iconSpec = \"icon-polygon\";\n\n constructor(protected _numSides?: number) { super(); } // Specify number of polygon sides. Default if undefined is 5.\n\n protected override showPrompt(): void { this.provideToolAssistance(MarkupTool.toolKey + (0 === this._points.length ? \"Polygon.Prompts.FirstPoint\" : \"Polygon.Prompts.NextPoint\")); }\n\n protected getPoints(points: number[], center: Point3d, edge: Point3d, numSides: number, inscribe: boolean): boolean {\n if (numSides < 3 || numSides > 100)\n return false;\n let radius = center.distanceXY(edge);\n if (radius < 1)\n return false;\n const delta = (Math.PI * 2.0) / numSides;\n const vec = center.vectorTo(edge);\n let angle = Vector3d.unitX().planarRadiansTo(vec, Vector3d.unitZ());\n if (!inscribe) {\n const theta = delta * 0.5;\n angle -= theta;\n radius /= Math.cos(theta);\n }\n\n const rtmp = Point3d.create();\n const stmp = Point3d.create();\n for (let i = 0; i < numSides; i++, angle += delta) {\n rtmp.x = radius * Math.cos(angle);\n rtmp.y = radius * Math.sin(angle);\n rtmp.z = 0.0;\n center.plus(rtmp, stmp);\n points.push(stmp.x);\n points.push(stmp.y);\n }\n return true;\n }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const center = this._points[0];\n const edge = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\n const pts: number[] = [];\n if (!this.getPoints(pts, center, edge, undefined !== this._numSides ? this._numSides : 5, true))\n return;\n const element = svgMarkup.polygon(pts);\n this.setCurrentStyle(element, true);\n if (!isDynamics)\n this.onAdded(element);\n }\n}\n\n/** Tool for placing Markup Clouds\n * @public\n */\nexport class CloudTool extends RedlineTool {\n public static override toolId = \"Markup.Cloud\";\n public static override iconSpec = \"icon-cloud\";\n protected _cloud?: MarkupElement;\n\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartCorner\" : \"ElementSet.Prompts.OppositeCorner\")); }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const start = this._points[0];\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\n const vec = start.vectorTo(end);\n const width = Math.abs(vec.x);\n const height = Math.abs(vec.y);\n if (width < 10 || height < 10)\n return;\n if (undefined === this._cloud) {\n this._cloud = svgMarkup.path(MarkupApp.props.active.cloud.path);\n } else if (!isDynamics) {\n svgMarkup.add(this._cloud);\n }\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\n this._cloud.move(offset.x, offset.y);\n this._cloud.width(width);\n this._cloud.height(height);\n this.setCurrentStyle(this._cloud, true);\n if (!isDynamics)\n this.onAdded(this._cloud);\n }\n\n protected override clearDynamicsMarkup(isDynamics: boolean): void {\n if (!isDynamics)\n super.clearDynamicsMarkup(isDynamics); // For dynamics we don't create a new cloud each frame, we just set the width/height...\n }\n}\n\n/** Tool for placing Markup Circles\n * @public\n */\nexport class CircleTool extends RedlineTool {\n public static override toolId = \"Markup.Circle\";\n public static override iconSpec = \"icon-circle\";\n\n protected override showPrompt(): void { this.provideToolAssistance(MarkupTool.toolKey + (0 === this._points.length ? \"Circle.Prompts.FirstPoint\" : \"Circle.Prompts.NextPoint\")); }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const start = this._points[0];\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\n const radius = start.distanceXY(end);\n if (radius < 1)\n return;\n const element = svgMarkup.circle(radius * 2.0).center(start.x, start.y);\n this.setCurrentStyle(element, true);\n if (!isDynamics)\n this.onAdded(element);\n }\n}\n\n/** Tool for placing Markup Ellipses\n * @public\n */\nexport class EllipseTool extends RedlineTool {\n public static override toolId = \"Markup.Ellipse\";\n public static override iconSpec = \"icon-ellipse\";\n\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartCorner\" : \"ElementSet.Prompts.OppositeCorner\")); }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const start = this._points[0];\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\n const vec = start.vectorTo(end);\n const width = Math.abs(vec.x);\n const height = Math.abs(vec.y);\n if (width < 1 || height < 1)\n return;\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\n const element = svgMarkup.ellipse(width, height).move(offset.x, offset.y);\n this.setCurrentStyle(element, true);\n if (!isDynamics)\n this.onAdded(element);\n }\n}\n\n/** Tool for placing Markup Arrows\n * @public\n */\nexport class ArrowTool extends RedlineTool {\n public static override toolId = \"Markup.Arrow\";\n public static override iconSpec = \"icon-callout\";\n\n /** ctor for ArrowTool\n * @param _arrowPos \"start\", \"end\", or \"both\". If undefined = \"end\".\n */\n constructor(protected _arrowPos?: string) { super(); }\n\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartPoint\" : \"ElementSet.Prompts.EndPoint\")); }\n\n protected getOrCreateArrowMarker(color: string): Marker {\n const arrowProps = MarkupApp.props.active.arrow;\n return this.markup.createArrowMarker(color, arrowProps.length, arrowProps.width);\n }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const start = this._points[0];\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\n const vec = start.vectorTo(end);\n if (!vec.normalizeInPlace())\n return;\n const element = svgMarkup.line(start.x, start.y, end.x, end.y);\n this.setCurrentStyle(element, false);\n const marker = this.getOrCreateArrowMarker(element.css(\"stroke\"));\n const addToStart = (\"start\" === this._arrowPos || \"both\" === this._arrowPos);\n const addToEnd = (\"end\" === this._arrowPos || \"both\" === this._arrowPos);\n if (addToStart)\n element.marker(\"start\", marker);\n if (addToEnd || !addToStart)\n element.marker(\"end\", marker);\n if (!isDynamics)\n this.onAdded(element);\n }\n}\n\n/** Tool for measuring distances and placing Markups of them\n * @public\n */\nexport class DistanceTool extends ArrowTool {\n public static override toolId = \"Markup.Distance\";\n public static override iconSpec = \"icon-distance\";\n protected readonly _startPointWorld = new Point3d();\n\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartPoint\" : \"ElementSet.Prompts.EndPoint\")); }\n protected override setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(true);\n IModelApp.toolAdmin.toolState.coordLockOvr = CoordinateLockOverrides.None;\n super.setupAndPromptForNextAction();\n }\n\n protected getFormattedDistance(distance: number): string | undefined {\n const formatterSpec = IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Length);\n if (undefined === formatterSpec)\n return undefined;\n return IModelApp.quantityFormatter.formatQuantity(distance, formatterSpec);\n }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const start = this._points[0];\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[1];\n const vec = start.vectorTo(end);\n if (!vec.normalizeInPlace())\n return;\n const formatterSpec = IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Length);\n if (undefined === formatterSpec)\n return;\n\n const distanceLine = svgMarkup.line(start.x, start.y, end.x, end.y);\n this.setCurrentStyle(distanceLine, false);\n const marker = this.getOrCreateArrowMarker(distanceLine.css(\"stroke\"));\n distanceLine.marker(\"start\", marker);\n distanceLine.marker(\"end\", marker);\n\n const loc = start.interpolate(0.5, end);\n const distance = IModelApp.quantityFormatter.formatQuantity(this._startPointWorld.distance(ev.point), formatterSpec);\n const text = svgMarkup.plain(distance).addClass(MarkupApp.textClass).attr(\"text-anchor\", \"middle\").translate(loc.x, loc.y);\n this.setCurrentTextStyle(text);\n const textWithBg = this.createBoxedText(svgMarkup, text);\n\n if (!isDynamics) {\n const markup = this.markup;\n const undo = markup.undo;\n undo.performOperation(this.keyin, () => {\n undo.onAdded(distanceLine);\n undo.onAdded(textWithBg);\n });\n\n markup.selected.restart(textWithBg); // Select text+box so that user can freely position relative to distance line...\n }\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === await IModelApp.quantityFormatter.getFormatterSpecByQuantityType(QuantityType.Length)) {\n await this.onReinitialize();\n return EventHandled.No;\n }\n if (0 === this._points.length)\n this._startPointWorld.setFrom(ev.point);\n return super.onDataButtonDown(ev);\n }\n}\n\n/** Tool for placing Markup freehand sketches\n * @public\n */\nexport class SketchTool extends RedlineTool {\n public static override toolId = \"Markup.Sketch\";\n public static override iconSpec = \"icon-draw\";\n protected _minDistSquared = 100;\n\n protected override showPrompt(): void { this.provideToolAssistance(CoreTools.tools + (0 === this._points.length ? \"ElementSet.Prompts.StartPoint\" : \"ElementSet.Prompts.EndPoint\")); }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (this._points.length < (isDynamics ? this._nRequiredPoints - 1 : this._nRequiredPoints))\n return;\n const pts: number[] = [];\n const evPt = MarkupApp.convertVpToVb(ev.viewPoint);\n this._points.forEach((pt) => {\n pts.push(pt.x);\n pts.push(pt.y);\n });\n\n if (isDynamics && !evPt.isAlmostEqualXY(this._points[this._points.length - 1])) {\n pts.push(evPt.x);\n pts.push(evPt.y);\n }\n\n const isClosed = (this._points.length > 2 && (this._points[0].distanceSquaredXY(isDynamics ? evPt : this._points[this._points.length - 1]) < this._minDistSquared * 2));\n const element = isClosed ? svgMarkup.polygon(pts) : svgMarkup.polyline(pts);\n this.setCurrentStyle(element, isClosed);\n if (!isDynamics)\n this.onAdded(element);\n }\n\n public override async onMouseMotion(ev: BeButtonEvent): Promise<void> {\n const evPt = MarkupApp.convertVpToVb(ev.viewPoint);\n if (undefined !== ev.viewport && this._points.length > 0 && evPt.distanceSquaredXY(this._points[this._points.length - 1]) > this._minDistSquared)\n this._points.push(evPt);\n\n return super.onMouseMotion(ev);\n }\n}\n\n/** Tool for placing SVG symbols on a Markup\n * @public\n */\nexport class SymbolTool extends RedlineTool {\n public static override toolId = \"Markup.Symbol\";\n public static override iconSpec = \"icon-symbol\";\n protected _symbol?: MarkupElement;\n\n constructor(protected _symbolData?: string, protected _applyCurrentStyle?: boolean) { super(); }\n\n public override async onInstall(): Promise<boolean> {\n if (undefined === this._symbolData)\n return false;\n return super.onInstall();\n }\n\n protected override showPrompt(): void {\n this.provideToolAssistance(0 === this._points.length ? (`${MarkupTool.toolKey}Symbol.Prompts.FirstPoint`) : `${CoreTools.tools}ElementSet.Prompts.OppositeCorner`, true);\n }\n\n protected override createMarkup(svgMarkup: G, ev: BeButtonEvent, isDynamics: boolean): void {\n if (undefined === this._symbolData)\n return;\n if (this._points.length < this._minPoints)\n return;\n const start = this._points[0];\n const end = isDynamics ? MarkupApp.convertVpToVb(ev.viewPoint) : this._points[this._points.length - 1];\n const vec = start.vectorTo(end);\n const width = Math.abs(vec.x);\n const height = Math.abs(vec.y);\n if ((width < 10 || height < 10) && (isDynamics || this._points.length !== this._minPoints))\n return;\n if (undefined === this._symbol) {\n const symbol = svgMarkup.group().svg(this._symbolData); // creating group instead of using symbol because of inability to flash/hilite multi-color symbol instance...\n if (0 === symbol.children().length) {\n symbol.remove();\n this._symbolData = undefined;\n }\n try {\n symbol.flatten(symbol);\n } catch { }\n\n this._symbol = symbol;\n } else if (!isDynamics) {\n svgMarkup.add(this._symbol);\n }\n const offset = Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...\n if (!isDynamics && this._points.length === this._minPoints) {\n this._symbol.size(expectDefined(ev.viewport).viewRect.width * 0.1).center(offset.x, offset.y);\n }\n else if (!ev.isShiftKey)\n this._symbol.size(width).move(offset.x, offset.y);\n else\n this._symbol.size(width, height).move(offset.x, offset.y);\n if (this._applyCurrentStyle) {\n const active = MarkupApp.props.active; // Apply color and transparency only; using active stroke-width, etc. for pre-defined symbols is likely undesirable...\n this._symbol.forElementsOfGroup((child) => {\n const css = window.getComputedStyle(child.node);\n const toValue = (val: string | null, newVal: string) => (!val || val === \"none\") ? \"none\" : newVal;\n child.css({ \"fill\": toValue(css.fill, active.element.fill), \"stroke\": toValue(css.stroke, active.element.stroke), \"fill-opacity\": active.element[\"fill-opacity\"], \"stroke-opacity\": active.element[\"stroke-opacity\"] });\n });\n }\n if (!isDynamics)\n this.onAdded(this._symbol);\n }\n\n public override async onDataButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport || this._points.length !== this._minPoints)\n return EventHandled.No;\n\n this.createMarkup(expectDefined(this.markup.svgMarkup), ev, false);\n await this.onReinitialize();\n return EventHandled.No;\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n await this.onReinitialize();\n return EventHandled.No;\n }\n\n protected override clearDynamicsMarkup(isDynamics: boolean): void {\n if (!isDynamics)\n super.clearDynamicsMarkup(isDynamics); // For dynamics we don't create a new symbol each frame, we just set the width/height...\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTool.d.ts","sourceRoot":"","sources":["../../src/SelectTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectTool.d.ts","sourceRoot":"","sources":["../../src/SelectTool.ts"],"names":[],"mappings":"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"}
@@ -101,7 +101,7 @@ class StretchHandle extends ModifyHandle {
101
101
  modify(ev) {
102
102
  const evPt = Markup_1.MarkupApp.convertVpToVb(ev.viewPoint); // get cursor location in viewbox coords
103
103
  const diff = this.startPos.vectorTo(this.vbToStartTrn.multiplyPoint2d(evPt)); // movement of cursor from start, in viewbox coords
104
- const diag = this.startPos.vectorTo(this.opposite).normalize(); // vector from opposite corner to this handle
104
+ const diag = (0, core_bentley_1.expectDefined)(this.startPos.vectorTo(this.opposite).normalize());
105
105
  let diagVec = diag.scaleToLength(diff.dotProduct(diag)); // projected distance along diagonal
106
106
  if (diagVec === undefined)
107
107
  diagVec = core_geometry_1.Vector2d.createZero();
@@ -149,7 +149,7 @@ class RotateHandle extends ModifyHandle {
149
149
  get anchorVb() { return this.handles.npcToVb({ x: .5, y: 0 }); }
150
150
  setPosition() {
151
151
  const anchor = this.anchorVb;
152
- const dir = this.centerVb.vectorTo(anchor).normalize();
152
+ const dir = (0, core_bentley_1.expectDefined)(this.centerVb.vectorTo(anchor).normalize());
153
153
  const loc = this.location = anchor.plusScaled(dir, Markup_1.MarkupApp.props.handles.size * 3);
154
154
  this._line.plot(anchor.x, anchor.y, loc.x, loc.y);
155
155
  this._circle.center(loc.x, loc.y);
@@ -313,14 +313,14 @@ class Handles {
313
313
  if (this.active) {
314
314
  this.active.startDrag(ev);
315
315
  this.dragging = true;
316
- Markup_1.MarkupApp.markup.disablePick();
316
+ (0, core_bentley_1.expectDefined)(Markup_1.MarkupApp.markup).disablePick();
317
317
  core_frontend_1.IModelApp.toolAdmin.setCursor(core_frontend_1.IModelApp.viewManager.dynamicsCursor);
318
318
  }
319
319
  return core_frontend_1.EventHandled.Yes;
320
320
  }
321
321
  drag(ev) {
322
322
  if (this.dragging) {
323
- this.active.modify(ev);
323
+ (0, core_bentley_1.expectDefined)(this.active).modify(ev);
324
324
  this.draw();
325
325
  }
326
326
  }
@@ -342,7 +342,7 @@ class Handles {
342
342
  this.draw();
343
343
  this.dragging = false;
344
344
  this.active = undefined;
345
- Markup_1.MarkupApp.markup.enablePick();
345
+ (0, core_bentley_1.expectDefined)(Markup_1.MarkupApp.markup).enablePick();
346
346
  return core_frontend_1.EventHandled.Yes;
347
347
  }
348
348
  /** called when the reset button is pressed. */
@@ -357,7 +357,7 @@ class Handles {
357
357
  }
358
358
  this.draw();
359
359
  this.active = undefined;
360
- Markup_1.MarkupApp.markup.enablePick();
360
+ (0, core_bentley_1.expectDefined)(Markup_1.MarkupApp.markup).enablePick();
361
361
  }
362
362
  }
363
363
  exports.Handles = Handles;
@@ -397,8 +397,9 @@ class MarkupSelected {
397
397
  }
398
398
  sizeChanged() {
399
399
  this.clearEditors();
400
- if (this.elements.size === 1)
401
- this.handles = new Handles(this, this.elements.values().next().value);
400
+ if (this.elements.size === 1) {
401
+ this.handles = new Handles(this, (0, core_bentley_1.expectDefined)(this.elements.values().next().value));
402
+ }
402
403
  this.onChanged.raiseEvent(this);
403
404
  }
404
405
  /** Add a new element to the SS */
@@ -429,7 +430,7 @@ class MarkupSelected {
429
430
  groupAll(undo) {
430
431
  if (this.size < 2)
431
432
  return;
432
- const first = this.elements.values().next().value;
433
+ const first = (0, core_bentley_1.expectDefined)(this.elements.values().next().value);
433
434
  const parent = first.parent();
434
435
  const group = parent.group();
435
436
  const ordered = [];
@@ -601,7 +602,7 @@ class SelectTool extends MarkupTool_1.MarkupTool {
601
602
  }
602
603
  boxSelectInit() {
603
604
  this._isBoxSelect = false;
604
- this.markup.svgDynamics.clear();
605
+ (0, core_bentley_1.expectDefined)(this.markup.svgDynamics).clear();
605
606
  }
606
607
  boxSelectStart(ev) {
607
608
  if (!ev.isControlKey)
@@ -623,12 +624,14 @@ class SelectTool extends MarkupTool_1.MarkupTool {
623
624
  const rightToLeft = (start.x > end.x);
624
625
  const overlapMode = (ev.isShiftKey ? !rightToLeft : rightToLeft); // Shift inverts inside/overlap selection...
625
626
  const offset = core_geometry_1.Point3d.create(vec.x < 0 ? end.x : start.x, vec.y < 0 ? end.y : start.y); // define location by corner points...
626
- this.markup.svgDynamics.clear();
627
- this.markup.svgDynamics.rect(width, height).move(offset.x, offset.y).css({ "stroke-width": 1, "stroke": "black", "stroke-opacity": 0.5, "fill": "lightBlue", "fill-opacity": 0.2 });
628
- const selectBox = this.markup.svgDynamics.rect(width, height).move(offset.x, offset.y).css({ "stroke-width": 1, "stroke": "white", "stroke-opacity": 1.0, "stroke-dasharray": overlapMode ? "5" : "2", "fill": "none" });
629
- const outlinesG = isDynamics ? this.markup.svgDynamics.group() : undefined;
627
+ const svgDynamics = (0, core_bentley_1.expectDefined)(this.markup.svgDynamics);
628
+ const svgMarkup = (0, core_bentley_1.expectDefined)(this.markup.svgMarkup);
629
+ svgDynamics.clear();
630
+ svgDynamics.rect(width, height).move(offset.x, offset.y).css({ "stroke-width": 1, "stroke": "black", "stroke-opacity": 0.5, "fill": "lightBlue", "fill-opacity": 0.2 });
631
+ const selectBox = svgDynamics.rect(width, height).move(offset.x, offset.y).css({ "stroke-width": 1, "stroke": "white", "stroke-opacity": 1.0, "stroke-dasharray": overlapMode ? "5" : "2", "fill": "none" });
632
+ const outlinesG = isDynamics ? svgDynamics.group() : undefined;
630
633
  const selectRect = selectBox.node.getBoundingClientRect();
631
- this.markup.svgMarkup.forElementsOfGroup((child) => {
634
+ svgMarkup.forElementsOfGroup((child) => {
632
635
  const childRect = child.node.getBoundingClientRect();
633
636
  const inside = (childRect.left >= selectRect.left && childRect.top >= selectRect.top && childRect.right <= selectRect.right && childRect.bottom <= selectRect.bottom);
634
637
  const overlap = !inside && (childRect.left < selectRect.right && childRect.right > selectRect.left && childRect.bottom > selectRect.top && childRect.top < selectRect.bottom);
@@ -713,7 +716,7 @@ class SelectTool extends MarkupTool_1.MarkupTool {
713
716
  // move or copy all of the elements in dragged set
714
717
  undo.performOperation(Markup_1.MarkupApp.getActionName("copy"), () => this._dragging.forEach((el) => {
715
718
  el.translate(delta.x, delta.y); // move to final location
716
- const original = el.originalEl; // save original element
719
+ const original = (0, core_bentley_1.expectDefined)(el.originalEl); // save original element
717
720
  el.originalEl = undefined; // clear original element
718
721
  if (ev.isShiftKey) {
719
722
  selected.add(el);