@itwin/core-frontend 3.0.0-dev.85 → 3.0.0-dev.89

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 (107) hide show
  1. package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
  2. package/lib/cjs/ContextRealityModelState.js +1 -6
  3. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  4. package/lib/cjs/DisplayStyleState.d.ts +6 -6
  5. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  6. package/lib/cjs/DisplayStyleState.js +2 -2
  7. package/lib/cjs/DisplayStyleState.js.map +1 -1
  8. package/lib/cjs/EmphasizeElements.d.ts +1 -1
  9. package/lib/cjs/EmphasizeElements.js +1 -1
  10. package/lib/cjs/EmphasizeElements.js.map +1 -1
  11. package/lib/cjs/ModelState.d.ts +1 -1
  12. package/lib/cjs/ModelState.d.ts.map +1 -1
  13. package/lib/cjs/ModelState.js +2 -11
  14. package/lib/cjs/ModelState.js.map +1 -1
  15. package/lib/cjs/RealityDataSource.d.ts +3 -1
  16. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  17. package/lib/cjs/RealityDataSource.js +26 -0
  18. package/lib/cjs/RealityDataSource.js.map +1 -1
  19. package/lib/cjs/render/webgl/EdgeSettings.d.ts +2 -1
  20. package/lib/cjs/render/webgl/EdgeSettings.d.ts.map +1 -1
  21. package/lib/cjs/render/webgl/EdgeSettings.js +3 -6
  22. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  23. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +6 -5
  24. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  25. package/lib/cjs/render/webgl/ShaderBuilder.js +10 -5
  26. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  27. package/lib/cjs/render/webgl/StyleUniforms.d.ts +2 -0
  28. package/lib/cjs/render/webgl/StyleUniforms.d.ts.map +1 -1
  29. package/lib/cjs/render/webgl/StyleUniforms.js +5 -0
  30. package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
  31. package/lib/cjs/render/webgl/System.d.ts +1 -1
  32. package/lib/cjs/render/webgl/glsl/CopyStencil.js +1 -1
  33. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
  34. package/lib/cjs/render/webgl/glsl/Edge.d.ts +3 -1
  35. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  36. package/lib/cjs/render/webgl/glsl/Edge.js +32 -2
  37. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  38. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +5 -5
  39. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  40. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +1 -1
  41. package/lib/cjs/render/webgl/glsl/PointCloud.js +1 -1
  42. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  43. package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
  44. package/lib/cjs/render/webgl/glsl/Polyline.js +3 -1
  45. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  46. package/lib/cjs/render/webgl/glsl/RealityMesh.js +2 -2
  47. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  48. package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
  49. package/lib/cjs/render/webgl/glsl/Surface.js +1 -1
  50. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  51. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  52. package/lib/cjs/tile/OrbitGtTileTree.js +46 -16
  53. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  54. package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
  55. package/lib/esm/ContextRealityModelState.js +2 -7
  56. package/lib/esm/ContextRealityModelState.js.map +1 -1
  57. package/lib/esm/DisplayStyleState.d.ts +6 -6
  58. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  59. package/lib/esm/DisplayStyleState.js +2 -2
  60. package/lib/esm/DisplayStyleState.js.map +1 -1
  61. package/lib/esm/EmphasizeElements.d.ts +1 -1
  62. package/lib/esm/EmphasizeElements.js +1 -1
  63. package/lib/esm/EmphasizeElements.js.map +1 -1
  64. package/lib/esm/ModelState.d.ts +1 -1
  65. package/lib/esm/ModelState.d.ts.map +1 -1
  66. package/lib/esm/ModelState.js +3 -12
  67. package/lib/esm/ModelState.js.map +1 -1
  68. package/lib/esm/RealityDataSource.d.ts +3 -1
  69. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  70. package/lib/esm/RealityDataSource.js +26 -0
  71. package/lib/esm/RealityDataSource.js.map +1 -1
  72. package/lib/esm/render/webgl/EdgeSettings.d.ts +2 -1
  73. package/lib/esm/render/webgl/EdgeSettings.d.ts.map +1 -1
  74. package/lib/esm/render/webgl/EdgeSettings.js +3 -6
  75. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  76. package/lib/esm/render/webgl/ShaderBuilder.d.ts +6 -5
  77. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  78. package/lib/esm/render/webgl/ShaderBuilder.js +10 -5
  79. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  80. package/lib/esm/render/webgl/StyleUniforms.d.ts +2 -0
  81. package/lib/esm/render/webgl/StyleUniforms.d.ts.map +1 -1
  82. package/lib/esm/render/webgl/StyleUniforms.js +5 -0
  83. package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
  84. package/lib/esm/render/webgl/System.d.ts +1 -1
  85. package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -1
  86. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  87. package/lib/esm/render/webgl/glsl/Edge.d.ts +3 -1
  88. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  89. package/lib/esm/render/webgl/glsl/Edge.js +30 -1
  90. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  91. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +5 -5
  92. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  93. package/lib/esm/render/webgl/glsl/PlanarGrid.js +1 -1
  94. package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
  95. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  96. package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
  97. package/lib/esm/render/webgl/glsl/Polyline.js +3 -1
  98. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  99. package/lib/esm/render/webgl/glsl/RealityMesh.js +2 -2
  100. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  101. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  102. package/lib/esm/render/webgl/glsl/Surface.js +1 -1
  103. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  104. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  105. package/lib/esm/tile/OrbitGtTileTree.js +47 -17
  106. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  107. package/package.json +25 -25
