@itwin/core-frontend 5.3.0-dev.8 → 5.4.0-dev.2

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 (200) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  3. package/lib/cjs/ElementLocateManager.js +2 -5
  4. package/lib/cjs/ElementLocateManager.js.map +1 -1
  5. package/lib/cjs/HitDetail.d.ts +1 -24
  6. package/lib/cjs/HitDetail.d.ts.map +1 -1
  7. package/lib/cjs/HitDetail.js +0 -5
  8. package/lib/cjs/HitDetail.js.map +1 -1
  9. package/lib/cjs/IModelApp.d.ts +4 -0
  10. package/lib/cjs/IModelApp.d.ts.map +1 -1
  11. package/lib/cjs/IModelApp.js +4 -0
  12. package/lib/cjs/IModelApp.js.map +1 -1
  13. package/lib/cjs/SubCategoriesCache.d.ts +1 -1
  14. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  15. package/lib/cjs/SubCategoriesCache.js +3 -3
  16. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  17. package/lib/cjs/ViewManager.d.ts +4 -2
  18. package/lib/cjs/ViewManager.d.ts.map +1 -1
  19. package/lib/cjs/ViewManager.js +3 -1
  20. package/lib/cjs/ViewManager.js.map +1 -1
  21. package/lib/cjs/Viewport.d.ts.map +1 -1
  22. package/lib/cjs/Viewport.js +9 -3
  23. package/lib/cjs/Viewport.js.map +1 -1
  24. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  25. package/lib/cjs/common/imdl/ParseImdlDocument.js +1 -43
  26. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  27. package/lib/cjs/common/internal/Symbols.d.ts +1 -0
  28. package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
  29. package/lib/cjs/common/internal/Symbols.js +1 -0
  30. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  31. package/lib/cjs/internal/cross-package.d.ts +4 -0
  32. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  33. package/lib/cjs/internal/cross-package.js +3 -1
  34. package/lib/cjs/internal/cross-package.js.map +1 -1
  35. package/lib/cjs/internal/render/RenderAreaPattern.d.ts +1 -0
  36. package/lib/cjs/internal/render/RenderAreaPattern.d.ts.map +1 -1
  37. package/lib/cjs/internal/render/RenderAreaPattern.js.map +1 -1
  38. package/lib/cjs/internal/render/RenderGeometry.d.ts +3 -1
  39. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -1
  40. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -1
  41. package/lib/cjs/internal/render/RenderPlan.d.ts +3 -1
  42. package/lib/cjs/internal/render/RenderPlan.d.ts.map +1 -1
  43. package/lib/cjs/internal/render/RenderPlan.js.map +1 -1
  44. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts +0 -2
  45. package/lib/cjs/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  46. package/lib/cjs/internal/render/webgl/FrustumUniforms.js +0 -7
  47. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  48. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts +0 -9
  49. package/lib/cjs/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  50. package/lib/cjs/internal/render/webgl/SceneCompositor.js +4 -67
  51. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  52. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts +3 -4
  53. package/lib/cjs/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  54. package/lib/cjs/internal/render/webgl/ShaderBuilder.js +3 -3
  55. package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
  56. package/lib/cjs/internal/render/webgl/System.d.ts +1 -1
  57. package/lib/cjs/internal/render/webgl/System.d.ts.map +1 -1
  58. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  59. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +1 -1
  60. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  61. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +1 -2
  62. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  63. package/lib/cjs/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  64. package/lib/cjs/internal/render/webgl/glsl/Contours.js +1 -30
  65. package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
  66. package/lib/cjs/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  67. package/lib/cjs/internal/render/webgl/glsl/Fragment.js +2 -7
  68. package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
  69. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +1 -1
  70. package/lib/cjs/internal/render/webgl/glsl/Surface.js +1 -1
  71. package/lib/cjs/internal/tile/DynamicIModelTile.d.ts +2 -0
  72. package/lib/cjs/internal/tile/DynamicIModelTile.d.ts.map +1 -1
  73. package/lib/cjs/internal/tile/DynamicIModelTile.js +3 -0
  74. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  75. package/lib/cjs/internal/tile/IModelTileTree.d.ts +2 -0
  76. package/lib/cjs/internal/tile/IModelTileTree.d.ts.map +1 -1
  77. package/lib/cjs/internal/tile/IModelTileTree.js +5 -0
  78. package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
  79. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  80. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -0
  81. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  82. package/lib/cjs/render/Pixel.d.ts +2 -13
  83. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  84. package/lib/cjs/render/Pixel.js +1 -9
  85. package/lib/cjs/render/Pixel.js.map +1 -1
  86. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +4 -0
  87. package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -1
  88. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  89. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +13 -1
  90. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  91. package/lib/cjs/tile/map/MapLayerImageryProvider.js +25 -1
  92. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  93. package/lib/cjs/tools/AccuDrawViewportUI.d.ts +82 -26
  94. package/lib/cjs/tools/AccuDrawViewportUI.d.ts.map +1 -1
  95. package/lib/cjs/tools/AccuDrawViewportUI.js +171 -87
  96. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  97. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  98. package/lib/cjs/tools/ToolAdmin.js +3 -0
  99. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  100. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  101. package/lib/esm/ElementLocateManager.js +2 -5
  102. package/lib/esm/ElementLocateManager.js.map +1 -1
  103. package/lib/esm/HitDetail.d.ts +1 -24
  104. package/lib/esm/HitDetail.d.ts.map +1 -1
  105. package/lib/esm/HitDetail.js +0 -5
  106. package/lib/esm/HitDetail.js.map +1 -1
  107. package/lib/esm/IModelApp.d.ts +4 -0
  108. package/lib/esm/IModelApp.d.ts.map +1 -1
  109. package/lib/esm/IModelApp.js +4 -0
  110. package/lib/esm/IModelApp.js.map +1 -1
  111. package/lib/esm/SubCategoriesCache.d.ts +1 -1
  112. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  113. package/lib/esm/SubCategoriesCache.js +3 -3
  114. package/lib/esm/SubCategoriesCache.js.map +1 -1
  115. package/lib/esm/ViewManager.d.ts +4 -2
  116. package/lib/esm/ViewManager.d.ts.map +1 -1
  117. package/lib/esm/ViewManager.js +3 -1
  118. package/lib/esm/ViewManager.js.map +1 -1
  119. package/lib/esm/Viewport.d.ts.map +1 -1
  120. package/lib/esm/Viewport.js +9 -3
  121. package/lib/esm/Viewport.js.map +1 -1
  122. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  123. package/lib/esm/common/imdl/ParseImdlDocument.js +1 -43
  124. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  125. package/lib/esm/common/internal/Symbols.d.ts +1 -0
  126. package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
  127. package/lib/esm/common/internal/Symbols.js +1 -0
  128. package/lib/esm/common/internal/Symbols.js.map +1 -1
  129. package/lib/esm/internal/cross-package.d.ts +4 -0
  130. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  131. package/lib/esm/internal/cross-package.js +1 -0
  132. package/lib/esm/internal/cross-package.js.map +1 -1
  133. package/lib/esm/internal/render/RenderAreaPattern.d.ts +1 -0
  134. package/lib/esm/internal/render/RenderAreaPattern.d.ts.map +1 -1
  135. package/lib/esm/internal/render/RenderAreaPattern.js.map +1 -1
  136. package/lib/esm/internal/render/RenderGeometry.d.ts +3 -1
  137. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -1
  138. package/lib/esm/internal/render/RenderGeometry.js.map +1 -1
  139. package/lib/esm/internal/render/RenderPlan.d.ts +3 -1
  140. package/lib/esm/internal/render/RenderPlan.d.ts.map +1 -1
  141. package/lib/esm/internal/render/RenderPlan.js.map +1 -1
  142. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts +0 -2
  143. package/lib/esm/internal/render/webgl/FrustumUniforms.d.ts.map +1 -1
  144. package/lib/esm/internal/render/webgl/FrustumUniforms.js +1 -8
  145. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  146. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts +0 -9
  147. package/lib/esm/internal/render/webgl/SceneCompositor.d.ts.map +1 -1
  148. package/lib/esm/internal/render/webgl/SceneCompositor.js +4 -67
  149. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  150. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts +3 -4
  151. package/lib/esm/internal/render/webgl/ShaderBuilder.d.ts.map +1 -1
  152. package/lib/esm/internal/render/webgl/ShaderBuilder.js +3 -3
  153. package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
  154. package/lib/esm/internal/render/webgl/System.d.ts +1 -1
  155. package/lib/esm/internal/render/webgl/System.d.ts.map +1 -1
  156. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  157. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +1 -1
  158. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  159. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +1 -2
  160. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  161. package/lib/esm/internal/render/webgl/glsl/Contours.d.ts.map +1 -1
  162. package/lib/esm/internal/render/webgl/glsl/Contours.js +1 -30
  163. package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
  164. package/lib/esm/internal/render/webgl/glsl/Fragment.d.ts.map +1 -1
  165. package/lib/esm/internal/render/webgl/glsl/Fragment.js +2 -7
  166. package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
  167. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +1 -1
  168. package/lib/esm/internal/render/webgl/glsl/Surface.js +1 -1
  169. package/lib/esm/internal/tile/DynamicIModelTile.d.ts +2 -0
  170. package/lib/esm/internal/tile/DynamicIModelTile.d.ts.map +1 -1
  171. package/lib/esm/internal/tile/DynamicIModelTile.js +3 -0
  172. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  173. package/lib/esm/internal/tile/IModelTileTree.d.ts +2 -0
  174. package/lib/esm/internal/tile/IModelTileTree.d.ts.map +1 -1
  175. package/lib/esm/internal/tile/IModelTileTree.js +5 -0
  176. package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
  177. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  178. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -0
  179. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  180. package/lib/esm/render/Pixel.d.ts +2 -13
  181. package/lib/esm/render/Pixel.d.ts.map +1 -1
  182. package/lib/esm/render/Pixel.js +1 -9
  183. package/lib/esm/render/Pixel.js.map +1 -1
  184. package/lib/esm/tile/map/MapLayerAuthentication.d.ts +4 -0
  185. package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -1
  186. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  187. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +13 -1
  188. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  189. package/lib/esm/tile/map/MapLayerImageryProvider.js +25 -1
  190. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  191. package/lib/esm/tools/AccuDrawViewportUI.d.ts +82 -26
  192. package/lib/esm/tools/AccuDrawViewportUI.d.ts.map +1 -1
  193. package/lib/esm/tools/AccuDrawViewportUI.js +171 -87
  194. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  195. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  196. package/lib/esm/tools/ToolAdmin.js +3 -0
  197. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  198. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  199. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  200. package/package.json +22 -23
