@itwin/core-frontend 3.3.0-dev.2 → 3.3.0-dev.22

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 (140) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  3. package/lib/cjs/AccuSnap.js +56 -49
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/IModelApp.d.ts.map +1 -1
  6. package/lib/cjs/IModelApp.js +1 -1
  7. package/lib/cjs/IModelApp.js.map +1 -1
  8. package/lib/cjs/ViewRect.d.ts +5 -3
  9. package/lib/cjs/ViewRect.d.ts.map +1 -1
  10. package/lib/cjs/ViewRect.js +11 -7
  11. package/lib/cjs/ViewRect.js.map +1 -1
  12. package/lib/cjs/Viewport.d.ts +1 -1
  13. package/lib/cjs/Viewport.d.ts.map +1 -1
  14. package/lib/cjs/Viewport.js +2 -2
  15. package/lib/cjs/Viewport.js.map +1 -1
  16. package/lib/cjs/extension/ExtensionRuntime.js +165 -158
  17. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  18. package/lib/cjs/extension/providers/ExtensionLoadScript.d.ts +6 -4
  19. package/lib/cjs/extension/providers/ExtensionLoadScript.d.ts.map +1 -1
  20. package/lib/cjs/extension/providers/ExtensionLoadScript.js +16 -33
  21. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  22. package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts +3 -0
  23. package/lib/cjs/extension/providers/ServiceExtensionProvider.d.ts.map +1 -1
  24. package/lib/cjs/extension/providers/ServiceExtensionProvider.js +2 -2
  25. package/lib/cjs/extension/providers/ServiceExtensionProvider.js.map +1 -1
  26. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  27. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +3 -1
  28. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  29. package/lib/cjs/render/webgl/Target.d.ts +1 -1
  30. package/lib/cjs/render/webgl/Target.js +2 -2
  31. package/lib/cjs/render/webgl/Target.js.map +1 -1
  32. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  33. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -2
  34. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  35. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  36. package/lib/cjs/tile/RealityModelTileTree.js +2 -1
  37. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  38. package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -2
  39. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  40. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  41. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  42. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +5 -2
  43. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  44. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  45. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  46. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +5 -2
  47. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  48. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  49. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  50. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  51. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  52. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  53. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  54. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +5 -2
  55. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  56. package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -2
  57. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  58. package/lib/cjs/tile/map/ImageryTileTree.js +6 -2
  59. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  60. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +1 -1
  61. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  62. package/lib/cjs/tile/map/MapLayerImageryProvider.js +1 -1
  63. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  64. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  65. package/lib/cjs/tile/map/MapTileTree.js +3 -5
  66. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  67. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +2 -1
  68. package/lib/cjs/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  69. package/lib/cjs/tile/map/TerrainMeshProvider.js +1 -1
  70. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  71. package/lib/esm/AccuSnap.d.ts.map +1 -1
  72. package/lib/esm/AccuSnap.js +56 -49
  73. package/lib/esm/AccuSnap.js.map +1 -1
  74. package/lib/esm/IModelApp.d.ts.map +1 -1
  75. package/lib/esm/IModelApp.js +2 -2
  76. package/lib/esm/IModelApp.js.map +1 -1
  77. package/lib/esm/ViewRect.d.ts +5 -3
  78. package/lib/esm/ViewRect.d.ts.map +1 -1
  79. package/lib/esm/ViewRect.js +11 -7
  80. package/lib/esm/ViewRect.js.map +1 -1
  81. package/lib/esm/Viewport.d.ts +1 -1
  82. package/lib/esm/Viewport.d.ts.map +1 -1
  83. package/lib/esm/Viewport.js +2 -2
  84. package/lib/esm/Viewport.js.map +1 -1
  85. package/lib/esm/extension/ExtensionRuntime.js +168 -161
  86. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  87. package/lib/esm/extension/providers/ExtensionLoadScript.d.ts +6 -4
  88. package/lib/esm/extension/providers/ExtensionLoadScript.d.ts.map +1 -1
  89. package/lib/esm/extension/providers/ExtensionLoadScript.js +14 -31
  90. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  91. package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts +3 -0
  92. package/lib/esm/extension/providers/ServiceExtensionProvider.d.ts.map +1 -1
  93. package/lib/esm/extension/providers/ServiceExtensionProvider.js +2 -2
  94. package/lib/esm/extension/providers/ServiceExtensionProvider.js.map +1 -1
  95. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  96. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +3 -1
  97. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  98. package/lib/esm/render/webgl/Target.d.ts +1 -1
  99. package/lib/esm/render/webgl/Target.js +2 -2
  100. package/lib/esm/render/webgl/Target.js.map +1 -1
  101. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  102. package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -2
  103. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  104. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  105. package/lib/esm/tile/RealityModelTileTree.js +2 -1
  106. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  107. package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -2
  108. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  109. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +1 -1
  110. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  111. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +5 -2
  112. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  113. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts +1 -1
  114. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.d.ts.map +1 -1
  115. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js +5 -2
  116. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  117. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts +1 -1
  118. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  119. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
  120. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  121. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts +1 -1
  122. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.d.ts.map +1 -1
  123. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js +5 -2
  124. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  125. package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -2
  126. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  127. package/lib/esm/tile/map/ImageryTileTree.js +6 -2
  128. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  129. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +1 -1
  130. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  131. package/lib/esm/tile/map/MapLayerImageryProvider.js +1 -1
  132. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  133. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  134. package/lib/esm/tile/map/MapTileTree.js +3 -5
  135. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  136. package/lib/esm/tile/map/TerrainMeshProvider.d.ts +2 -1
  137. package/lib/esm/tile/map/TerrainMeshProvider.d.ts.map +1 -1
  138. package/lib/esm/tile/map/TerrainMeshProvider.js +1 -1
  139. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  140. package/package.json +21 -21
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceExtensionProvider.js","sourceRoot":"","sources":["../../../../src/extension/providers/ServiceExtensionProvider.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\nimport { rcompare } from \"semver\";\r\n\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { loadScript } from \"./ExtensionLoadScript\";\r\nimport { ExtensionClient, ExtensionMetadata } from \"./ExtensionServiceClient\";\r\n\r\nimport type {\r\n ExtensionManifest, ExtensionProvider,\r\n} from \"../Extension\";\r\n\r\n/**\r\n * Required props for an extension uploaded to Bentley's Extension Service\r\n * @alpha\r\n */\r\nexport interface ServiceExtensionProviderProps {\r\n /** Name of the uploaded extension */\r\n name: string;\r\n /** Version number (Semantic Versioning) */\r\n version: string;\r\n /** iTwin Id */\r\n iTwinId: string;\r\n}\r\n\r\n/**\r\n * Implements an Extension from the Extension Service via the ServiceExtensionProviderProps.\r\n * Service extensions are extensions hosted on Bentley's Extension Service.\r\n * The execute() and getManifest() methods are used by the ExtensionAdmin to load and execute the extension.\r\n * @alpha\r\n */\r\nexport class ServiceExtensionProvider implements ExtensionProvider {\r\n\r\n constructor(private readonly _props: ServiceExtensionProviderProps) { }\r\n\r\n /** Returns the extension's manifest (package.json) from the ExtensionService.\r\n * Throws an error if the manifest cannot be found.\r\n */\r\n public async getManifest(): Promise<ExtensionManifest> {\r\n const loadedExtensionProps = await this._getExtensionFiles(this._props);\r\n if (!loadedExtensionProps)\r\n throw new Error(`Error loading manifest for Extension ${this._props.name}.`);\r\n\r\n const doesUrlExist = await this._exists(loadedExtensionProps.manifest.url);\r\n if (!doesUrlExist)\r\n throw new Error(`Manifest at ${loadedExtensionProps.manifest.url} could not be found.`);\r\n\r\n return (await fetch(loadedExtensionProps.manifest.url)).json();\r\n }\r\n\r\n /** Executes the javascript main file (the bundled index.js) of an extension from the Extension Service.\r\n * Throws an error if the file cannot be found.\r\n */\r\n public async execute(): Promise<any> {\r\n const loadedExtensionProps = await this._getExtensionFiles(this._props);\r\n if (!loadedExtensionProps)\r\n throw new Error(`Error executing Extension ${this._props.name}.`);\r\n\r\n const doesUrlExist = await this._exists(loadedExtensionProps.main.url);\r\n if (!doesUrlExist)\r\n throw new Error(`Main javascript file at ${loadedExtensionProps.main.url} could not be found.`);\r\n\r\n return loadScript(loadedExtensionProps.main.url);\r\n }\r\n\r\n /** Checks if url actually exists */\r\n private async _exists(url: string): Promise<boolean> {\r\n let exists = false;\r\n try {\r\n const response = await fetch(url, { method: \"HEAD\" });\r\n if (response.status === 200)\r\n exists = true;\r\n } catch (error) {\r\n exists = false;\r\n }\r\n return exists;\r\n }\r\n\r\n /** Fetches the extension from the ExtensionService.\r\n */\r\n private async _getExtensionFiles(props: ServiceExtensionProviderProps) {\r\n const extensionClient = new ExtensionClient();\r\n\r\n const accessToken = await IModelApp.authorizationClient?.getAccessToken();\r\n if (!accessToken)\r\n return undefined;\r\n\r\n let extensionProps: ExtensionMetadata | undefined;\r\n if (props.version !== undefined)\r\n extensionProps = await extensionClient.getExtensionMetadata(accessToken, props.iTwinId, props.name, props.version);\r\n else {\r\n const propsArr = await extensionClient.getExtensions(accessToken, props.iTwinId, props.name);\r\n extensionProps = propsArr.sort((ext1, ext2) => rcompare(ext1.version, ext2.version, true))[0];\r\n }\r\n\r\n if (extensionProps === undefined || extensionProps.files.length < 1)\r\n return undefined;\r\n\r\n const manifest = extensionProps.files.find((f) => f.url.indexOf(\"package.json?\") > -1);\r\n const main = extensionProps.files.find((f) => f.url.indexOf(\"index.js?\") > -1);\r\n if (!manifest || !main)\r\n return undefined;\r\n\r\n return { manifest, main };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ServiceExtensionProvider.js","sourceRoot":"","sources":["../../../../src/extension/providers/ServiceExtensionProvider.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\nimport { rcompare } from \"semver\";\r\n\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { loadScript } from \"./ExtensionLoadScript\";\r\nimport { ExtensionClient, ExtensionMetadata } from \"./ExtensionServiceClient\";\r\n\r\nimport type {\r\n ExtensionManifest, ExtensionProvider,\r\n} from \"../Extension\";\r\nimport type { AccessToken } from \"@itwin/core-bentley\";\r\n\r\n/**\r\n * Required props for an extension uploaded to Bentley's Extension Service\r\n * @alpha\r\n */\r\nexport interface ServiceExtensionProviderProps {\r\n /** Name of the uploaded extension */\r\n name: string;\r\n /** Version number (Semantic Versioning) */\r\n version: string;\r\n /** iTwin Id */\r\n iTwinId: string;\r\n /** @internal */\r\n getAccessToken?: () => Promise<AccessToken>;\r\n}\r\n\r\n/**\r\n * Implements an Extension from the Extension Service via the ServiceExtensionProviderProps.\r\n * Service extensions are extensions hosted on Bentley's Extension Service.\r\n * The execute() and getManifest() methods are used by the ExtensionAdmin to load and execute the extension.\r\n * @alpha\r\n */\r\nexport class ServiceExtensionProvider implements ExtensionProvider {\r\n\r\n constructor(private readonly _props: ServiceExtensionProviderProps) { }\r\n\r\n /** Returns the extension's manifest (package.json) from the ExtensionService.\r\n * Throws an error if the manifest cannot be found.\r\n */\r\n public async getManifest(): Promise<ExtensionManifest> {\r\n const loadedExtensionProps = await this._getExtensionFiles(this._props);\r\n if (!loadedExtensionProps)\r\n throw new Error(`Error loading manifest for Extension ${this._props.name}.`);\r\n\r\n const doesUrlExist = await this._exists(loadedExtensionProps.manifest.url);\r\n if (!doesUrlExist)\r\n throw new Error(`Manifest at ${loadedExtensionProps.manifest.url} could not be found.`);\r\n\r\n return (await fetch(loadedExtensionProps.manifest.url)).json();\r\n }\r\n\r\n /** Executes the javascript main file (the bundled index.js) of an extension from the Extension Service.\r\n * Throws an error if the file cannot be found.\r\n */\r\n public async execute(): Promise<any> {\r\n const loadedExtensionProps = await this._getExtensionFiles(this._props);\r\n if (!loadedExtensionProps)\r\n throw new Error(`Error executing Extension ${this._props.name}.`);\r\n\r\n const doesUrlExist = await this._exists(loadedExtensionProps.main.url);\r\n if (!doesUrlExist)\r\n throw new Error(`Main javascript file at ${loadedExtensionProps.main.url} could not be found.`);\r\n\r\n return loadScript(loadedExtensionProps.main.url);\r\n }\r\n\r\n /** Checks if url actually exists */\r\n private async _exists(url: string): Promise<boolean> {\r\n let exists = false;\r\n try {\r\n const response = await fetch(url, { method: \"HEAD\" });\r\n if (response.status === 200)\r\n exists = true;\r\n } catch (error) {\r\n exists = false;\r\n }\r\n return exists;\r\n }\r\n\r\n /** Fetches the extension from the ExtensionService.\r\n */\r\n private async _getExtensionFiles(props: ServiceExtensionProviderProps) {\r\n const extensionClient = new ExtensionClient();\r\n\r\n const accessToken = await (props.getAccessToken?.() ?? IModelApp.authorizationClient?.getAccessToken());\r\n if (!accessToken)\r\n return undefined;\r\n\r\n let extensionProps: ExtensionMetadata | undefined;\r\n if (props.version !== undefined)\r\n extensionProps = await extensionClient.getExtensionMetadata(accessToken, props.iTwinId, props.name, props.version);\r\n else {\r\n const propsArr = await extensionClient.getExtensions(accessToken, props.iTwinId, props.name);\r\n extensionProps = propsArr.sort((ext1, ext2) => rcompare(ext1.version, ext2.version, true))[0];\r\n }\r\n\r\n if (extensionProps === undefined || extensionProps.files.length < 1)\r\n return undefined;\r\n\r\n const manifest = extensionProps.files.find((f) => f.url.indexOf(\"package.json?\") > -1);\r\n const main = extensionProps.files.find((f) => f.url.indexOf(\"index.js?\") > -1);\r\n if (!manifest || !main)\r\n return undefined;\r\n\r\n return { manifest, main };\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GeometryListBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/render/primitives/geometry/GeometryListBuilder.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,KAAK,EAAgE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAW,cAAc,EAAE,SAAS,EAChJ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAA0B,aAAa,EAAqC,MAAM,oBAAoB,CAAC;AACvH,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAUhD,gBAAgB;AAChB,8BAAsB,mBAAoB,SAAQ,cAAc;IACvD,KAAK,EAAE,mBAAmB,CAAC;IAClC,SAAgB,aAAa,EAAE,aAAa,CAAuB;aAEnD,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,aAAa;gBAErD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,6BAA6B,GAAG,2BAA2B,EAAE,oBAAoB,YAAqB;IAajJ,MAAM,IAAI,aAAa;IAMvB,qBAAqB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;cAI7C,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIpD,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAUnF,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAoBxE,8EAA8E;IACvE,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAOtC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/D,+EAA+E;IACxE,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAIvC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKzD,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAKjC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnD,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIrC,iBAAiB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAIlD,gBAAgB,IAAI,aAAa;IAEjC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,GAAG,aAAa;IACzD,oBAAoB,IAAI,aAAa;IACrC,sBAAsB,IAAI,aAAa;IAC9C,IAAW,iBAAiB,IAAI,aAAa,CAA4D;IAEzG,IAAW,MAAM,IAAI,YAAY,CAA8B;IAExD,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAEhC,OAAO,CAAC,eAAe;CAGxB;AAKD,gBAAgB;AAChB,qBAAa,gBAAiB,SAAQ,mBAAmB;IAChD,UAAU,EAAE,aAAa,EAAE,CAAM;IAEjC,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,aAAa;IAmCxD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;CAM5D"}
1
+ {"version":3,"file":"GeometryListBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/render/primitives/geometry/GeometryListBuilder.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,KAAK,EAAgE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAW,cAAc,EAAE,SAAS,EAChJ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAA0B,aAAa,EAAqC,MAAM,oBAAoB,CAAC;AACvH,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAUhD,gBAAgB;AAChB,8BAAsB,mBAAoB,SAAQ,cAAc;IACvD,KAAK,EAAE,mBAAmB,CAAC;IAClC,SAAgB,aAAa,EAAE,aAAa,CAAuB;aAEnD,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,aAAa;gBAErD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,6BAA6B,GAAG,2BAA2B,EAAE,oBAAoB,YAAqB;IAajJ,MAAM,IAAI,aAAa;IAMvB,qBAAqB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;cAI7C,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIpD,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAUnF,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAoBxE,8EAA8E;IACvE,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAOtC,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/D,+EAA+E;IACxE,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAIvC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKzD,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAKjC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnD,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIrC,iBAAiB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAIlD,gBAAgB,IAAI,aAAa;IAEjC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,GAAG,aAAa;IACzD,oBAAoB,IAAI,aAAa;IACrC,sBAAsB,IAAI,aAAa;IAC9C,IAAW,iBAAiB,IAAI,aAAa,CAA4D;IAEzG,IAAW,MAAM,IAAI,YAAY,CAA8B;IAExD,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAEhC,OAAO,CAAC,eAAe;CAGxB;AAKD,gBAAgB;AAChB,qBAAa,gBAAiB,SAAQ,mBAAmB;IAChD,UAAU,EAAE,aAAa,EAAE,CAAM;IAEjC,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,aAAa;IAqCxD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;CAM5D"}
@@ -135,6 +135,7 @@ class PrimitiveBuilder extends GeometryListBuilder {
135
135
  this.primitives = [];
136
136
  }