@@ -1 +1 @@
1
- {"version":3,"file":"EmphasizeElements.js","sourceRoot":"","sources":["../../src/EmphasizeElements.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 Rendering\r\n */\r\n\r\nimport { Id64, Id64Arg, Id64Set } from \"@itwin/core-bentley\";\r\nimport { AppearanceOverrideProps, ColorDef, EmphasizeElementsProps, FeatureAppearance, FeatureOverrideType, RgbColor } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"./render/FeatureSymbology\";\r\nimport { FeatureOverrideProvider } from \"./FeatureOverrideProvider\";\r\nimport { Viewport } from \"./Viewport\";\r\n\r\n/** An implementation of [[FeatureOverrideProvider]] for emphasizing selected elements through simple color/transparency appearance overrides.\r\n * @public\r\n */\r\nexport class EmphasizeElements implements FeatureOverrideProvider {\r\n private _defaultAppearance?: FeatureAppearance;\r\n private _unanimatedAppearance?: FeatureAppearance;\r\n private _emphasizeIsolated?: Id64Set;\r\n private _overrideAppearance?: Map<number, Id64Set>;\r\n private readonly _emphasizedAppearance = FeatureAppearance.fromJSON({ emphasized: true });\r\n\r\n /** If true, all overridden and emphasized elements will also have the \"emphasis\" effect applied to them. This causes them to be hilited using the current [[Viewport.emphasisSettings]]. */\r\n public wantEmphasis = false;\r\n\r\n /** Establish active feature overrides to emphasize elements and apply color/transparency overrides.\r\n * @see [[Viewport.addFeatureOverrideProvider]]\r\n */\r\n public addFeatureOverrides(overrides: FeatureSymbology.Overrides, vp: Viewport): void {\r\n const emphasizedElements = this.getEmphasizedElements(vp);\r\n if (undefined !== emphasizedElements) {\r\n overrides.setDefaultOverrides(this._defaultAppearance!);\r\n const app = this.wantEmphasis ? this._emphasizedAppearance : FeatureAppearance.defaults;\r\n emphasizedElements.forEach((id) => { overrides.overrideElement(id, app); });\r\n }\r\n\r\n const overriddenElements = this.getOverriddenElements();\r\n if (undefined !== overriddenElements) {\r\n if (undefined !== this._defaultAppearance)\r\n overrides.setDefaultOverrides(this._defaultAppearance);\r\n for (const [key, ids] of overriddenElements) {\r\n const ovrApp = this.createAppearanceFromKey(key);\r\n ids.forEach((id) => { overrides.overrideElement(id, ovrApp); });\r\n }\r\n }\r\n\r\n if (this._unanimatedAppearance) {\r\n if (this._unanimatedAppearance.isFullyTransparent)\r\n overrides.neverDrawnAnimationNodes.add(0);\r\n else\r\n overrides.animationNodeOverrides.set(0, this._unanimatedAppearance);\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected createAppearanceFromKey(key: number): FeatureAppearance {\r\n let transparency: number | undefined;\r\n let rgb: RgbColor | undefined;\r\n\r\n if (key < 0) {\r\n transparency = Math.abs(key);\r\n } else {\r\n const color = ColorDef.fromJSON(key);\r\n rgb = RgbColor.fromColorDef(color);\r\n if (0 !== color.getAlpha()) // Fully transparent signifies to use color only...\r\n transparency = color.getTransparency() / 255;\r\n }\r\n\r\n const emphasized = this.wantEmphasis ? true : undefined;\r\n return FeatureAppearance.fromJSON({ rgb, transparency, emphasized });\r\n }\r\n\r\n /** Get override key from color and override type */\r\n public createOverrideKey(color: ColorDef, override: FeatureOverrideType): number | undefined {\r\n const colorValues = color.colors;\r\n switch (override) {\r\n case FeatureOverrideType.ColorAndAlpha:\r\n return 255 === colorValues.t ? undefined : color.tbgr; // Hiding elements should be done using neverDrawn, not transparency...\r\n case FeatureOverrideType.ColorOnly:\r\n return ColorDef.from(colorValues.r, colorValues.g, colorValues.b, 255).tbgr;\r\n case FeatureOverrideType.AlphaOnly:\r\n return -(colorValues.t / 255);\r\n }\r\n }\r\n\r\n /** Get color and override type for the given key. */\r\n public getOverrideFromKey(key: number): { overrideType: FeatureOverrideType, color: ColorDef } {\r\n let overrideType;\r\n let color;\r\n\r\n if (key < 0) {\r\n color = ColorDef.from(0, 0, 0, 255 * Math.abs(key));\r\n overrideType = FeatureOverrideType.AlphaOnly;\r\n } else {\r\n color = ColorDef.fromJSON(key);\r\n if (0 === color.getAlpha()) {\r\n color = color.withAlpha(255);\r\n overrideType = FeatureOverrideType.ColorOnly;\r\n } else {\r\n overrideType = FeatureOverrideType.ColorAndAlpha;\r\n }\r\n }\r\n\r\n return { overrideType, color };\r\n }\r\n\r\n /** Establish a default appearance to apply to elements without overrides. If changing the default appearance\r\n * without also calling overrideElements, an explicit refresh must be requested for the change to take effect.\r\n * @see [[Viewport.setFeatureOverrideProviderChanged]]\r\n */\r\n public get defaultAppearance(): FeatureAppearance | undefined { return this._defaultAppearance; }\r\n public set defaultAppearance(appearance: FeatureAppearance | undefined) { this._defaultAppearance = appearance; }\r\n\r\n /** Establish a default appearance to apply to elements that are not animated by the view's [RenderSchedule.Script]($common).\r\n * @note If this is the only change made to EmphasizeElements, you must call [[Viewport.setFeatureOverrideProviderChanged]] for\r\n * the change to take immediate effect.\r\n * @see [[createDefaultAppearance]] to create an appearance suitable for de-emphasizing the non-animated elements.\r\n */\r\n public get unanimatedAppearance(): FeatureAppearance | undefined {\r\n return this._unanimatedAppearance;\r\n }\r\n public set unanimatedAppearance(appearance: FeatureAppearance | undefined) {\r\n this._unanimatedAppearance = appearance;\r\n }\r\n\r\n /** Create default appearance to use for emphasizeElements when not supplied by caller. */\r\n public createDefaultAppearance(): FeatureAppearance {\r\n return FeatureAppearance.fromJSON({\r\n rgb: new RgbColor(0xe4, 0xe4, 0xe4),\r\n transparency: 0.8,\r\n nonLocatable: true,\r\n });\r\n }\r\n\r\n /** Get the IDs of the currently never drawn elements. */\r\n public getNeverDrawnElements(vp: Viewport): Id64Set | undefined {\r\n return (undefined !== vp.neverDrawn && 0 !== vp.neverDrawn.size ? vp.neverDrawn : undefined);\r\n }\r\n\r\n /** Get the IDs of the currently always drawn elements. */\r\n public getAlwaysDrawnElements(vp: Viewport): Id64Set | undefined {\r\n return (undefined !== vp.alwaysDrawn && 0 !== vp.alwaysDrawn.size ? vp.alwaysDrawn : undefined);\r\n }\r\n\r\n /** Get the IDs of the currently hidden elements. */\r\n public getHiddenElements(vp: Viewport): Id64Set | undefined {\r\n return this.getNeverDrawnElements(vp);\r\n }\r\n\r\n /** Get the IDs of the currently isolated elements. */\r\n public getIsolatedElements(vp: Viewport): Id64Set | undefined {\r\n return (vp.isAlwaysDrawnExclusive ? this.getAlwaysDrawnElements(vp) : undefined);\r\n }\r\n\r\n /** Get the IDs of the currently emphasized isolated elements. */\r\n public getEmphasizedIsolatedElements(): Id64Set | undefined {\r\n return (undefined !== this._defaultAppearance && undefined !== this._emphasizeIsolated && 0 !== this._emphasizeIsolated.size ? this._emphasizeIsolated : undefined);\r\n }\r\n\r\n /** Get the IDs of the currently emphasized elements. */\r\n public getEmphasizedElements(vp: Viewport): Id64Set | undefined {\r\n return (undefined !== this.getEmphasizedIsolatedElements() ? this._emphasizeIsolated : (undefined !== this._defaultAppearance && !vp.isAlwaysDrawnExclusive ? this.getAlwaysDrawnElements(vp) : undefined));\r\n }\r\n\r\n /** Get the map of current elements with color/transparency overrides. */\r\n public getOverriddenElements(): Map<number, Id64Set> | undefined {\r\n return (undefined !== this._overrideAppearance && 0 !== this._overrideAppearance.size ? this._overrideAppearance : undefined);\r\n }\r\n\r\n /** Get the IDs of current elements with the specified color/transparency override. */\r\n public getOverriddenElementsByKey(key: number): Id64Set | undefined {\r\n return (undefined !== this._overrideAppearance ? this._overrideAppearance.get(key) : undefined);\r\n }\r\n\r\n /** Clear never drawn elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearNeverDrawnElements(vp: Viewport): boolean {\r\n if (undefined === this.getNeverDrawnElements(vp))\r\n return false;\r\n vp.clearNeverDrawn();\r\n return true;\r\n }\r\n\r\n /** Clear always drawn elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearAlwaysDrawnElements(vp: Viewport): boolean {\r\n if (undefined === this.getAlwaysDrawnElements(vp))\r\n return false;\r\n vp.clearAlwaysDrawn();\r\n return true;\r\n }\r\n\r\n /** Clear hidden elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearHiddenElements(vp: Viewport): boolean {\r\n return this.clearNeverDrawnElements(vp);\r\n }\r\n\r\n /** Clear isolated elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearIsolatedElements(vp: Viewport): boolean {\r\n if (undefined === this.getIsolatedElements(vp))\r\n return false;\r\n if (this.clearEmphasizedIsolatedElements(vp, true))\r\n return true;\r\n return this.clearAlwaysDrawnElements(vp);\r\n }\r\n\r\n /** Clear emphasized elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearEmphasizedElements(vp: Viewport): boolean {\r\n if (undefined === this.getEmphasizedElements(vp))\r\n return false;\r\n\r\n if (this.clearEmphasizedIsolatedElements(vp, false))\r\n return true;\r\n\r\n if (!this.clearAlwaysDrawnElements(vp))\r\n return false;\r\n\r\n this._defaultAppearance = undefined;\r\n return true;\r\n }\r\n\r\n /** Clear emphasized isolated elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearEmphasizedIsolatedElements(vp: Viewport, setToAlwaysDrawn: boolean): boolean {\r\n const emphasizedIsolated = this.getEmphasizedIsolatedElements();\r\n this._emphasizeIsolated = undefined; // Always clear in case default appearance was unset...\r\n if (undefined === emphasizedIsolated)\r\n return false;\r\n\r\n if (setToAlwaysDrawn && this.setAlwaysDrawnElements(emphasizedIsolated, vp, false))\r\n return true;\r\n\r\n this._defaultAppearance = undefined;\r\n vp.setFeatureOverrideProviderChanged();\r\n return true;\r\n }\r\n\r\n /** Clear color/transparency overrides from elements. Removes all overrides when keyOrIds isn't supplied.\r\n * @param keyOrIds Specify a key value from [[EmphasizeElements.getOverriddenElements]] or [[EmphasizeElements.createOverrideKey]]\r\n * to remove a single color/transparency override for the corresponding elements or specify the IDs of elements to\r\n * remove any color/transparency override from.\r\n * @return false if nothing to clear.\r\n */\r\n public clearOverriddenElements(vp: Viewport, keyOrIds?: number | Id64Arg): boolean {\r\n if (undefined === this._overrideAppearance)\r\n return false;\r\n\r\n if (undefined !== keyOrIds) {\r\n if (typeof keyOrIds === \"number\") {\r\n if (!this._overrideAppearance.delete(keyOrIds))\r\n return false;\r\n } else {\r\n let changed = false;\r\n\r\n for (const [otherKey, otherIds] of this._overrideAppearance) {\r\n const oldSize = otherIds.size;\r\n for (const id of Id64.iterable(keyOrIds))\r\n otherIds.delete(id);\r\n\r\n if (oldSize !== otherIds.size)\r\n changed = true;\r\n\r\n if (0 === otherIds.size)\r\n this._overrideAppearance.delete(otherKey);\r\n }\r\n\r\n if (!changed)\r\n return false;\r\n }\r\n } else {\r\n this._overrideAppearance = undefined;\r\n }\r\n vp.setFeatureOverrideProviderChanged();\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n protected updateIdSet(ids: Id64Arg, replace: boolean, existingIds?: Id64Set): Id64Set | undefined {\r\n const newIds = new Set<string>();\r\n for (const id of Id64.iterable(ids))\r\n newIds.add(id);\r\n\r\n if (0 === newIds.size)\r\n return undefined;\r\n\r\n const oldSize = (!replace && undefined !== existingIds ? existingIds.size : 0);\r\n if (0 !== oldSize && undefined !== existingIds)\r\n for (const id of existingIds)\r\n newIds.add(id);\r\n\r\n if (oldSize === newIds.size)\r\n return undefined;\r\n\r\n return newIds;\r\n }\r\n\r\n /** Set the element IDs to be never drawn.\r\n * @param ids The IDs of the elements to never draw.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently hidden elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.neverDrawn]]\r\n * @internal\r\n */\r\n public setNeverDrawnElements(ids: Id64Arg, vp: Viewport, replace: boolean = true): boolean {\r\n const hiddenIds = this.updateIdSet(ids, replace, vp.neverDrawn);\r\n if (undefined === hiddenIds)\r\n return false;\r\n vp.setNeverDrawn(hiddenIds);\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to be always drawn.\r\n * @param ids The IDs of the elements to always draw.\r\n * @param vp The viewport.\r\n * @param exclusive If true, *only* the specified elements will be drawn.\r\n * @param replace true to replace currently always drawn elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n * @internal\r\n */\r\n public setAlwaysDrawnElements(ids: Id64Arg, vp: Viewport, exclusive: boolean = true, replace: boolean = true): boolean {\r\n const visibleIds = this.updateIdSet(ids, replace, vp.alwaysDrawn);\r\n if (undefined === visibleIds)\r\n return false;\r\n vp.setAlwaysDrawn(visibleIds, exclusive);\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to be never drawn.\r\n * @param ids The IDs of the elements to never draw.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently hidden elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.neverDrawn]]\r\n */\r\n public hideElements(ids: Id64Arg, vp: Viewport, replace: boolean = false): boolean {\r\n return this.setNeverDrawnElements(ids, vp, replace);\r\n }\r\n\r\n /** Set the currently selected elements to be never drawn.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently hidden elements (if any) or false to add to the existing set.\r\n * @param clearSelection true to clear current selection after setting appearance override, false to leave selected.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.neverDrawn]]\r\n */\r\n public hideSelectedElements(vp: Viewport, replace: boolean = false, clearSelection: boolean = true): boolean {\r\n const selection = vp.view.iModel.selectionSet;\r\n if (!selection.isActive || !this.hideElements(selection.elements, vp, replace))\r\n return false;\r\n if (clearSelection)\r\n selection.emptyAll();\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to be always drawn exclusively.\r\n * @param ids The IDs of the elements to always draw.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently isolated elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n */\r\n public isolateElements(ids: Id64Arg, vp: Viewport, replace: boolean = true): boolean {\r\n const wasEmphasized = (undefined !== this.getEmphasizedElements(vp));\r\n if (!this.setAlwaysDrawnElements(ids, vp, true, replace))\r\n return false;\r\n\r\n if (wasEmphasized)\r\n this._defaultAppearance = this._emphasizeIsolated = undefined; // Don't clear defaultAppearance unless it was established by emphasize...\r\n\r\n return true;\r\n }\r\n\r\n /** Set the currently selected elements to be always drawn exclusively.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently isolated elements (if any) or false to add to the existing set.\r\n * @param clearSelection true to clear current selection after setting appearance override, false to leave selected.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n */\r\n public isolateSelectedElements(vp: Viewport, replace: boolean = true, clearSelection: boolean = true): boolean {\r\n const selection = vp.view.iModel.selectionSet;\r\n if (!selection.isActive || !this.isolateElements(selection.elements, vp, replace))\r\n return false;\r\n if (clearSelection)\r\n selection.emptyAll();\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to be always drawn normally with all other elements in the view overridden to draw using a default appearance..\r\n * @param ids The IDs of the elements to always draw.\r\n * @param vp The viewport.\r\n * @param defaultAppearance Optional default appearance, uses non-locatable transparent grey if not specified.\r\n * @param replace true to replace currently overridden elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n */\r\n public emphasizeElements(ids: Id64Arg, vp: Viewport, defaultAppearance?: FeatureAppearance, replace: boolean = true): boolean {\r\n if (undefined !== this.getIsolatedElements(vp)) {\r\n const emphasizeIds = this.updateIdSet(ids, replace, this._emphasizeIsolated);\r\n if (undefined === emphasizeIds)\r\n return false;\r\n\r\n this._emphasizeIsolated = emphasizeIds;\r\n vp.setFeatureOverrideProviderChanged();\r\n } else {\r\n if (!this.setAlwaysDrawnElements(ids, vp, false, replace))\r\n return false;\r\n\r\n this._emphasizeIsolated = undefined;\r\n }\r\n\r\n this._defaultAppearance = (undefined === defaultAppearance ? this.createDefaultAppearance() : defaultAppearance);\r\n return true;\r\n }\r\n\r\n /** Set the currently selected elements to be always drawn normally with all other elements in the view overridden to draw using a default appearance.\r\n * @param vp The viewport.\r\n * @param defaultAppearance Optional default appearance, uses transparent grey if not specified.\r\n * @param replace true to replace currently overridden elements (if any) or false to add to the existing set.\r\n * @param clearSelection true to clear current selection after setting appearance override, false to leave selected.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n */\r\n public emphasizeSelectedElements(vp: Viewport, defaultAppearance?: FeatureAppearance, replace: boolean = true, clearSelection: boolean = true): boolean {\r\n const selection = vp.view.iModel.selectionSet;\r\n if (!selection.isActive || !this.emphasizeElements(selection.elements, vp, defaultAppearance, replace))\r\n return false;\r\n\r\n if (clearSelection)\r\n selection.emptyAll();\r\n\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to display with a color/transparency override.\r\n * @param ids The IDs of the elements.\r\n * @param vp The viewport.\r\n * @param color ColorDef to specify override rgb and alpha.\r\n * @param override Whether to use color and alpha, only color, or only alpha from the supplied ColorDef.\r\n * @param replace true to replace currently overridden elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.addFeatureOverrideProvider]]\r\n */\r\n public overrideElements(ids: Id64Arg, vp: Viewport, color: ColorDef, override: FeatureOverrideType = FeatureOverrideType.ColorOnly, replace: boolean = false): boolean {\r\n const ovrKey = this.createOverrideKey(color, override);\r\n if (undefined === ovrKey)\r\n return false;\r\n\r\n const overrideIds = new Set<string>();\r\n for (const id of Id64.iterable(ids))\r\n overrideIds.add(id);\r\n\r\n if (0 === overrideIds.size)\r\n return false;\r\n\r\n const existingIds = (!replace ? this.getOverriddenElementsByKey(ovrKey) : undefined);\r\n const oldSize = (undefined !== existingIds ? existingIds.size : 0);\r\n if (0 !== oldSize && undefined !== existingIds)\r\n for (const id of existingIds)\r\n overrideIds.add(id);\r\n\r\n if (oldSize === overrideIds.size)\r\n return false;\r\n\r\n if (undefined === this._overrideAppearance) {\r\n this._overrideAppearance = new Map<number, Id64Set>();\r\n } else {\r\n for (const [key, otherIds] of this._overrideAppearance) {\r\n if (key === ovrKey) // Make sure these ids are unique to this color/transparency key...\r\n continue;\r\n\r\n for (const id of Id64.iterable(ids))\r\n otherIds.delete(id);\r\n\r\n if (0 !== otherIds.size)\r\n continue;\r\n\r\n this._overrideAppearance.delete(key);\r\n }\r\n }\r\n\r\n this._overrideAppearance.set(ovrKey, overrideIds);\r\n vp.setFeatureOverrideProviderChanged();\r\n\r\n return true;\r\n }\r\n\r\n /** Set the currently selected elements to display with a color/transparency override.\r\n * @param vp The viewport.\r\n * @param color ColorDef to specify override rgb and alpha.\r\n * @param override Whether to use color and alpha, only color, or only alpha from the supplied ColorDef.\r\n * @param replace true to replace currently overridden elements (if any) or false to add to the existing set.\r\n * @param clearSelection true to clear current selection after setting appearance override, false to leave selected.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.addFeatureOverrideProvider]]\r\n */\r\n public overrideSelectedElements(vp: Viewport, color: ColorDef, override: FeatureOverrideType = FeatureOverrideType.ColorOnly, replace: boolean = false, clearSelection: boolean = true): boolean {\r\n const selection = vp.view.iModel.selectionSet;\r\n if (!selection.isActive || !this.overrideElements(selection.elements, vp, color, override, replace))\r\n return false;\r\n if (clearSelection)\r\n selection.emptyAll();\r\n return true;\r\n }\r\n\r\n /** @return true if provider is currently overriding the display of any elements. */\r\n public isActive(vp: Viewport): boolean { return (undefined !== this.getNeverDrawnElements(vp) || undefined !== this.getAlwaysDrawnElements(vp) || undefined !== this.getOverriddenElements()); }\r\n\r\n /** Serialize to JSON representation.\r\n * @see [[EmphasizeElements.fromJSON]]\r\n */\r\n public toJSON(vp: Viewport): EmphasizeElementsProps {\r\n const props: EmphasizeElementsProps = {};\r\n const neverDrawn = this.getNeverDrawnElements(vp);\r\n if (undefined !== neverDrawn)\r\n props.neverDrawn = [...neverDrawn];\r\n\r\n const alwaysDrawn = this.getAlwaysDrawnElements(vp);\r\n if (undefined !== alwaysDrawn)\r\n props.alwaysDrawn = [...alwaysDrawn];\r\n\r\n if (vp.isAlwaysDrawnExclusive)\r\n props.isAlwaysDrawnExclusive = true; // isolate\r\n\r\n const alwaysDrawnExclusiveEmphasized = this.getEmphasizedIsolatedElements();\r\n if (undefined !== alwaysDrawnExclusiveEmphasized)\r\n props.alwaysDrawnExclusiveEmphasized = [...alwaysDrawnExclusiveEmphasized];\r\n\r\n if (undefined !== this.defaultAppearance)\r\n props.defaultAppearance = this.defaultAppearance; // emphasize (or specifically set for override)\r\n\r\n if (this.unanimatedAppearance)\r\n props.unanimatedAppearance = this.unanimatedAppearance;\r\n\r\n const overriddenElements = this.getOverriddenElements();\r\n if (undefined !== overriddenElements) {\r\n const appearanceOverride: AppearanceOverrideProps[] = [];\r\n for (const [key, ovrIds] of overriddenElements) {\r\n const { color, overrideType } = { ...this.getOverrideFromKey(key) };\r\n const ids = [...ovrIds];\r\n appearanceOverride.push({ overrideType, color: color.toJSON(), ids });\r\n }\r\n\r\n props.appearanceOverride = appearanceOverride;\r\n }\r\n\r\n if (this.wantEmphasis)\r\n props.wantEmphasis = true;\r\n\r\n return props;\r\n }\r\n\r\n /** Initialize from JSON representation.\r\n * @see [[EmphasizeElements.toJSON]]\r\n */\r\n public fromJSON(props: EmphasizeElementsProps, vp: Viewport): boolean {\r\n let changed = false;\r\n if (undefined !== props.neverDrawn && this.setNeverDrawnElements(new Set<string>(props.neverDrawn), vp, true))\r\n changed = true;\r\n\r\n if (undefined !== props.alwaysDrawn && this.setAlwaysDrawnElements(new Set<string>(props.alwaysDrawn), vp, undefined !== props.isAlwaysDrawnExclusive && props.isAlwaysDrawnExclusive))\r\n changed = true;\r\n\r\n if (undefined !== props.alwaysDrawnExclusiveEmphasized)\r\n this._emphasizeIsolated = new Set<string>(props.alwaysDrawnExclusiveEmphasized); // changed status determined by setAlwaysDrawnElements...\r\n\r\n if (undefined !== props.defaultAppearance)\r\n this.defaultAppearance = FeatureAppearance.fromJSON(props.defaultAppearance); // changed status determined by setAlwaysDrawnElements or overrideElements...\r\n\r\n if (props.unanimatedAppearance)\r\n this.unanimatedAppearance = FeatureAppearance.fromJSON(props.unanimatedAppearance);\r\n\r\n if (undefined !== props.appearanceOverride) {\r\n for (const ovrApp of props.appearanceOverride) {\r\n if (undefined === ovrApp.ids)\r\n continue;\r\n\r\n if (this.overrideElements(new Set<string>(ovrApp.ids), vp, ColorDef.fromJSON(ovrApp.color), ovrApp.overrideType, true))\r\n changed = true;\r\n }\r\n }\r\n\r\n const wantEmphasis = true === props.wantEmphasis;\r\n if (wantEmphasis !== this.wantEmphasis) {\r\n this.wantEmphasis = wantEmphasis;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /** Return the EmphasizeElements provider currently registered with the specified Viewport, if one is already registered. */\r\n public static get(vp: Viewport): EmphasizeElements | undefined {\r\n return vp.findFeatureOverrideProviderOfType<EmphasizeElements>(EmphasizeElements);\r\n }\r\n\r\n /** Return the EmphasizeElements provider currently registered with the specified Viewport, or register a new one and return it. */\r\n public static getOrCreate(vp: Viewport): EmphasizeElements {\r\n let provider = this.get(vp);\r\n if (!provider) {\r\n provider = new EmphasizeElements();\r\n vp.addFeatureOverrideProvider(provider);\r\n }\r\n\r\n return provider;\r\n }\r\n\r\n /** Drop the EmphasizeElements provider currently registered with the specified Viewport, if any is registered. */\r\n public static clear(vp: Viewport, inactiveOnly: boolean = false) {\r\n const provider = this.get(vp);\r\n\r\n if (undefined === provider || (inactiveOnly && provider.isActive))\r\n return;\r\n\r\n vp.clearNeverDrawn();\r\n vp.clearAlwaysDrawn();\r\n vp.dropFeatureOverrideProvider(provider);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"EmphasizeElements.js","sourceRoot":"","sources":["../../src/EmphasizeElements.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 Rendering\r\n */\r\n\r\nimport { Id64, Id64Arg, Id64Set } from \"@itwin/core-bentley\";\r\nimport { AppearanceOverrideProps, ColorDef, EmphasizeElementsProps, FeatureAppearance, FeatureOverrideType, RgbColor } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"./render/FeatureSymbology\";\r\nimport { FeatureOverrideProvider } from \"./FeatureOverrideProvider\";\r\nimport { Viewport } from \"./Viewport\";\r\n\r\n/** An implementation of [[FeatureOverrideProvider]] for emphasizing selected elements through simple color/transparency appearance overrides.\r\n * @public\r\n */\r\nexport class EmphasizeElements implements FeatureOverrideProvider {\r\n private _defaultAppearance?: FeatureAppearance;\r\n private _unanimatedAppearance?: FeatureAppearance;\r\n private _emphasizeIsolated?: Id64Set;\r\n private _overrideAppearance?: Map<number, Id64Set>;\r\n private readonly _emphasizedAppearance = FeatureAppearance.fromJSON({ emphasized: true });\r\n\r\n /** If true, all overridden and emphasized elements will also have the \"emphasis\" effect applied to them. This causes them to be hilited using the current [[Viewport.emphasisSettings]]. */\r\n public wantEmphasis = false;\r\n\r\n /** Establish active feature overrides to emphasize elements and apply color/transparency overrides.\r\n * @see [[Viewport.addFeatureOverrideProvider]]\r\n */\r\n public addFeatureOverrides(overrides: FeatureSymbology.Overrides, vp: Viewport): void {\r\n const emphasizedElements = this.getEmphasizedElements(vp);\r\n if (undefined !== emphasizedElements) {\r\n overrides.setDefaultOverrides(this._defaultAppearance!);\r\n const app = this.wantEmphasis ? this._emphasizedAppearance : FeatureAppearance.defaults;\r\n emphasizedElements.forEach((id) => { overrides.overrideElement(id, app); });\r\n }\r\n\r\n const overriddenElements = this.getOverriddenElements();\r\n if (undefined !== overriddenElements) {\r\n if (undefined !== this._defaultAppearance)\r\n overrides.setDefaultOverrides(this._defaultAppearance);\r\n for (const [key, ids] of overriddenElements) {\r\n const ovrApp = this.createAppearanceFromKey(key);\r\n ids.forEach((id) => { overrides.overrideElement(id, ovrApp); });\r\n }\r\n }\r\n\r\n if (this._unanimatedAppearance) {\r\n if (this._unanimatedAppearance.isFullyTransparent)\r\n overrides.neverDrawnAnimationNodes.add(0);\r\n else\r\n overrides.animationNodeOverrides.set(0, this._unanimatedAppearance);\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected createAppearanceFromKey(key: number): FeatureAppearance {\r\n let transparency: number | undefined;\r\n let rgb: RgbColor | undefined;\r\n\r\n if (key < 0) {\r\n transparency = Math.abs(key);\r\n } else {\r\n const color = ColorDef.fromJSON(key);\r\n rgb = RgbColor.fromColorDef(color);\r\n if (0 !== color.getAlpha()) // Fully transparent signifies to use color only...\r\n transparency = color.getTransparency() / 255;\r\n }\r\n\r\n const emphasized = this.wantEmphasis ? true : undefined;\r\n return FeatureAppearance.fromJSON({ rgb, transparency, emphasized });\r\n }\r\n\r\n /** Get override key from color and override type */\r\n public createOverrideKey(color: ColorDef, override: FeatureOverrideType): number | undefined {\r\n const colorValues = color.colors;\r\n switch (override) {\r\n case FeatureOverrideType.ColorAndAlpha:\r\n return 255 === colorValues.t ? undefined : color.tbgr; // Hiding elements should be done using neverDrawn, not transparency...\r\n case FeatureOverrideType.ColorOnly:\r\n return ColorDef.from(colorValues.r, colorValues.g, colorValues.b, 255).tbgr;\r\n case FeatureOverrideType.AlphaOnly:\r\n return -(colorValues.t / 255);\r\n }\r\n }\r\n\r\n /** Get color and override type for the given key. */\r\n public getOverrideFromKey(key: number): { overrideType: FeatureOverrideType, color: ColorDef } {\r\n let overrideType;\r\n let color;\r\n\r\n if (key < 0) {\r\n color = ColorDef.from(0, 0, 0, 255 * Math.abs(key));\r\n overrideType = FeatureOverrideType.AlphaOnly;\r\n } else {\r\n color = ColorDef.fromJSON(key);\r\n if (0 === color.getAlpha()) {\r\n color = color.withAlpha(255);\r\n overrideType = FeatureOverrideType.ColorOnly;\r\n } else {\r\n overrideType = FeatureOverrideType.ColorAndAlpha;\r\n }\r\n }\r\n\r\n return { overrideType, color };\r\n }\r\n\r\n /** Establish a default appearance to apply to elements without overrides. If changing the default appearance\r\n * without also calling overrideElements, an explicit refresh must be requested for the change to take effect.\r\n * @see [[Viewport.setFeatureOverrideProviderChanged]]\r\n */\r\n public get defaultAppearance(): FeatureAppearance | undefined { return this._defaultAppearance; }\r\n public set defaultAppearance(appearance: FeatureAppearance | undefined) { this._defaultAppearance = appearance; }\r\n\r\n /** Establish a default appearance to apply to elements that are not animated by the view's [RenderSchedule.Script]($common).\r\n * @note If this is the only change made to EmphasizeElements, you must call [[Viewport.setFeatureOverrideProviderChanged]] for\r\n * the change to take immediate effect.\r\n * @see [[createDefaultAppearance]] to create an appearance suitable for de-emphasizing the non-animated elements.\r\n */\r\n public get unanimatedAppearance(): FeatureAppearance | undefined {\r\n return this._unanimatedAppearance;\r\n }\r\n public set unanimatedAppearance(appearance: FeatureAppearance | undefined) {\r\n this._unanimatedAppearance = appearance;\r\n }\r\n\r\n /** Create default appearance to use for emphasizeElements when not supplied by caller. */\r\n public createDefaultAppearance(): FeatureAppearance {\r\n return FeatureAppearance.fromJSON({\r\n rgb: new RgbColor(0xe4, 0xe4, 0xe4),\r\n transparency: 0.8,\r\n nonLocatable: true,\r\n });\r\n }\r\n\r\n /** Get the IDs of the currently never drawn elements. */\r\n public getNeverDrawnElements(vp: Viewport): Id64Set | undefined {\r\n return (undefined !== vp.neverDrawn && 0 !== vp.neverDrawn.size ? vp.neverDrawn : undefined);\r\n }\r\n\r\n /** Get the IDs of the currently always drawn elements. */\r\n public getAlwaysDrawnElements(vp: Viewport): Id64Set | undefined {\r\n return (undefined !== vp.alwaysDrawn && 0 !== vp.alwaysDrawn.size ? vp.alwaysDrawn : undefined);\r\n }\r\n\r\n /** Get the IDs of the currently hidden elements. */\r\n public getHiddenElements(vp: Viewport): Id64Set | undefined {\r\n return this.getNeverDrawnElements(vp);\r\n }\r\n\r\n /** Get the IDs of the currently isolated elements. */\r\n public getIsolatedElements(vp: Viewport): Id64Set | undefined {\r\n return (vp.isAlwaysDrawnExclusive ? this.getAlwaysDrawnElements(vp) : undefined);\r\n }\r\n\r\n /** Get the IDs of the currently emphasized isolated elements. */\r\n public getEmphasizedIsolatedElements(): Id64Set | undefined {\r\n return (undefined !== this._defaultAppearance && undefined !== this._emphasizeIsolated && 0 !== this._emphasizeIsolated.size ? this._emphasizeIsolated : undefined);\r\n }\r\n\r\n /** Get the IDs of the currently emphasized elements. */\r\n public getEmphasizedElements(vp: Viewport): Id64Set | undefined {\r\n return (undefined !== this.getEmphasizedIsolatedElements() ? this._emphasizeIsolated : (undefined !== this._defaultAppearance && !vp.isAlwaysDrawnExclusive ? this.getAlwaysDrawnElements(vp) : undefined));\r\n }\r\n\r\n /** Get the map of current elements with color/transparency overrides. */\r\n public getOverriddenElements(): Map<number, Id64Set> | undefined {\r\n return (undefined !== this._overrideAppearance && 0 !== this._overrideAppearance.size ? this._overrideAppearance : undefined);\r\n }\r\n\r\n /** Get the IDs of current elements with the specified color/transparency override. */\r\n public getOverriddenElementsByKey(key: number): Id64Set | undefined {\r\n return (undefined !== this._overrideAppearance ? this._overrideAppearance.get(key) : undefined);\r\n }\r\n\r\n /** Clear never drawn elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearNeverDrawnElements(vp: Viewport): boolean {\r\n if (undefined === this.getNeverDrawnElements(vp))\r\n return false;\r\n vp.clearNeverDrawn();\r\n return true;\r\n }\r\n\r\n /** Clear always drawn elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearAlwaysDrawnElements(vp: Viewport): boolean {\r\n if (undefined === this.getAlwaysDrawnElements(vp))\r\n return false;\r\n vp.clearAlwaysDrawn();\r\n return true;\r\n }\r\n\r\n /** Clear hidden elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearHiddenElements(vp: Viewport): boolean {\r\n return this.clearNeverDrawnElements(vp);\r\n }\r\n\r\n /** Clear isolated elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearIsolatedElements(vp: Viewport): boolean {\r\n if (undefined === this.getIsolatedElements(vp))\r\n return false;\r\n if (this.clearEmphasizedIsolatedElements(vp, true))\r\n return true;\r\n return this.clearAlwaysDrawnElements(vp);\r\n }\r\n\r\n /** Clear emphasized elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearEmphasizedElements(vp: Viewport): boolean {\r\n if (undefined === this.getEmphasizedElements(vp))\r\n return false;\r\n\r\n if (this.clearEmphasizedIsolatedElements(vp, false))\r\n return true;\r\n\r\n if (!this.clearAlwaysDrawnElements(vp))\r\n return false;\r\n\r\n this._defaultAppearance = undefined;\r\n return true;\r\n }\r\n\r\n /** Clear emphasized isolated elements.\r\n * @return false if nothing to clear.\r\n */\r\n public clearEmphasizedIsolatedElements(vp: Viewport, setToAlwaysDrawn: boolean): boolean {\r\n const emphasizedIsolated = this.getEmphasizedIsolatedElements();\r\n this._emphasizeIsolated = undefined; // Always clear in case default appearance was unset...\r\n if (undefined === emphasizedIsolated)\r\n return false;\r\n\r\n if (setToAlwaysDrawn && this.setAlwaysDrawnElements(emphasizedIsolated, vp, false))\r\n return true;\r\n\r\n this._defaultAppearance = undefined;\r\n vp.setFeatureOverrideProviderChanged();\r\n return true;\r\n }\r\n\r\n /** Clear color/transparency overrides from elements. Removes all overrides when keyOrIds isn't supplied.\r\n * @param keyOrIds Specify a key value from [[EmphasizeElements.getOverriddenElements]] or [[EmphasizeElements.createOverrideKey]]\r\n * to remove a single color/transparency override for the corresponding elements or specify the IDs of elements to\r\n * remove any color/transparency override from.\r\n * @return false if nothing to clear.\r\n */\r\n public clearOverriddenElements(vp: Viewport, keyOrIds?: number | Id64Arg): boolean {\r\n if (undefined === this._overrideAppearance)\r\n return false;\r\n\r\n if (undefined !== keyOrIds) {\r\n if (typeof keyOrIds === \"number\") {\r\n if (!this._overrideAppearance.delete(keyOrIds))\r\n return false;\r\n } else {\r\n let changed = false;\r\n\r\n for (const [otherKey, otherIds] of this._overrideAppearance) {\r\n const oldSize = otherIds.size;\r\n for (const id of Id64.iterable(keyOrIds))\r\n otherIds.delete(id);\r\n\r\n if (oldSize !== otherIds.size)\r\n changed = true;\r\n\r\n if (0 === otherIds.size)\r\n this._overrideAppearance.delete(otherKey);\r\n }\r\n\r\n if (!changed)\r\n return false;\r\n }\r\n } else {\r\n this._overrideAppearance = undefined;\r\n }\r\n vp.setFeatureOverrideProviderChanged();\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n protected updateIdSet(ids: Id64Arg, replace: boolean, existingIds?: Id64Set): Id64Set | undefined {\r\n const newIds = new Set<string>();\r\n for (const id of Id64.iterable(ids))\r\n newIds.add(id);\r\n\r\n if (0 === newIds.size)\r\n return undefined;\r\n\r\n const oldSize = (!replace && undefined !== existingIds ? existingIds.size : 0);\r\n if (0 !== oldSize && undefined !== existingIds)\r\n for (const id of existingIds)\r\n newIds.add(id);\r\n\r\n if (oldSize === newIds.size)\r\n return undefined;\r\n\r\n return newIds;\r\n }\r\n\r\n /** Set the element IDs to be never drawn.\r\n * @param ids The IDs of the elements to never draw.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently hidden elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.neverDrawn]]\r\n * @internal\r\n */\r\n public setNeverDrawnElements(ids: Id64Arg, vp: Viewport, replace: boolean = true): boolean {\r\n const hiddenIds = this.updateIdSet(ids, replace, vp.neverDrawn);\r\n if (undefined === hiddenIds)\r\n return false;\r\n vp.setNeverDrawn(hiddenIds);\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to be always drawn.\r\n * @param ids The IDs of the elements to always draw.\r\n * @param vp The viewport.\r\n * @param exclusive If true, *only* the specified elements will be drawn.\r\n * @param replace true to replace currently always drawn elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n * @internal\r\n */\r\n public setAlwaysDrawnElements(ids: Id64Arg, vp: Viewport, exclusive: boolean = true, replace: boolean = true): boolean {\r\n const visibleIds = this.updateIdSet(ids, replace, vp.alwaysDrawn);\r\n if (undefined === visibleIds)\r\n return false;\r\n vp.setAlwaysDrawn(visibleIds, exclusive);\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to be never drawn.\r\n * @param ids The IDs of the elements to never draw.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently hidden elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.neverDrawn]]\r\n */\r\n public hideElements(ids: Id64Arg, vp: Viewport, replace: boolean = false): boolean {\r\n return this.setNeverDrawnElements(ids, vp, replace);\r\n }\r\n\r\n /** Set the currently selected elements to be never drawn.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently hidden elements (if any) or false to add to the existing set.\r\n * @param clearSelection true to clear current selection after setting appearance override, false to leave selected.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.neverDrawn]]\r\n */\r\n public hideSelectedElements(vp: Viewport, replace: boolean = false, clearSelection: boolean = true): boolean {\r\n const selection = vp.view.iModel.selectionSet;\r\n if (!selection.isActive || !this.hideElements(selection.elements, vp, replace))\r\n return false;\r\n if (clearSelection)\r\n selection.emptyAll();\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to be always drawn exclusively.\r\n * @param ids The IDs of the elements to always draw.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently isolated elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n */\r\n public isolateElements(ids: Id64Arg, vp: Viewport, replace: boolean = true): boolean {\r\n const wasEmphasized = (undefined !== this.getEmphasizedElements(vp));\r\n if (!this.setAlwaysDrawnElements(ids, vp, true, replace))\r\n return false;\r\n\r\n if (wasEmphasized)\r\n this._defaultAppearance = this._emphasizeIsolated = undefined; // Don't clear defaultAppearance unless it was established by emphasize...\r\n\r\n return true;\r\n }\r\n\r\n /** Set the currently selected elements to be always drawn exclusively.\r\n * @param vp The viewport.\r\n * @param replace true to replace currently isolated elements (if any) or false to add to the existing set.\r\n * @param clearSelection true to clear current selection after setting appearance override, false to leave selected.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n */\r\n public isolateSelectedElements(vp: Viewport, replace: boolean = true, clearSelection: boolean = true): boolean {\r\n const selection = vp.view.iModel.selectionSet;\r\n if (!selection.isActive || !this.isolateElements(selection.elements, vp, replace))\r\n return false;\r\n if (clearSelection)\r\n selection.emptyAll();\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to be always drawn normally with all other elements in the view overridden to draw using a default appearance.\r\n * @param ids The IDs of the elements to always draw.\r\n * @param vp The viewport.\r\n * @param defaultAppearance Optional default appearance, uses non-locatable transparent grey if not specified.\r\n * @param replace true to replace currently overridden elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n */\r\n public emphasizeElements(ids: Id64Arg, vp: Viewport, defaultAppearance?: FeatureAppearance, replace: boolean = true): boolean {\r\n if (undefined !== this.getIsolatedElements(vp)) {\r\n const emphasizeIds = this.updateIdSet(ids, replace, this._emphasizeIsolated);\r\n if (undefined === emphasizeIds)\r\n return false;\r\n\r\n this._emphasizeIsolated = emphasizeIds;\r\n vp.setFeatureOverrideProviderChanged();\r\n } else {\r\n if (!this.setAlwaysDrawnElements(ids, vp, false, replace))\r\n return false;\r\n\r\n this._emphasizeIsolated = undefined;\r\n }\r\n\r\n this._defaultAppearance = (undefined === defaultAppearance ? this.createDefaultAppearance() : defaultAppearance);\r\n return true;\r\n }\r\n\r\n /** Set the currently selected elements to be always drawn normally with all other elements in the view overridden to draw using a default appearance.\r\n * @param vp The viewport.\r\n * @param defaultAppearance Optional default appearance, uses transparent grey if not specified.\r\n * @param replace true to replace currently overridden elements (if any) or false to add to the existing set.\r\n * @param clearSelection true to clear current selection after setting appearance override, false to leave selected.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.isAlwaysDrawnExclusive]]\r\n */\r\n public emphasizeSelectedElements(vp: Viewport, defaultAppearance?: FeatureAppearance, replace: boolean = true, clearSelection: boolean = true): boolean {\r\n const selection = vp.view.iModel.selectionSet;\r\n if (!selection.isActive || !this.emphasizeElements(selection.elements, vp, defaultAppearance, replace))\r\n return false;\r\n\r\n if (clearSelection)\r\n selection.emptyAll();\r\n\r\n return true;\r\n }\r\n\r\n /** Set the element IDs to display with a color/transparency override.\r\n * @param ids The IDs of the elements.\r\n * @param vp The viewport.\r\n * @param color ColorDef to specify override rgb and alpha.\r\n * @param override Whether to use color and alpha, only color, or only alpha from the supplied ColorDef.\r\n * @param replace true to replace currently overridden elements (if any) or false to add to the existing set.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.addFeatureOverrideProvider]]\r\n */\r\n public overrideElements(ids: Id64Arg, vp: Viewport, color: ColorDef, override: FeatureOverrideType = FeatureOverrideType.ColorOnly, replace: boolean = false): boolean {\r\n const ovrKey = this.createOverrideKey(color, override);\r\n if (undefined === ovrKey)\r\n return false;\r\n\r\n const overrideIds = new Set<string>();\r\n for (const id of Id64.iterable(ids))\r\n overrideIds.add(id);\r\n\r\n if (0 === overrideIds.size)\r\n return false;\r\n\r\n const existingIds = (!replace ? this.getOverriddenElementsByKey(ovrKey) : undefined);\r\n const oldSize = (undefined !== existingIds ? existingIds.size : 0);\r\n if (0 !== oldSize && undefined !== existingIds)\r\n for (const id of existingIds)\r\n overrideIds.add(id);\r\n\r\n if (oldSize === overrideIds.size)\r\n return false;\r\n\r\n if (undefined === this._overrideAppearance) {\r\n this._overrideAppearance = new Map<number, Id64Set>();\r\n } else {\r\n for (const [key, otherIds] of this._overrideAppearance) {\r\n if (key === ovrKey) // Make sure these ids are unique to this color/transparency key...\r\n continue;\r\n\r\n for (const id of Id64.iterable(ids))\r\n otherIds.delete(id);\r\n\r\n if (0 !== otherIds.size)\r\n continue;\r\n\r\n this._overrideAppearance.delete(key);\r\n }\r\n }\r\n\r\n this._overrideAppearance.set(ovrKey, overrideIds);\r\n vp.setFeatureOverrideProviderChanged();\r\n\r\n return true;\r\n }\r\n\r\n /** Set the currently selected elements to display with a color/transparency override.\r\n * @param vp The viewport.\r\n * @param color ColorDef to specify override rgb and alpha.\r\n * @param override Whether to use color and alpha, only color, or only alpha from the supplied ColorDef.\r\n * @param replace true to replace currently overridden elements (if any) or false to add to the existing set.\r\n * @param clearSelection true to clear current selection after setting appearance override, false to leave selected.\r\n * @return true if overrides were changed.\r\n * @see [[Viewport.addFeatureOverrideProvider]]\r\n */\r\n public overrideSelectedElements(vp: Viewport, color: ColorDef, override: FeatureOverrideType = FeatureOverrideType.ColorOnly, replace: boolean = false, clearSelection: boolean = true): boolean {\r\n const selection = vp.view.iModel.selectionSet;\r\n if (!selection.isActive || !this.overrideElements(selection.elements, vp, color, override, replace))\r\n return false;\r\n if (clearSelection)\r\n selection.emptyAll();\r\n return true;\r\n }\r\n\r\n /** @return true if provider is currently overriding the display of any elements. */\r\n public isActive(vp: Viewport): boolean { return (undefined !== this.getNeverDrawnElements(vp) || undefined !== this.getAlwaysDrawnElements(vp) || undefined !== this.getOverriddenElements()); }\r\n\r\n /** Serialize to JSON representation.\r\n * @see [[EmphasizeElements.fromJSON]]\r\n */\r\n public toJSON(vp: Viewport): EmphasizeElementsProps {\r\n const props: EmphasizeElementsProps = {};\r\n const neverDrawn = this.getNeverDrawnElements(vp);\r\n if (undefined !== neverDrawn)\r\n props.neverDrawn = [...neverDrawn];\r\n\r\n const alwaysDrawn = this.getAlwaysDrawnElements(vp);\r\n if (undefined !== alwaysDrawn)\r\n props.alwaysDrawn = [...alwaysDrawn];\r\n\r\n if (vp.isAlwaysDrawnExclusive)\r\n props.isAlwaysDrawnExclusive = true; // isolate\r\n\r\n const alwaysDrawnExclusiveEmphasized = this.getEmphasizedIsolatedElements();\r\n if (undefined !== alwaysDrawnExclusiveEmphasized)\r\n props.alwaysDrawnExclusiveEmphasized = [...alwaysDrawnExclusiveEmphasized];\r\n\r\n if (undefined !== this.defaultAppearance)\r\n props.defaultAppearance = this.defaultAppearance; // emphasize (or specifically set for override)\r\n\r\n if (this.unanimatedAppearance)\r\n props.unanimatedAppearance = this.unanimatedAppearance;\r\n\r\n const overriddenElements = this.getOverriddenElements();\r\n if (undefined !== overriddenElements) {\r\n const appearanceOverride: AppearanceOverrideProps[] = [];\r\n for (const [key, ovrIds] of overriddenElements) {\r\n const { color, overrideType } = { ...this.getOverrideFromKey(key) };\r\n const ids = [...ovrIds];\r\n appearanceOverride.push({ overrideType, color: color.toJSON(), ids });\r\n }\r\n\r\n props.appearanceOverride = appearanceOverride;\r\n }\r\n\r\n if (this.wantEmphasis)\r\n props.wantEmphasis = true;\r\n\r\n return props;\r\n }\r\n\r\n /** Initialize from JSON representation.\r\n * @see [[EmphasizeElements.toJSON]]\r\n */\r\n public fromJSON(props: EmphasizeElementsProps, vp: Viewport): boolean {\r\n let changed = false;\r\n if (undefined !== props.neverDrawn && this.setNeverDrawnElements(new Set<string>(props.neverDrawn), vp, true))\r\n changed = true;\r\n\r\n if (undefined !== props.alwaysDrawn && this.setAlwaysDrawnElements(new Set<string>(props.alwaysDrawn), vp, undefined !== props.isAlwaysDrawnExclusive && props.isAlwaysDrawnExclusive))\r\n changed = true;\r\n\r\n if (undefined !== props.alwaysDrawnExclusiveEmphasized)\r\n this._emphasizeIsolated = new Set<string>(props.alwaysDrawnExclusiveEmphasized); // changed status determined by setAlwaysDrawnElements...\r\n\r\n if (undefined !== props.defaultAppearance)\r\n this.defaultAppearance = FeatureAppearance.fromJSON(props.defaultAppearance); // changed status determined by setAlwaysDrawnElements or overrideElements...\r\n\r\n if (props.unanimatedAppearance)\r\n this.unanimatedAppearance = FeatureAppearance.fromJSON(props.unanimatedAppearance);\r\n\r\n if (undefined !== props.appearanceOverride) {\r\n for (const ovrApp of props.appearanceOverride) {\r\n if (undefined === ovrApp.ids)\r\n continue;\r\n\r\n if (this.overrideElements(new Set<string>(ovrApp.ids), vp, ColorDef.fromJSON(ovrApp.color), ovrApp.overrideType, true))\r\n changed = true;\r\n }\r\n }\r\n\r\n const wantEmphasis = true === props.wantEmphasis;\r\n if (wantEmphasis !== this.wantEmphasis) {\r\n this.wantEmphasis = wantEmphasis;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /** Return the EmphasizeElements provider currently registered with the specified Viewport, if one is already registered. */\r\n public static get(vp: Viewport): EmphasizeElements | undefined {\r\n return vp.findFeatureOverrideProviderOfType<EmphasizeElements>(EmphasizeElements);\r\n }\r\n\r\n /** Return the EmphasizeElements provider currently registered with the specified Viewport, or register a new one and return it. */\r\n public static getOrCreate(vp: Viewport): EmphasizeElements {\r\n let provider = this.get(vp);\r\n if (!provider) {\r\n provider = new EmphasizeElements();\r\n vp.addFeatureOverrideProvider(provider);\r\n }\r\n\r\n return provider;\r\n }\r\n\r\n /** Drop the EmphasizeElements provider currently registered with the specified Viewport, if any is registered. */\r\n public static clear(vp: Viewport, inactiveOnly: boolean = false) {\r\n const provider = this.get(vp);\r\n\r\n if (undefined === provider || (inactiveOnly && provider.isActive))\r\n return;\r\n\r\n vp.clearNeverDrawn();\r\n vp.clearAlwaysDrawn();\r\n vp.dropFeatureOverrideProvider(provider);\r\n }\r\n}\r\n"]}
@@ -2,8 +2,8 @@
2
2
  * @module ModelState