@@ -1 +1 @@
1
- {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\nimport { encodeDepthRgb } from \"./Decode\";\nimport { addRenderPass } from \"./RenderPass\";\n\n/** @internal */\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\n frag.addFunction(windowCoordsToTexCoords);\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\n });\n });\n}\n\n/** @internal */\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\n uniform.setUniform1i(doReversal);\n });\n });\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\n}\n\nconst reverseWhiteOnWhite = `\n const vec3 white = vec3(1.0);\n const vec3 epsilon = vec3(0.0001);\n vec3 color = baseColor.rgb;\n vec3 delta = (color + epsilon) - white;\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\n`;\n\nconst multiplyAlpha = `\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\n baseColor.a = 1.0;\n else\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\n`;\n\nconst computePickBufferOutputs = `${multiplyAlpha}\n vec4 output0 = baseColor;\n\n // Fix interpolation errors despite all vertices sending exact same feature_id...\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\n vec4 output1 = vec4(feature_id_i) / 255.0;\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\n vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\n`;\n\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\n vec4 output0 = baseColor;\n vec4 output1 = vec4(0.0);\n vec4 output2 = vec4(0.0);\n vec4 output3 = vec4(0.0);\n`;\n\nconst assignPickBufferOutputsMRT = `\n FragColor0 = output0;\n FragColor1 = output1;\n FragColor2 = output2;\n FragColor3 = output3;\n`;\n\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\n\n/** @internal */\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\n frag.addFunction(encodeDepthRgb);\n frag.addFunction(computeLinearDepth);\n\n const prelude = new SourceBuilder();\n const overrideOrder = frag.get(FragmentShaderComponent.OverrideRenderOrder);\n if (overrideOrder) {\n frag.addFunction(\"float overrideRenderOrder(float currentOrder)\", overrideOrder);\n prelude.addline(\" float renderOrder = overrideRenderOrder(u_renderOrder);\");\n } else {\n prelude.addline(\" float renderOrder = u_renderOrder;\");\n }\n\n prelude.add(computePickBufferOutputs);\n\n const computeContourLineInfo = frag.get(FragmentShaderComponent.ComputeContourLineInfo) ?? \"return vec4(0.0);\";\n frag.addFunction(\"vec4 computeContourLineInfo()\", computeContourLineInfo);\n prelude.addline(\" vec4 output3 = computeContourLineInfo();\");\n\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined !== overrideColor) {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n prelude.addline(\" output0 = overrideColor(output0);\");\n }\n\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\n if (undefined !== overrideFeatureId) {\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\n prelude.addline(reassignFeatureId);\n }\n\n addRenderPass(frag);\n frag.addDrawBuffersExtension(4);\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\n}\n\n/** @internal */\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\n const prelude = new SourceBuilder();\n prelude.add(computeAltPickBufferOutputs);\n\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined !== overrideColor) {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n prelude.addline(\" output0 = overrideColor(output0);\");\n }\n\n addRenderPass(frag);\n frag.addDrawBuffersExtension(4);\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\n}\n\n/** @internal */\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\n addRenderPass(frag);\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined === overrideColor) {\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\n } else {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\n }\n}\n\n/** @internal */\nexport const assignFragColor = \"FragColor = baseColor;\";\n\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\n FragColor = baseColor;\n`;\n\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\n vec4 fragColor = overrideColor(baseColor);\n FragColor = fragColor;\n`;\n\n/** @internal */\nexport const computeLinearDepth = `\nfloat computeLinearDepth(float eyeSpaceZ) {\n float eyeZ = -eyeSpaceZ;\n float near = u_frustum.x, far = u_frustum.y;\n float depthRange = far - near;\n float linearDepth = (eyeZ - near) / depthRange;\n return 1.0 - linearDepth;\n}\n`;\n"]}
1
+ {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../../src/internal/render/webgl/glsl/Fragment.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\nimport { encodeDepthRgb } from \"./Decode\";\nimport { addRenderPass } from \"./RenderPass\";\n\n/** @internal */\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\n frag.addFunction(windowCoordsToTexCoords);\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\n });\n });\n}\n\n/** @internal */\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\n uniform.setUniform1i(doReversal);\n });\n });\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\n}\n\nconst reverseWhiteOnWhite = `\n const vec3 white = vec3(1.0);\n const vec3 epsilon = vec3(0.0001);\n vec3 color = baseColor.rgb;\n vec3 delta = (color + epsilon) - white;\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\n`;\n\nconst multiplyAlpha = `\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\n baseColor.a = 1.0;\n else\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\n`;\n\nconst computePickBufferOutputs = `${multiplyAlpha}\n vec4 output0 = baseColor;\n\n // Fix interpolation errors despite all vertices sending exact same feature_id...\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\n vec4 output1 = vec4(feature_id_i) / 255.0;\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\n vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\n`;\n\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\n vec4 output0 = baseColor;\n vec4 output1 = vec4(0.0);\n vec4 output2 = vec4(0.0);\n`;\n\nconst assignPickBufferOutputsMRT = `\n FragColor0 = output0;\n FragColor1 = output1;\n FragColor2 = output2;\n`;\n\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\n\n/** @internal */\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\n frag.addFunction(encodeDepthRgb);\n frag.addFunction(computeLinearDepth);\n\n const prelude = new SourceBuilder();\n const overrideOrder = frag.get(FragmentShaderComponent.OverrideRenderOrder);\n if (overrideOrder) {\n frag.addFunction(\"float overrideRenderOrder(float currentOrder)\", overrideOrder);\n prelude.addline(\" float renderOrder = overrideRenderOrder(u_renderOrder);\");\n } else {\n prelude.addline(\" float renderOrder = u_renderOrder;\");\n }\n\n prelude.add(computePickBufferOutputs);\n\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined !== overrideColor) {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n prelude.addline(\" output0 = overrideColor(output0);\");\n }\n\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\n if (undefined !== overrideFeatureId) {\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\n prelude.addline(reassignFeatureId);\n }\n\n addRenderPass(frag);\n frag.addDrawBuffersExtension(3);\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\n}\n\n/** @internal */\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\n const prelude = new SourceBuilder();\n prelude.add(computeAltPickBufferOutputs);\n\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined !== overrideColor) {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n prelude.addline(\" output0 = overrideColor(output0);\");\n }\n\n addRenderPass(frag);\n frag.addDrawBuffersExtension(3);\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\n}\n\n/** @internal */\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\n addRenderPass(frag);\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\n if (undefined === overrideColor) {\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\n } else {\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\n }\n}\n\n/** @internal */\nexport const assignFragColor = \"FragColor = baseColor;\";\n\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\n FragColor = baseColor;\n`;\n\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\n vec4 fragColor = overrideColor(baseColor);\n FragColor = fragColor;\n`;\n\n/** @internal */\nexport const computeLinearDepth = `\nfloat computeLinearDepth(float eyeSpaceZ) {\n float eyeZ = -eyeSpaceZ;\n float near = u_frustum.x, far = u_frustum.y;\n float depthRange = far - near;\n float linearDepth = (eyeZ - near) / depthRange;\n return 1.0 - linearDepth;\n}\n`;\n"]}
@@ -142,7 +142,7 @@ function addThematicToRealityMesh(builder, gradientTextureUnit) {
142
142
  builder.vert.addGlobal("g_hillshadeIndex", 2 /* VariableType.Float */);
143
143
  builder.addFunctionComputedVarying("v_n", 4 /* VariableType.Vec3 */, "computeLightingNormal", computeNormal);
144
144
  builder.frag.addGlobal("g_normal", 4 /* VariableType.Vec3 */);
145
- builder.frag.set(25 /* FragmentShaderComponent.FinalizeNormal */, exports.finalizeNormal);
145
+ builder.frag.set(24 /* FragmentShaderComponent.FinalizeNormal */, exports.finalizeNormal);
146
146
  (0, Thematic_1.addThematicDisplay)(builder, false, true);
147
147
  builder.addInlineComputedVarying("v_thematicIndex", 2 /* VariableType.Float */, (0, Thematic_1.getComputeThematicIndex)(builder.vert.usesInstancedGeometry, false, false));
148
148
  builder.vert.addUniform("u_worldToViewN", 6 /* VariableType.Mat3 */, (prog) => {
@@ -489,7 +489,7 @@ function addNormal(builder, animated) {
489
489
  });
490
490
  });
491
491
  finalizeNormal += finalizeNormalPostlude;
492
- builder.frag.set(25 /* FragmentShaderComponent.FinalizeNormal */, finalizeNormal);
492
+ builder.frag.set(24 /* FragmentShaderComponent.FinalizeNormal */, finalizeNormal);
493
493
  // Set to true to colorize surfaces based on normals (in world space).
494
494
  // You must also set checkMaxVarying to false in ProgramBuilder.buildProgram to avoid assertions, if using a non-optimized build.
495
495
  const debugNormals = false;
@@ -17,6 +17,8 @@ export declare abstract class DynamicIModelTile extends Tile {
17
17
  abstract get appearanceProvider(): FeatureAppearanceProvider;
18
18
  /** Exposed strictly for tests. */
19
19
  abstract get hiddenElements(): Id64Array;
20
+ /** Strictly for tests. */
21
+ abstract get dynamicElements(): Id64Array;
20
22
  /** Select tiles for display, requesting content for tiles as necessary. */
21
23
  abstract selectTiles(selected: Tile[], args: TileDrawArgs): void;
22
24
  /** Discard tiles that have not been used since the specified time point. */
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicIModelTile.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/DynamicIModelTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACG,WAAW,EAA8C,SAAS,EAC3E,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACM,qBAAqB,EAAkD,yBAAyB,EAC5G,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACuB,cAAc,EAAE,IAAI,EAAe,YAAY,EAAE,UAAU,EAAmC,QAAQ,EACnI,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,8BAAsB,iBAAkB,SAAQ,IAAI;IAClD,SAAS,aAAa,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ;WAI1C,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,iBAAiB;IAIxG,6EAA6E;aAC7D,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,IAAI;IAErF,+GAA+G;IAC/G,aAAoB,kBAAkB,IAAI,yBAAyB,CAAC;IAEpE,kCAAkC;IAClC,aAAoB,cAAc,IAAI,SAAS,CAAC;IAEhD,2EAA2E;aAC3D,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAEvE,4EAA4E;aAC5D,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;CAC5D"}
1
+ {"version":3,"file":"DynamicIModelTile.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/DynamicIModelTile.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACG,WAAW,EAA8C,SAAS,EAC3E,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACM,qBAAqB,EAAkD,yBAAyB,EAC5G,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACuB,cAAc,EAAE,IAAI,EAAe,YAAY,EAAE,UAAU,EAAmC,QAAQ,EACnI,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,8BAAsB,iBAAkB,SAAQ,IAAI;IAClD,SAAS,aAAa,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ;WAI1C,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,iBAAiB;IAIxG,6EAA6E;aAC7D,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,IAAI;IAErF,+GAA+G;IAC/G,aAAoB,kBAAkB,IAAI,yBAAyB,CAAC;IAEpE,kCAAkC;IAClC,aAAoB,cAAc,IAAI,SAAS,CAAC;IAEhD,0BAA0B;IAC1B,aAAoB,eAAe,IAAI,SAAS,CAAC;IAEjD,2EAA2E;aAC3D,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAEvE,4EAA4E;aAC5D,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;CAC5D"}
@@ -68,6 +68,9 @@ class RootTile extends DynamicIModelTile {
68
68
  get hiddenElements() {
69
69
  return this._hiddenElements.toId64Array();
70
70
  }
71
+ get dynamicElements() {
72
+ return this._elements.array.map((tile) => tile.contentId);
73
+ }
71
74
  get appearanceProvider() {
72
75
  return this;
73
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicIModelTile.js","sourceRoot":"","sources":["../../../../src/internal/tile/DynamicIModelTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport {\n assert, BeTimePoint, ByteStream, compareStrings, DbOpcode, Id64, Id64Array, Id64String, partitionArray, SortedArray,\n} from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ElementGeometryChange, ElementGraphicsRequestProps, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, TileFormat,\n} from \"@itwin/core-common\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { IModelApp } from \"../../IModelApp\";\nimport {\n ImdlReader, IModelTileTree, RootIModelTile, Tile, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileTree,\n} from \"../../tile/internal\";\n\n/** The root tile for the branch of an [[IModelTileTree]] containing graphics for elements that have been modified during the current\n * Not intended for direct consumption - exported for use by [[IModelTileTree]].\n * [[GraphicalEditingScope]].\n */\nexport abstract class DynamicIModelTile extends Tile {\n protected constructor(params: TileParams, tree: TileTree) {\n super(params, tree);\n }\n\n public static create(root: RootIModelTile, elements: Iterable<ElementGeometryChange>): DynamicIModelTile {\n return new RootTile(root, elements);\n }\n\n /** Updates the tiles when elements are modified during the editing scope. */\n public abstract handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void;\n\n /** Overrides symbology of the *static* [[IModelTile]]s to hide elements that have been deleted or modified. */\n public abstract get appearanceProvider(): FeatureAppearanceProvider;\n\n /** Exposed strictly for tests. */\n public abstract get hiddenElements(): Id64Array;\n\n /** Select tiles for display, requesting content for tiles as necessary. */\n public abstract selectTiles(selected: Tile[], args: TileDrawArgs): void;\n\n /** Discard tiles that have not been used since the specified time point. */\n public abstract pruneChildren(olderThan: BeTimePoint): void;\n}\n\n/** The child tiles of the root tile, representing inserted or modified elements and sorted by element Id. */\nclass ElementTiles extends SortedArray<ElementTile> {\n public constructor() {\n super((lhs, rhs) => compareStrings(lhs.contentId, rhs.contentId));\n }\n\n public get array(): ElementTile[] {\n return this._array;\n }\n}\n\n/** The root tile. Each of its children represent a newly-inserted or modified element. */\nclass RootTile extends DynamicIModelTile implements FeatureAppearanceProvider {\n private readonly _hiddenElements: Id64.Uint32Set;\n public readonly transformToTree: Transform;\n private readonly _elements: ElementTiles;\n\n private get _imodelRoot() { return this.parent as RootIModelTile; }\n\n private get _elementChildren(): ElementTile[] {\n assert(undefined !== this.children);\n assert(this.children === this._elements.array);\n return this._elements.array;\n }\n\n public constructor(parent: RootIModelTile, elements: Iterable<ElementGeometryChange>) {\n const params: TileParams = {\n parent,\n isLeaf: false,\n contentId: \"dynamic\",\n range: Range3d.createNull(),\n maximumSize: parent.tileScreenSize,\n };\n\n super(params, parent.tree);\n\n this._hiddenElements = new Id64.Uint32Set();\n\n const inverseTransform = parent.tree.iModelTransform.inverse();\n assert(undefined !== inverseTransform);\n this.transformToTree = inverseTransform;\n\n this._elements = new ElementTiles();\n this.loadChildren(); // initially empty.\n assert(undefined !== this.children);\n\n this.setIsReady();\n this.handleGeometryChanges(elements);\n }\n\n public get hiddenElements(): Id64Array {\n return this._hiddenElements.toId64Array();\n }\n\n public get appearanceProvider(): FeatureAppearanceProvider {\n return this;\n }\n\n public getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\n if (this._hiddenElements.has(elemLo, elemHi))\n return undefined;\n\n return source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\n }\n\n public handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void {\n assert(undefined !== this.children);\n\n for (const change of changes) {\n if (change.type !== DbOpcode.Insert)\n this._hiddenElements.addId(change.id);\n\n let tile = this._elements.findEquivalent((t: ElementTile) => compareStrings(t.contentId, change.id));\n if (change.type === DbOpcode.Delete) {\n if (tile) {\n tile[Symbol.dispose]();\n this._elements.remove(tile);\n }\n } else {\n const range = change.range.isNull ? change.range.clone() : this.transformToTree.multiplyRange(change.range);\n if (tile)\n tile.update(range);\n else\n this._elements.insert(tile = new ElementTile(this, change.id, range));\n }\n }\n\n // Recompute range.\n this.range.setNull();\n for (const element of this._elements)\n this.range.extendRange(element.range);\n\n this._imodelRoot.updateDynamicRange(this);\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (errpr: Error) => void): void {\n // This is invoked from constructor. We will add a child per element later - for now just mark the children as having been loaded.\n resolve(this._elements.array);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root dynamic tile has no content\");\n }\n\n public async requestContent(): Promise<TileRequest.Response> {\n assert(false, \"Root dynamic tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root dynamic tile has no content\");\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\n for (const child of this._elementChildren)\n child.selectTiles(selected, args);\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n // Never discard ElementTiles - do discard not-recently-used graphics.\n for (const child of this._elementChildren)\n child.pruneChildren(olderThan);\n }\n}\n\n/** Represents a single element that has been inserted or had its geometric properties modified during the current [[GraphicalEditingScope]].\n * It has no graphics of its own; it has any number of child tiles, each of which have graphics of a different level of detail.\n * Its contentId is the element's Id.\n */\nclass ElementTile extends Tile {\n public constructor(parent: RootTile, elementId: Id64String, range: Range3d) {\n super({\n parent,\n isLeaf: false,\n contentId: elementId,\n range,\n maximumSize: parent.maximumSize,\n }, parent.tree);\n\n this.loadChildren();\n this.setIsReady();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n // Invoked from constructor. We'll add child tiles later as needed.\n resolve([]);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"ElementTile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"ElementTile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"ElementTile has no content\");\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n const children = this.children as GraphicsTile[];\n assert(undefined !== children);\n\n const partitionIndex = partitionArray(children, (child) => !child.usageMarker.isExpired(olderThan));\n\n // Remove expired children.\n if (partitionIndex < children.length) {\n const expired = children.splice(partitionIndex);\n for (const child of expired)\n child[Symbol.dispose]();\n }\n\n // Restore ordering.\n children.sort((x, y) => y.toleranceLog10 - x.toleranceLog10);\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\n assert(undefined !== this.children);\n if (this.isRegionCulled(args))\n return;\n\n args.markUsed(this);\n\n // ###TODO: Test content range culled.\n\n // Compute the ideal chord tolerance.\n assert(this.maximumSize > 0);\n const pixelSize = args.getPixelSizeInMetersAtClosestPoint(this);\n assert(pixelSize > 0);\n\n // Round down to the nearest power of ten.\n const toleranceLog10 = Math.floor(Math.log10(pixelSize));\n\n // Find (or create) a child tile of desired tolerance. Also find a child tile that can be substituted for the desired tile if that tile's content is not yet loaded.\n // NB: Children are sorted in descending order by log10(tolerance)\n const children = this.children as GraphicsTile[];\n let closestMatch: GraphicsTile | undefined;\n let exactMatch: GraphicsTile | undefined;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const tol = child.toleranceLog10;\n if (tol > toleranceLog10) {\n assert(undefined === exactMatch);\n if (child.hasGraphics)\n closestMatch = child;\n } else if (tol === toleranceLog10) {\n exactMatch = child;\n } else if (tol < toleranceLog10) {\n if (!exactMatch)\n children.splice(i++, 0, exactMatch = new GraphicsTile(this, toleranceLog10));\n\n if (child.hasGraphics && (!closestMatch || closestMatch.toleranceLog10 > toleranceLog10))\n closestMatch = child;\n }\n }\n\n if (!exactMatch) {\n assert(children.length === 0 || children[children.length - 1].toleranceLog10 > toleranceLog10);\n children.push(exactMatch = new GraphicsTile(this, toleranceLog10));\n }\n\n if (!exactMatch.isReady) {\n args.insertMissing(exactMatch);\n if (closestMatch) {\n selected.push(closestMatch);\n args.markUsed(closestMatch);\n }\n } else if (exactMatch.hasGraphics) {\n selected.push(exactMatch);\n args.markUsed(exactMatch);\n }\n }\n\n public update(range: Range3d): void {\n range.clone(this.range);\n const center = this.range.low.interpolate(0.5, this.range.high);\n const radius = 0.5 * this.range.low.distance(this.range.high);\n this.boundingSphere.init(center, radius);\n\n // Discard out-dated graphics.\n assert(undefined !== this.children);\n for (const child of this.children)\n child[Symbol.dispose]();\n\n this.children.length = 0;\n }\n}\n\nfunction* makeIdSequence() {\n let current = 0;\n while (true) {\n if (current >= Number.MAX_SAFE_INTEGER)\n current = 0;\n\n yield ++current;\n }\n}\n\nconst requestIdSequence = makeIdSequence();\n\n/** Supplies graphics of a specific LOD for a single element. */\nclass GraphicsTile extends Tile {\n public readonly toleranceLog10: number;\n public readonly tolerance: number;\n\n public constructor(parent: ElementTile, toleranceLog10: number) {\n assert(Math.round(toleranceLog10) === toleranceLog10);\n super({\n parent,\n isLeaf: true,\n contentId: `${parent.contentId}_${toleranceLog10}`,\n range: parent.range,\n maximumSize: parent.maximumSize,\n }, parent.tree);\n\n this.toleranceLog10 = toleranceLog10;\n this.tolerance = 10 ** toleranceLog10;\n }\n\n public override computeLoadPriority(): number {\n // We want the element's graphics to be updated as soon as possible\n return 0;\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n resolve(undefined);\n }\n\n public get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.elementGraphicsRpc;\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n // ###TODO tree flags (enforce display priority)\n // ###TODO classifiers, animation\n\n assert(undefined !== this.parent);\n\n const requestId = requestIdSequence.next();\n assert(!requestId.done);\n\n assert(this.tree instanceof IModelTileTree);\n const idProvider = this.tree.contentIdProvider;\n\n const props: ElementGraphicsRequestProps = {\n id: requestId.value.toString(16),\n elementId: this.parent.contentId,\n toleranceLog10: this.toleranceLog10,\n formatVersion: idProvider.majorFormatVersion,\n location: this.tree.iModelTransform.toJSON(),\n contentFlags: idProvider.contentFlags,\n omitEdges: !this.tree.edgeOptions,\n edgeType: this.tree.edgeOptions && \"non-indexed\" !== this.tree.edgeOptions.type ? 2 : 1,\n smoothPolyfaceEdges: this.tree.edgeOptions && this.tree.edgeOptions.smooth,\n clipToProjectExtents: this.tree.is3d,\n sectionCut: this.tree.stringifiedSectionClip,\n useAbsolutePositions: true,\n };\n\n return IModelApp.tileAdmin.requestElementGraphics(this.tree.iModel, props);\n }\n\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled: () => boolean): Promise<TileContent> {\n if (undefined === isCanceled)\n isCanceled = () => !this.isLoading;\n\n assert(data instanceof Uint8Array);\n const stream = ByteStream.fromUint8Array(data);\n\n const position = stream.curPos;\n const format = stream.readUint32();\n stream.curPos = position;\n\n // ###TODO: IModelGraphics format wraps IModel format.\n assert(TileFormat.IModel === format);\n\n const tree = this.tree;\n assert(tree instanceof IModelTileTree);\n const { iModel, modelId, is3d, containsTransformNodes } = tree;\n const reader = ImdlReader.create({\n stream, iModel, modelId, is3d, system, isCanceled, containsTransformNodes,\n type: tree.batchType,\n loadEdges: false !== tree.edgeOptions,\n options: { tileId: this.contentId },\n timeline: tree.timeline,\n });\n\n let content: TileContent = { isLeaf: true };\n if (reader) {\n try {\n content = await reader.read();\n } catch {\n //\n }\n }\n\n return content;\n }\n}\n"]}
1
+ {"version":3,"file":"DynamicIModelTile.js","sourceRoot":"","sources":["../../../../src/internal/tile/DynamicIModelTile.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport {\n assert, BeTimePoint, ByteStream, compareStrings, DbOpcode, Id64, Id64Array, Id64String, partitionArray, SortedArray,\n} from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ElementGeometryChange, ElementGraphicsRequestProps, FeatureAppearance, FeatureAppearanceProvider, FeatureAppearanceSource, GeometryClass, TileFormat,\n} from \"@itwin/core-common\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { IModelApp } from \"../../IModelApp\";\nimport {\n ImdlReader, IModelTileTree, RootIModelTile, Tile, TileContent, TileDrawArgs, TileParams, TileRequest, TileRequestChannel, TileTree,\n} from \"../../tile/internal\";\n\n/** The root tile for the branch of an [[IModelTileTree]] containing graphics for elements that have been modified during the current\n * Not intended for direct consumption - exported for use by [[IModelTileTree]].\n * [[GraphicalEditingScope]].\n */\nexport abstract class DynamicIModelTile extends Tile {\n protected constructor(params: TileParams, tree: TileTree) {\n super(params, tree);\n }\n\n public static create(root: RootIModelTile, elements: Iterable<ElementGeometryChange>): DynamicIModelTile {\n return new RootTile(root, elements);\n }\n\n /** Updates the tiles when elements are modified during the editing scope. */\n public abstract handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void;\n\n /** Overrides symbology of the *static* [[IModelTile]]s to hide elements that have been deleted or modified. */\n public abstract get appearanceProvider(): FeatureAppearanceProvider;\n\n /** Exposed strictly for tests. */\n public abstract get hiddenElements(): Id64Array;\n \n /** Strictly for tests. */\n public abstract get dynamicElements(): Id64Array;\n\n /** Select tiles for display, requesting content for tiles as necessary. */\n public abstract selectTiles(selected: Tile[], args: TileDrawArgs): void;\n\n /** Discard tiles that have not been used since the specified time point. */\n public abstract pruneChildren(olderThan: BeTimePoint): void;\n}\n\n/** The child tiles of the root tile, representing inserted or modified elements and sorted by element Id. */\nclass ElementTiles extends SortedArray<ElementTile> {\n public constructor() {\n super((lhs, rhs) => compareStrings(lhs.contentId, rhs.contentId));\n }\n\n public get array(): ElementTile[] {\n return this._array;\n }\n}\n\n/** The root tile. Each of its children represent a newly-inserted or modified element. */\nclass RootTile extends DynamicIModelTile implements FeatureAppearanceProvider {\n private readonly _hiddenElements: Id64.Uint32Set;\n public readonly transformToTree: Transform;\n private readonly _elements: ElementTiles;\n\n private get _imodelRoot() { return this.parent as RootIModelTile; }\n\n private get _elementChildren(): ElementTile[] {\n assert(undefined !== this.children);\n assert(this.children === this._elements.array);\n return this._elements.array;\n }\n\n public constructor(parent: RootIModelTile, elements: Iterable<ElementGeometryChange>) {\n const params: TileParams = {\n parent,\n isLeaf: false,\n contentId: \"dynamic\",\n range: Range3d.createNull(),\n maximumSize: parent.tileScreenSize,\n };\n\n super(params, parent.tree);\n\n this._hiddenElements = new Id64.Uint32Set();\n\n const inverseTransform = parent.tree.iModelTransform.inverse();\n assert(undefined !== inverseTransform);\n this.transformToTree = inverseTransform;\n\n this._elements = new ElementTiles();\n this.loadChildren(); // initially empty.\n assert(undefined !== this.children);\n\n this.setIsReady();\n this.handleGeometryChanges(elements);\n }\n\n public get hiddenElements(): Id64Array {\n return this._hiddenElements.toId64Array();\n }\n\n public get dynamicElements(): Id64Array {\n return this._elements.array.map((tile) => tile.contentId);\n }\n\n public get appearanceProvider(): FeatureAppearanceProvider {\n return this;\n }\n\n public getFeatureAppearance(source: FeatureAppearanceSource, elemLo: number, elemHi: number, subcatLo: number, subcatHi: number, geomClass: GeometryClass, modelLo: number, modelHi: number, type: BatchType, animationNodeId: number): FeatureAppearance | undefined {\n if (this._hiddenElements.has(elemLo, elemHi))\n return undefined;\n\n return source.getAppearance(elemLo, elemHi, subcatLo, subcatHi, geomClass, modelLo, modelHi, type, animationNodeId);\n }\n\n public handleGeometryChanges(changes: Iterable<ElementGeometryChange>): void {\n assert(undefined !== this.children);\n\n for (const change of changes) {\n if (change.type !== DbOpcode.Insert)\n this._hiddenElements.addId(change.id);\n\n let tile = this._elements.findEquivalent((t: ElementTile) => compareStrings(t.contentId, change.id));\n if (change.type === DbOpcode.Delete) {\n if (tile) {\n tile[Symbol.dispose]();\n this._elements.remove(tile);\n }\n } else {\n const range = change.range.isNull ? change.range.clone() : this.transformToTree.multiplyRange(change.range);\n if (tile)\n tile.update(range);\n else\n this._elements.insert(tile = new ElementTile(this, change.id, range));\n }\n }\n\n // Recompute range.\n this.range.setNull();\n for (const element of this._elements)\n this.range.extendRange(element.range);\n\n this._imodelRoot.updateDynamicRange(this);\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (errpr: Error) => void): void {\n // This is invoked from constructor. We will add a child per element later - for now just mark the children as having been loaded.\n resolve(this._elements.array);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root dynamic tile has no content\");\n }\n\n public async requestContent(): Promise<TileRequest.Response> {\n assert(false, \"Root dynamic tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root dynamic tile has no content\");\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\n for (const child of this._elementChildren)\n child.selectTiles(selected, args);\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n // Never discard ElementTiles - do discard not-recently-used graphics.\n for (const child of this._elementChildren)\n child.pruneChildren(olderThan);\n }\n}\n\n/** Represents a single element that has been inserted or had its geometric properties modified during the current [[GraphicalEditingScope]].\n * It has no graphics of its own; it has any number of child tiles, each of which have graphics of a different level of detail.\n * Its contentId is the element's Id.\n */\nclass ElementTile extends Tile {\n public constructor(parent: RootTile, elementId: Id64String, range: Range3d) {\n super({\n parent,\n isLeaf: false,\n contentId: elementId,\n range,\n maximumSize: parent.maximumSize,\n }, parent.tree);\n\n this.loadChildren();\n this.setIsReady();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n // Invoked from constructor. We'll add child tiles later as needed.\n resolve([]);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"ElementTile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"ElementTile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"ElementTile has no content\");\n }\n\n public pruneChildren(olderThan: BeTimePoint): void {\n const children = this.children as GraphicsTile[];\n assert(undefined !== children);\n\n const partitionIndex = partitionArray(children, (child) => !child.usageMarker.isExpired(olderThan));\n\n // Remove expired children.\n if (partitionIndex < children.length) {\n const expired = children.splice(partitionIndex);\n for (const child of expired)\n child[Symbol.dispose]();\n }\n\n // Restore ordering.\n children.sort((x, y) => y.toleranceLog10 - x.toleranceLog10);\n }\n\n public selectTiles(selected: Tile[], args: TileDrawArgs): void {\n assert(undefined !== this.children);\n if (this.isRegionCulled(args))\n return;\n\n args.markUsed(this);\n\n // ###TODO: Test content range culled.\n\n // Compute the ideal chord tolerance.\n assert(this.maximumSize > 0);\n const pixelSize = args.getPixelSizeInMetersAtClosestPoint(this);\n assert(pixelSize > 0);\n\n // Round down to the nearest power of ten.\n const toleranceLog10 = Math.floor(Math.log10(pixelSize));\n\n // Find (or create) a child tile of desired tolerance. Also find a child tile that can be substituted for the desired tile if that tile's content is not yet loaded.\n // NB: Children are sorted in descending order by log10(tolerance)\n const children = this.children as GraphicsTile[];\n let closestMatch: GraphicsTile | undefined;\n let exactMatch: GraphicsTile | undefined;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const tol = child.toleranceLog10;\n if (tol > toleranceLog10) {\n assert(undefined === exactMatch);\n if (child.hasGraphics)\n closestMatch = child;\n } else if (tol === toleranceLog10) {\n exactMatch = child;\n } else if (tol < toleranceLog10) {\n if (!exactMatch)\n children.splice(i++, 0, exactMatch = new GraphicsTile(this, toleranceLog10));\n\n if (child.hasGraphics && (!closestMatch || closestMatch.toleranceLog10 > toleranceLog10))\n closestMatch = child;\n }\n }\n\n if (!exactMatch) {\n assert(children.length === 0 || children[children.length - 1].toleranceLog10 > toleranceLog10);\n children.push(exactMatch = new GraphicsTile(this, toleranceLog10));\n }\n\n if (!exactMatch.isReady) {\n args.insertMissing(exactMatch);\n if (closestMatch) {\n selected.push(closestMatch);\n args.markUsed(closestMatch);\n }\n } else if (exactMatch.hasGraphics) {\n selected.push(exactMatch);\n args.markUsed(exactMatch);\n }\n }\n\n public update(range: Range3d): void {\n range.clone(this.range);\n const center = this.range.low.interpolate(0.5, this.range.high);\n const radius = 0.5 * this.range.low.distance(this.range.high);\n this.boundingSphere.init(center, radius);\n\n // Discard out-dated graphics.\n assert(undefined !== this.children);\n for (const child of this.children)\n child[Symbol.dispose]();\n\n this.children.length = 0;\n }\n}\n\nfunction* makeIdSequence() {\n let current = 0;\n while (true) {\n if (current >= Number.MAX_SAFE_INTEGER)\n current = 0;\n\n yield ++current;\n }\n}\n\nconst requestIdSequence = makeIdSequence();\n\n/** Supplies graphics of a specific LOD for a single element. */\nclass GraphicsTile extends Tile {\n public readonly toleranceLog10: number;\n public readonly tolerance: number;\n\n public constructor(parent: ElementTile, toleranceLog10: number) {\n assert(Math.round(toleranceLog10) === toleranceLog10);\n super({\n parent,\n isLeaf: true,\n contentId: `${parent.contentId}_${toleranceLog10}`,\n range: parent.range,\n maximumSize: parent.maximumSize,\n }, parent.tree);\n\n this.toleranceLog10 = toleranceLog10;\n this.tolerance = 10 ** toleranceLog10;\n }\n\n public override computeLoadPriority(): number {\n // We want the element's graphics to be updated as soon as possible\n return 0;\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n resolve(undefined);\n }\n\n public get channel(): TileRequestChannel {\n return IModelApp.tileAdmin.channels.elementGraphicsRpc;\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n // ###TODO tree flags (enforce display priority)\n // ###TODO classifiers, animation\n\n assert(undefined !== this.parent);\n\n const requestId = requestIdSequence.next();\n assert(!requestId.done);\n\n assert(this.tree instanceof IModelTileTree);\n const idProvider = this.tree.contentIdProvider;\n\n const props: ElementGraphicsRequestProps = {\n id: requestId.value.toString(16),\n elementId: this.parent.contentId,\n toleranceLog10: this.toleranceLog10,\n formatVersion: idProvider.majorFormatVersion,\n location: this.tree.iModelTransform.toJSON(),\n contentFlags: idProvider.contentFlags,\n omitEdges: !this.tree.edgeOptions,\n edgeType: this.tree.edgeOptions && \"non-indexed\" !== this.tree.edgeOptions.type ? 2 : 1,\n smoothPolyfaceEdges: this.tree.edgeOptions && this.tree.edgeOptions.smooth,\n clipToProjectExtents: this.tree.is3d,\n sectionCut: this.tree.stringifiedSectionClip,\n useAbsolutePositions: true,\n };\n\n return IModelApp.tileAdmin.requestElementGraphics(this.tree.iModel, props);\n }\n\n public async readContent(data: TileRequest.ResponseData, system: RenderSystem, isCanceled: () => boolean): Promise<TileContent> {\n if (undefined === isCanceled)\n isCanceled = () => !this.isLoading;\n\n assert(data instanceof Uint8Array);\n const stream = ByteStream.fromUint8Array(data);\n\n const position = stream.curPos;\n const format = stream.readUint32();\n stream.curPos = position;\n\n // ###TODO: IModelGraphics format wraps IModel format.\n assert(TileFormat.IModel === format);\n\n const tree = this.tree;\n assert(tree instanceof IModelTileTree);\n const { iModel, modelId, is3d, containsTransformNodes } = tree;\n const reader = ImdlReader.create({\n stream, iModel, modelId, is3d, system, isCanceled, containsTransformNodes,\n type: tree.batchType,\n loadEdges: false !== tree.edgeOptions,\n options: { tileId: this.contentId },\n timeline: tree.timeline,\n });\n\n let content: TileContent = { isLeaf: true };\n if (reader) {\n try {\n content = await reader.read();\n } catch {\n //\n }\n }\n\n return content;\n }\n}\n"]}
@@ -78,6 +78,8 @@ export declare class IModelTileTree extends TileTree {
78
78
  get tileState(): "static" | "dynamic" | "interactive" | "disposed";
79
79
  /** Exposed strictly for tests. */
80
80
  get hiddenElements(): Id64Array;
81
+ /** Strictly for tests. */
82
+ get dynamicElements(): Id64Array;
81
83
  getTransformNodeRange(nodeId: number): Range3d | undefined;
82
84
  get containsTransformNodes(): boolean;
83
85
  onScheduleEditingChanged(changes: RenderSchedule.EditingChanges[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAiC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAAE,OAAO,EAAa,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,SAAS,EAAE,iBAAiB,EAAE,WAAW,EACzC,gBAAgB,EAAE,mBAAmB,EAAwB,cAAc,EAAE,SAAS,EACvF,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,EACkC,WAAW,EAAE,UAAU,EAA8C,oBAAoB,EAAE,mBAAmB,EAAE,IAAI,EAC9I,YAAY,EAAE,gBAAgB,EAA+C,QAAQ,EAAE,cAAc,EACnH,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,cAAc,CAAC,aAAa,GAAG,SAAS,CAAC;CACpD;AAKD;GACG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAiC5K;AAyGD;GACG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,IAAI,KAAK,IAAI,CAAA;CAAE,CAAC;AAgK9G;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IACnC,OAAO,EAAE,WAAW,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAuB;IAC7D,SAAgB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5C,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,qBAAqB,EAAE,MAAM,CAAC;IAC9C,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,SAAgB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChD,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;IACnD,6FAA6F;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB,CAAK;IAC7B,iBAAiB,EAAE,mBAAmB,EAAE,CAAM;IAErD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,IAAoB,YAAY,yBAAiC;gBAE9C,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,gBAAgB;IAkC1D,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAKvC,IAAW,QAAQ,WAAiB;IACpC,IAAW,QAAQ,IAAI,IAAI,CAA2B;IACtD,iCAAiC;IACjC,IAAW,YAAY,IAAI,UAAU,CAAwC;IAC7E,IAAW,IAAI,YAAiC;IAChD,IAAoB,kBAAkB,YAAoB;IAC1D,IAAW,iBAAiB,OAAgC;IAE5D,IAAW,SAAS,IAAI,SAAS,CAAoC;IACrE,IAAW,WAAW,IAAI,WAAW,GAAG,KAAK,CAAgC;IAC7E,IAAW,QAAQ,IAAI,cAAc,CAAC,aAAa,GAAG,SAAS,CAAmC;IAElG,IAAoB,YAAY,IAAI,gBAAgB,CAGnD;IAED,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,EAAE;IAY3C,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAO9B,KAAK,IAAI,IAAI;IAKpB,kCAAkC;IAClC,IAAW,SAAS,IAAI,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAExE;IAED,kCAAkC;IAClC,IAAW,cAAc,IAAI,SAAS,CAGrC;IAEM,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIjE,IAAW,sBAAsB,IAAI,OAAO,CAE3C;IAEqB,wBAAwB,CAAC,OAAO,EAAE,cAAc,CAAC,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDvF,0BAA0B;CAI3C"}
1
+ {"version":3,"file":"IModelTileTree.d.ts","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":"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"}
@@ -356,6 +356,11 @@ class IModelTileTree extends internal_1.TileTree {
356
356
  const state = this._rootTile.tileState;
357
357
  return "dynamic" === state.type ? state.rootTile.hiddenElements : [];
358
358
  }
359
+ /** Strictly for tests. */
360
+ get dynamicElements() {
361
+ const state = this._rootTile.tileState;
362
+ return "dynamic" === state.type ? state.rootTile.dynamicElements : [];
363
+ }
359
364
  getTransformNodeRange(nodeId) {
360
365
  return this._transformNodeRanges?.get(nodeId);
361
366
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IModelTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, BeTimePoint, DbOpcode, GuidString, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ContentIdProvider, EdgeOptions, ElementAlignedBox3d, ElementGeometryChange, FeatureAppearanceProvider,\n IModelTileTreeId, IModelTileTreeProps, ModelGeometryChanges, RenderSchedule, TileProps\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { GraphicalEditingScope } from \"../../GraphicalEditingScope\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport {\n acquireImdlDecoder, DynamicIModelTile, ImdlDecoder, IModelTile, IModelTileParams, iModelTileParamsFromJSON, LayerTileTreeHandler, MapLayerTreeSetting, Tile,\n TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileRequestChannel, TileTree, TileTreeParams\n} from \"../../tile/internal\";\n\nexport interface IModelTileTreeOptions {\n readonly allowInstancing: boolean;\n readonly edges: EdgeOptions | false;\n readonly batchType: BatchType;\n readonly is3d: boolean;\n timeline: RenderSchedule.ModelTimeline | undefined;\n}\n\n// Overrides nothing.\nconst viewFlagOverrides = {};\n\n/** Parameters used to construct an [[IModelTileTree]]\n */\nexport interface IModelTileTreeParams extends TileTreeParams {\n rootTile: TileProps;\n contentIdQualifier?: string;\n geometryGuid?: GuidString;\n maxInitialTilesToSkip?: number;\n formatVersion?: number;\n tileScreenSize: number;\n options: IModelTileTreeOptions;\n transformNodeRanges?: Map<number, Range3d>;\n}\n\nexport function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams {\n const location = Transform.fromJSON(props.location);\n const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;\n const tileScreenSize = props.tileScreenSize ?? 512;\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n let transformNodeRanges;\n if (props.transformNodeRanges) {\n transformNodeRanges = new Map<number, Range3d>();\n for (const entry of props.transformNodeRanges)\n transformNodeRanges.set(entry.id, Range3d.fromJSON(entry));\n }\n\n const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;\n return {\n formatVersion,\n id,\n rootTile,\n iModel,\n location,\n modelId,\n contentRange,\n geometryGuid,\n contentIdQualifier,\n maxInitialTilesToSkip,\n priority,\n options,\n tileScreenSize,\n transformNodeRanges,\n };\n}\n\nfunction findElementChangesForModel(changes: Iterable<ModelGeometryChanges>, modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\n for (const change of changes)\n if (change.id === modelId)\n return change.elements;\n\n return undefined;\n}\n\n/** No graphical editing scope is currently active. */\nclass StaticState {\n public readonly type = \"static\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(root: RootTile) {\n this[Symbol.dispose] = GraphicalEditingScope.onEnter.addOnce((scope: GraphicalEditingScope) => {\n root.transition(new InteractiveState(scope, root));\n });\n }\n}\n\n/** A graphical editing scope is currently active, but no elements in the tile tree's model have been modified. */\nclass InteractiveState {\n public readonly type = \"interactive\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(scope: GraphicalEditingScope, root: RootTile) {\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elemChanges = findElementChangesForModel(changes, root.tree.modelId);\n if (elemChanges)\n root.transition(new DynamicState(root, elemChanges, scope));\n });\n\n this[Symbol.dispose] = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** Elements in the tile tree's model have been modified during the current editing scope. */\nclass DynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private readonly _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>, scope: GraphicalEditingScope) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elems = findElementChangesForModel(changes, root.tree.modelId);\n if (elems)\n this.rootTile.handleGeometryChanges(elems);\n });\n\n this._dispose = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\nclass ScheduleScriptDynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n this._dispose = () => {};\n }\n}\n\n/** The tile tree has been disposed. */\nclass DisposedState {\n public readonly type = \"disposed\";\n public [Symbol.dispose](): void { }\n}\n\nconst disposedState = new DisposedState();\n\n/** The current state of an [[IModelTileTree]]'s [[RootTile]]. The tile transitions between these states primarily in response to GraphicalEditingScope events. */\ntype RootTileState = StaticState | InteractiveState | DynamicState | DisposedState | ScheduleScriptDynamicState ;\n\n/** The root tile for an [[IModelTileTree]].\n */\nexport type RootIModelTile = Tile & { tileScreenSize: number, updateDynamicRange: (childTile: Tile) => void };\n\n/** Represents the root [[Tile]] of an [[IModelTileTree]]. The root tile has one or two direct child tiles which represent different branches of the tree:\n * - The static branch, containing tiles that represent the state of the model's geometry as of the beginning of the current [[GraphicalEditingScope]].\n * - The dynamic branch, containing tiles representing the geometry of elements that have been modified during the current [[GraphicalEditingScope]].\n * If no editing scope is currently active, the dynamic branch does not exist, and the static branch represents the current state of all elements in the model.\n */\nclass RootTile extends Tile {\n public readonly staticBranch: IModelTile;\n private _tileState: RootTileState;\n private readonly _staticTreeContentRange?: Range3d;\n\n public get tileState(): RootTileState {\n return this._tileState;\n }\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n const rootParams: TileParams = {\n ...params,\n range: params.range.clone(),\n contentRange: params.contentRange?.clone(),\n isLeaf: false,\n contentId: \"\",\n };\n\n super(rootParams, tree);\n this.staticBranch = new IModelTile(params, tree);\n this._staticTreeContentRange = tree.contentRange?.clone();\n\n if (!this._contentRange)\n this._contentRange = this.staticBranch.contentRange.clone();\n\n // Determine initial state.\n const scope = tree.iModel.isBriefcaseConnection() ? tree.iModel.editingScope : undefined;\n if (undefined === scope) {\n this._tileState = new StaticState(this);\n } else {\n const changes = scope.getGeometryChangesForModel(tree.modelId);\n this._tileState = changes ? new DynamicState(this, changes, scope) : new InteractiveState(scope, this);\n }\n\n // Load the children immediately.\n this.setIsReady();\n this.loadChildren();\n }\n\n public override[Symbol.dispose](): void {\n this.transition(disposedState);\n super[Symbol.dispose]();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n const children: Tile[] = [this.staticBranch];\n if (this._tileState.type === \"dynamic\")\n children.push(this._tileState.rootTile);\n\n resolve(children);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"Root iModel tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public draw(args: TileDrawArgs, tiles: Tile[], numStaticTiles: number): void {\n assert(numStaticTiles >= 0 && numStaticTiles <= tiles.length);\n\n // Draw the static tiles.\n for (let i = 0; i < numStaticTiles; i++)\n tiles[i].drawGraphics(args);\n\n if (\"dynamic\" !== this._tileState.type || numStaticTiles === tiles.length) {\n if (\"dynamic\" === this._tileState.type)\n args.addAppearanceProvider(this._tileState.rootTile.appearanceProvider);\n\n args.drawGraphics();\n return;\n }\n\n // We need to hide any modified elements in the static tiles. Pull their graphics into a separate branch.\n if (!args.graphics.isEmpty) {\n const staticBranch = new GraphicBranch();\n for (const staticGraphic of args.graphics.entries)\n staticBranch.add(staticGraphic);\n\n let appearanceProvider = this._tileState.rootTile.appearanceProvider;\n if (args.appearanceProvider)\n appearanceProvider = FeatureAppearanceProvider.chain(args.appearanceProvider, appearanceProvider);\n args.graphics.clear();\n args.graphics.add(args.context.createGraphicBranch(staticBranch, Transform.createIdentity(), { appearanceProvider }));\n }\n\n // Draw the dynamic tiles.\n for (let i = numStaticTiles; i < tiles.length; i++)\n tiles[i].drawGraphics(args);\n\n args.drawGraphics();\n }\n\n public prune(olderThan: BeTimePoint): void {\n this.staticBranch.pruneChildren(olderThan);\n if (\"dynamic\" === this._tileState.type)\n this._tileState.rootTile.pruneChildren(olderThan);\n }\n\n public transition(newState: RootTileState): void {\n assert(newState.type !== this._tileState.type);\n const resetRange = \"dynamic\" === this._tileState.type;\n\n assert(undefined !== this.children);\n if (\"dynamic\" === this._tileState.type) {\n assert(2 === this.children.length);\n this.children.pop();\n } else if (\"dynamic\" === newState.type) {\n assert(1 === this.children.length);\n this.children.push(newState.rootTile);\n }\n\n this._tileState[Symbol.dispose]();\n this._tileState = newState;\n\n if (resetRange)\n this.resetRange();\n }\n\n private resetRange(): void {\n this.staticBranch.range.clone(this.range);\n this.staticBranch.contentRange.clone(this._contentRange);\n\n if (this._staticTreeContentRange && this.tree.contentRange)\n this._staticTreeContentRange.clone(this.tree.contentRange);\n\n }\n\n public get tileScreenSize(): number {\n return this.staticBranch.iModelTree.tileScreenSize;\n }\n\n public updateDynamicRange(tile: Tile): void {\n this.resetRange();\n if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)\n this.tree.contentRange.extendRange(tile.contentRange);\n\n if (!tile.range.isNull)\n this.range.extendRange(tile.range);\n\n assert(undefined !== this._contentRange);\n if (!tile.contentRange.isNull)\n this._contentRange.extendRange(tile.contentRange);\n }\n}\n\n/** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.\n * @internal exported strictly for display-test-app until we remove CommonJS support.\n */\nexport class IModelTileTree extends TileTree {\n public decoder: ImdlDecoder;\n private readonly _rootTile: RootTile;\n private readonly _options: IModelTileTreeOptions;\n private readonly _transformNodeRanges?: Map<number, Range3d>;\n public readonly contentIdQualifier?: string;\n public readonly geometryGuid?: string;\n public readonly maxTilesToSkip: number;\n public readonly maxInitialTilesToSkip: number;\n public readonly contentIdProvider: ContentIdProvider;\n public readonly stringifiedSectionClip?: string;\n public readonly tileScreenSize: number;\n public readonly iModelTileTreeId: IModelTileTreeId;\n /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */\n public debugMaxDepth?: number;\n /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.\n * So _selectTiles() puts the static tiles first in the Tile[] array, and records the number of static tiles selected, to be\n * used by draw().\n */\n private _numStaticTilesSelected = 0;\n public layerImageryTrees: MapLayerTreeSetting[] = [];\n\n private readonly _layerHandler: LayerTileTreeHandler;\n public override get layerHandler() { return this._layerHandler; }\n\n public constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId) {\n super(params);\n this.iModelTileTreeId = treeId;\n this.contentIdQualifier = params.contentIdQualifier;\n this.geometryGuid = params.geometryGuid;\n this.tileScreenSize = params.tileScreenSize;\n this._layerHandler = new LayerTileTreeHandler(this);\n\n if (BatchType.Primary === treeId.type)\n this.stringifiedSectionClip = treeId.sectionCut;\n\n this.maxInitialTilesToSkip = params.maxInitialTilesToSkip ?? 0;\n this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;\n\n this._options = params.options;\n this._transformNodeRanges = params.transformNodeRanges;\n\n this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);\n\n params.rootTile.contentId = this.contentIdProvider.rootContentId;\n this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);\n\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: false === this.edgeOptions,\n timeline: this.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n }\n\n public override[Symbol.dispose](): void {\n this.decoder.release();\n super[Symbol.dispose]();\n }\n\n public get maxDepth() { return 32; }\n public get rootTile(): Tile { return this._rootTile; }\n /** Exposed chiefly for tests. */\n public get staticBranch(): IModelTile { return this._rootTile.staticBranch; }\n public get is3d() { return this._options.is3d; }\n public override get isContentUnbounded() { return false; }\n public get viewFlagOverrides() { return viewFlagOverrides; }\n\n public get batchType(): BatchType { return this._options.batchType; }\n public get edgeOptions(): EdgeOptions | false { return this._options.edges; }\n public get timeline(): RenderSchedule.ModelTimeline | undefined { return this._options.timeline; }\n\n public override get loadPriority(): TileLoadPriority {\n // If the model has been modified, we want to prioritize keeping its graphics up to date.\n return this.tileState === \"dynamic\" ? TileLoadPriority.Dynamic : super.loadPriority;\n }\n\n protected _selectTiles(args: TileDrawArgs): Tile[] {\n args.markUsed(this._rootTile);\n const tiles: Tile[] = [];\n this._rootTile.staticBranch.selectTiles(tiles, args, 0);\n this._numStaticTilesSelected = tiles.length;\n\n if (this._rootTile.tileState.type === \"dynamic\")\n this._rootTile.tileState.rootTile.selectTiles(tiles, args);\n\n return tiles;\n }\n\n public draw(args: TileDrawArgs): void {\n const tiles = this.selectTiles(args);\n this._rootTile.draw(args, tiles, this._numStaticTilesSelected);\n if (args.shouldCollectClassifierGraphics)\n this._layerHandler.collectClassifierGraphics(args, tiles);\n }\n\n public prune(): void {\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\n this._rootTile.prune(olderThan);\n }\n\n /** Exposed strictly for tests. */\n public get tileState(): \"static\" | \"dynamic\" | \"interactive\" | \"disposed\" {\n return this._rootTile.tileState.type;\n }\n\n /** Exposed strictly for tests. */\n public get hiddenElements(): Id64Array {\n const state = this._rootTile.tileState;\n return \"dynamic\" === state.type ? state.rootTile.hiddenElements : [];\n }\n\n public getTransformNodeRange(nodeId: number): Range3d | undefined {\n return this._transformNodeRanges?.get(nodeId);\n }\n\n public get containsTransformNodes(): boolean {\n return undefined !== this._transformNodeRanges;\n }\n\n public override async onScheduleEditingChanged(changes: RenderSchedule.EditingChanges[]): Promise<void> {\n const displayStyle = IModelApp.viewManager.selectedView?.displayStyle;\n const newScript = displayStyle?.scheduleScript;\n const scriptRef = newScript ? new RenderSchedule.ScriptReference(displayStyle.id, newScript) : undefined;\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(this.modelId, scriptRef);\n\n if (scriptInfo?.timeline && this.timeline !== scriptInfo.timeline) {\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: this.edgeOptions === false,\n timeline: scriptInfo.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n this._options.timeline = scriptInfo.timeline;\n }\n\n const relevantChange = changes.find((c) => c.timeline.modelId === this.modelId);\n if (!relevantChange || relevantChange.elements.size === 0)\n return;\n\n const elementIds = Array.from(relevantChange.elements);\n const placements = await this.iModel.elements.getPlacements(elementIds, {\n type: this.is3d ? \"3d\" : \"2d\",\n });\n\n if (placements.length === 0)\n return;\n\n const changedElements = placements.map((x) => {\n return {\n id: x.elementId,\n type: DbOpcode.Update,\n range: x.calculateRange(),\n }\n });\n\n if (changedElements.length === 0)\n return;\n\n if (this._rootTile.tileState.type === \"dynamic\") {\n this._rootTile.transition(new StaticState(this._rootTile));\n }\n this._rootTile.transition(new ScheduleScriptDynamicState(this._rootTile, changedElements));\n }\n\n public override onScheduleEditingCommitted() {\n if (this._rootTile.tileState.type !== \"static\")\n this._rootTile.transition(new StaticState(this._rootTile));\n }\n}\n"]}
1
+ {"version":3,"file":"IModelTileTree.js","sourceRoot":"","sources":["../../../../src/internal/tile/IModelTileTree.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, BeTimePoint, DbOpcode, GuidString, Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport {\n BatchType, ContentIdProvider, EdgeOptions, ElementAlignedBox3d, ElementGeometryChange, FeatureAppearanceProvider,\n IModelTileTreeId, IModelTileTreeProps, ModelGeometryChanges, RenderSchedule, TileProps\n} from \"@itwin/core-common\";\nimport { IModelApp } from \"../../IModelApp\";\nimport { IModelConnection } from \"../../IModelConnection\";\nimport { GraphicalEditingScope } from \"../../GraphicalEditingScope\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport {\n acquireImdlDecoder, DynamicIModelTile, ImdlDecoder, IModelTile, IModelTileParams, iModelTileParamsFromJSON, LayerTileTreeHandler, MapLayerTreeSetting, Tile,\n TileContent, TileDrawArgs, TileLoadPriority, TileParams, TileRequest, TileRequestChannel, TileTree, TileTreeParams\n} from \"../../tile/internal\";\n\nexport interface IModelTileTreeOptions {\n readonly allowInstancing: boolean;\n readonly edges: EdgeOptions | false;\n readonly batchType: BatchType;\n readonly is3d: boolean;\n timeline: RenderSchedule.ModelTimeline | undefined;\n}\n\n// Overrides nothing.\nconst viewFlagOverrides = {};\n\n/** Parameters used to construct an [[IModelTileTree]]\n */\nexport interface IModelTileTreeParams extends TileTreeParams {\n rootTile: TileProps;\n contentIdQualifier?: string;\n geometryGuid?: GuidString;\n maxInitialTilesToSkip?: number;\n formatVersion?: number;\n tileScreenSize: number;\n options: IModelTileTreeOptions;\n transformNodeRanges?: Map<number, Range3d>;\n}\n\nexport function iModelTileTreeParamsFromJSON(props: IModelTileTreeProps, iModel: IModelConnection, modelId: Id64String, options: IModelTileTreeOptions): IModelTileTreeParams {\n const location = Transform.fromJSON(props.location);\n const { formatVersion, id, rootTile, contentIdQualifier, maxInitialTilesToSkip, geometryGuid } = props;\n const tileScreenSize = props.tileScreenSize ?? 512;\n\n let contentRange;\n if (undefined !== props.contentRange)\n contentRange = Range3d.fromJSON<ElementAlignedBox3d>(props.contentRange);\n\n let transformNodeRanges;\n if (props.transformNodeRanges) {\n transformNodeRanges = new Map<number, Range3d>();\n for (const entry of props.transformNodeRanges)\n transformNodeRanges.set(entry.id, Range3d.fromJSON(entry));\n }\n\n const priority = BatchType.Primary === options.batchType ? TileLoadPriority.Primary : TileLoadPriority.Classifier;\n return {\n formatVersion,\n id,\n rootTile,\n iModel,\n location,\n modelId,\n contentRange,\n geometryGuid,\n contentIdQualifier,\n maxInitialTilesToSkip,\n priority,\n options,\n tileScreenSize,\n transformNodeRanges,\n };\n}\n\nfunction findElementChangesForModel(changes: Iterable<ModelGeometryChanges>, modelId: Id64String): Iterable<ElementGeometryChange> | undefined {\n for (const change of changes)\n if (change.id === modelId)\n return change.elements;\n\n return undefined;\n}\n\n/** No graphical editing scope is currently active. */\nclass StaticState {\n public readonly type = \"static\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(root: RootTile) {\n this[Symbol.dispose] = GraphicalEditingScope.onEnter.addOnce((scope: GraphicalEditingScope) => {\n root.transition(new InteractiveState(scope, root));\n });\n }\n}\n\n/** A graphical editing scope is currently active, but no elements in the tile tree's model have been modified. */\nclass InteractiveState {\n public readonly type = \"interactive\";\n public readonly [Symbol.dispose]!: () => void;\n\n public constructor(scope: GraphicalEditingScope, root: RootTile) {\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elemChanges = findElementChangesForModel(changes, root.tree.modelId);\n if (elemChanges)\n root.transition(new DynamicState(root, elemChanges, scope));\n });\n\n this[Symbol.dispose] = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\n/** Elements in the tile tree's model have been modified during the current editing scope. */\nclass DynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private readonly _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>, scope: GraphicalEditingScope) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n\n const removeEndingListener = scope.onExiting.addOnce((_) => {\n root.transition(new StaticState(root));\n });\n\n const removeGeomListener = scope.onGeometryChanges.addListener((changes: Iterable<ModelGeometryChanges>, _scope: GraphicalEditingScope) => {\n assert(scope === _scope);\n const elems = findElementChangesForModel(changes, root.tree.modelId);\n if (elems)\n this.rootTile.handleGeometryChanges(elems);\n });\n\n this._dispose = () => {\n removeEndingListener();\n removeGeomListener();\n };\n }\n}\n\nclass ScheduleScriptDynamicState {\n public readonly type = \"dynamic\";\n public readonly rootTile: DynamicIModelTile;\n private _dispose: () => void;\n\n public [Symbol.dispose](): void {\n this._dispose();\n this.rootTile[Symbol.dispose]();\n }\n\n public constructor(root: RootTile, elemChanges: Iterable<ElementGeometryChange>) {\n this.rootTile = DynamicIModelTile.create(root, elemChanges);\n this._dispose = () => {};\n }\n}\n\n/** The tile tree has been disposed. */\nclass DisposedState {\n public readonly type = \"disposed\";\n public [Symbol.dispose](): void { }\n}\n\nconst disposedState = new DisposedState();\n\n/** The current state of an [[IModelTileTree]]'s [[RootTile]]. The tile transitions between these states primarily in response to GraphicalEditingScope events. */\ntype RootTileState = StaticState | InteractiveState | DynamicState | DisposedState | ScheduleScriptDynamicState ;\n\n/** The root tile for an [[IModelTileTree]].\n */\nexport type RootIModelTile = Tile & { tileScreenSize: number, updateDynamicRange: (childTile: Tile) => void };\n\n/** Represents the root [[Tile]] of an [[IModelTileTree]]. The root tile has one or two direct child tiles which represent different branches of the tree:\n * - The static branch, containing tiles that represent the state of the model's geometry as of the beginning of the current [[GraphicalEditingScope]].\n * - The dynamic branch, containing tiles representing the geometry of elements that have been modified during the current [[GraphicalEditingScope]].\n * If no editing scope is currently active, the dynamic branch does not exist, and the static branch represents the current state of all elements in the model.\n */\nclass RootTile extends Tile {\n public readonly staticBranch: IModelTile;\n private _tileState: RootTileState;\n private readonly _staticTreeContentRange?: Range3d;\n\n public get tileState(): RootTileState {\n return this._tileState;\n }\n\n public constructor(params: IModelTileParams, tree: IModelTileTree) {\n const rootParams: TileParams = {\n ...params,\n range: params.range.clone(),\n contentRange: params.contentRange?.clone(),\n isLeaf: false,\n contentId: \"\",\n };\n\n super(rootParams, tree);\n this.staticBranch = new IModelTile(params, tree);\n this._staticTreeContentRange = tree.contentRange?.clone();\n\n if (!this._contentRange)\n this._contentRange = this.staticBranch.contentRange.clone();\n\n // Determine initial state.\n const scope = tree.iModel.isBriefcaseConnection() ? tree.iModel.editingScope : undefined;\n if (undefined === scope) {\n this._tileState = new StaticState(this);\n } else {\n const changes = scope.getGeometryChangesForModel(tree.modelId);\n this._tileState = changes ? new DynamicState(this, changes, scope) : new InteractiveState(scope, this);\n }\n\n // Load the children immediately.\n this.setIsReady();\n this.loadChildren();\n }\n\n public override[Symbol.dispose](): void {\n this.transition(disposedState);\n super[Symbol.dispose]();\n }\n\n protected _loadChildren(resolve: (children: Tile[] | undefined) => void, _reject: (error: Error) => void): void {\n const children: Tile[] = [this.staticBranch];\n if (this._tileState.type === \"dynamic\")\n children.push(this._tileState.rootTile);\n\n resolve(children);\n }\n\n public get channel(): TileRequestChannel {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public async requestContent(_isCanceled: () => boolean): Promise<TileRequest.Response> {\n assert(false, \"Root iModel tile has no content\");\n return undefined;\n }\n\n public async readContent(_data: TileRequest.ResponseData, _system: RenderSystem, _isCanceled: () => boolean): Promise<TileContent> {\n throw new Error(\"Root iModel tile has no content\");\n }\n\n public draw(args: TileDrawArgs, tiles: Tile[], numStaticTiles: number): void {\n assert(numStaticTiles >= 0 && numStaticTiles <= tiles.length);\n\n // Draw the static tiles.\n for (let i = 0; i < numStaticTiles; i++)\n tiles[i].drawGraphics(args);\n\n if (\"dynamic\" !== this._tileState.type || numStaticTiles === tiles.length) {\n if (\"dynamic\" === this._tileState.type)\n args.addAppearanceProvider(this._tileState.rootTile.appearanceProvider);\n\n args.drawGraphics();\n return;\n }\n\n // We need to hide any modified elements in the static tiles. Pull their graphics into a separate branch.\n if (!args.graphics.isEmpty) {\n const staticBranch = new GraphicBranch();\n for (const staticGraphic of args.graphics.entries)\n staticBranch.add(staticGraphic);\n\n let appearanceProvider = this._tileState.rootTile.appearanceProvider;\n if (args.appearanceProvider)\n appearanceProvider = FeatureAppearanceProvider.chain(args.appearanceProvider, appearanceProvider);\n args.graphics.clear();\n args.graphics.add(args.context.createGraphicBranch(staticBranch, Transform.createIdentity(), { appearanceProvider }));\n }\n\n // Draw the dynamic tiles.\n for (let i = numStaticTiles; i < tiles.length; i++)\n tiles[i].drawGraphics(args);\n\n args.drawGraphics();\n }\n\n public prune(olderThan: BeTimePoint): void {\n this.staticBranch.pruneChildren(olderThan);\n if (\"dynamic\" === this._tileState.type)\n this._tileState.rootTile.pruneChildren(olderThan);\n }\n\n public transition(newState: RootTileState): void {\n assert(newState.type !== this._tileState.type);\n const resetRange = \"dynamic\" === this._tileState.type;\n\n assert(undefined !== this.children);\n if (\"dynamic\" === this._tileState.type) {\n assert(2 === this.children.length);\n this.children.pop();\n } else if (\"dynamic\" === newState.type) {\n assert(1 === this.children.length);\n this.children.push(newState.rootTile);\n }\n\n this._tileState[Symbol.dispose]();\n this._tileState = newState;\n\n if (resetRange)\n this.resetRange();\n }\n\n private resetRange(): void {\n this.staticBranch.range.clone(this.range);\n this.staticBranch.contentRange.clone(this._contentRange);\n\n if (this._staticTreeContentRange && this.tree.contentRange)\n this._staticTreeContentRange.clone(this.tree.contentRange);\n\n }\n\n public get tileScreenSize(): number {\n return this.staticBranch.iModelTree.tileScreenSize;\n }\n\n public updateDynamicRange(tile: Tile): void {\n this.resetRange();\n if (this._staticTreeContentRange && this.tree.contentRange && !tile.contentRange.isNull)\n this.tree.contentRange.extendRange(tile.contentRange);\n\n if (!tile.range.isNull)\n this.range.extendRange(tile.range);\n\n assert(undefined !== this._contentRange);\n if (!tile.contentRange.isNull)\n this._contentRange.extendRange(tile.contentRange);\n }\n}\n\n/** A TileTree whose contents are derived from geometry stored in a Model in an IModelDb.\n * @internal exported strictly for display-test-app until we remove CommonJS support.\n */\nexport class IModelTileTree extends TileTree {\n public decoder: ImdlDecoder;\n private readonly _rootTile: RootTile;\n private readonly _options: IModelTileTreeOptions;\n private readonly _transformNodeRanges?: Map<number, Range3d>;\n public readonly contentIdQualifier?: string;\n public readonly geometryGuid?: string;\n public readonly maxTilesToSkip: number;\n public readonly maxInitialTilesToSkip: number;\n public readonly contentIdProvider: ContentIdProvider;\n public readonly stringifiedSectionClip?: string;\n public readonly tileScreenSize: number;\n public readonly iModelTileTreeId: IModelTileTreeId;\n /** Strictly for debugging/testing - forces tile selection to halt at the specified depth. */\n public debugMaxDepth?: number;\n /** A little hacky...we must not override selectTiles(), but draw() needs to distinguish between static and dynamic tiles.\n * So _selectTiles() puts the static tiles first in the Tile[] array, and records the number of static tiles selected, to be\n * used by draw().\n */\n private _numStaticTilesSelected = 0;\n public layerImageryTrees: MapLayerTreeSetting[] = [];\n\n private readonly _layerHandler: LayerTileTreeHandler;\n public override get layerHandler() { return this._layerHandler; }\n\n public constructor(params: IModelTileTreeParams, treeId: IModelTileTreeId) {\n super(params);\n this.iModelTileTreeId = treeId;\n this.contentIdQualifier = params.contentIdQualifier;\n this.geometryGuid = params.geometryGuid;\n this.tileScreenSize = params.tileScreenSize;\n this._layerHandler = new LayerTileTreeHandler(this);\n\n if (BatchType.Primary === treeId.type)\n this.stringifiedSectionClip = treeId.sectionCut;\n\n this.maxInitialTilesToSkip = params.maxInitialTilesToSkip ?? 0;\n this.maxTilesToSkip = IModelApp.tileAdmin.maximumLevelsToSkip;\n\n this._options = params.options;\n this._transformNodeRanges = params.transformNodeRanges;\n\n this.contentIdProvider = ContentIdProvider.create(params.options.allowInstancing, IModelApp.tileAdmin, params.formatVersion);\n\n params.rootTile.contentId = this.contentIdProvider.rootContentId;\n this._rootTile = new RootTile(iModelTileParamsFromJSON(params.rootTile, undefined), this);\n\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: false === this.edgeOptions,\n timeline: this.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n }\n\n public override[Symbol.dispose](): void {\n this.decoder.release();\n super[Symbol.dispose]();\n }\n\n public get maxDepth() { return 32; }\n public get rootTile(): Tile { return this._rootTile; }\n /** Exposed chiefly for tests. */\n public get staticBranch(): IModelTile { return this._rootTile.staticBranch; }\n public get is3d() { return this._options.is3d; }\n public override get isContentUnbounded() { return false; }\n public get viewFlagOverrides() { return viewFlagOverrides; }\n\n public get batchType(): BatchType { return this._options.batchType; }\n public get edgeOptions(): EdgeOptions | false { return this._options.edges; }\n public get timeline(): RenderSchedule.ModelTimeline | undefined { return this._options.timeline; }\n\n public override get loadPriority(): TileLoadPriority {\n // If the model has been modified, we want to prioritize keeping its graphics up to date.\n return this.tileState === \"dynamic\" ? TileLoadPriority.Dynamic : super.loadPriority;\n }\n\n protected _selectTiles(args: TileDrawArgs): Tile[] {\n args.markUsed(this._rootTile);\n const tiles: Tile[] = [];\n this._rootTile.staticBranch.selectTiles(tiles, args, 0);\n this._numStaticTilesSelected = tiles.length;\n\n if (this._rootTile.tileState.type === \"dynamic\")\n this._rootTile.tileState.rootTile.selectTiles(tiles, args);\n\n return tiles;\n }\n\n public draw(args: TileDrawArgs): void {\n const tiles = this.selectTiles(args);\n this._rootTile.draw(args, tiles, this._numStaticTilesSelected);\n if (args.shouldCollectClassifierGraphics)\n this._layerHandler.collectClassifierGraphics(args, tiles);\n }\n\n public prune(): void {\n const olderThan = BeTimePoint.now().minus(this.expirationTime);\n this._rootTile.prune(olderThan);\n }\n\n /** Exposed strictly for tests. */\n public get tileState(): \"static\" | \"dynamic\" | \"interactive\" | \"disposed\" {\n return this._rootTile.tileState.type;\n }\n\n /** Exposed strictly for tests. */\n public get hiddenElements(): Id64Array {\n const state = this._rootTile.tileState;\n return \"dynamic\" === state.type ? state.rootTile.hiddenElements : [];\n }\n\n /** Strictly for tests. */\n public get dynamicElements(): Id64Array {\n const state = this._rootTile.tileState;\n return \"dynamic\" === state.type ? state.rootTile.dynamicElements : [];\n }\n\n public getTransformNodeRange(nodeId: number): Range3d | undefined {\n return this._transformNodeRanges?.get(nodeId);\n }\n\n public get containsTransformNodes(): boolean {\n return undefined !== this._transformNodeRanges;\n }\n\n public override async onScheduleEditingChanged(changes: RenderSchedule.EditingChanges[]): Promise<void> {\n const displayStyle = IModelApp.viewManager.selectedView?.displayStyle;\n const newScript = displayStyle?.scheduleScript;\n const scriptRef = newScript ? new RenderSchedule.ScriptReference(displayStyle.id, newScript) : undefined;\n const scriptInfo = IModelApp.tileAdmin.getScriptInfoForTreeId(this.modelId, scriptRef);\n\n if (scriptInfo?.timeline && this.timeline !== scriptInfo.timeline) {\n this.decoder = acquireImdlDecoder({\n type: this.batchType,\n omitEdges: this.edgeOptions === false,\n timeline: scriptInfo.timeline,\n iModel: this.iModel,\n batchModelId: this.modelId,\n is3d: this.is3d,\n containsTransformNodes: this.containsTransformNodes,\n noWorker: !IModelApp.tileAdmin.decodeImdlInWorker,\n });\n this._options.timeline = scriptInfo.timeline;\n }\n\n const relevantChange = changes.find((c) => c.timeline.modelId === this.modelId);\n if (!relevantChange || relevantChange.elements.size === 0)\n return;\n\n const elementIds = Array.from(relevantChange.elements);\n const placements = await this.iModel.elements.getPlacements(elementIds, {\n type: this.is3d ? \"3d\" : \"2d\",\n });\n\n if (placements.length === 0)\n return;\n\n const changedElements = placements.map((x) => {\n return {\n id: x.elementId,\n type: DbOpcode.Update,\n range: x.calculateRange(),\n }\n });\n\n if (changedElements.length === 0)\n return;\n\n if (this._rootTile.tileState.type === \"dynamic\") {\n this._rootTile.transition(new StaticState(this._rootTile));\n }\n this._rootTile.transition(new ScheduleScriptDynamicState(this._rootTile, changedElements));\n }\n\n public override onScheduleEditingCommitted() {\n if (this._rootTile.tileState.type !== \"static\")\n this._rootTile.transition(new StaticState(this._rootTile));\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGISImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/tile/map/ImageryProviders/ArcGISImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAmB,qBAAqB,EAAmB,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAKvM;;;;;;GAMG;AACH,8BAAsB,qBAAsB,SAAQ,uBAAuB;IAEzE,SAAS,CAAC,aAAa,EAAE,oBAAoB,GAAC,SAAS,CAAC;IACxD,SAAS,CAAC,gBAAgB,EAAE,mBAAmB,GAAC,SAAS,CAAC;IAE1D;;MAEE;IACF,SAAS,CAAC,oBAAoB,UAAS;IAEvC,SAAS,CAAC,eAAe,UAAS;IAElC,IAAoB,sBAAsB,YAAkC;gBAEhE,QAAQ,EAAE,qBAAqB,EAAE,eAAe,EAAE,OAAO;IAKrE;SACK;cACc,eAAe,CAAC,MAAM,EAAE,6BAA6B;IAaxE;;;MAGE;cACc,cAAc;IAuB9B;;;;;OAKG;cACa,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW;CAsGtD"}
1
+ {"version":3,"file":"ArcGISImageryProvider.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/tile/map/ImageryProviders/ArcGISImageryProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAmB,qBAAqB,EAAmB,oBAAoB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAKvM;;;;;;GAMG;AACH,8BAAsB,qBAAsB,SAAQ,uBAAuB;IAEzE,SAAS,CAAC,aAAa,EAAE,oBAAoB,GAAC,SAAS,CAAC;IACxD,SAAS,CAAC,gBAAgB,EAAE,mBAAmB,GAAC,SAAS,CAAC;IAE1D;;MAEE;IACF,SAAS,CAAC,oBAAoB,UAAS;IAEvC,SAAS,CAAC,eAAe,UAAS;IAElC,IAAoB,sBAAsB,YAAkC;gBAEhE,QAAQ,EAAE,qBAAqB,EAAE,eAAe,EAAE,OAAO;IAKrE;SACK;cACc,eAAe,CAAC,MAAM,EAAE,6BAA6B;IAaxE;;;MAGE;cACc,cAAc;IAuB9B;;;;;OAKG;cACa,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW;CAuGtD"}
@@ -88,6 +88,7 @@ class ArcGISImageryProvider extends internal_1.MapLayerImageryProvider {
88
88
  if (this._accessTokenRequired && this._accessClient) {
89
89
  this._lastAccessToken = await internal_1.ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {
90
90
  mapLayerUrl: new URL(this._settings.url),
91
+ portal: typeof this._settings.properties?.portal === "string" ? this._settings.properties.portal : undefined,
91
92
  userName: this._settings.userName,
92
93
  password: this._settings.password
93
94
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGISImageryProvider.js","sourceRoot":"","sources":["../../../../../../src/internal/tile/map/ImageryProviders/ArcGISImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { ArcGisErrorCode, ArcGISServiceMetadata, ArcGisUtilities, MapLayerAccessClient, MapLayerAccessToken, MapLayerImageryProvider, MapLayerImageryProviderStatus } from \"../../../../tile/internal\";\nimport { IModelApp } from \"../../../../IModelApp\";\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../../../NotificationManager\";\nimport { headersIncludeAuthMethod } from \"../../../../request/utils\";\n\n/** Base class for ArcGIS map-layer imagery providers.\n *\n * The initial purpose of this class is to offer shared methods\n * to query ArcGIS services and apply the appropriate security token.\n * @see [[ArcGISMapLayerImageryProvider]]\n * @internal\n */\nexport abstract class ArcGISImageryProvider extends MapLayerImageryProvider {\n\n protected _accessClient: MapLayerAccessClient|undefined;\n protected _lastAccessToken: MapLayerAccessToken|undefined;\n\n /** Flag indicating if access token should be added to request.\n * @note We assume a service to require access token for the entire viewing session.\n */\n protected _accessTokenRequired = false;\n\n protected _querySupported = false;\n\n public override get supportsMapFeatureInfo() { return this._querySupported;}\n\n constructor(settings: ImageMapLayerSettings, usesCachedTiles: boolean) {\n super(settings, usesCachedTiles);\n this._accessClient = IModelApp.mapLayerFormatRegistry?.getAccessClient(settings.formatId);\n }\n\n /** Updates the accessClient token state whenever the status of the provider change.\n * */\n protected override onStatusUpdated(status: MapLayerImageryProviderStatus) {\n if (status === MapLayerImageryProviderStatus.RequireAuth) {\n\n // Invalidate the token, so a new one get generated\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined) {\n this._accessClient.invalidateToken(this._lastAccessToken);\n }\n\n // Make sure we don't re-use this token again (i.e force login process)\n this._lastAccessToken = undefined;\n }\n }\n\n /**\n * Fetch an ArcGIS service metadata, and returns its JSON representation.\n * This wrapper maintains token state and should be used instead of the the ArcGisUtilities version.\n */\n protected async getServiceJson() {\n let metadata: ArcGISServiceMetadata|undefined;\n try {\n metadata = await ArcGisUtilities.getServiceJson({url: this._settings.url, formatId: this._settings.formatId, userName: this._settings.userName, password: this._settings.password, queryParams: this._settings.collectQueryParams()});\n\n } catch {\n }\n if (metadata && metadata.accessTokenRequired) {\n const accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(this._settings.formatId);\n if (accessClient) {\n try {\n // Keep track of last used access token, so we can invalidate it later when an errors occurs\n const accessToken = await accessClient.getAccessToken({mapLayerUrl: new URL(this._settings.url)});\n this._lastAccessToken = accessToken;\n } catch {\n }\n }\n // By turning this ON, tiles requests will include security token\n this._accessTokenRequired = metadata.accessTokenRequired;\n }\n return metadata;\n }\n\n /**\n * Make a request to an ArcGIS service using the provided URL and init parameters.\n * @param url URL to query\n * @param options Custom settings to apply to the request.\n * Refer to fetch API for more details (https://developer.mozilla.org/en-US/docs/Web/API/fetch)\n */\n protected async fetch(url: URL, options?: RequestInit) {\n\n let errorCode: number | undefined;\n const urlObj = new URL(url);\n const queryParams = this._settings.collectQueryParams();\n Object.keys(queryParams).forEach((paramKey) => {\n if (!urlObj.searchParams.has(paramKey))\n urlObj.searchParams.append(paramKey, queryParams[paramKey]);\n });\n\n if (this._accessTokenRequired && this._accessClient) {\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {\n mapLayerUrl: new URL(this._settings.url),\n userName: this._settings.userName,\n password: this._settings.password });\n }\n\n // We want to complete the first request before letting other requests go;\n // this done to avoid flooding server with requests missing credentials\n if (!this._firstRequestPromise)\n this._firstRequestPromise = new Promise<void>((resolve: any) => this.onFirstRequestCompleted.addOnce(()=>resolve()));\n else\n await this._firstRequestPromise;\n\n let response: Response|undefined;\n try {\n response = await fetch(urlObj, {...options, credentials: this._includeUserCredentials ? \"include\" : undefined});\n\n if (response.status === 401 && !this._lastAccessToken && headersIncludeAuthMethod(response.headers, [\"ntlm\", \"negotiate\"])) {\n // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication)\n response = await fetch(urlObj, {...options, credentials: \"include\" });\n if (response.status === 200) {\n this._includeUserCredentials = true; // avoid going through 401 challenges over and over\n }\n }\n\n if ((this._lastAccessToken && response.status === 400)\n || response.headers.get(\"content-type\")?.toLowerCase().includes(\"htm\")) {\n // For some reasons when we make a request with the fetch() api and there is a token error\n // we receive a status 400 instead of proper json response. (i.e doing the same request in the browser gives a different response)\n // For some other request, we also seen error message in html.\n // When it occurs, we fall back to root service request so we get a proper JSON response with error code.\n const tmpUrl = new URL(this._settings.url);\n if (this._lastAccessToken && this._accessTokenRequired)\n tmpUrl.searchParams.append(\"token\", this._lastAccessToken.token);\n tmpUrl.searchParams.append(\"f\",\"json\");\n response = await fetch(tmpUrl.toString(), options);\n }\n\n errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);\n\n if (errorCode !== undefined &&\n ( errorCode === ArcGisErrorCode.TokenRequired\n || errorCode === ArcGisErrorCode.InvalidToken\n || errorCode === ArcGisErrorCode.MissingPermissions\n ) ) {\n\n if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken ) {\n // **** Legacy token ONLY ***\n\n // Token might have expired, make a second attempt by forcing new token.\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)\n this._accessClient.invalidateToken(this._lastAccessToken);\n\n const urlObj2 = new URL(url);\n if (this._accessClient) {\n try {\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });\n } catch {\n }\n }\n\n // Make a second attempt with refreshed token\n response = await fetch(urlObj2.toString(), options);\n errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);\n }\n\n if (errorCode !== undefined &&\n ( errorCode === ArcGisErrorCode.TokenRequired\n || errorCode === ArcGisErrorCode.InvalidToken\n || errorCode === ArcGisErrorCode.MissingPermissions\n ) ) {\n // Looks like the initially generated token has expired.\n\n if (this.status === MapLayerImageryProviderStatus.Valid ) {\n // Only report new status change to avoid spamming the UI\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n this.onStatusChanged.raiseEvent(this);\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.FetchTooltipTokenError\", { layerName: this._settings.name });\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\n }\n }\n }\n } finally {\n this.onFirstRequestCompleted.raiseEvent();\n }\n\n if (response === undefined)\n throw new Error(\"fetch call failed\");\n\n return response;\n }\n}\n"]}
1
+ {"version":3,"file":"ArcGISImageryProvider.js","sourceRoot":"","sources":["../../../../../../src/internal/tile/map/ImageryProviders/ArcGISImageryProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { ArcGisErrorCode, ArcGISServiceMetadata, ArcGisUtilities, MapLayerAccessClient, MapLayerAccessToken, MapLayerImageryProvider, MapLayerImageryProviderStatus } from \"../../../../tile/internal\";\nimport { IModelApp } from \"../../../../IModelApp\";\nimport { NotifyMessageDetails, OutputMessagePriority } from \"../../../../NotificationManager\";\nimport { headersIncludeAuthMethod } from \"../../../../request/utils\";\n\n/** Base class for ArcGIS map-layer imagery providers.\n *\n * The initial purpose of this class is to offer shared methods\n * to query ArcGIS services and apply the appropriate security token.\n * @see [[ArcGISMapLayerImageryProvider]]\n * @internal\n */\nexport abstract class ArcGISImageryProvider extends MapLayerImageryProvider {\n\n protected _accessClient: MapLayerAccessClient|undefined;\n protected _lastAccessToken: MapLayerAccessToken|undefined;\n\n /** Flag indicating if access token should be added to request.\n * @note We assume a service to require access token for the entire viewing session.\n */\n protected _accessTokenRequired = false;\n\n protected _querySupported = false;\n\n public override get supportsMapFeatureInfo() { return this._querySupported;}\n\n constructor(settings: ImageMapLayerSettings, usesCachedTiles: boolean) {\n super(settings, usesCachedTiles);\n this._accessClient = IModelApp.mapLayerFormatRegistry?.getAccessClient(settings.formatId);\n }\n\n /** Updates the accessClient token state whenever the status of the provider change.\n * */\n protected override onStatusUpdated(status: MapLayerImageryProviderStatus) {\n if (status === MapLayerImageryProviderStatus.RequireAuth) {\n\n // Invalidate the token, so a new one get generated\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined) {\n this._accessClient.invalidateToken(this._lastAccessToken);\n }\n\n // Make sure we don't re-use this token again (i.e force login process)\n this._lastAccessToken = undefined;\n }\n }\n\n /**\n * Fetch an ArcGIS service metadata, and returns its JSON representation.\n * This wrapper maintains token state and should be used instead of the the ArcGisUtilities version.\n */\n protected async getServiceJson() {\n let metadata: ArcGISServiceMetadata|undefined;\n try {\n metadata = await ArcGisUtilities.getServiceJson({url: this._settings.url, formatId: this._settings.formatId, userName: this._settings.userName, password: this._settings.password, queryParams: this._settings.collectQueryParams()});\n\n } catch {\n }\n if (metadata && metadata.accessTokenRequired) {\n const accessClient = IModelApp.mapLayerFormatRegistry.getAccessClient(this._settings.formatId);\n if (accessClient) {\n try {\n // Keep track of last used access token, so we can invalidate it later when an errors occurs\n const accessToken = await accessClient.getAccessToken({mapLayerUrl: new URL(this._settings.url)});\n this._lastAccessToken = accessToken;\n } catch {\n }\n }\n // By turning this ON, tiles requests will include security token\n this._accessTokenRequired = metadata.accessTokenRequired;\n }\n return metadata;\n }\n\n /**\n * Make a request to an ArcGIS service using the provided URL and init parameters.\n * @param url URL to query\n * @param options Custom settings to apply to the request.\n * Refer to fetch API for more details (https://developer.mozilla.org/en-US/docs/Web/API/fetch)\n */\n protected async fetch(url: URL, options?: RequestInit) {\n\n let errorCode: number | undefined;\n const urlObj = new URL(url);\n const queryParams = this._settings.collectQueryParams();\n Object.keys(queryParams).forEach((paramKey) => {\n if (!urlObj.searchParams.has(paramKey))\n urlObj.searchParams.append(paramKey, queryParams[paramKey]);\n });\n\n if (this._accessTokenRequired && this._accessClient) {\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {\n mapLayerUrl: new URL(this._settings.url),\n portal: typeof this._settings.properties?.portal === \"string\" ? this._settings.properties.portal : undefined,\n userName: this._settings.userName,\n password: this._settings.password });\n }\n\n // We want to complete the first request before letting other requests go;\n // this done to avoid flooding server with requests missing credentials\n if (!this._firstRequestPromise)\n this._firstRequestPromise = new Promise<void>((resolve: any) => this.onFirstRequestCompleted.addOnce(()=>resolve()));\n else\n await this._firstRequestPromise;\n\n let response: Response|undefined;\n try {\n response = await fetch(urlObj, {...options, credentials: this._includeUserCredentials ? \"include\" : undefined});\n\n if (response.status === 401 && !this._lastAccessToken && headersIncludeAuthMethod(response.headers, [\"ntlm\", \"negotiate\"])) {\n // We got a http 401 challenge, lets try again with SSO enabled (i.e. Windows Authentication)\n response = await fetch(urlObj, {...options, credentials: \"include\" });\n if (response.status === 200) {\n this._includeUserCredentials = true; // avoid going through 401 challenges over and over\n }\n }\n\n if ((this._lastAccessToken && response.status === 400)\n || response.headers.get(\"content-type\")?.toLowerCase().includes(\"htm\")) {\n // For some reasons when we make a request with the fetch() api and there is a token error\n // we receive a status 400 instead of proper json response. (i.e doing the same request in the browser gives a different response)\n // For some other request, we also seen error message in html.\n // When it occurs, we fall back to root service request so we get a proper JSON response with error code.\n const tmpUrl = new URL(this._settings.url);\n if (this._lastAccessToken && this._accessTokenRequired)\n tmpUrl.searchParams.append(\"token\", this._lastAccessToken.token);\n tmpUrl.searchParams.append(\"f\",\"json\");\n response = await fetch(tmpUrl.toString(), options);\n }\n\n errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);\n\n if (errorCode !== undefined &&\n ( errorCode === ArcGisErrorCode.TokenRequired\n || errorCode === ArcGisErrorCode.InvalidToken\n || errorCode === ArcGisErrorCode.MissingPermissions\n ) ) {\n\n if (this._settings.userName && this._settings.userName.length > 0 && this._lastAccessToken ) {\n // **** Legacy token ONLY ***\n\n // Token might have expired, make a second attempt by forcing new token.\n if (this._accessClient?.invalidateToken !== undefined && this._lastAccessToken !== undefined)\n this._accessClient.invalidateToken(this._lastAccessToken);\n\n const urlObj2 = new URL(url);\n if (this._accessClient) {\n try {\n this._lastAccessToken = await ArcGisUtilities.appendSecurityToken(urlObj, this._accessClient, {mapLayerUrl: urlObj, userName: this._settings.userName, password: this._settings.password });\n } catch {\n }\n }\n\n // Make a second attempt with refreshed token\n response = await fetch(urlObj2.toString(), options);\n errorCode = await ArcGisUtilities.checkForResponseErrorCode(response);\n }\n\n if (errorCode !== undefined &&\n ( errorCode === ArcGisErrorCode.TokenRequired\n || errorCode === ArcGisErrorCode.InvalidToken\n || errorCode === ArcGisErrorCode.MissingPermissions\n ) ) {\n // Looks like the initially generated token has expired.\n\n if (this.status === MapLayerImageryProviderStatus.Valid ) {\n // Only report new status change to avoid spamming the UI\n this.setStatus(MapLayerImageryProviderStatus.RequireAuth);\n this.onStatusChanged.raiseEvent(this);\n const msg = IModelApp.localization.getLocalizedString(\"iModelJs:MapLayers.Messages.FetchTooltipTokenError\", { layerName: this._settings.name });\n IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Warning, msg));\n }\n }\n }\n } finally {\n this.onFirstRequestCompleted.raiseEvent();\n }\n\n if (response === undefined)\n throw new Error(\"fetch call failed\");\n\n return response;\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { Id64String } from "@itwin/core-bentley";
5
5
  import { BatchType, Feature, GeometryClass, ModelFeature } from "@itwin/core-common";
6
- import { ContourHit, HitPath, HitPriority } from "../HitDetail";
6
+ import { HitPath, HitPriority } from "../HitDetail";
7
7
  import { IModelConnection } from "../IModelConnection";
8
8
  import type { Viewport } from "../Viewport";
9
9
  import { Transform } from "@itwin/core-geometry";
@@ -28,10 +28,6 @@ export declare namespace Pixel {
28
28
  readonly batchType?: BatchType;
29
29
  /** The iModel from which the geometry producing the pixel originated. */
30
30
  readonly iModel?: IModelConnection;
31
- /** Information about the [contour line]($docs/learning/display/ContourDisplay.md), if any, that generated this pixel.
32
- * @beta
33
- */
34
- readonly contour?: ContourHit;
35
31
  /** @internal */
36
32
  readonly transformFromIModel?: Transform;
37
33
  /** @internal */
@@ -58,7 +54,6 @@ export declare namespace Pixel {
58
54
  viewAttachmentId?: string;
59
55
  inSectionDrawingAttachment?: boolean;
60
56
  transformFromIModel?: Transform;
61
- contour?: ContourHit;
62
57
  });
63
58
  /** The Id of the element that produced the pixel. */
64
59
  get elementId(): Id64String | undefined;
@@ -117,10 +112,6 @@ export declare namespace Pixel {
117
112
  * @beta
118
113
  */
119
114
  path?: HitPath;
120
- /** Information about the [contour line]($docs/learning/display/ContourDisplay.md), if any, from which the hit originated.
121
- * @beta
122
- */
123
- contour?: ContourHit;
124
115
  }
125
116
  /** Describes the type of geometry that produced the [[Pixel.Data]]. */
126
117
  enum GeometryType {
@@ -158,10 +149,8 @@ export declare namespace Pixel {
158
149
  Feature = 1,// eslint-disable-line @typescript-eslint/no-shadow
159
150
  /** Select the type and planarity of geometry which produced each pixel as well as the fraction of its distance between the near and far planes. */
160
151
  GeometryAndDistance = 4,
161
- /** Select the [[ContourHit]]s describing which if any contour line produced each pixel. */
162
- Contours = 8,
163
152
  /** Select all aspects of each pixel. */
164
- All = 13
153
+ All = 5
165
154
  }
166
155
  /** A rectangular array of pixels as read from a [[Viewport]]'s frame buffer. Each pixel is represented as a [[Pixel.Data]] object.
167
156
  * The contents of the pixel buffer will be specified using device pixels, not CSS pixels. See [[Viewport.devicePixelRatio]] and [[Viewport.cssPixelsToDevicePixels]].
@@ -1 +1 @@
1
- {"version":3,"file":"Pixel.d.ts","sourceRoot":"","sources":["../../../src/render/Pixel.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAQ,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;;GAIG;AACH,yBAAiB,KAAK,CAAC;IACrB,0DAA0D;IAC1D,MAAa,IAAI;QACf,2CAA2C;QAC3C,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClC,SAAgB,OAAO,CAAC,EAAE,UAAU,CAAC;QACrC,sHAAsH;QACtH,SAAgB,gBAAgB,EAAE,MAAM,CAAC;QACzC,oDAAoD;QACpD,SAAgB,IAAI,EAAE,YAAY,CAAC;QACnC,6DAA6D;QAC7D,SAAgB,SAAS,EAAE,SAAS,CAAC;QACrC,gBAAgB;QAChB,SAAgB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtC,yEAAyE;QACzE,SAAgB,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC5C;;aAEK;QACH,SAAgB,OAAO,CAAC,EAAE,UAAU,CAAC;QACrC,gBAAgB;QAChB,SAAgB,mBAAmB,CAAC,EAAE,SAAS,CAAC;QAChD,gBAAgB;QAChB,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChC;;WAEG;QACH,SAAgB,gBAAgB,CAAC,EAAE,UAAU,CAAC;QAC9C;;WAEG;QACH,SAAgB,0BAA0B,EAAE,OAAO,CAAC;QACpD,gBAAgB;QAChB,IAAW,YAAY,IAAI,OAAO,CAEjC;QAED,gBAAgB;oBACG,IAAI,CAAC,EAAE;YACxB,OAAO,CAAC,EAAE,YAAY,CAAC;YACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;YACpB,SAAS,CAAC,EAAE,SAAS,CAAC;YACtB,SAAS,CAAC,EAAE,SAAS,CAAC;YACtB,MAAM,CAAC,EAAE,gBAAgB,CAAC;YAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;YACrC,mBAAmB,CAAC,EAAE,SAAS,CAAC;YAChC,OAAO,CAAC,EAAE,UAAU,CAAC;SACtB;QAsBD,qDAAqD;QACrD,IAAW,SAAS,IAAI,UAAU,GAAG,SAAS,CAE7C;QAED,qEAAqE;QACrE,IAAW,aAAa,IAAI,UAAU,GAAG,SAAS,CAEjD;QAED,qDAAqD;QACrD,IAAW,aAAa,IAAI,aAAa,GAAG,SAAS,CAEpD;QAED,0FAA0F;QACnF,kBAAkB,IAAI,WAAW;QAexC;;WAEG;QACI,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,QAAQ;KAsCtD;IAED;;;;;;;;;;;;OAYG;IACH,UAAiB,QAAQ;QACvB,+HAA+H;QAC/H,QAAQ,EAAE,UAAU,CAAC;QACrB,gDAAgD;QAChD,QAAQ,EAAE,WAAW,CAAC;QACtB,2EAA2E;QAC3E,YAAY,EAAE,MAAM,CAAC;QACrB,qEAAqE;QACrE,aAAa,CAAC,EAAE,UAAU,CAAC;QAC3B,qCAAqC;QACrC,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,kEAAkE;QAClE,OAAO,CAAC,EAAE,UAAU,CAAC;QACrB;;;;WAIG;QACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;QAChC,gBAAgB;QAChB,yBAAyB,CAAC,EAAE,SAAS,CAAC;QACtC,sCAAsC;QACtC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;WAEG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB;;WAEG;QACH,IAAI,CAAC,EAAE,OAAO,CAAC;QACjB;;aAEK;QACH,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB;IAED,uEAAuE;IACvE,KAAY,YAAY;QACtB,qGAAqG;QACrG,OAAO,IAAA,CAAE,6DAA6D;QACtE,8CAA8C;QAC9C,IAAI,IAAA;QACJ,qCAAqC;QACrC,OAAO,IAAA;QACP,yDAAyD;QACzD,MAAM,IAAA;QACN,uDAAuD;QACvD,IAAI,IAAA;QACJ,wEAAwE;QACxE,UAAU,IAAA;KACX;IAED,iFAAiF;IACjF,KAAY,SAAS;QACnB,0GAA0G;QAC1G,OAAO,IAAA;QACP,8CAA8C;QAC9C,IAAI,IAAA;QACJ,2CAA2C;QAC3C,MAAM,IAAA;QACN,+CAA+C;QAC/C,SAAS,IAAA;KACV;IAED;;;OAGG;IACH,KAAY,QAAQ;QAClB,IAAI,IAAI;QACR,wDAAwD;QACxD,OAAO,IAAS,CAAE,mDAAmD;QACrE,mJAAmJ;QACnJ,mBAAmB,IAAS;QAC5B,2FAA2F;QAC3F,QAAQ,IAAS;QACjB,wCAAwC;QACxC,GAAG,KAA2C;KAC/C;IAED;;;OAGG;IACH,UAAiB,MAAM;QACrB,gFAAgF;QAChF,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC;IAED;;OAEG;IACH,KAAY,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAC7D"}
1
+ {"version":3,"file":"Pixel.d.ts","sourceRoot":"","sources":["../../../src/render/Pixel.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAQ,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;;GAIG;AACH,yBAAiB,KAAK,CAAC;IACrB,0DAA0D;IAC1D,MAAa,IAAI;QACf,2CAA2C;QAC3C,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClC,SAAgB,OAAO,CAAC,EAAE,UAAU,CAAC;QACrC,sHAAsH;QACtH,SAAgB,gBAAgB,EAAE,MAAM,CAAC;QACzC,oDAAoD;QACpD,SAAgB,IAAI,EAAE,YAAY,CAAC;QACnC,6DAA6D;QAC7D,SAAgB,SAAS,EAAE,SAAS,CAAC;QACrC,gBAAgB;QAChB,SAAgB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtC,yEAAyE;QACzE,SAAgB,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1C,gBAAgB;QAChB,SAAgB,mBAAmB,CAAC,EAAE,SAAS,CAAC;QAChD,gBAAgB;QAChB,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChC;;WAEG;QACH,SAAgB,gBAAgB,CAAC,EAAE,UAAU,CAAC;QAC9C;;WAEG;QACH,SAAgB,0BAA0B,EAAE,OAAO,CAAC;QACpD,gBAAgB;QAChB,IAAW,YAAY,IAAI,OAAO,CAEjC;QAED,gBAAgB;oBACG,IAAI,CAAC,EAAE;YACxB,OAAO,CAAC,EAAE,YAAY,CAAC;YACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,IAAI,CAAC,EAAE,YAAY,CAAC;YACpB,SAAS,CAAC,EAAE,SAAS,CAAC;YACtB,SAAS,CAAC,EAAE,SAAS,CAAC;YACtB,MAAM,CAAC,EAAE,gBAAgB,CAAC;YAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;YACrC,mBAAmB,CAAC,EAAE,SAAS,CAAC;SACjC;QAqBD,qDAAqD;QACrD,IAAW,SAAS,IAAI,UAAU,GAAG,SAAS,CAE7C;QAED,qEAAqE;QACrE,IAAW,aAAa,IAAI,UAAU,GAAG,SAAS,CAEjD;QAED,qDAAqD;QACrD,IAAW,aAAa,IAAI,aAAa,GAAG,SAAS,CAEpD;QAED,0FAA0F;QACnF,kBAAkB,IAAI,WAAW;QAexC;;WAEG;QACI,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,QAAQ;KAqCtD;IAED;;;;;;;;;;;;OAYG;IACH,UAAiB,QAAQ;QACvB,+HAA+H;QAC/H,QAAQ,EAAE,UAAU,CAAC;QACrB,gDAAgD;QAChD,QAAQ,EAAE,WAAW,CAAC;QACtB,2EAA2E;QAC3E,YAAY,EAAE,MAAM,CAAC;QACrB,qEAAqE;QACrE,aAAa,CAAC,EAAE,UAAU,CAAC;QAC3B,qCAAqC;QACrC,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,kEAAkE;QAClE,OAAO,CAAC,EAAE,UAAU,CAAC;QACrB;;;;WAIG;QACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;QAChC,gBAAgB;QAChB,yBAAyB,CAAC,EAAE,SAAS,CAAC;QACtC,sCAAsC;QACtC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;WAEG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB;;WAEG;QACH,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB;IAED,uEAAuE;IACvE,KAAY,YAAY;QACtB,qGAAqG;QACrG,OAAO,IAAA,CAAE,6DAA6D;QACtE,8CAA8C;QAC9C,IAAI,IAAA;QACJ,qCAAqC;QACrC,OAAO,IAAA;QACP,yDAAyD;QACzD,MAAM,IAAA;QACN,uDAAuD;QACvD,IAAI,IAAA;QACJ,wEAAwE;QACxE,UAAU,IAAA;KACX;IAED,iFAAiF;IACjF,KAAY,SAAS;QACnB,0GAA0G;QAC1G,OAAO,IAAA;QACP,8CAA8C;QAC9C,IAAI,IAAA;QACJ,2CAA2C;QAC3C,MAAM,IAAA;QACN,+CAA+C;QAC/C,SAAS,IAAA;KACV;IAED;;;OAGG;IACH,KAAY,QAAQ;QAClB,IAAI,IAAI;QACR,wDAAwD;QACxD,OAAO,IAAS,CAAE,mDAAmD;QACrE,mJAAmJ;QACnJ,mBAAmB,IAAS;QAC5B,wCAAwC;QACxC,GAAG,IAAgC;KACpC;IAED;;;OAGG;IACH,UAAiB,MAAM;QACrB,gFAAgF;QAChF,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC;IAED;;OAEG;IACH,KAAY,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAC7D"}