137
137
  finishGraphic(accum) {
138
+ var _a;
138
139
  let meshes;
139
140
  let range;
140
141
  let featureTable;
@@ -146,7 +147,8 @@ class PrimitiveBuilder extends GeometryListBuilder {
146
147
  const tolerance = this.computeTolerance(accum);
147
148
  meshes = accum.saveToGraphicList(this.primitives, options, tolerance, this.pickable);
148
149
  if (undefined !== meshes) {
149
- featureTable = meshes.features;
150
+ if ((_a = meshes.features) === null || _a === void 0 ? void 0 : _a.anyDefined)
151
+ featureTable = meshes.features;
150
152
  range = meshes.range;
151
153
  }
152
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GeometryListBuilder.js","sourceRoot":"","sources":["../../../../../src/render/primitives/geometry/GeometryListBuilder.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,wDAE8B;AAC9B,oDAAuH;AACvH,yDAAkH;AAGlH,oDAAiD;AACjD,8CAAgD;AAChD,+DAA4D;AAI5D,SAAS,UAAU,CAAC,KAAgB,EAAE,KAAa;IACjD,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,KAAK;QACvB,KAAK,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gBAAgB;AAChB,MAAsB,mBAAoB,SAAQ,+BAAc;IAM9D,YAAmB,MAAoB,EAAE,OAAoE,EAAE,oBAAoB,GAAG,yBAAS,CAAC,QAAQ;;QACtJ,KAAK,CAAC,OAAO,CAAC,CAAC;QALD,kBAAa,GAAkB,IAAI,2BAAa,EAAE,CAAC;QAMjE,IAAI,CAAC,KAAK,GAAG,IAAI,yCAAmB,CAAC;YACnC,MAAM;YACN,SAAS,EAAE,oBAAoB;YAC/B,yBAAyB,EAAE,MAAA,IAAI,CAAC,aAAa,0CAAE,YAAY;YAC3D,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;SACrD,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC,eAAe,CAAC,IAAI,qBAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAClH,CAAC;IAEM,MAAM;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,qBAAqB,CAAC,aAA4B;QACvD,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAEkB,gBAAgB,CAAC,OAAgB;QAClD,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;IACtC,CAAC;IAEM,QAAQ,CAAC,OAAc,EAAE,SAAkB,EAAE,MAAe,EAAE,MAAc;QACjF,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SACzC;aAAM;YACL,MAAM,GAAG,GAAU,OAAO,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SACrC;IACH,CAAC;IAEM,MAAM,CAAC,OAAc,EAAE,SAAkB,EAAE,MAAe;QAC/D,IAAI,KAAK,CAAC;QACV,IAAI,SAAS,IAAI,MAAM,EAAE;YACvB,KAAK,GAAG,oBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC9B;aAAM;YACL,KAAK,GAAG,oBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC9B;QAED,IAAI,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE;YACvD,MAAM,UAAU,GAAmB,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjG,UAAkB,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,kDAAkD;YAC/F,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACjC;QACD,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1G,IAAI,KAAK,YAAY,oBAAI;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;;YAEhE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,8EAA8E;IACvE,aAAa,CAAC,MAAiB;QACpC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;;YAEjF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpF,CAAC;IAEM,eAAe,CAAC,MAAiB,EAAE,MAAc;QACtD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,+EAA+E;IACxE,cAAc,CAAC,MAAiB;QACrC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC;IAEM,gBAAgB,CAAC,MAAiB,EAAE,MAAc;QACvD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,QAAQ,CAAC,MAAiB;QAC/B,MAAM,IAAI,GAAG,oBAAI,CAAC,MAAM,CAAC,4BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAEM,UAAU,CAAC,MAAiB,EAAE,MAAc;QACjD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAEM,OAAO,CAAC,IAAU;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;IAEM,OAAO,CAAC,IAAU;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAEM,WAAW,CAAC,QAAkB;QACnC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAA2B,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnG,CAAC;IAEM,iBAAiB,CAAC,SAAyB;QAChD,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IAEM,gBAAgB,KAAoB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEhE,gBAAgB,CAAC,IAAwB,IAAmB,OAAO,6BAAa,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3H,oBAAoB,KAAoB,OAAO,6BAAa,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1J,sBAAsB,KAAoB,OAAO,6BAAa,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAW,iBAAiB,KAAoB,OAAO,6BAAa,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAEzG,IAAW,MAAM,KAAmB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAExD,GAAG,CAAC,IAAc,IAAU,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE1D,eAAe,CAAC,QAAuB;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;CACF;AA9HD,kDA8HC;AAED,gFAAgF;AAChF,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,mBAAmB;IAAzD;;QACS,eAAU,GAAoB,EAAE,CAAC;IA2C1C,CAAC;IAzCQ,aAAa,CAAC,KAA0B;QAC7C,IAAI,MAA4B,CAAC;QACjC,IAAI,KAA0B,CAAC;QAC/B,IAAI,YAAsC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,yIAAyI;YACzI,iHAAiH;YACjH,wFAAwF;YACxF,MAAM,OAAO,GAAG,4BAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrF,IAAI,SAAS,KAAK,MAAM,EAAE;gBACxB,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAC/B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;aACtB;SACF;QAED,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAmB,CAAC;QAC7I,IAAI,SAAS,KAAK,YAAY,EAAE;YAC9B,MAAM,UAAU,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,uBAAO,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC5C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,gCAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;SACnH;QAED,IAAI,gBAAgB,IAAI,KAAK,EAAE;YAC7B,gBAAgB,GAAG,KAAK,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC3E,gBAAgB,GAAG,IAAI,CAAC;SACzB;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,gBAAgB,CAAC,KAA0B;QAChD,OAAO,IAAI,CAAC,sBAAsB,CAAC;YACjC,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE;SACpD,CAAC,CAAC;IACL,CAAC;CACF;AA5CD,4CA4CC","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 {\r\n Arc3d, CurvePrimitive, IndexedPolyface, LineSegment3d, LineString3d, Loop, Path, Point2d, Point3d, Polyface, Range3d, SolidPrimitive, Transform,\r\n} from \"@itwin/core-geometry\";\r\nimport { Feature, FeatureTable, Gradient, GraphicParams, PackedFeatureTable, RenderTexture } from \"@itwin/core-common\";\r\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"../../GraphicBuilder\";\r\nimport { RenderGraphic } from \"../../RenderGraphic\";\r\nimport { RenderSystem } from \"../../RenderSystem\";\r\nimport { DisplayParams } from \"../DisplayParams\";\r\nimport { GeometryOptions } from \"../Primitives\";\r\nimport { GeometryAccumulator } from \"./GeometryAccumulator\";\r\nimport { Geometry } from \"./GeometryPrimitives\";\r\nimport { MeshList } from \"../mesh/MeshPrimitives\";\r\n\r\nfunction copy2dTo3d(pts2d: Point2d[], depth: number): Point3d[] {\r\n const pts3d: Point3d[] = [];\r\n for (const point of pts2d)\r\n pts3d.push(Point3d.create(point.x, point.y, depth));\r\n return pts3d;\r\n}\r\n\r\n/** @internal */\r\nexport abstract class GeometryListBuilder extends GraphicBuilder {\r\n public accum: GeometryAccumulator;\r\n public readonly graphicParams: GraphicParams = new GraphicParams();\r\n\r\n public abstract finishGraphic(accum: GeometryAccumulator): RenderGraphic; // Invoked by Finish() to obtain the finished RenderGraphic.\r\n\r\n public constructor(system: RenderSystem, options: ViewportGraphicBuilderOptions | CustomGraphicBuilderOptions, accumulatorTransform = Transform.identity) {\r\n super(options);\r\n this.accum = new GeometryAccumulator({\r\n system,\r\n transform: accumulatorTransform,\r\n analysisStyleDisplacement: this.analysisStyle?.displacement,\r\n viewIndependentOrigin: options.viewIndependentOrigin,\r\n });\r\n\r\n if (this.pickable)\r\n this.activateFeature(new Feature(this.pickable.id, this.pickable.subCategoryId, this.pickable.geometryClass));\r\n }\r\n\r\n public finish(): RenderGraphic {\r\n const graphic = this.finishGraphic(this.accum);\r\n this.accum.clear();\r\n return graphic;\r\n }\r\n\r\n public activateGraphicParams(graphicParams: GraphicParams): void {\r\n graphicParams.clone(this.graphicParams);\r\n }\r\n\r\n protected override _activateFeature(feature: Feature): void {\r\n this.accum.currentFeature = feature;\r\n }\r\n\r\n public addArc2d(ellipse: Arc3d, isEllipse: boolean, filled: boolean, zDepth: number): void {\r\n if (0.0 === zDepth) {\r\n this.addArc(ellipse, isEllipse, filled);\r\n } else {\r\n const ell: Arc3d = ellipse;\r\n ell.center.z = zDepth;\r\n this.addArc(ell, isEllipse, filled);\r\n }\r\n }\r\n\r\n public addArc(ellipse: Arc3d, isEllipse: boolean, filled: boolean): void {\r\n let curve;\r\n if (isEllipse || filled) {\r\n curve = Loop.create(ellipse);\r\n } else {\r\n curve = Path.create(ellipse);\r\n }\r\n\r\n if (filled && !isEllipse && !ellipse.sweep.isFullCircle) {\r\n const gapSegment: CurvePrimitive = LineSegment3d.create(ellipse.startPoint(), ellipse.endPoint());\r\n (gapSegment as any).markerBits = 0x00010000; // Set the CURVE_PRIMITIVE_BIT_GapCurve marker bit\r\n curve.children.push(gapSegment);\r\n }\r\n const displayParams = curve.isAnyRegionType ? this.getMeshDisplayParams() : this.getLinearDisplayParams();\r\n if (curve instanceof Loop)\r\n this.accum.addLoop(curve, displayParams, this.placement, false);\r\n else\r\n this.accum.addPath(curve, displayParams, this.placement, false);\r\n }\r\n\r\n /** take ownership of input points and add as a line string to this builder */\r\n public addLineString(points: Point3d[]): void {\r\n if (2 === points.length && points[0].isAlmostEqual(points[1]))\r\n this.accum.addPointString(points, this.getLinearDisplayParams(), this.placement);\r\n else\r\n this.accum.addLineString(points, this.getLinearDisplayParams(), this.placement);\r\n }\r\n\r\n public addLineString2d(points: Point2d[], zDepth: number): void {\r\n const pts3d = copy2dTo3d(points, zDepth);\r\n this.addLineString(pts3d);\r\n }\r\n\r\n /** take ownership of input points and add as a point string to this builder */\r\n public addPointString(points: Point3d[]): void {\r\n this.accum.addPointString(points, this.getLinearDisplayParams(), this.placement);\r\n }\r\n\r\n public addPointString2d(points: Point2d[], zDepth: number): void {\r\n const pts3d = copy2dTo3d(points, zDepth);\r\n this.addPointString(pts3d);\r\n }\r\n\r\n public addShape(points: Point3d[]): void {\r\n const loop = Loop.create(LineString3d.create(points));\r\n this.accum.addLoop(loop, this.getMeshDisplayParams(), this.placement, false);\r\n }\r\n\r\n public addShape2d(points: Point2d[], zDepth: number): void {\r\n const pts3d = copy2dTo3d(points, zDepth);\r\n this.addShape(pts3d);\r\n }\r\n\r\n public addPath(path: Path): void {\r\n this.accum.addPath(path, this.getLinearDisplayParams(), this.placement, false);\r\n }\r\n\r\n public addLoop(loop: Loop): void {\r\n this.accum.addLoop(loop, this.getMeshDisplayParams(), this.placement, false);\r\n }\r\n\r\n public addPolyface(meshData: Polyface): void {\r\n this.accum.addPolyface(meshData as IndexedPolyface, this.getMeshDisplayParams(), this.placement);\r\n }\r\n\r\n public addSolidPrimitive(primitive: SolidPrimitive): void {\r\n this.accum.addSolidPrimitive(primitive, this.getMeshDisplayParams(), this.placement);\r\n }\r\n\r\n public getGraphicParams(): GraphicParams { return this.graphicParams; }\r\n\r\n public getDisplayParams(type: DisplayParams.Type): DisplayParams { return DisplayParams.createForType(type, this.graphicParams); }\r\n public getMeshDisplayParams(): DisplayParams { return DisplayParams.createForMesh(this.graphicParams, !this.wantNormals, (grad) => this.resolveGradient(grad)); }\r\n public getLinearDisplayParams(): DisplayParams { return DisplayParams.createForLinear(this.graphicParams); }\r\n public get textDisplayParams(): DisplayParams { return DisplayParams.createForText(this.graphicParams); }\r\n\r\n public get system(): RenderSystem { return this.accum.system; }\r\n\r\n public add(geom: Geometry): void { this.accum.addGeometry(geom); }\r\n\r\n private resolveGradient(gradient: Gradient.Symb): RenderTexture | undefined {\r\n return this.system.getGradientTexture(gradient, this.iModel);\r\n }\r\n}\r\n\r\n// Set to true to add a range box to every graphic produced by PrimitiveBuilder.\r\nlet addDebugRangeBox = false;\r\n\r\n/** @internal */\r\nexport class PrimitiveBuilder extends GeometryListBuilder {\r\n public primitives: RenderGraphic[] = [];\r\n\r\n public finishGraphic(accum: GeometryAccumulator): RenderGraphic {\r\n let meshes: MeshList | undefined;\r\n let range: Range3d | undefined;\r\n let featureTable: FeatureTable | undefined;\r\n if (!accum.isEmpty) {\r\n // Overlay decorations don't test Z. Tools like to layer multiple primitives on top of one another; they rely on the primitives rendering\r\n // in that same order to produce correct results (e.g., a thin line rendered atop a thick line of another color).\r\n // No point generating edges for graphics that are always rendered in smooth shade mode.\r\n const options = GeometryOptions.createForGraphicBuilder(this);\r\n const tolerance = this.computeTolerance(accum);\r\n meshes = accum.saveToGraphicList(this.primitives, options, tolerance, this.pickable);\r\n if (undefined !== meshes) {\r\n featureTable = meshes.features;\r\n range = meshes.range;\r\n }\r\n }\r\n\r\n let graphic = (this.primitives.length !== 1) ? this.accum.system.createGraphicList(this.primitives) : this.primitives.pop() as RenderGraphic;\r\n if (undefined !== featureTable) {\r\n const batchRange = range ?? new Range3d();\r\n const batchOptions = this._options.pickable;\r\n graphic = this.accum.system.createBatch(graphic, PackedFeatureTable.pack(featureTable), batchRange, batchOptions);\r\n }\r\n\r\n if (addDebugRangeBox && range) {\r\n addDebugRangeBox = false;\r\n const builder = this.accum.system.createGraphic({ ...this._options });\r\n builder.addRangeBox(range);\r\n graphic = this.accum.system.createGraphicList([graphic, builder.finish()]);\r\n addDebugRangeBox = true;\r\n }\r\n\r\n return graphic;\r\n }\r\n\r\n public computeTolerance(accum: GeometryAccumulator): number {\r\n return this._computeChordTolerance({\r\n graphic: this,\r\n computeRange: () => accum.geometries.computeRange(),\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"GeometryListBuilder.js","sourceRoot":"","sources":["../../../../../src/render/primitives/geometry/GeometryListBuilder.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 {\r\n Arc3d, CurvePrimitive, IndexedPolyface, LineSegment3d, LineString3d, Loop, Path, Point2d, Point3d, Polyface, Range3d, SolidPrimitive, Transform,\r\n} from \"@itwin/core-geometry\";\r\nimport { Feature, FeatureTable, Gradient, GraphicParams, PackedFeatureTable, RenderTexture } from \"@itwin/core-common\";\r\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"../../GraphicBuilder\";\r\nimport { RenderGraphic } from \"../../RenderGraphic\";\r\nimport { RenderSystem } from \"../../RenderSystem\";\r\nimport { DisplayParams } from \"../DisplayParams\";\r\nimport { GeometryOptions } from \"../Primitives\";\r\nimport { GeometryAccumulator } from \"./GeometryAccumulator\";\r\nimport { Geometry } from \"./GeometryPrimitives\";\r\nimport { MeshList } from \"../mesh/MeshPrimitives\";\r\n\r\nfunction copy2dTo3d(pts2d: Point2d[], depth: number): Point3d[] {\r\n const pts3d: Point3d[] = [];\r\n for (const point of pts2d)\r\n pts3d.push(Point3d.create(point.x, point.y, depth));\r\n return pts3d;\r\n}\r\n\r\n/** @internal */\r\nexport abstract class GeometryListBuilder extends GraphicBuilder {\r\n public accum: GeometryAccumulator;\r\n public readonly graphicParams: GraphicParams = new GraphicParams();\r\n\r\n public abstract finishGraphic(accum: GeometryAccumulator): RenderGraphic; // Invoked by Finish() to obtain the finished RenderGraphic.\r\n\r\n public constructor(system: RenderSystem, options: ViewportGraphicBuilderOptions | CustomGraphicBuilderOptions, accumulatorTransform = Transform.identity) {\r\n super(options);\r\n this.accum = new GeometryAccumulator({\r\n system,\r\n transform: accumulatorTransform,\r\n analysisStyleDisplacement: this.analysisStyle?.displacement,\r\n viewIndependentOrigin: options.viewIndependentOrigin,\r\n });\r\n\r\n if (this.pickable)\r\n this.activateFeature(new Feature(this.pickable.id, this.pickable.subCategoryId, this.pickable.geometryClass));\r\n }\r\n\r\n public finish(): RenderGraphic {\r\n const graphic = this.finishGraphic(this.accum);\r\n this.accum.clear();\r\n return graphic;\r\n }\r\n\r\n public activateGraphicParams(graphicParams: GraphicParams): void {\r\n graphicParams.clone(this.graphicParams);\r\n }\r\n\r\n protected override _activateFeature(feature: Feature): void {\r\n this.accum.currentFeature = feature;\r\n }\r\n\r\n public addArc2d(ellipse: Arc3d, isEllipse: boolean, filled: boolean, zDepth: number): void {\r\n if (0.0 === zDepth) {\r\n this.addArc(ellipse, isEllipse, filled);\r\n } else {\r\n const ell: Arc3d = ellipse;\r\n ell.center.z = zDepth;\r\n this.addArc(ell, isEllipse, filled);\r\n }\r\n }\r\n\r\n public addArc(ellipse: Arc3d, isEllipse: boolean, filled: boolean): void {\r\n let curve;\r\n if (isEllipse || filled) {\r\n curve = Loop.create(ellipse);\r\n } else {\r\n curve = Path.create(ellipse);\r\n }\r\n\r\n if (filled && !isEllipse && !ellipse.sweep.isFullCircle) {\r\n const gapSegment: CurvePrimitive = LineSegment3d.create(ellipse.startPoint(), ellipse.endPoint());\r\n (gapSegment as any).markerBits = 0x00010000; // Set the CURVE_PRIMITIVE_BIT_GapCurve marker bit\r\n curve.children.push(gapSegment);\r\n }\r\n const displayParams = curve.isAnyRegionType ? this.getMeshDisplayParams() : this.getLinearDisplayParams();\r\n if (curve instanceof Loop)\r\n this.accum.addLoop(curve, displayParams, this.placement, false);\r\n else\r\n this.accum.addPath(curve, displayParams, this.placement, false);\r\n }\r\n\r\n /** take ownership of input points and add as a line string to this builder */\r\n public addLineString(points: Point3d[]): void {\r\n if (2 === points.length && points[0].isAlmostEqual(points[1]))\r\n this.accum.addPointString(points, this.getLinearDisplayParams(), this.placement);\r\n else\r\n this.accum.addLineString(points, this.getLinearDisplayParams(), this.placement);\r\n }\r\n\r\n public addLineString2d(points: Point2d[], zDepth: number): void {\r\n const pts3d = copy2dTo3d(points, zDepth);\r\n this.addLineString(pts3d);\r\n }\r\n\r\n /** take ownership of input points and add as a point string to this builder */\r\n public addPointString(points: Point3d[]): void {\r\n this.accum.addPointString(points, this.getLinearDisplayParams(), this.placement);\r\n }\r\n\r\n public addPointString2d(points: Point2d[], zDepth: number): void {\r\n const pts3d = copy2dTo3d(points, zDepth);\r\n this.addPointString(pts3d);\r\n }\r\n\r\n public addShape(points: Point3d[]): void {\r\n const loop = Loop.create(LineString3d.create(points));\r\n this.accum.addLoop(loop, this.getMeshDisplayParams(), this.placement, false);\r\n }\r\n\r\n public addShape2d(points: Point2d[], zDepth: number): void {\r\n const pts3d = copy2dTo3d(points, zDepth);\r\n this.addShape(pts3d);\r\n }\r\n\r\n public addPath(path: Path): void {\r\n this.accum.addPath(path, this.getLinearDisplayParams(), this.placement, false);\r\n }\r\n\r\n public addLoop(loop: Loop): void {\r\n this.accum.addLoop(loop, this.getMeshDisplayParams(), this.placement, false);\r\n }\r\n\r\n public addPolyface(meshData: Polyface): void {\r\n this.accum.addPolyface(meshData as IndexedPolyface, this.getMeshDisplayParams(), this.placement);\r\n }\r\n\r\n public addSolidPrimitive(primitive: SolidPrimitive): void {\r\n this.accum.addSolidPrimitive(primitive, this.getMeshDisplayParams(), this.placement);\r\n }\r\n\r\n public getGraphicParams(): GraphicParams { return this.graphicParams; }\r\n\r\n public getDisplayParams(type: DisplayParams.Type): DisplayParams { return DisplayParams.createForType(type, this.graphicParams); }\r\n public getMeshDisplayParams(): DisplayParams { return DisplayParams.createForMesh(this.graphicParams, !this.wantNormals, (grad) => this.resolveGradient(grad)); }\r\n public getLinearDisplayParams(): DisplayParams { return DisplayParams.createForLinear(this.graphicParams); }\r\n public get textDisplayParams(): DisplayParams { return DisplayParams.createForText(this.graphicParams); }\r\n\r\n public get system(): RenderSystem { return this.accum.system; }\r\n\r\n public add(geom: Geometry): void { this.accum.addGeometry(geom); }\r\n\r\n private resolveGradient(gradient: Gradient.Symb): RenderTexture | undefined {\r\n return this.system.getGradientTexture(gradient, this.iModel);\r\n }\r\n}\r\n\r\n// Set to true to add a range box to every graphic produced by PrimitiveBuilder.\r\nlet addDebugRangeBox = false;\r\n\r\n/** @internal */\r\nexport class PrimitiveBuilder extends GeometryListBuilder {\r\n public primitives: RenderGraphic[] = [];\r\n\r\n public finishGraphic(accum: GeometryAccumulator): RenderGraphic {\r\n let meshes: MeshList | undefined;\r\n let range: Range3d | undefined;\r\n let featureTable: FeatureTable | undefined;\r\n if (!accum.isEmpty) {\r\n // Overlay decorations don't test Z. Tools like to layer multiple primitives on top of one another; they rely on the primitives rendering\r\n // in that same order to produce correct results (e.g., a thin line rendered atop a thick line of another color).\r\n // No point generating edges for graphics that are always rendered in smooth shade mode.\r\n const options = GeometryOptions.createForGraphicBuilder(this);\r\n const tolerance = this.computeTolerance(accum);\r\n meshes = accum.saveToGraphicList(this.primitives, options, tolerance, this.pickable);\r\n if (undefined !== meshes) {\r\n if (meshes.features?.anyDefined)\r\n featureTable = meshes.features;\r\n\r\n range = meshes.range;\r\n }\r\n }\r\n\r\n let graphic = (this.primitives.length !== 1) ? this.accum.system.createGraphicList(this.primitives) : this.primitives.pop() as RenderGraphic;\r\n if (undefined !== featureTable) {\r\n const batchRange = range ?? new Range3d();\r\n const batchOptions = this._options.pickable;\r\n graphic = this.accum.system.createBatch(graphic, PackedFeatureTable.pack(featureTable), batchRange, batchOptions);\r\n }\r\n\r\n if (addDebugRangeBox && range) {\r\n addDebugRangeBox = false;\r\n const builder = this.accum.system.createGraphic({ ...this._options });\r\n builder.addRangeBox(range);\r\n graphic = this.accum.system.createGraphicList([graphic, builder.finish()]);\r\n addDebugRangeBox = true;\r\n }\r\n\r\n return graphic;\r\n }\r\n\r\n public computeTolerance(accum: GeometryAccumulator): number {\r\n return this._computeChordTolerance({\r\n graphic: this,\r\n computeRange: () => accum.geometries.computeRange(),\r\n });\r\n }\r\n}\r\n"]}
@@ -215,7 +215,7 @@ export declare abstract class Target extends RenderTarget implements RenderTarge
215
215
  */
216
216
  private static _applyAspectRatioCorrection;
217
217
  /** wantRectIn is in CSS pixels. Output ImageBuffer will be in device pixels.
218
- * If wantRect.right or wantRect.bottom is -1, that means "read the entire image".
218
+ * If wantRect is null, that means "read the entire image".
219
219
  */
220
220
  readImage(wantRectIn: ViewRect, targetSizeIn: Point2d, flipVertically: boolean): ImageBuffer | undefined;
221
221
  readImageBuffer(args?: ReadImageBufferArgs): ImageBuffer | undefined;
@@ -762,14 +762,14 @@ class Target extends RenderTarget_1.RenderTarget {
762
762
  return new core_geometry_1.Point2d(curSize.x * bestRatio, curSize.y * bestRatio);
763
763
  }
764
764
  /** wantRectIn is in CSS pixels. Output ImageBuffer will be in device pixels.
765
- * If wantRect.right or wantRect.bottom is -1, that means "read the entire image".
765
+ * If wantRect is null, that means "read the entire image".
766
766
  */
767
767
  readImage(wantRectIn, targetSizeIn, flipVertically) {
768
768
  if (!this.assignDC())
769
769
  return undefined;
770
770
  // Determine capture rect and validate
771
771
  const actualViewRect = this.renderRect; // already has device pixel ratio applied
772
- const wantRect = (wantRectIn.right === -1 || wantRectIn.bottom === -1) ? actualViewRect : this.cssViewRectToDeviceViewRect(wantRectIn);
772
+ const wantRect = wantRectIn.isNull ? actualViewRect : this.cssViewRectToDeviceViewRect(wantRectIn);
773
773
  const lowerRight = core_geometry_1.Point2d.create(wantRect.right - 1, wantRect.bottom - 1);
774
774
  if (!actualViewRect.containsPoint(core_geometry_1.Point2d.create(wantRect.left, wantRect.top)) || !actualViewRect.containsPoint(lowerRight))
775
775
  return undefined;