3
3
  */
4
4
  import { Id64String } from "@itwin/core-bentley";
5
- import { Point2d, Range3d } from "@itwin/core-geometry";
6
5
  import { GeometricModel2dProps, GeometricModel3dProps, GeometricModelProps, ModelProps, RelatedElement, SpatialClassifiers } from "@itwin/core-common";
6
+ import { Point2d, Range3d } from "@itwin/core-geometry";
7
7
  import { EntityState } from "./EntityState";
8
8
  import { HitDetail } from "./HitDetail";
9
9
  import { IModelConnection } from "./IModelConnection";
@@ -1 +1 @@
1
- {"version":3,"file":"ModelState.d.ts","sourceRoot":"","sources":["../../src/ModelState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelState.d.ts","sourceRoot":"","sources":["../../src/ModelState.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,8 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.SectionDrawingModelState = exports.DrawingModelState = exports.SpatialLocationModelState = exports.PhysicalModelState = exports.SpatialModelState = exports.SheetModelState = exports.GeometricModel3dState = exports.GeometricModel2dState = exports.GeometricModelState = exports.ModelState = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_geometry_1 = require("@itwin/core-geometry");
13
12
  const core_common_1 = require("@itwin/core-common");
13
+ const core_geometry_1 = require("@itwin/core-geometry");
14
14
  const EntityState_1 = require("./EntityState");
15
15
  const RealityDataSource_1 = require("./RealityDataSource");
16
16
  const internal_1 = require("./tile/internal");
@@ -123,16 +123,7 @@ class GeometricModelState extends ModelState {
123
123
  orbitGtName = orbitGtBlob.blobFileName;
124
124
  }
125
125
  // Create rdSourceKey if not provided
126
- let rdSourceKeyOGT;
127
- if (orbitGtBlob.rdsUrl) {
128
- rdSourceKeyOGT = RealityDataSource_1.RealityDataSource.createRealityDataSourceKeyFromUrl(orbitGtBlob.rdsUrl, core_common_1.RealityDataProvider.ContextShare, core_common_1.RealityDataFormat.OPC);
129
- }
130
- else if (orbitGtBlob.containerName && core_bentley_1.Guid.isGuid(orbitGtBlob.containerName)) {
131
- rdSourceKeyOGT = { provider: core_common_1.RealityDataProvider.ContextShare, format: core_common_1.RealityDataFormat.OPC, id: orbitGtBlob.containerName };
132
- }
133
- else {
134
- rdSourceKeyOGT = RealityDataSource_1.RealityDataSource.createFromBlobUrl(orbitGtBlob.blobFileName, core_common_1.RealityDataProvider.ContextShare, core_common_1.RealityDataFormat.OPC);
135
- }
126
+ const rdSourceKeyOGT = RealityDataSource_1.RealityDataSource.createKeyFromOrbitGtBlobProps(orbitGtBlob);
136
127
  return (0, internal_1.createOrbitGtTileTreeReference)({
137
128
  rdSourceKey: rdSourceKeyOGT,
138
129
  iModel: this.iModel,
@@ -1 +1 @@
1
- {"version":3,"file":"ModelState.js","sourceRoot":"","sources":["../../src/ModelState.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 ModelState\r\n */\r\n\r\nimport { Guid, Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport { Point2d, Range3d } from \"@itwin/core-geometry\";\r\nimport {\r\n GeometricModel2dProps, GeometricModel3dProps, GeometricModelProps, ModelProps, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RelatedElement, SpatialClassifiers,\r\n} from \"@itwin/core-common\";\r\nimport { EntityState } from \"./EntityState\";\r\nimport { HitDetail } from \"./HitDetail\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { RealityDataSource } from \"./RealityDataSource\";\r\nimport { createOrbitGtTileTreeReference, createPrimaryTileTreeReference, createRealityTileTreeReference, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewState } from \"./ViewState\";\r\n\r\n/** Represents the front-end state of a [Model]($backend).\r\n * @public\r\n */\r\nexport class ModelState extends EntityState implements ModelProps {\r\n /** @internal */\r\n public static override get className() { return \"Model\"; }\r\n public readonly modeledElement: RelatedElement;\r\n public readonly name: string;\r\n public parentModel: Id64String;\r\n public readonly isPrivate: boolean;\r\n public readonly isTemplate: boolean;\r\n\r\n constructor(props: ModelProps, iModel: IModelConnection, state?: ModelState) {\r\n super(props, iModel, state);\r\n this.modeledElement = RelatedElement.fromJSON(props.modeledElement)!;\r\n this.name = props.name ? props.name : \"\";\r\n this.parentModel = Id64.fromJSON(props.parentModel)!; // NB! Must always match the model of the modeledElement!\r\n this.isPrivate = JsonUtils.asBool(props.isPrivate);\r\n this.isTemplate = JsonUtils.asBool(props.isTemplate);\r\n }\r\n\r\n /** Add all custom-handled properties of a Model to a json object. */\r\n public override toJSON(): ModelProps {\r\n const val = super.toJSON() as ModelProps;\r\n val.modeledElement = this.modeledElement;\r\n val.parentModel = this.parentModel;\r\n val.name = this.name;\r\n if (this.isPrivate)\r\n val.isPrivate = this.isPrivate;\r\n if (this.isTemplate)\r\n val.isTemplate = this.isTemplate;\r\n return val;\r\n }\r\n\r\n /** Determine whether this is a GeometricModel */\r\n public get isGeometricModel(): boolean { return false; }\r\n\r\n /** Attempts to cast this model to a geometric model. */\r\n public get asGeometricModel(): GeometricModelState | undefined { return undefined; }\r\n /** Attempts to cast this model to a 3d geometric model. */\r\n public get asGeometricModel3d(): GeometricModel3dState | undefined { return undefined; }\r\n /** Attempts to cast this model to a 2d geometric model. */\r\n public get asGeometricModel2d(): GeometricModel2dState | undefined { return undefined; }\r\n /** Attempts to cast this model to a spatial model. */\r\n public get asSpatialModel(): SpatialModelState | undefined { return undefined; }\r\n\r\n /**\r\n * Return the tool tip for this model. This is called only if the hit does not return a tooltip.\r\n * @internal\r\n */\r\n public getToolTip(_hit: HitDetail): HTMLElement | string | undefined { return undefined; }\r\n}\r\n\r\n/** Represents the front-end state of a [GeometricModel]($backend).\r\n * The contents of a GeometricModelState can be rendered inside a [[Viewport]].\r\n * @public\r\n */\r\nexport abstract class GeometricModelState extends ModelState implements GeometricModelProps {\r\n /** @internal */\r\n public static override get className() { return \"GeometricModel\"; }\r\n /** @internal */\r\n public geometryGuid?: string;\r\n\r\n private _modelRange?: Range3d;\r\n\r\n constructor(props: GeometricModelProps, iModel: IModelConnection, state?: GeometricModelState) {\r\n super(props, iModel, state);\r\n this.geometryGuid = props.geometryGuid;\r\n }\r\n\r\n /** Returns true if this is a 3d model (a [[GeometricModel3dState]]). */\r\n public abstract get is3d(): boolean;\r\n /** @internal */\r\n public override get asGeometricModel(): GeometricModelState { return this; }\r\n /** Returns true if this is a 2d model (a [[GeometricModel2dState]]). */\r\n public get is2d(): boolean { return !this.is3d; }\r\n\r\n /** @internal */\r\n public override get isGeometricModel(): boolean { return true; }\r\n /** @internal */\r\n public get treeModelId(): Id64String { return this.id; }\r\n\r\n /** Query for the union of the ranges of all the elements in this GeometricModel.\r\n * @internal\r\n */\r\n public async queryModelRange(): Promise<Range3d> {\r\n if (undefined === this._modelRange) {\r\n const ranges = await this.iModel.models.queryModelRanges(this.id);\r\n this._modelRange = Range3d.fromJSON(ranges[0]);\r\n }\r\n return this._modelRange;\r\n }\r\n\r\n /** @internal */\r\n public createTileTreeReference(view: ViewState): TileTreeReference {\r\n // If this is a reality model, its tile tree is obtained from reality data service URL.\r\n\r\n const spatialModel = this.asSpatialModel;\r\n const rdSourceKey = this.jsonProperties.rdSourceKey;\r\n\r\n if (rdSourceKey) {\r\n const useOrbitGtTileTreeReference = rdSourceKey.format === RealityDataFormat.OPC;\r\n const treeRef = (!useOrbitGtTileTreeReference) ?\r\n createRealityTileTreeReference({\r\n rdSourceKey,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n // url: tilesetUrl, // If rdSourceKey is defined, url is not used\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n }) :\r\n createOrbitGtTileTreeReference({\r\n rdSourceKey,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n // orbitGtBlob: props.orbitGtBlob!, // If rdSourceKey is defined, orbitGtBlob is not used\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n });\r\n return treeRef;\r\n }\r\n\r\n const orbitGtBlob = this.jsonProperties.orbitGtBlob;\r\n\r\n // If this is an OrbitGt reality model, create it's reference\r\n if(orbitGtBlob) {\r\n let orbitGtName = \"\";\r\n if (orbitGtBlob.blobFileName !== \"\") {\r\n if (orbitGtBlob.blobFileName[0] === \"/\")\r\n orbitGtName = orbitGtBlob.blobFileName.substring(1);\r\n else\r\n orbitGtName = orbitGtBlob.blobFileName;\r\n }\r\n // Create rdSourceKey if not provided\r\n let rdSourceKeyOGT: RealityDataSourceKey;\r\n if (orbitGtBlob.rdsUrl) {\r\n rdSourceKeyOGT = RealityDataSource.createRealityDataSourceKeyFromUrl(orbitGtBlob.rdsUrl, RealityDataProvider.ContextShare, RealityDataFormat.OPC);\r\n } else if (orbitGtBlob.containerName && Guid.isGuid(orbitGtBlob.containerName)) {\r\n rdSourceKeyOGT = {provider: RealityDataProvider.ContextShare, format: RealityDataFormat.OPC, id: orbitGtBlob.containerName };\r\n } else {\r\n rdSourceKeyOGT = RealityDataSource.createFromBlobUrl(orbitGtBlob.blobFileName, RealityDataProvider.ContextShare, RealityDataFormat.OPC);\r\n }\r\n\r\n return createOrbitGtTileTreeReference({\r\n rdSourceKey: rdSourceKeyOGT,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n orbitGtBlob,\r\n name: orbitGtName,\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n });\r\n }\r\n\r\n // If this is a TileTree reality model, create it's reference\r\n const tilesetUrl = this.jsonProperties.tilesetUrl;\r\n\r\n if(tilesetUrl) {\r\n const rdSourceKeyCS = RealityDataSource.createRealityDataSourceKeyFromUrl(tilesetUrl);\r\n return createRealityTileTreeReference({\r\n rdSourceKey: rdSourceKeyCS,\r\n url : tilesetUrl,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n tilesetToDbTransform: this.jsonProperties.tilesetToDbTransform,\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n });\r\n }\r\n\r\n return createPrimaryTileTreeReference(view, this);\r\n }\r\n}\r\n/** Represents the front-end state of a [GeometricModel2d]($backend).\r\n * @public\r\n */\r\nexport class GeometricModel2dState extends GeometricModelState implements GeometricModel2dProps {\r\n /** @internal */\r\n public static override get className() { return \"GeometricModel2d\"; }\r\n /** @internal */\r\n public readonly globalOrigin: Point2d;\r\n\r\n constructor(props: GeometricModel2dProps, iModel: IModelConnection, state?: GeometricModel2dState) {\r\n super(props, iModel, state);\r\n this.globalOrigin = Point2d.fromJSON(props.globalOrigin);\r\n }\r\n\r\n /** @internal */\r\n public get is3d(): boolean { return false; }\r\n /** @internal */\r\n public override get asGeometricModel2d(): GeometricModel2dState { return this; }\r\n\r\n public override toJSON(): GeometricModel2dProps {\r\n const val = super.toJSON() as GeometricModel2dProps;\r\n val.globalOrigin = this.globalOrigin;\r\n return val;\r\n }\r\n}\r\n\r\n/** Represents the front-end state of a [GeometricModel3d]($backend).\r\n * @public\r\n */\r\nexport class GeometricModel3dState extends GeometricModelState {\r\n /** @internal */\r\n public static override get className() { return \"GeometricModel3d\"; }\r\n\r\n constructor(props: GeometricModel3dProps, iModel: IModelConnection, state?: GeometricModel3dState) {\r\n super(props, iModel, state);\r\n this.isNotSpatiallyLocated = JsonUtils.asBool(props.isNotSpatiallyLocated);\r\n this.isPlanProjection = JsonUtils.asBool(props.isPlanProjection);\r\n }\r\n\r\n /** @internal */\r\n public override toJSON(): GeometricModel3dProps {\r\n const val = super.toJSON() as GeometricModel3dProps;\r\n if (this.isNotSpatiallyLocated)\r\n val.isNotSpatiallyLocated = true;\r\n\r\n if (this.isPlanProjection)\r\n val.isPlanProjection = true;\r\n\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n public get is3d(): boolean { return true; }\r\n /** @internal */\r\n public override get asGeometricModel3d(): GeometricModel3dState { return this; }\r\n\r\n /** If true, then the elements in this GeometricModel3dState are expected to be in an XY plane.\r\n * @note The associated ECProperty was added to the BisCore schema in version 1.0.8\r\n */\r\n public readonly isPlanProjection: boolean;\r\n\r\n /** If true, then the elements in this GeometricModel3dState are not in real-world coordinates and will not be in the spatial index.\r\n * @note The associated ECProperty was added to the BisCore schema in version 1.0.8\r\n */\r\n public readonly isNotSpatiallyLocated: boolean;\r\n\r\n /** If true, then the elements in this GeometricModel3dState are in real-world coordinates and will be in the spatial index. */\r\n public get isSpatiallyLocated(): boolean { return !this.isNotSpatiallyLocated; }\r\n}\r\n\r\n/** Represents the front-end state of a [SheetModel]($backend).\r\n * @public\r\n */\r\nexport class SheetModelState extends GeometricModel2dState {\r\n /** @internal */\r\n public static override get className() { return \"SheetModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SpatialModel]($backend).\r\n * @public\r\n */\r\nexport class SpatialModelState extends GeometricModel3dState {\r\n /** If this is a reality model, provides access to a list of available spatial classifiers that can be applied to it. */\r\n public readonly classifiers?: SpatialClassifiers;\r\n\r\n /** @internal */\r\n public static override get className() { return \"SpatialModel\"; }\r\n /** @internal */\r\n public override get asSpatialModel(): SpatialModelState { return this; }\r\n\r\n public constructor(props: ModelProps, iModel: IModelConnection, state?: SpatialModelState) {\r\n super(props, iModel, state);\r\n if (this.isRealityModel)\r\n this.classifiers = new SpatialClassifiers(this.jsonProperties);\r\n }\r\n /** Return true if this is a reality model (represented by a 3d tile set). */\r\n public get isRealityModel(): boolean {\r\n return undefined !== this.jsonProperties.tilesetUrl;\r\n }\r\n}\r\n\r\n/** Represents the front-end state of a [PhysicalModel]($backend).\r\n * @public\r\n */\r\nexport class PhysicalModelState extends SpatialModelState {\r\n /** @internal */\r\n public static override get className() { return \"PhysicalModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SpatialLocationModel]($backend).\r\n * @public\r\n */\r\nexport class SpatialLocationModelState extends SpatialModelState {\r\n /** @internal */\r\n public static override get className() { return \"SpatialLocationModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [DrawingModel]($backend).\r\n * @public\r\n */\r\nexport class DrawingModelState extends GeometricModel2dState {\r\n /** @internal */\r\n public static override get className() { return \"DrawingModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SectionDrawingModel]($backend).\r\n * @public\r\n */\r\nexport class SectionDrawingModelState extends DrawingModelState {\r\n /** @internal */\r\n public static override get className() { return \"SectionDrawingModel\"; }\r\n}\r\n"]}
1
+ {"version":3,"file":"ModelState.js","sourceRoot":"","sources":["../../src/ModelState.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAkE;AAClE,oDAE4B;AAC5B,wDAAwD;AACxD,+CAA4C;AAG5C,2DAAwD;AACxD,8CAAoJ;AAGpJ;;GAEG;AACH,MAAa,UAAW,SAAQ,yBAAW;IASzC,YAAY,KAAiB,EAAE,MAAwB,EAAE,KAAkB;QACzE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,4BAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAE,CAAC;QACrE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,mBAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAE,CAAC,CAAC,yDAAyD;QAC/G,IAAI,CAAC,SAAS,GAAG,wBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,wBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAfD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,OAAO,CAAC,CAAC,CAAC;IAgB1D,qEAAqE;IACrD,MAAM;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAgB,CAAC;QACzC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS;YAChB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,IAAI,CAAC,UAAU;YACjB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,iDAAiD;IACjD,IAAW,gBAAgB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAExD,wDAAwD;IACxD,IAAW,gBAAgB,KAAsC,OAAO,SAAS,CAAC,CAAC,CAAC;IACpF,2DAA2D;IAC3D,IAAW,kBAAkB,KAAwC,OAAO,SAAS,CAAC,CAAC,CAAC;IACxF,2DAA2D;IAC3D,IAAW,kBAAkB,KAAwC,OAAO,SAAS,CAAC,CAAC,CAAC;IACxF,sDAAsD;IACtD,IAAW,cAAc,KAAoC,OAAO,SAAS,CAAC,CAAC,CAAC;IAEhF;;;OAGG;IACI,UAAU,CAAC,IAAe,IAAsC,OAAO,SAAS,CAAC,CAAC,CAAC;CAC3F;AAhDD,gCAgDC;AAED;;;GAGG;AACH,MAAsB,mBAAoB,SAAQ,UAAU;IAQ1D,YAAY,KAA0B,EAAE,MAAwB,EAAE,KAA2B;QAC3F,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACzC,CAAC;IAVD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,gBAAgB,CAAC,CAAC,CAAC;IAanE,gBAAgB;IAChB,IAAoB,gBAAgB,KAA0B,OAAO,IAAI,CAAC,CAAC,CAAC;IAC5E,wEAAwE;IACxE,IAAW,IAAI,KAAc,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjD,gBAAgB;IAChB,IAAoB,gBAAgB,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAChE,gBAAgB;IAChB,IAAW,WAAW,KAAiB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAExD;;OAEG;IACI,KAAK,CAAC,eAAe;QAC1B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,GAAG,uBAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,gBAAgB;IACT,uBAAuB,CAAC,IAAe;QAC5C,uFAAuF;QAEvF,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAEpD,IAAI,WAAW,EAAE;YACf,MAAM,2BAA2B,GAAG,WAAW,CAAC,MAAM,KAAK,+BAAiB,CAAC,GAAG,CAAC;YACjF,MAAM,OAAO,GAAG,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBAC9C,IAAA,yCAA8B,EAAC;oBAC7B,WAAW;oBACX,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,IAAI,CAAC,EAAE;oBAChB,iEAAiE;oBACjE,WAAW,EAAE,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;iBAC/E,CAAC,CAAC,CAAC;gBACJ,IAAA,yCAA8B,EAAC;oBAC7B,WAAW;oBACX,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,IAAI,CAAC,EAAE;oBAChB,yFAAyF;oBACzF,WAAW,EAAE,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;iBAC/E,CAAC,CAAC;YACL,OAAO,OAAO,CAAC;SAChB;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAEpD,6DAA6D;QAC7D,IAAG,WAAW,EAAE;YACd,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,WAAW,CAAC,YAAY,KAAK,EAAE,EAAE;gBACnC,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG;oBACrC,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;oBAEpD,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC;aAC1C;YACD,qCAAqC;YACrC,MAAM,cAAc,GAAyB,qCAAiB,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;YAE1G,OAAO,IAAA,yCAA8B,EAAC;gBACpC,WAAW,EAAE,cAAc;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,WAAW;gBACX,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;aAC/E,CAAC,CAAC;SACJ;QAED,6DAA6D;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QAElD,IAAG,UAAU,EAAE;YACb,MAAM,aAAa,GAAG,qCAAiB,CAAC,iCAAiC,CAAC,UAAU,CAAC,CAAC;YACtF,OAAO,IAAA,yCAA8B,EAAC;gBACpC,WAAW,EAAE,aAAa;gBAC1B,GAAG,EAAG,UAAU;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,oBAAoB;gBAC9D,WAAW,EAAE,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;aAC/E,CAAC,CAAC;SACJ;QAED,OAAO,IAAA,yCAA8B,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CACF;AA5GD,kDA4GC;AACD;;GAEG;AACH,MAAa,qBAAsB,SAAQ,mBAAmB;IAM5D,YAAY,KAA4B,EAAE,MAAwB,EAAE,KAA6B;QAC/F,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,uBAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IARD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,kBAAkB,CAAC,CAAC,CAAC;IASrE,gBAAgB;IAChB,IAAW,IAAI,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC5C,gBAAgB;IAChB,IAAoB,kBAAkB,KAA4B,OAAO,IAAI,CAAC,CAAC,CAAC;IAEhE,MAAM;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAA2B,CAAC;QACpD,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AArBD,sDAqBC;AAED;;GAEG;AACH,MAAa,qBAAsB,SAAQ,mBAAmB;IAI5D,YAAY,KAA4B,EAAE,MAAwB,EAAE,KAA6B;QAC/F,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,qBAAqB,GAAG,wBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,GAAG,wBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnE,CAAC;IAPD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAQrE,gBAAgB;IACA,MAAM;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAA2B,CAAC;QACpD,IAAI,IAAI,CAAC,qBAAqB;YAC5B,GAAG,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAEnC,IAAI,IAAI,CAAC,gBAAgB;YACvB,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE9B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3C,gBAAgB;IAChB,IAAoB,kBAAkB,KAA4B,OAAO,IAAI,CAAC,CAAC,CAAC;IAYhF,+HAA+H;IAC/H,IAAW,kBAAkB,KAAc,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;CACjF;AAvCD,sDAuCC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,qBAAqB;IACxD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC;CAChE;AAHD,0CAGC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,qBAAqB;IAS1D,YAAmB,KAAiB,EAAE,MAAwB,EAAE,KAAyB;QACvF,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,cAAc;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,gCAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACnE,CAAC;IATD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,cAAc,CAAC,CAAC,CAAC;IACjE,gBAAgB;IAChB,IAAoB,cAAc,KAAwB,OAAO,IAAI,CAAC,CAAC,CAAC;IAOxE,6EAA6E;IAC7E,IAAW,cAAc;QACvB,OAAO,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;IACtD,CAAC;CACF;AAlBD,8CAkBC;AAED;;GAEG;AACH,MAAa,kBAAmB,SAAQ,iBAAiB;IACvD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,eAAe,CAAC,CAAC,CAAC;CACnE;AAHD,gDAGC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,sBAAsB,CAAC,CAAC,CAAC;CAC1E;AAHD,8DAGC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,qBAAqB;IAC1D,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,cAAc,CAAC,CAAC,CAAC;CAClE;AAHD,8CAGC;AAED;;GAEG;AACH,MAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAK,OAAO,qBAAqB,CAAC,CAAC,CAAC;CACzE;AAHD,4DAGC","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 ModelState\r\n */\r\n\r\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport {\r\n GeometricModel2dProps, GeometricModel3dProps, GeometricModelProps, ModelProps, RealityDataFormat, RealityDataSourceKey, RelatedElement, SpatialClassifiers,\r\n} from \"@itwin/core-common\";\r\nimport { Point2d, Range3d } from \"@itwin/core-geometry\";\r\nimport { EntityState } from \"./EntityState\";\r\nimport { HitDetail } from \"./HitDetail\";\r\nimport { IModelConnection } from \"./IModelConnection\";\r\nimport { RealityDataSource } from \"./RealityDataSource\";\r\nimport { createOrbitGtTileTreeReference, createPrimaryTileTreeReference, createRealityTileTreeReference, TileTreeReference } from \"./tile/internal\";\r\nimport { ViewState } from \"./ViewState\";\r\n\r\n/** Represents the front-end state of a [Model]($backend).\r\n * @public\r\n */\r\nexport class ModelState extends EntityState implements ModelProps {\r\n /** @internal */\r\n public static override get className() { return \"Model\"; }\r\n public readonly modeledElement: RelatedElement;\r\n public readonly name: string;\r\n public parentModel: Id64String;\r\n public readonly isPrivate: boolean;\r\n public readonly isTemplate: boolean;\r\n\r\n constructor(props: ModelProps, iModel: IModelConnection, state?: ModelState) {\r\n super(props, iModel, state);\r\n this.modeledElement = RelatedElement.fromJSON(props.modeledElement)!;\r\n this.name = props.name ? props.name : \"\";\r\n this.parentModel = Id64.fromJSON(props.parentModel)!; // NB! Must always match the model of the modeledElement!\r\n this.isPrivate = JsonUtils.asBool(props.isPrivate);\r\n this.isTemplate = JsonUtils.asBool(props.isTemplate);\r\n }\r\n\r\n /** Add all custom-handled properties of a Model to a json object. */\r\n public override toJSON(): ModelProps {\r\n const val = super.toJSON() as ModelProps;\r\n val.modeledElement = this.modeledElement;\r\n val.parentModel = this.parentModel;\r\n val.name = this.name;\r\n if (this.isPrivate)\r\n val.isPrivate = this.isPrivate;\r\n if (this.isTemplate)\r\n val.isTemplate = this.isTemplate;\r\n return val;\r\n }\r\n\r\n /** Determine whether this is a GeometricModel */\r\n public get isGeometricModel(): boolean { return false; }\r\n\r\n /** Attempts to cast this model to a geometric model. */\r\n public get asGeometricModel(): GeometricModelState | undefined { return undefined; }\r\n /** Attempts to cast this model to a 3d geometric model. */\r\n public get asGeometricModel3d(): GeometricModel3dState | undefined { return undefined; }\r\n /** Attempts to cast this model to a 2d geometric model. */\r\n public get asGeometricModel2d(): GeometricModel2dState | undefined { return undefined; }\r\n /** Attempts to cast this model to a spatial model. */\r\n public get asSpatialModel(): SpatialModelState | undefined { return undefined; }\r\n\r\n /**\r\n * Return the tool tip for this model. This is called only if the hit does not return a tooltip.\r\n * @internal\r\n */\r\n public getToolTip(_hit: HitDetail): HTMLElement | string | undefined { return undefined; }\r\n}\r\n\r\n/** Represents the front-end state of a [GeometricModel]($backend).\r\n * The contents of a GeometricModelState can be rendered inside a [[Viewport]].\r\n * @public\r\n */\r\nexport abstract class GeometricModelState extends ModelState implements GeometricModelProps {\r\n /** @internal */\r\n public static override get className() { return \"GeometricModel\"; }\r\n /** @internal */\r\n public geometryGuid?: string;\r\n\r\n private _modelRange?: Range3d;\r\n\r\n constructor(props: GeometricModelProps, iModel: IModelConnection, state?: GeometricModelState) {\r\n super(props, iModel, state);\r\n this.geometryGuid = props.geometryGuid;\r\n }\r\n\r\n /** Returns true if this is a 3d model (a [[GeometricModel3dState]]). */\r\n public abstract get is3d(): boolean;\r\n /** @internal */\r\n public override get asGeometricModel(): GeometricModelState { return this; }\r\n /** Returns true if this is a 2d model (a [[GeometricModel2dState]]). */\r\n public get is2d(): boolean { return !this.is3d; }\r\n\r\n /** @internal */\r\n public override get isGeometricModel(): boolean { return true; }\r\n /** @internal */\r\n public get treeModelId(): Id64String { return this.id; }\r\n\r\n /** Query for the union of the ranges of all the elements in this GeometricModel.\r\n * @internal\r\n */\r\n public async queryModelRange(): Promise<Range3d> {\r\n if (undefined === this._modelRange) {\r\n const ranges = await this.iModel.models.queryModelRanges(this.id);\r\n this._modelRange = Range3d.fromJSON(ranges[0]);\r\n }\r\n return this._modelRange;\r\n }\r\n\r\n /** @internal */\r\n public createTileTreeReference(view: ViewState): TileTreeReference {\r\n // If this is a reality model, its tile tree is obtained from reality data service URL.\r\n\r\n const spatialModel = this.asSpatialModel;\r\n const rdSourceKey = this.jsonProperties.rdSourceKey;\r\n\r\n if (rdSourceKey) {\r\n const useOrbitGtTileTreeReference = rdSourceKey.format === RealityDataFormat.OPC;\r\n const treeRef = (!useOrbitGtTileTreeReference) ?\r\n createRealityTileTreeReference({\r\n rdSourceKey,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n // url: tilesetUrl, // If rdSourceKey is defined, url is not used\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n }) :\r\n createOrbitGtTileTreeReference({\r\n rdSourceKey,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n // orbitGtBlob: props.orbitGtBlob!, // If rdSourceKey is defined, orbitGtBlob is not used\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n });\r\n return treeRef;\r\n }\r\n\r\n const orbitGtBlob = this.jsonProperties.orbitGtBlob;\r\n\r\n // If this is an OrbitGt reality model, create it's reference\r\n if(orbitGtBlob) {\r\n let orbitGtName = \"\";\r\n if (orbitGtBlob.blobFileName !== \"\") {\r\n if (orbitGtBlob.blobFileName[0] === \"/\")\r\n orbitGtName = orbitGtBlob.blobFileName.substring(1);\r\n else\r\n orbitGtName = orbitGtBlob.blobFileName;\r\n }\r\n // Create rdSourceKey if not provided\r\n const rdSourceKeyOGT: RealityDataSourceKey = RealityDataSource.createKeyFromOrbitGtBlobProps(orbitGtBlob);\r\n\r\n return createOrbitGtTileTreeReference({\r\n rdSourceKey: rdSourceKeyOGT,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n orbitGtBlob,\r\n name: orbitGtName,\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n });\r\n }\r\n\r\n // If this is a TileTree reality model, create it's reference\r\n const tilesetUrl = this.jsonProperties.tilesetUrl;\r\n\r\n if(tilesetUrl) {\r\n const rdSourceKeyCS = RealityDataSource.createRealityDataSourceKeyFromUrl(tilesetUrl);\r\n return createRealityTileTreeReference({\r\n rdSourceKey: rdSourceKeyCS,\r\n url : tilesetUrl,\r\n iModel: this.iModel,\r\n source: view,\r\n modelId: this.id,\r\n tilesetToDbTransform: this.jsonProperties.tilesetToDbTransform,\r\n classifiers: undefined !== spatialModel ? spatialModel.classifiers : undefined,\r\n });\r\n }\r\n\r\n return createPrimaryTileTreeReference(view, this);\r\n }\r\n}\r\n/** Represents the front-end state of a [GeometricModel2d]($backend).\r\n * @public\r\n */\r\nexport class GeometricModel2dState extends GeometricModelState implements GeometricModel2dProps {\r\n /** @internal */\r\n public static override get className() { return \"GeometricModel2d\"; }\r\n /** @internal */\r\n public readonly globalOrigin: Point2d;\r\n\r\n constructor(props: GeometricModel2dProps, iModel: IModelConnection, state?: GeometricModel2dState) {\r\n super(props, iModel, state);\r\n this.globalOrigin = Point2d.fromJSON(props.globalOrigin);\r\n }\r\n\r\n /** @internal */\r\n public get is3d(): boolean { return false; }\r\n /** @internal */\r\n public override get asGeometricModel2d(): GeometricModel2dState { return this; }\r\n\r\n public override toJSON(): GeometricModel2dProps {\r\n const val = super.toJSON() as GeometricModel2dProps;\r\n val.globalOrigin = this.globalOrigin;\r\n return val;\r\n }\r\n}\r\n\r\n/** Represents the front-end state of a [GeometricModel3d]($backend).\r\n * @public\r\n */\r\nexport class GeometricModel3dState extends GeometricModelState {\r\n /** @internal */\r\n public static override get className() { return \"GeometricModel3d\"; }\r\n\r\n constructor(props: GeometricModel3dProps, iModel: IModelConnection, state?: GeometricModel3dState) {\r\n super(props, iModel, state);\r\n this.isNotSpatiallyLocated = JsonUtils.asBool(props.isNotSpatiallyLocated);\r\n this.isPlanProjection = JsonUtils.asBool(props.isPlanProjection);\r\n }\r\n\r\n /** @internal */\r\n public override toJSON(): GeometricModel3dProps {\r\n const val = super.toJSON() as GeometricModel3dProps;\r\n if (this.isNotSpatiallyLocated)\r\n val.isNotSpatiallyLocated = true;\r\n\r\n if (this.isPlanProjection)\r\n val.isPlanProjection = true;\r\n\r\n return val;\r\n }\r\n\r\n /** @internal */\r\n public get is3d(): boolean { return true; }\r\n /** @internal */\r\n public override get asGeometricModel3d(): GeometricModel3dState { return this; }\r\n\r\n /** If true, then the elements in this GeometricModel3dState are expected to be in an XY plane.\r\n * @note The associated ECProperty was added to the BisCore schema in version 1.0.8\r\n */\r\n public readonly isPlanProjection: boolean;\r\n\r\n /** If true, then the elements in this GeometricModel3dState are not in real-world coordinates and will not be in the spatial index.\r\n * @note The associated ECProperty was added to the BisCore schema in version 1.0.8\r\n */\r\n public readonly isNotSpatiallyLocated: boolean;\r\n\r\n /** If true, then the elements in this GeometricModel3dState are in real-world coordinates and will be in the spatial index. */\r\n public get isSpatiallyLocated(): boolean { return !this.isNotSpatiallyLocated; }\r\n}\r\n\r\n/** Represents the front-end state of a [SheetModel]($backend).\r\n * @public\r\n */\r\nexport class SheetModelState extends GeometricModel2dState {\r\n /** @internal */\r\n public static override get className() { return \"SheetModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SpatialModel]($backend).\r\n * @public\r\n */\r\nexport class SpatialModelState extends GeometricModel3dState {\r\n /** If this is a reality model, provides access to a list of available spatial classifiers that can be applied to it. */\r\n public readonly classifiers?: SpatialClassifiers;\r\n\r\n /** @internal */\r\n public static override get className() { return \"SpatialModel\"; }\r\n /** @internal */\r\n public override get asSpatialModel(): SpatialModelState { return this; }\r\n\r\n public constructor(props: ModelProps, iModel: IModelConnection, state?: SpatialModelState) {\r\n super(props, iModel, state);\r\n if (this.isRealityModel)\r\n this.classifiers = new SpatialClassifiers(this.jsonProperties);\r\n }\r\n /** Return true if this is a reality model (represented by a 3d tile set). */\r\n public get isRealityModel(): boolean {\r\n return undefined !== this.jsonProperties.tilesetUrl;\r\n }\r\n}\r\n\r\n/** Represents the front-end state of a [PhysicalModel]($backend).\r\n * @public\r\n */\r\nexport class PhysicalModelState extends SpatialModelState {\r\n /** @internal */\r\n public static override get className() { return \"PhysicalModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SpatialLocationModel]($backend).\r\n * @public\r\n */\r\nexport class SpatialLocationModelState extends SpatialModelState {\r\n /** @internal */\r\n public static override get className() { return \"SpatialLocationModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [DrawingModel]($backend).\r\n * @public\r\n */\r\nexport class DrawingModelState extends GeometricModel2dState {\r\n /** @internal */\r\n public static override get className() { return \"DrawingModel\"; }\r\n}\r\n\r\n/** Represents the front-end state of a [SectionDrawingModel]($backend).\r\n * @public\r\n */\r\nexport class SectionDrawingModelState extends DrawingModelState {\r\n /** @internal */\r\n public static override get className() { return \"SectionDrawingModel\"; }\r\n}\r\n"]}
@@ -1,5 +1,5 @@
1
1
  import { GuidString } from "@itwin/core-bentley";
2
- import { RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from "@itwin/core-common";
2
+ import { OrbitGtBlobProps, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from "@itwin/core-common";
3
3
  /** Utility function to convert a RealityDataSourceKey into its string representation
4
4
  * @alpha
5
5
  */
@@ -18,6 +18,8 @@ export declare class RealityDataSource {
18
18
  protected constructor(props: RealityDataSourceProps);
19
19
  static createRealityDataSourceKeyFromUrl(tilesetUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey;
20
20
  static createFromBlobUrl(blobUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey;
21
+ static createKeyFromOrbitGtBlobProps(orbitGtBlob: OrbitGtBlobProps, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey;
22
+ static createOrbitGtBlobPropsFromKey(rdSourceKey: RealityDataSourceKey): OrbitGtBlobProps | undefined;
21
23
  /** Construct a new reality data source.
22
24
  * @param props JSON representation of the reality data source
23
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"RealityDataSource.d.ts","sourceRoot":"","sources":["../../src/RealityDataSource.ts"],"names":[],"mappings":"AAKA,OAAO,EAAQ,UAAU,EAAU,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI1H;;EAEE;AACF,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,oBAAoB,GAAG,MAAM,CAEtF;AAED;;EAEE;AACF,qBAAa,iBAAiB;IAC5B,SAAgB,WAAW,EAAE,oBAAoB,CAAC;IAClD,2EAA2E;IAC3E,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAAkB;IAExC;;OAEG;IACH,SAAS,aAAa,KAAK,EAAE,sBAAsB;WAIrC,iCAAiC,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,oBAAoB;WAqDjJ,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,oBAAoB;IAwB5I;;OAEG;WACW,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB;IAGzE,IAAW,cAAc,YAExB;IACD,IAAW,aAAa,IAAI,MAAM,GAAG,SAAS,CAG7C;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,SAAS,CAEvC;IAED;;;OAGG;IACU,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAqBzF"}
1
+ {"version":3,"file":"RealityDataSource.d.ts","sourceRoot":"","sources":["../../src/RealityDataSource.ts"],"names":[],"mappings":"AAKA,OAAO,EAAQ,UAAU,EAAU,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAI5I;;EAEE;AACF,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,oBAAoB,GAAG,MAAM,CAEtF;AAED;;EAEE;AACF,qBAAa,iBAAiB;IAC5B,SAAgB,WAAW,EAAE,oBAAoB,CAAC;IAClD,2EAA2E;IAC3E,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAAkB;IAExC;;OAEG;IACH,SAAS,aAAa,KAAK,EAAE,sBAAsB;WAIrC,iCAAiC,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,oBAAoB;WAqDjJ,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,oBAAoB;WAwB9H,6BAA6B,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,mBAAmB,EAAE,WAAW,CAAC,EAAE,iBAAiB,GAAG,oBAAoB;WAWxJ,6BAA6B,CAAC,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,SAAS;IAe5G;;OAEG;WACW,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,iBAAiB;IAGzE,IAAW,cAAc,YAExB;IACD,IAAW,aAAa,IAAI,MAAM,GAAG,SAAS,CAG7C;IACD,IAAW,OAAO,IAAI,MAAM,GAAG,SAAS,CAEvC;IAED;;;OAGG;IACU,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAqBzF"}
@@ -101,6 +101,32 @@ class RealityDataSource {
101
101
  const contextShareKey = { provider, format, id: containerName };
102
102
  return contextShareKey;
103
103
  }
104
+ static createKeyFromOrbitGtBlobProps(orbitGtBlob, inputProvider, inputFormat) {
105
+ const format = inputFormat ? inputFormat : core_common_1.RealityDataFormat.OPC;
106
+ if (orbitGtBlob.blobFileName && orbitGtBlob.blobFileName.toLowerCase().startsWith("http")) {
107
+ return RealityDataSource.createFromBlobUrl(orbitGtBlob.blobFileName, inputProvider, format);
108
+ }
109
+ else if (orbitGtBlob.rdsUrl) {
110
+ return RealityDataSource.createRealityDataSourceKeyFromUrl(orbitGtBlob.rdsUrl, inputProvider, format);
111
+ }
112
+ const provider = inputProvider ? inputProvider : core_common_1.RealityDataProvider.OrbitGtBlob;
113
+ const id = `${orbitGtBlob.accountName}:${orbitGtBlob.containerName}:${orbitGtBlob.blobFileName}:?${orbitGtBlob.sasToken}`;
114
+ return { provider, format, id };
115
+ }
116
+ static createOrbitGtBlobPropsFromKey(rdSourceKey) {
117
+ if (rdSourceKey.provider !== core_common_1.RealityDataProvider.OrbitGtBlob)
118
+ return undefined;
119
+ const splitIds = rdSourceKey.id.split(":");
120
+ const sasTokenIndex = rdSourceKey.id.indexOf(":?");
121
+ const sasToken = rdSourceKey.id.substr(sasTokenIndex + 2);
122
+ const orbitGtBlob = {
123
+ accountName: splitIds[0],
124
+ containerName: splitIds[1],
125
+ blobFileName: splitIds[2],
126
+ sasToken,
127
+ };
128
+ return orbitGtBlob;
129
+ }
104
130
  /** Construct a new reality data source.
105
131
  * @param props JSON representation of the reality data source
106
132
  */
@@ -1 +1 @@
1
- {"version":3,"file":"RealityDataSource.js","sourceRoot":"","sources":["../../src/RealityDataSource.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\nimport { Guid, GuidString, Logger } from \"@itwin/core-bentley\";\r\nimport { RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { IModelApp } from \"./IModelApp\";\r\n\r\n/** Utility function to convert a RealityDataSourceKey into its string representation\r\n* @alpha\r\n*/\r\nexport function realityDataSourceKeyToString(rdSourceKey: RealityDataSourceKey): string {\r\n return `${rdSourceKey.provider}:${rdSourceKey.format}:${rdSourceKey.id}:${rdSourceKey.iTwinId}`;\r\n}\r\n\r\n/** This class provides access to the reality data provider services.\r\n* @alpha\r\n*/\r\nexport class RealityDataSource {\r\n public readonly rdSourceKey: RealityDataSourceKey;\r\n /** The URL that supplies the 3d tiles for displaying the reality model. */\r\n private _tilesetUrl: string | undefined;\r\n private _isUrlResolved: boolean = false;\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n protected constructor(props: RealityDataSourceProps) {\r\n this.rdSourceKey = props.sourceKey;\r\n this._isUrlResolved=false;\r\n }\r\n public static createRealityDataSourceKeyFromUrl(tilesetUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n let format = inputFormat ? inputFormat : RealityDataFormat.ThreeDTile;\r\n if (tilesetUrl.includes(\"$CesiumIonAsset=\")) {\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.CesiumIonAsset;\r\n const cesiumIonAssetKey: RealityDataSourceKey = { provider, format, id: tilesetUrl };\r\n return cesiumIonAssetKey;\r\n }\r\n\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n const invalidUrlKey: RealityDataSourceKey = { provider: RealityDataProvider.TilesetUrl, format, id: tilesetUrl };\r\n return invalidUrlKey;\r\n }\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isOPC = attUrl.pathname.match(\".opc*\") !== null;\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n let projectId: string | undefined;\r\n const projectIdSection = urlParts1.find((val: string) => val.includes(\"--\"));\r\n if (projectIdSection)\r\n projectId = projectIdSection.split(\"--\")[1];\r\n // Make sure the url to compare are REALITYMESH3DTILES url, otherwise, compare the url directly\r\n if (isRDSUrl || isOPC) {\r\n // Make sure the reality data id are the same\r\n const guid1 = urlParts1.find(Guid.isGuid);\r\n if (guid1 !== undefined) {\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.ContextShare;\r\n format = inputFormat ? inputFormat : isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: guid1, iTwinId: projectId };\r\n return contextShareKey;\r\n }\r\n }\r\n }\r\n\r\n // default to tileSetUrl\r\n const provider2 = inputProvider ? inputProvider : RealityDataProvider.TilesetUrl;\r\n const urlKey: RealityDataSourceKey = { provider: provider2, format, id: tilesetUrl };\r\n return urlKey;\r\n }\r\n public static createFromBlobUrl(blobUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n let format = inputFormat ? inputFormat : RealityDataFormat.ThreeDTile;\r\n let provider = inputProvider ? inputProvider : RealityDataProvider.TilesetUrl;\r\n const url = new URL(blobUrl);\r\n\r\n // If we cannot interpret that url pass in parameter we just fallback to old implementation\r\n if(!url.pathname)\r\n return { provider, format, id: blobUrl };\r\n\r\n // const accountName = url.hostname.split(\".\")[0];\r\n let containerName= \"\";\r\n if (url.pathname) {\r\n const pathSplit = url.pathname.split(\"/\");\r\n containerName = pathSplit[1];\r\n }\r\n\r\n // const blobFileName = `/${pathSplit[2]}`;\r\n // const sasToken = url.search.substr(1);\r\n const isOPC = url.pathname.match(\".opc*\") !== null;\r\n provider = inputProvider ? inputProvider : RealityDataProvider.ContextShare;\r\n format = inputFormat ? inputFormat : isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: containerName };\r\n return contextShareKey;\r\n }\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n public static fromProps(props: RealityDataSourceProps): RealityDataSource {\r\n return new RealityDataSource(props);\r\n }\r\n public get isContextShare() {\r\n return (this.rdSourceKey.provider === RealityDataProvider.ContextShare);\r\n }\r\n public get realityDataId(): string | undefined {\r\n const realityDataId = this.isContextShare ? this.rdSourceKey.id : undefined;\r\n return realityDataId;\r\n }\r\n public get iTwinId(): string | undefined {\r\n return this.rdSourceKey.iTwinId;\r\n }\r\n\r\n /**\r\n * This method returns the URL to access the actual 3d tiles from the service provider.\r\n * @returns string containing the URL to reality data.\r\n */\r\n public async getServiceUrl(iTwinId: GuidString | undefined): Promise<string | undefined> {\r\n // If url was not resolved - resolve it\r\n if (this.isContextShare && !this._isUrlResolved) {\r\n const rdSourceKey = this.rdSourceKey;\r\n // we need to resolve tilesetURl from realityDataId and iTwinId\r\n if (undefined === IModelApp.realityDataAccess)\r\n throw new Error(\"Missing an implementation of RealityDataAccess on IModelApp, it is required to access reality data. Please provide an implementation to the IModelApp.startup using IModelAppOptions.realityDataAccess.\");\r\n try {\r\n const resolvedITwinId = iTwinId ? iTwinId : rdSourceKey.iTwinId;\r\n\r\n this._tilesetUrl = await IModelApp.realityDataAccess.getRealityDataUrl(resolvedITwinId, rdSourceKey.id);\r\n this._isUrlResolved=true;\r\n } catch (e) {\r\n const errMsg = `Error getting URL from ContextShare using realityDataId=${rdSourceKey.id} and iTwinId=${iTwinId}`;\r\n Logger.logError(FrontendLoggerCategory.RealityData, errMsg);\r\n }\r\n } else if (this.rdSourceKey.provider === RealityDataProvider.TilesetUrl || this.rdSourceKey.provider === RealityDataProvider.CesiumIonAsset) {\r\n this._tilesetUrl = this.rdSourceKey.id;\r\n }\r\n return this._tilesetUrl;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityDataSource.js","sourceRoot":"","sources":["../../src/RealityDataSource.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\nimport { Guid, GuidString, Logger } from \"@itwin/core-bentley\";\r\nimport { OrbitGtBlobProps, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { IModelApp } from \"./IModelApp\";\r\n\r\n/** Utility function to convert a RealityDataSourceKey into its string representation\r\n* @alpha\r\n*/\r\nexport function realityDataSourceKeyToString(rdSourceKey: RealityDataSourceKey): string {\r\n return `${rdSourceKey.provider}:${rdSourceKey.format}:${rdSourceKey.id}:${rdSourceKey.iTwinId}`;\r\n}\r\n\r\n/** This class provides access to the reality data provider services.\r\n* @alpha\r\n*/\r\nexport class RealityDataSource {\r\n public readonly rdSourceKey: RealityDataSourceKey;\r\n /** The URL that supplies the 3d tiles for displaying the reality model. */\r\n private _tilesetUrl: string | undefined;\r\n private _isUrlResolved: boolean = false;\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n protected constructor(props: RealityDataSourceProps) {\r\n this.rdSourceKey = props.sourceKey;\r\n this._isUrlResolved=false;\r\n }\r\n public static createRealityDataSourceKeyFromUrl(tilesetUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n let format = inputFormat ? inputFormat : RealityDataFormat.ThreeDTile;\r\n if (tilesetUrl.includes(\"$CesiumIonAsset=\")) {\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.CesiumIonAsset;\r\n const cesiumIonAssetKey: RealityDataSourceKey = { provider, format, id: tilesetUrl };\r\n return cesiumIonAssetKey;\r\n }\r\n\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n const invalidUrlKey: RealityDataSourceKey = { provider: RealityDataProvider.TilesetUrl, format, id: tilesetUrl };\r\n return invalidUrlKey;\r\n }\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isOPC = attUrl.pathname.match(\".opc*\") !== null;\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n let projectId: string | undefined;\r\n const projectIdSection = urlParts1.find((val: string) => val.includes(\"--\"));\r\n if (projectIdSection)\r\n projectId = projectIdSection.split(\"--\")[1];\r\n // Make sure the url to compare are REALITYMESH3DTILES url, otherwise, compare the url directly\r\n if (isRDSUrl || isOPC) {\r\n // Make sure the reality data id are the same\r\n const guid1 = urlParts1.find(Guid.isGuid);\r\n if (guid1 !== undefined) {\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.ContextShare;\r\n format = inputFormat ? inputFormat : isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: guid1, iTwinId: projectId };\r\n return contextShareKey;\r\n }\r\n }\r\n }\r\n\r\n // default to tileSetUrl\r\n const provider2 = inputProvider ? inputProvider : RealityDataProvider.TilesetUrl;\r\n const urlKey: RealityDataSourceKey = { provider: provider2, format, id: tilesetUrl };\r\n return urlKey;\r\n }\r\n public static createFromBlobUrl(blobUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n let format = inputFormat ? inputFormat : RealityDataFormat.ThreeDTile;\r\n let provider = inputProvider ? inputProvider : RealityDataProvider.TilesetUrl;\r\n const url = new URL(blobUrl);\r\n\r\n // If we cannot interpret that url pass in parameter we just fallback to old implementation\r\n if(!url.pathname)\r\n return { provider, format, id: blobUrl };\r\n\r\n // const accountName = url.hostname.split(\".\")[0];\r\n let containerName= \"\";\r\n if (url.pathname) {\r\n const pathSplit = url.pathname.split(\"/\");\r\n containerName = pathSplit[1];\r\n }\r\n\r\n // const blobFileName = `/${pathSplit[2]}`;\r\n // const sasToken = url.search.substr(1);\r\n const isOPC = url.pathname.match(\".opc*\") !== null;\r\n provider = inputProvider ? inputProvider : RealityDataProvider.ContextShare;\r\n format = inputFormat ? inputFormat : isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: containerName };\r\n return contextShareKey;\r\n }\r\n public static createKeyFromOrbitGtBlobProps(orbitGtBlob: OrbitGtBlobProps, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const format = inputFormat ? inputFormat : RealityDataFormat.OPC;\r\n if(orbitGtBlob.blobFileName && orbitGtBlob.blobFileName.toLowerCase().startsWith(\"http\")) {\r\n return RealityDataSource.createFromBlobUrl(orbitGtBlob.blobFileName,inputProvider,format);\r\n } else if (orbitGtBlob.rdsUrl) {\r\n return RealityDataSource.createRealityDataSourceKeyFromUrl(orbitGtBlob.rdsUrl,inputProvider,format);\r\n }\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.OrbitGtBlob;\r\n const id = `${orbitGtBlob.accountName}:${orbitGtBlob.containerName}:${orbitGtBlob.blobFileName}:?${orbitGtBlob.sasToken}`;\r\n return { provider, format, id };\r\n }\r\n public static createOrbitGtBlobPropsFromKey(rdSourceKey: RealityDataSourceKey): OrbitGtBlobProps | undefined {\r\n if (rdSourceKey.provider !== RealityDataProvider.OrbitGtBlob)\r\n return undefined;\r\n const splitIds = rdSourceKey.id.split(\":\");\r\n const sasTokenIndex = rdSourceKey.id.indexOf(\":?\");\r\n const sasToken = rdSourceKey.id.substr(sasTokenIndex+2);\r\n const orbitGtBlob: OrbitGtBlobProps = {\r\n accountName: splitIds[0],\r\n containerName: splitIds[1],\r\n blobFileName: splitIds[2],\r\n sasToken,\r\n };\r\n\r\n return orbitGtBlob;\r\n }\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n public static fromProps(props: RealityDataSourceProps): RealityDataSource {\r\n return new RealityDataSource(props);\r\n }\r\n public get isContextShare() {\r\n return (this.rdSourceKey.provider === RealityDataProvider.ContextShare);\r\n }\r\n public get realityDataId(): string | undefined {\r\n const realityDataId = this.isContextShare ? this.rdSourceKey.id : undefined;\r\n return realityDataId;\r\n }\r\n public get iTwinId(): string | undefined {\r\n return this.rdSourceKey.iTwinId;\r\n }\r\n\r\n /**\r\n * This method returns the URL to access the actual 3d tiles from the service provider.\r\n * @returns string containing the URL to reality data.\r\n */\r\n public async getServiceUrl(iTwinId: GuidString | undefined): Promise<string | undefined> {\r\n // If url was not resolved - resolve it\r\n if (this.isContextShare && !this._isUrlResolved) {\r\n const rdSourceKey = this.rdSourceKey;\r\n // we need to resolve tilesetURl from realityDataId and iTwinId\r\n if (undefined === IModelApp.realityDataAccess)\r\n throw new Error(\"Missing an implementation of RealityDataAccess on IModelApp, it is required to access reality data. Please provide an implementation to the IModelApp.startup using IModelAppOptions.realityDataAccess.\");\r\n try {\r\n const resolvedITwinId = iTwinId ? iTwinId : rdSourceKey.iTwinId;\r\n\r\n this._tilesetUrl = await IModelApp.realityDataAccess.getRealityDataUrl(resolvedITwinId, rdSourceKey.id);\r\n this._isUrlResolved=true;\r\n } catch (e) {\r\n const errMsg = `Error getting URL from ContextShare using realityDataId=${rdSourceKey.id} and iTwinId=${iTwinId}`;\r\n Logger.logError(FrontendLoggerCategory.RealityData, errMsg);\r\n }\r\n } else if (this.rdSourceKey.provider === RealityDataProvider.TilesetUrl || this.rdSourceKey.provider === RealityDataProvider.CesiumIonAsset) {\r\n this._tilesetUrl = this.rdSourceKey.id;\r\n }\r\n return this._tilesetUrl;\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module WebGL
3
3
  */
4
- import { HiddenLine, ViewFlags } from "@itwin/core-common";
4
+ import { HiddenLine, RenderMode, ViewFlags } from "@itwin/core-common";
5
5
  import { FloatRgba } from "./FloatRGBA";
6
6
  import { OvrFlags, RenderPass } from "./RenderFlags";
7
7
  /** Controls symbology of edges based on ViewFlags and HiddenLine.Settings. Typically these come from the Target's
@@ -28,6 +28,7 @@ export declare class EdgeSettings {
28
28
  getLineCode(pass: RenderPass, vf: ViewFlags): number | undefined;
29
29
  getWeight(pass: RenderPass, vf: ViewFlags): number | undefined;
30
30
  private clear;
31
+ wantContrastingColor(renderMode: RenderMode): boolean;
31
32
  private isOverridden;
32
33
  }
33
34
  //# sourceMappingURL=EdgeSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeSettings.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/EdgeSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAY,UAAU,EAAc,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAKrD;;;GAGG;AACH,qBAAa,YAAY;IACvB,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAAK;WAErB,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,GAAG,SAAS,GAAG,YAAY;IAMnE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI;IA8BlD,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,GAAG,QAAQ;IAiBjE,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAEM,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;IAU9C,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAOhE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAOrE,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,YAAY;CAUrB"}
1
+ {"version":3,"file":"EdgeSettings.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/EdgeSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAY,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGrD;;;GAGG;AACH,qBAAa,YAAY;IACvB,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAAK;WAErB,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,GAAG,SAAS,GAAG,YAAY;IAMnE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,GAAG,SAAS,GAAG,IAAI;IA8BlD,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,GAAG,QAAQ;IAiBjE,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAEM,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;IAI9C,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAOhE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAOrE,OAAO,CAAC,KAAK;IAON,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAI5D,OAAO,CAAC,YAAY;CAUrB"}
@@ -11,7 +11,6 @@ exports.EdgeSettings = void 0;
11
11
  const core_common_1 = require("@itwin/core-common");
12
12
  const FloatRGBA_1 = require("./FloatRGBA");
13
13
  const LineCode_1 = require("./LineCode");
14
- const white = FloatRGBA_1.FloatRgba.fromColorDef(core_common_1.ColorDef.white);
15
14
  /** Controls symbology of edges based on ViewFlags and HiddenLine.Settings. Typically these come from the Target's
16
15
  * RenderPlan, but a GraphicBranch may override those settings.
17
16
  * @internal
@@ -71,11 +70,6 @@ class EdgeSettings {
71
70
  return this._transparencyThreshold;
72
71
  }
73
72
  getColor(vf) {
74
- // In SolidFill mode, if edge color is not overridden, the edges don't use the element's line color.
75
- if (core_common_1.RenderMode.SolidFill === vf.renderMode && !this._colorOverridden) {
76
- // ###TODO? MicroStation seems to compute some contrast with fill and/or background color. Use white for now.
77
- return white;
78
- }
79
73
  return this._colorOverridden && this.isOverridden(vf) ? this._color : undefined;
80
74
  }
81
75
  getLineCode(pass, vf) {
@@ -94,6 +88,9 @@ class EdgeSettings {
94
88
  this._hiddenLineCode = this._hiddenWeight = undefined;
95
89
  this._transparencyThreshold = 0;
96
90
  }
91
+ wantContrastingColor(renderMode) {
92
+ return !this._colorOverridden && core_common_1.RenderMode.SolidFill === renderMode;
93
+ }
97
94
  isOverridden(vf) {
98
95
  switch (vf.renderMode) {
99
96
  case core_common_1.RenderMode.Wireframe: