@itwin/core-frontend 4.1.0-dev.62 → 4.1.0-dev.66

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 (56) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/lib/cjs/Viewport.js +1 -1
  3. package/lib/cjs/Viewport.js.map +1 -1
  4. package/lib/cjs/tile/GltfReader.d.ts +10 -1
  5. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  6. package/lib/cjs/tile/GltfReader.js +64 -5
  7. package/lib/cjs/tile/GltfReader.js.map +1 -1
  8. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  9. package/lib/cjs/tile/RealityTileLoader.js +9 -4
  10. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  11. package/lib/cjs/tile/TileContent.d.ts +6 -0
  12. package/lib/cjs/tile/TileContent.d.ts.map +1 -1
  13. package/lib/cjs/tile/TileContent.js.map +1 -1
  14. package/lib/cjs/tile/internal.d.ts +1 -0
  15. package/lib/cjs/tile/internal.d.ts.map +1 -1
  16. package/lib/cjs/tile/internal.js +1 -0
  17. package/lib/cjs/tile/internal.js.map +1 -1
  18. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts +11 -0
  19. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts.map +1 -0
  20. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js +10 -0
  21. package/lib/cjs/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js.map +1 -0
  22. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts +3 -0
  23. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +1 -1
  24. package/lib/cjs/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +1 -1
  25. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts +2 -1
  26. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +1 -1
  27. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js +1 -0
  28. package/lib/cjs/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +1 -1
  29. package/lib/esm/Viewport.js +1 -1
  30. package/lib/esm/Viewport.js.map +1 -1
  31. package/lib/esm/tile/GltfReader.d.ts +10 -1
  32. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  33. package/lib/esm/tile/GltfReader.js +65 -6
  34. package/lib/esm/tile/GltfReader.js.map +1 -1
  35. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  36. package/lib/esm/tile/RealityTileLoader.js +9 -4
  37. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  38. package/lib/esm/tile/TileContent.d.ts +6 -0
  39. package/lib/esm/tile/TileContent.d.ts.map +1 -1
  40. package/lib/esm/tile/TileContent.js.map +1 -1
  41. package/lib/esm/tile/internal.d.ts +1 -0
  42. package/lib/esm/tile/internal.d.ts.map +1 -1
  43. package/lib/esm/tile/internal.js +1 -0
  44. package/lib/esm/tile/internal.js.map +1 -1
  45. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts +11 -0
  46. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.d.ts.map +1 -0
  47. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js +9 -0
  48. package/lib/esm/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.js.map +1 -0
  49. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts +3 -0
  50. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.d.ts.map +1 -1
  51. package/lib/esm/tile/map/ImageryProviders/ArcGisGeometryRenderer.js.map +1 -1
  52. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts +2 -1
  53. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.d.ts.map +1 -1
  54. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js +1 -0
  55. package/lib/esm/tile/map/ImageryProviders/ArcGisGraphicsRenderer.js.map +1 -1
  56. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileLoader.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAoB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAmC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EACO,gBAAgB,EAC5B,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAe,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAC9H,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,8BAAsB,iBAAiB;IAKlB,OAAO,CAAC,gBAAgB,CAAC;IAJ5C,OAAO,CAAC,oBAAoB,CAAS;IACrC,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,wBAAwB,EAAE,MAAM,CAAC;gBAEtB,gBAAgB,CAAC,qBAAS;IAK9C,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;aAKzF,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;aAC5D,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB;aACjD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACxG,IAAW,wBAAwB,IAAI,OAAO,CAAkB;IAChE,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,gBAAgB,CAAC;IACjD,SAAS,KAAK,UAAU,IAAI,SAAS,CAA8B;IACnE,SAAS,KAAK,UAAU,IAAI,OAAO,CAAiB;IAC7C,aAAa,IAAI,gBAAgB,GAAG,SAAS;IACpD,IAAW,kBAAkB,IAAI,OAAO,CAAkB;IAC1D,IAAW,mBAAmB,IAAI,OAAO,CAAsC;IAC/E,IAAW,2BAA2B,IAAI,OAAO,CAAiB;IAC3D,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAC1C,IAAW,uBAAuB,IAAI,MAAM,GAAG,SAAS,CAAsB;IAEvE,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;IAG7D,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQvJ,OAAO,CAAC,UAAU;IAQL,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAarH,sBAAsB;IAkGpC,IAAW,iBAAiB,IAAI,iBAAiB,CAAqC;WAExE,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM;CA4ClH"}
1
+ {"version":3,"file":"RealityTileLoader.d.ts","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAoB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAmC,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAkB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EACO,gBAAgB,EAC5B,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAe,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAC9H,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,8BAAsB,iBAAiB;IAKlB,OAAO,CAAC,gBAAgB,CAAC;IAJ5C,OAAO,CAAC,oBAAoB,CAAS;IACrC,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,wBAAwB,EAAE,MAAM,CAAC;gBAEtB,gBAAgB,CAAC,qBAAS;IAK9C,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM;aAKzF,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;aAC5D,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB;aACjD,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC;IACxG,IAAW,wBAAwB,IAAI,OAAO,CAAkB;IAChE,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,MAAM,CAAC;IACvC,aAAoB,QAAQ,IAAI,gBAAgB,CAAC;IACjD,SAAS,KAAK,UAAU,IAAI,SAAS,CAA8B;IACnE,SAAS,KAAK,UAAU,IAAI,OAAO,CAAiB;IAC7C,aAAa,IAAI,gBAAgB,GAAG,SAAS;IACpD,IAAW,kBAAkB,IAAI,OAAO,CAAkB;IAC1D,IAAW,mBAAmB,IAAI,OAAO,CAAsC;IAC/E,IAAW,2BAA2B,IAAI,OAAO,CAAiB;IAC3D,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO;IAC1C,IAAW,uBAAuB,IAAI,MAAM,GAAG,SAAS,CAAsB;IAEvE,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;IAG7D,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQvJ,OAAO,CAAC,UAAU;IAQL,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAarH,sBAAsB;IAwGpC,IAAW,iBAAiB,IAAI,iBAAiB,CAAqC;WAExE,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,MAAM;CA4ClH"}
@@ -103,6 +103,12 @@ export class RealityTileLoader {
103
103
  return { graphic };
104
104
  case TileFormat.B3dm:
105
105
  reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);
106
+ if (reader) {
107
+ // glTF spec defaults wrap mode to "repeat" but many reality tiles omit the wrap mode and should not repeat.
108
+ // The render system also currently only produces mip-maps for repeating textures, and we don't want mip-maps for reality tile textures.
109
+ assert(reader instanceof GltfReader);
110
+ reader.defaultWrapMode = GltfWrapMode.ClampToEdge;
111
+ }
106
112
  break;
107
113
  case TileFormat.I3dm:
108
114
  reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);
@@ -116,6 +122,7 @@ export class RealityTileLoader {
116
122
  contentRange: tile.contentRange,
117
123
  transform: tile.transformToRoot,
118
124
  hasChildren: !tile.isLeaf,
125
+ pickableOptions: { id: modelId },
119
126
  });
120
127
  }
121
128
  break;
@@ -141,12 +148,10 @@ export class RealityTileLoader {
141
148
  }
142
149
  let content = {};
143
150
  if (undefined !== reader) {
144
- // glTF spec defaults wrap mode to "repeat" but many reality tiles omit the wrap mode and should not repeat.
145
- // The render system also currently only produces mip-maps for repeating textures, and we don't want mip-maps for reality tile textures.
146
- if (reader instanceof GltfReader)
147
- reader.defaultWrapMode = GltfWrapMode.ClampToEdge;
148
151
  try {
149
152
  content = await reader.read();
153
+ if (content.containsPointCloud)
154
+ this._containsPointClouds = true;
150
155
  }
151
156
  catch (_err) {
152
157
  // Failure to load should prevent us from trying to load children
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileLoader.js","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { BatchType, CompositeTileHeader, TileFormat, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ScreenViewport, Viewport } from \"../Viewport\";\r\nimport { GltfWrapMode } from \"../common/gltf/GltfSchema\";\r\nimport {\r\n B3dmReader, BatchedTileIdMap, createDefaultViewFlagOverrides, GltfGraphicsReader, GltfReader, GltfReaderProps, I3dmReader, ImdlReader, readPointCloudTileContent,\r\n RealityTile, RealityTileContent, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel, TileUser,\r\n} from \"./internal\";\r\n\r\nconst defaultViewFlagOverrides = createDefaultViewFlagOverrides({});\r\n\r\nconst scratchTileCenterWorld = new Point3d();\r\nconst scratchTileCenterView = new Point3d();\r\n\r\n/** Serves as a \"handler\" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.\r\n * @internal\r\n */\r\nexport abstract class RealityTileLoader {\r\n private _containsPointClouds = false;\r\n public readonly preloadRealityParentDepth: number;\r\n public readonly preloadRealityParentSkip: number;\r\n\r\n public constructor(private _produceGeometry?: boolean) {\r\n this.preloadRealityParentDepth = IModelApp.tileAdmin.contextPreloadParentDepth;\r\n this.preloadRealityParentSkip = IModelApp.tileAdmin.contextPreloadParentSkip;\r\n }\r\n\r\n public computeTilePriority(tile: Tile, viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number {\r\n // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).\r\n return RealityTileLoader.computeTileLocationPriority(tile, viewports, tile.tree.iModelTransform);\r\n }\r\n\r\n public abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;\r\n public abstract getRequestChannel(tile: Tile): TileRequestChannel;\r\n public abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;\r\n public get wantDeduplicatedVertices(): boolean { return false; }\r\n public abstract get maxDepth(): number;\r\n public abstract get minDepth(): number;\r\n public abstract get priority(): TileLoadPriority;\r\n protected get _batchType(): BatchType { return BatchType.Primary; }\r\n protected get _loadEdges(): boolean { return true; }\r\n public getBatchIdMap(): BatchedTileIdMap | undefined { return undefined; }\r\n public get isContentUnbounded(): boolean { return false; }\r\n public get containsPointClouds(): boolean { return this._containsPointClouds; }\r\n public get parentsAndChildrenExclusive(): boolean { return true; }\r\n public forceTileLoad(_tile: Tile): boolean { return false; }\r\n public get maximumScreenSpaceError(): number | undefined { return undefined; }\r\n\r\n public processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[] { return selected; }\r\n\r\n // NB: The isCanceled arg is chiefly for tests...in usual case it just returns false if the tile is no longer in 'loading' state.\r\n public async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<RealityTileContent> {\r\n assert(data instanceof Uint8Array);\r\n const blob = data;\r\n const streamBuffer = ByteStream.fromUint8Array(blob);\r\n const realityTile = tile as RealityTile;\r\n return this._produceGeometry ? this.loadGeometryFromStream(realityTile, streamBuffer, system) : this.loadGraphicsFromStream(realityTile, streamBuffer, system, isCanceled);\r\n }\r\n\r\n private _getFormat(streamBuffer: ByteStream) {\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.readUint32();\r\n streamBuffer.curPos = position;\r\n return format;\r\n\r\n }\r\n\r\n public async loadGeometryFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem): Promise<RealityTileContent> {\r\n const format = this._getFormat(streamBuffer);\r\n if (format !== TileFormat.B3dm)\r\n return {};\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n const reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, undefined, this.getBatchIdMap());\r\n if (reader)\r\n reader.defaultWrapMode = GltfWrapMode.ClampToEdge;\r\n\r\n return { geometry: reader?.readGltfAndCreateGeometry(tile.tree.iModelTransform) };\r\n }\r\n\r\n private async loadGraphicsFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n const format = this._getFormat(streamBuffer);\r\n if (undefined === isCanceled)\r\n isCanceled = () => !tile.isLoading;\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n let reader: GltfReader | ImdlReader | undefined;\r\n switch (format) {\r\n case TileFormat.IModel:\r\n reader = ImdlReader.create({\r\n stream: streamBuffer,\r\n iModel,\r\n modelId,\r\n is3d,\r\n system,\r\n isCanceled,\r\n });\r\n break;\r\n case TileFormat.Pnts:\r\n this._containsPointClouds = true;\r\n const res = await readPointCloudTileContent(streamBuffer, iModel, modelId, is3d, tile, system);\r\n let graphic = res.graphic;\r\n const rtcCenter = res.rtcCenter;\r\n if (graphic && (rtcCenter || tile.transformToRoot && !tile.transformToRoot.isIdentity)) {\r\n const transformBranch = new GraphicBranch(true);\r\n transformBranch.add(graphic);\r\n let xform: Transform;\r\n if (!tile.transformToRoot && rtcCenter)\r\n xform = Transform.createTranslation(rtcCenter);\r\n else {\r\n if (rtcCenter)\r\n xform = Transform.createOriginAndMatrix(rtcCenter.plus(tile.transformToRoot!.origin), tile.transformToRoot!.matrix);\r\n else\r\n xform = tile.transformToRoot!;\r\n }\r\n graphic = system.createBranch(transformBranch, xform);\r\n }\r\n\r\n return { graphic };\r\n case TileFormat.B3dm:\r\n reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.I3dm:\r\n reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.Gltf:\r\n const props = GltfReaderProps.create(streamBuffer.nextBytes(streamBuffer.arrayBuffer.byteLength), yAxisUp);\r\n if (props) {\r\n reader = new GltfGraphicsReader(props, {\r\n iModel,\r\n gltf: props.glTF,\r\n contentRange: tile.contentRange,\r\n transform: tile.transformToRoot,\r\n hasChildren: !tile.isLeaf,\r\n });\r\n }\r\n\r\n break;\r\n case TileFormat.Cmpt:\r\n const header = new CompositeTileHeader(streamBuffer);\r\n if (!header.isValid)\r\n return {};\r\n\r\n const branch = new GraphicBranch(true);\r\n for (let i = 0; i < header.tileCount; i++) {\r\n const tilePosition = streamBuffer.curPos;\r\n streamBuffer.advance(8); // Skip magic and version.\r\n const tileBytes = streamBuffer.readUint32();\r\n streamBuffer.curPos = tilePosition;\r\n const result = await this.loadGraphicsFromStream(tile, streamBuffer, system, isCanceled);\r\n if (result.graphic)\r\n branch.add(result.graphic);\r\n streamBuffer.curPos = tilePosition + tileBytes;\r\n }\r\n return { graphic: branch.isEmpty ? undefined : system.createBranch(branch, Transform.createIdentity()), isLeaf: tile.isLeaf };\r\n\r\n default:\r\n assert(false, `unknown tile format ${format}`);\r\n break;\r\n }\r\n\r\n let content: TileContent = {};\r\n if (undefined !== reader) {\r\n // glTF spec defaults wrap mode to \"repeat\" but many reality tiles omit the wrap mode and should not repeat.\r\n // The render system also currently only produces mip-maps for repeating textures, and we don't want mip-maps for reality tile textures.\r\n if (reader instanceof GltfReader)\r\n reader.defaultWrapMode = GltfWrapMode.ClampToEdge;\r\n try {\r\n content = await reader.read();\r\n } catch (_err) {\r\n // Failure to load should prevent us from trying to load children\r\n content.isLeaf = true;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public get viewFlagOverrides(): ViewFlagOverrides { return defaultViewFlagOverrides; }\r\n\r\n public static computeTileLocationPriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number {\r\n // Compute a priority value for tiles that are:\r\n // * Closer to the eye;\r\n // * Closer to the center of attention (center of the screen or zoom target).\r\n // This way, we can load in priority tiles that are more likely to be important.\r\n let center: Point3d | undefined;\r\n let minDistance = 1.0;\r\n\r\n const currentInputState = IModelApp.toolAdmin.currentInputState;\r\n const now = Date.now();\r\n const wheelEventRelevanceTimeout = 1000; // Wheel events older than this value will not be considered\r\n\r\n for (const viewport of viewports) {\r\n center = center ?? location.multiplyPoint3d(tile.center, scratchTileCenterWorld);\r\n const npc = viewport.worldToNpc(center, scratchTileCenterView);\r\n\r\n let focusPoint = new Point2d(0.5, 0.5);\r\n\r\n if (currentInputState.viewport === viewport && viewport instanceof ScreenViewport) {\r\n // Try to get a better target point from the last zoom target\r\n const { lastWheelEvent } = currentInputState;\r\n\r\n if (lastWheelEvent !== undefined && now - lastWheelEvent.time < wheelEventRelevanceTimeout) {\r\n const focusPointCandidate = Point2d.fromJSON(viewport.worldToNpc(lastWheelEvent.point));\r\n\r\n if (focusPointCandidate.x > 0 && focusPointCandidate.x < 1 && focusPointCandidate.y > 0 && focusPointCandidate.y < 1)\r\n focusPoint = focusPointCandidate;\r\n }\r\n }\r\n\r\n // NB: In NPC coords, 0 = far plane, 1 = near plane.\r\n const distanceToEye = 1.0 - npc.z;\r\n const distanceToCenter = Math.min(npc.distanceXY(focusPoint) / 0.707, 1.0); // Math.sqrt(0.5) = 0.707\r\n\r\n // Distance is a mix of the two previously computed values, still in range [0; 1]\r\n // We use this factor to determine how much the distance to the center of attention is important compared to distance to the eye\r\n const distanceToCenterWeight = 0.3;\r\n const distance = distanceToEye * (1.0 - distanceToCenterWeight) + distanceToCenter * distanceToCenterWeight;\r\n\r\n minDistance = Math.min(distance, minDistance);\r\n }\r\n\r\n return minDistance;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityTileLoader.js","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { BatchType, CompositeTileHeader, TileFormat, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { ScreenViewport, Viewport } from \"../Viewport\";\r\nimport { GltfWrapMode } from \"../common/gltf/GltfSchema\";\r\nimport {\r\n B3dmReader, BatchedTileIdMap, createDefaultViewFlagOverrides, GltfGraphicsReader, GltfReader, GltfReaderProps, I3dmReader, ImdlReader, readPointCloudTileContent,\r\n RealityTile, RealityTileContent, Tile, TileContent, TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel, TileUser,\r\n} from \"./internal\";\r\n\r\nconst defaultViewFlagOverrides = createDefaultViewFlagOverrides({});\r\n\r\nconst scratchTileCenterWorld = new Point3d();\r\nconst scratchTileCenterView = new Point3d();\r\n\r\n/** Serves as a \"handler\" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.\r\n * @internal\r\n */\r\nexport abstract class RealityTileLoader {\r\n private _containsPointClouds = false;\r\n public readonly preloadRealityParentDepth: number;\r\n public readonly preloadRealityParentSkip: number;\r\n\r\n public constructor(private _produceGeometry?: boolean) {\r\n this.preloadRealityParentDepth = IModelApp.tileAdmin.contextPreloadParentDepth;\r\n this.preloadRealityParentSkip = IModelApp.tileAdmin.contextPreloadParentSkip;\r\n }\r\n\r\n public computeTilePriority(tile: Tile, viewports: Iterable<Viewport>, _users: Iterable<TileUser>): number {\r\n // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).\r\n return RealityTileLoader.computeTileLocationPriority(tile, viewports, tile.tree.iModelTransform);\r\n }\r\n\r\n public abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;\r\n public abstract getRequestChannel(tile: Tile): TileRequestChannel;\r\n public abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;\r\n public get wantDeduplicatedVertices(): boolean { return false; }\r\n public abstract get maxDepth(): number;\r\n public abstract get minDepth(): number;\r\n public abstract get priority(): TileLoadPriority;\r\n protected get _batchType(): BatchType { return BatchType.Primary; }\r\n protected get _loadEdges(): boolean { return true; }\r\n public getBatchIdMap(): BatchedTileIdMap | undefined { return undefined; }\r\n public get isContentUnbounded(): boolean { return false; }\r\n public get containsPointClouds(): boolean { return this._containsPointClouds; }\r\n public get parentsAndChildrenExclusive(): boolean { return true; }\r\n public forceTileLoad(_tile: Tile): boolean { return false; }\r\n public get maximumScreenSpaceError(): number | undefined { return undefined; }\r\n\r\n public processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[] { return selected; }\r\n\r\n // NB: The isCanceled arg is chiefly for tests...in usual case it just returns false if the tile is no longer in 'loading' state.\r\n public async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<RealityTileContent> {\r\n assert(data instanceof Uint8Array);\r\n const blob = data;\r\n const streamBuffer = ByteStream.fromUint8Array(blob);\r\n const realityTile = tile as RealityTile;\r\n return this._produceGeometry ? this.loadGeometryFromStream(realityTile, streamBuffer, system) : this.loadGraphicsFromStream(realityTile, streamBuffer, system, isCanceled);\r\n }\r\n\r\n private _getFormat(streamBuffer: ByteStream) {\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.readUint32();\r\n streamBuffer.curPos = position;\r\n return format;\r\n\r\n }\r\n\r\n public async loadGeometryFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem): Promise<RealityTileContent> {\r\n const format = this._getFormat(streamBuffer);\r\n if (format !== TileFormat.B3dm)\r\n return {};\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n const reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, undefined, this.getBatchIdMap());\r\n if (reader)\r\n reader.defaultWrapMode = GltfWrapMode.ClampToEdge;\r\n\r\n return { geometry: reader?.readGltfAndCreateGeometry(tile.tree.iModelTransform) };\r\n }\r\n\r\n private async loadGraphicsFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n const format = this._getFormat(streamBuffer);\r\n if (undefined === isCanceled)\r\n isCanceled = () => !tile.isLoading;\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n let reader: GltfReader | ImdlReader | undefined;\r\n switch (format) {\r\n case TileFormat.IModel:\r\n reader = ImdlReader.create({\r\n stream: streamBuffer,\r\n iModel,\r\n modelId,\r\n is3d,\r\n system,\r\n isCanceled,\r\n });\r\n break;\r\n case TileFormat.Pnts:\r\n this._containsPointClouds = true;\r\n const res = await readPointCloudTileContent(streamBuffer, iModel, modelId, is3d, tile, system);\r\n let graphic = res.graphic;\r\n const rtcCenter = res.rtcCenter;\r\n if (graphic && (rtcCenter || tile.transformToRoot && !tile.transformToRoot.isIdentity)) {\r\n const transformBranch = new GraphicBranch(true);\r\n transformBranch.add(graphic);\r\n let xform: Transform;\r\n if (!tile.transformToRoot && rtcCenter)\r\n xform = Transform.createTranslation(rtcCenter);\r\n else {\r\n if (rtcCenter)\r\n xform = Transform.createOriginAndMatrix(rtcCenter.plus(tile.transformToRoot!.origin), tile.transformToRoot!.matrix);\r\n else\r\n xform = tile.transformToRoot!;\r\n }\r\n graphic = system.createBranch(transformBranch, xform);\r\n }\r\n\r\n return { graphic };\r\n case TileFormat.B3dm:\r\n reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);\r\n if (reader) {\r\n // glTF spec defaults wrap mode to \"repeat\" but many reality tiles omit the wrap mode and should not repeat.\r\n // The render system also currently only produces mip-maps for repeating textures, and we don't want mip-maps for reality tile textures.\r\n assert(reader instanceof GltfReader);\r\n reader.defaultWrapMode = GltfWrapMode.ClampToEdge;\r\n }\r\n\r\n break;\r\n case TileFormat.I3dm:\r\n reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.Gltf:\r\n const props = GltfReaderProps.create(streamBuffer.nextBytes(streamBuffer.arrayBuffer.byteLength), yAxisUp);\r\n if (props) {\r\n reader = new GltfGraphicsReader(props, {\r\n iModel,\r\n gltf: props.glTF,\r\n contentRange: tile.contentRange,\r\n transform: tile.transformToRoot,\r\n hasChildren: !tile.isLeaf,\r\n pickableOptions: { id: modelId },\r\n });\r\n }\r\n\r\n break;\r\n case TileFormat.Cmpt:\r\n const header = new CompositeTileHeader(streamBuffer);\r\n if (!header.isValid)\r\n return {};\r\n\r\n const branch = new GraphicBranch(true);\r\n for (let i = 0; i < header.tileCount; i++) {\r\n const tilePosition = streamBuffer.curPos;\r\n streamBuffer.advance(8); // Skip magic and version.\r\n const tileBytes = streamBuffer.readUint32();\r\n streamBuffer.curPos = tilePosition;\r\n const result = await this.loadGraphicsFromStream(tile, streamBuffer, system, isCanceled);\r\n if (result.graphic)\r\n branch.add(result.graphic);\r\n streamBuffer.curPos = tilePosition + tileBytes;\r\n }\r\n return { graphic: branch.isEmpty ? undefined : system.createBranch(branch, Transform.createIdentity()), isLeaf: tile.isLeaf };\r\n\r\n default:\r\n assert(false, `unknown tile format ${format}`);\r\n break;\r\n }\r\n\r\n let content: TileContent = {};\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n if (content.containsPointCloud)\r\n this._containsPointClouds = true;\r\n } catch (_err) {\r\n // Failure to load should prevent us from trying to load children\r\n content.isLeaf = true;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public get viewFlagOverrides(): ViewFlagOverrides { return defaultViewFlagOverrides; }\r\n\r\n public static computeTileLocationPriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number {\r\n // Compute a priority value for tiles that are:\r\n // * Closer to the eye;\r\n // * Closer to the center of attention (center of the screen or zoom target).\r\n // This way, we can load in priority tiles that are more likely to be important.\r\n let center: Point3d | undefined;\r\n let minDistance = 1.0;\r\n\r\n const currentInputState = IModelApp.toolAdmin.currentInputState;\r\n const now = Date.now();\r\n const wheelEventRelevanceTimeout = 1000; // Wheel events older than this value will not be considered\r\n\r\n for (const viewport of viewports) {\r\n center = center ?? location.multiplyPoint3d(tile.center, scratchTileCenterWorld);\r\n const npc = viewport.worldToNpc(center, scratchTileCenterView);\r\n\r\n let focusPoint = new Point2d(0.5, 0.5);\r\n\r\n if (currentInputState.viewport === viewport && viewport instanceof ScreenViewport) {\r\n // Try to get a better target point from the last zoom target\r\n const { lastWheelEvent } = currentInputState;\r\n\r\n if (lastWheelEvent !== undefined && now - lastWheelEvent.time < wheelEventRelevanceTimeout) {\r\n const focusPointCandidate = Point2d.fromJSON(viewport.worldToNpc(lastWheelEvent.point));\r\n\r\n if (focusPointCandidate.x > 0 && focusPointCandidate.x < 1 && focusPointCandidate.y > 0 && focusPointCandidate.y < 1)\r\n focusPoint = focusPointCandidate;\r\n }\r\n }\r\n\r\n // NB: In NPC coords, 0 = far plane, 1 = near plane.\r\n const distanceToEye = 1.0 - npc.z;\r\n const distanceToCenter = Math.min(npc.distanceXY(focusPoint) / 0.707, 1.0); // Math.sqrt(0.5) = 0.707\r\n\r\n // Distance is a mix of the two previously computed values, still in range [0; 1]\r\n // We use this factor to determine how much the distance to the center of attention is important compared to distance to the eye\r\n const distanceToCenterWeight = 0.3;\r\n const distance = distanceToEye * (1.0 - distanceToCenterWeight) + distanceToCenter * distanceToCenterWeight;\r\n\r\n minDistance = Math.min(distance, minDistance);\r\n }\r\n\r\n return minDistance;\r\n }\r\n}\r\n"]}
@@ -16,5 +16,11 @@ export interface TileContent {
16
16
  contentRange?: ElementAlignedBox3d;
17
17
  /** True if this tile requires no subdivision or refinement - i.e., has no child tiles. */
18
18
  isLeaf?: boolean;
19
+ /** Whether the content includes one or more point clouds.
20
+ * Generally, if this is true, it contains exactly one point cloud and no other geometry.
21
+ * We need to know this for the classification shaders.
22
+ * @internal
23
+ */
24
+ containsPointCloud?: boolean;
19
25
  }
20
26
  //# sourceMappingURL=TileContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TileContent.d.ts","sourceRoot":"","sources":["../../../src/tile/TileContent.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,0FAA0F;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
1
+ {"version":3,"file":"TileContent.d.ts","sourceRoot":"","sources":["../../../src/tile/TileContent.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,0FAA0F;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"TileContent.js","sourceRoot":"","sources":["../../../src/tile/TileContent.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { ElementAlignedBox3d } from \"@itwin/core-common\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\n\r\n/**\r\n * Describes the contents of a [[Tile]]. Specific sub-types of [[Tile]] may describe their content using sub-types of this interface.\r\n * @see [[Tile.readContent]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface TileContent {\r\n /** Graphical representation of the tile's geometry. */\r\n graphic?: RenderGraphic;\r\n /** Bounding box tightly enclosing the tile's geometry. */\r\n contentRange?: ElementAlignedBox3d;\r\n /** True if this tile requires no subdivision or refinement - i.e., has no child tiles. */\r\n isLeaf?: boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"TileContent.js","sourceRoot":"","sources":["../../../src/tile/TileContent.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { ElementAlignedBox3d } from \"@itwin/core-common\";\r\nimport { RenderGraphic } from \"../render/RenderGraphic\";\r\n\r\n/**\r\n * Describes the contents of a [[Tile]]. Specific sub-types of [[Tile]] may describe their content using sub-types of this interface.\r\n * @see [[Tile.readContent]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface TileContent {\r\n /** Graphical representation of the tile's geometry. */\r\n graphic?: RenderGraphic;\r\n /** Bounding box tightly enclosing the tile's geometry. */\r\n contentRange?: ElementAlignedBox3d;\r\n /** True if this tile requires no subdivision or refinement - i.e., has no child tiles. */\r\n isLeaf?: boolean;\r\n /** Whether the content includes one or more point clouds.\r\n * Generally, if this is true, it contains exactly one point cloud and no other geometry.\r\n * We need to know this for the classification shaders.\r\n * @internal\r\n */\r\n containsPointCloud?: boolean;\r\n}\r\n"]}
@@ -48,6 +48,7 @@ export * from "./map/WmsCapabilities";
48
48
  export * from "./map/WmtsCapabilities";
49
49
  export * from "./map/MapLayerImageryProvider";
50
50
  export * from "./map/ImageryProviders/WebMercator";
51
+ export * from "./map/ImageryProviders/ArcGisAttributeDrivenSymbology";
51
52
  export * from "./map/ImageryProviders/ArcGISImageryProvider";
52
53
  export * from "./map/ImageryProviders/ArcGisGeometryRenderer";
53
54
  export * from "./map/ImageryProviders/ArcGisGraphicsRenderer";
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/tile/internal.ts"],"names":[],"mappings":"AAIA;;GAEG;AAYH,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,sDAAsD,CAAC;AACrE,cAAc,sDAAsD,CAAC;AACrE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/tile/internal.ts"],"names":[],"mappings":"AAIA;;GAEG;AAYH,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,uDAAuD,CAAC;AACtE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,sDAAsD,CAAC;AACrE,cAAc,sDAAsD,CAAC;AACrE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mDAAmD,CAAC;AAClE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mDAAmD,CAAC;AAClE,cAAc,oDAAoD,CAAC;AACnE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
@@ -61,6 +61,7 @@ export * from "./map/WmsCapabilities";
61
61
  export * from "./map/WmtsCapabilities";
62
62
  export * from "./map/MapLayerImageryProvider";
63
63
  export * from "./map/ImageryProviders/WebMercator";
64
+ export * from "./map/ImageryProviders/ArcGisAttributeDrivenSymbology";
64
65
  export * from "./map/ImageryProviders/ArcGISImageryProvider";
65
66
  export * from "./map/ImageryProviders/ArcGisGeometryRenderer";
66
67
  export * from "./map/ImageryProviders/ArcGisGraphicsRenderer";
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/tile/internal.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\n/* The order of exports below is based on dependencies between the types in each file.\r\n * For example, IModelTileTree derives from TileTree, so TileTree must be exported first.\r\n * No file inside core-frontend should import from *any* file in /tile/ *except* for this one.\r\n * e.g.:\r\n * import { TileTree } from \"./tile/TileTree\"; // NO...\r\n * import { TileTree } from \"./tile/internal\"; // YES!\r\n * Failure to follow either of these two guidelines is very likely to produce difficult-to-debug run-time errors due\r\n * to circular dependencies.\r\n */\r\n\r\nexport * from \"./ViewFlagOverrides\";\r\nexport * from \"./map/MapCartoRectangle\";\r\nexport * from \"./map/QuadId\";\r\nexport * from \"./DisclosedTileTreeSet\";\r\nexport * from \"./Tile\";\r\nexport * from \"./LRUTileList\";\r\nexport * from \"./RealityTile\";\r\nexport * from \"./TileParams\";\r\nexport * from \"./TileContent\";\r\nexport * from \"./TileDrawArgs\";\r\nexport * from \"./RealityTileDrawArgs\";\r\nexport * from \"./GraphicsCollector\";\r\nexport * from \"./BatchedTileIdMap\";\r\nexport * from \"./TileTreeParams\";\r\nexport * from \"./TileTree\";\r\nexport * from \"./RealityTileTree\";\r\nexport * from \"./TileTreeSupplier\";\r\nexport * from \"./TileTreeOwner\";\r\nexport * from \"./TileTreeReference\";\r\nexport * from \"./TileGeometryCollector\";\r\nexport * from \"./TiledGraphicsProvider\";\r\nexport * from \"./TileAdmin\";\r\nexport * from \"./TileStorage\";\r\nexport * from \"./TileRequest\";\r\nexport * from \"./TileRequestChannel\";\r\nexport * from \"./IModelTileRequestChannels\";\r\nexport * from \"./TileRequestChannels\";\r\nexport * from \"./TileUsageMarker\";\r\nexport * from \"./TileUser\";\r\nexport * from \"./TileUserSet\";\r\nexport * from \"./GltfReader\";\r\nexport * from \"./I3dmReader\";\r\nexport * from \"./B3dmReader\";\r\nexport * from \"./ImdlReader\";\r\nexport * from \"./ImdlDecoder\";\r\nexport * from \"./ImdlGraphicsCreator\";\r\nexport * from \"./ImdlParser\";\r\nexport * from \"./map/ArcGISTileMap\";\r\nexport * from \"./map/MapLayerAuthentication\";\r\nexport * from \"./map/MapFeatureInfo\";\r\nexport * from \"./map/MapLayerFormatRegistry\";\r\nexport * from \"./map/ArcGisUtilities\";\r\nexport * from \"./map/WmsUtilities\";\r\nexport * from \"./map/WmsCapabilities\";\r\nexport * from \"./map/WmtsCapabilities\";\r\nexport * from \"./map/MapLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/WebMercator\";\r\nexport * from \"./map/ImageryProviders/ArcGISImageryProvider\";\r\nexport * from \"./map/ImageryProviders/ArcGisGeometryRenderer\";\r\nexport * from \"./map/ImageryProviders/ArcGisGraphicsRenderer\";\r\nexport * from \"./map/ImageryProviders/ArcGisGeometryReaderJSON\";\r\nexport * from \"./map/ImageryProviders/ArcGISMapLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/AzureMapsLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/BingImageryProvider\";\r\nexport * from \"./map/ImageryProviders/MapBoxLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/TileUrlImageryProvider\";\r\nexport * from \"./map/ImageryProviders/WmsMapLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/WmtsMapLayerImageryProvider\";\r\nexport * from \"./map/MapLayerImageryFormats\";\r\nexport * from \"./map/MapLayerTileTreeReference\";\r\nexport * from \"./map/MapTileTree\";\r\nexport * from \"./map/TerrainMeshProvider\";\r\nexport * from \"./map/TerrainProvider\";\r\nexport * from \"./map/CesiumTerrainProvider\";\r\nexport * from \"./map/EllipsoidTerrainProvider\";\r\nexport * from \"./map/MapTile\";\r\nexport * from \"./RealityTileLoader\";\r\nexport * from \"./map/MapTileLoader\";\r\nexport * from \"./map/BingElevation\";\r\nexport * from \"./map/MapTilingScheme\";\r\nexport * from \"./map/MapTileAvailability\";\r\nexport * from \"./PntsReader\";\r\nexport * from \"./RealityModelTileTree\";\r\nexport * from \"./IModelTile\";\r\nexport * from \"./DynamicIModelTile\";\r\nexport * from \"./IModelTileTree\";\r\nexport * from \"./PrimaryTileTree\";\r\nexport * from \"./ClassifierTileTree\";\r\nexport * from \"./OrbitGtTileTree\";\r\nexport * from \"./map/ImageryTileTree\";\r\nexport * from \"./map/MapLayerSources\";\r\nexport * from \"./map/MapTiledGraphicsProvider\";\r\nexport * from \"./CesiumAssetProvider\";\r\nexport * from \"./ContextShareProvider\";\r\nexport * from \"./ThreeDTileFormatInterpreter\";\r\nexport * from \"./OPCFormatInterpreter\";\r\nexport * from \"./FetchCloudStorage\";\r\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/tile/internal.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\n/* The order of exports below is based on dependencies between the types in each file.\r\n * For example, IModelTileTree derives from TileTree, so TileTree must be exported first.\r\n * No file inside core-frontend should import from *any* file in /tile/ *except* for this one.\r\n * e.g.:\r\n * import { TileTree } from \"./tile/TileTree\"; // NO...\r\n * import { TileTree } from \"./tile/internal\"; // YES!\r\n * Failure to follow either of these two guidelines is very likely to produce difficult-to-debug run-time errors due\r\n * to circular dependencies.\r\n */\r\n\r\nexport * from \"./ViewFlagOverrides\";\r\nexport * from \"./map/MapCartoRectangle\";\r\nexport * from \"./map/QuadId\";\r\nexport * from \"./DisclosedTileTreeSet\";\r\nexport * from \"./Tile\";\r\nexport * from \"./LRUTileList\";\r\nexport * from \"./RealityTile\";\r\nexport * from \"./TileParams\";\r\nexport * from \"./TileContent\";\r\nexport * from \"./TileDrawArgs\";\r\nexport * from \"./RealityTileDrawArgs\";\r\nexport * from \"./GraphicsCollector\";\r\nexport * from \"./BatchedTileIdMap\";\r\nexport * from \"./TileTreeParams\";\r\nexport * from \"./TileTree\";\r\nexport * from \"./RealityTileTree\";\r\nexport * from \"./TileTreeSupplier\";\r\nexport * from \"./TileTreeOwner\";\r\nexport * from \"./TileTreeReference\";\r\nexport * from \"./TileGeometryCollector\";\r\nexport * from \"./TiledGraphicsProvider\";\r\nexport * from \"./TileAdmin\";\r\nexport * from \"./TileStorage\";\r\nexport * from \"./TileRequest\";\r\nexport * from \"./TileRequestChannel\";\r\nexport * from \"./IModelTileRequestChannels\";\r\nexport * from \"./TileRequestChannels\";\r\nexport * from \"./TileUsageMarker\";\r\nexport * from \"./TileUser\";\r\nexport * from \"./TileUserSet\";\r\nexport * from \"./GltfReader\";\r\nexport * from \"./I3dmReader\";\r\nexport * from \"./B3dmReader\";\r\nexport * from \"./ImdlReader\";\r\nexport * from \"./ImdlDecoder\";\r\nexport * from \"./ImdlGraphicsCreator\";\r\nexport * from \"./ImdlParser\";\r\nexport * from \"./map/ArcGISTileMap\";\r\nexport * from \"./map/MapLayerAuthentication\";\r\nexport * from \"./map/MapFeatureInfo\";\r\nexport * from \"./map/MapLayerFormatRegistry\";\r\nexport * from \"./map/ArcGisUtilities\";\r\nexport * from \"./map/WmsUtilities\";\r\nexport * from \"./map/WmsCapabilities\";\r\nexport * from \"./map/WmtsCapabilities\";\r\nexport * from \"./map/MapLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/WebMercator\";\r\nexport * from \"./map/ImageryProviders/ArcGisAttributeDrivenSymbology\";\r\nexport * from \"./map/ImageryProviders/ArcGISImageryProvider\";\r\nexport * from \"./map/ImageryProviders/ArcGisGeometryRenderer\";\r\nexport * from \"./map/ImageryProviders/ArcGisGraphicsRenderer\";\r\nexport * from \"./map/ImageryProviders/ArcGisGeometryReaderJSON\";\r\nexport * from \"./map/ImageryProviders/ArcGISMapLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/AzureMapsLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/BingImageryProvider\";\r\nexport * from \"./map/ImageryProviders/MapBoxLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/TileUrlImageryProvider\";\r\nexport * from \"./map/ImageryProviders/WmsMapLayerImageryProvider\";\r\nexport * from \"./map/ImageryProviders/WmtsMapLayerImageryProvider\";\r\nexport * from \"./map/MapLayerImageryFormats\";\r\nexport * from \"./map/MapLayerTileTreeReference\";\r\nexport * from \"./map/MapTileTree\";\r\nexport * from \"./map/TerrainMeshProvider\";\r\nexport * from \"./map/TerrainProvider\";\r\nexport * from \"./map/CesiumTerrainProvider\";\r\nexport * from \"./map/EllipsoidTerrainProvider\";\r\nexport * from \"./map/MapTile\";\r\nexport * from \"./RealityTileLoader\";\r\nexport * from \"./map/MapTileLoader\";\r\nexport * from \"./map/BingElevation\";\r\nexport * from \"./map/MapTilingScheme\";\r\nexport * from \"./map/MapTileAvailability\";\r\nexport * from \"./PntsReader\";\r\nexport * from \"./RealityModelTileTree\";\r\nexport * from \"./IModelTile\";\r\nexport * from \"./DynamicIModelTile\";\r\nexport * from \"./IModelTileTree\";\r\nexport * from \"./PrimaryTileTree\";\r\nexport * from \"./ClassifierTileTree\";\r\nexport * from \"./OrbitGtTileTree\";\r\nexport * from \"./map/ImageryTileTree\";\r\nexport * from \"./map/MapLayerSources\";\r\nexport * from \"./map/MapTiledGraphicsProvider\";\r\nexport * from \"./CesiumAssetProvider\";\r\nexport * from \"./ContextShareProvider\";\r\nexport * from \"./ThreeDTileFormatInterpreter\";\r\nexport * from \"./OPCFormatInterpreter\";\r\nexport * from \"./FetchCloudStorage\";\r\n"]}
@@ -0,0 +1,11 @@
1
+ /** @packageDocumentation
2
+ * @module Tiles
3
+ */
4
+ /** @internal */
5
+ export interface ArcGisAttributeDrivenSymbology {
6
+ rendererFields?: string[];
7
+ setActiveFeatureAttributes: (attributes: {
8
+ [key: string]: any;
9
+ }) => void;
10
+ }
11
+ //# sourceMappingURL=ArcGisAttributeDrivenSymbology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisAttributeDrivenSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,gBAAgB;AAChB,MAAM,WAAW,8BAA8B;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,0BAA0B,EAAE,CAAC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;CAC1E"}
@@ -0,0 +1,9 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Tiles
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=ArcGisAttributeDrivenSymbology.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcGisAttributeDrivenSymbology.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisAttributeDrivenSymbology.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\n/** @internal */\r\nexport interface ArcGisAttributeDrivenSymbology {\r\n rendererFields?: string[];\r\n setActiveFeatureAttributes: (attributes: { [key: string]: any }) => void;\r\n}\r\n"]}
@@ -1,10 +1,12 @@
1
1
  import { Transform } from "@itwin/core-geometry";
2
+ import { ArcGisAttributeDrivenSymbology } from "../../internal";
2
3
  /** Interface defining minimal implementation needed to create an ArcGIS geometry renderer,
3
4
  * that will ultimately be called by an [[ArcGisFeatureReader]] implementation.
4
5
  * @internal
5
6
  */
6
7
  export interface ArcGisGeometryRenderer {
7
8
  transform: Transform | undefined;
9
+ attributeSymbology?: ArcGisAttributeDrivenSymbology;
8
10
  renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean): Promise<void>;
9
11
  renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean): Promise<void>;
10
12
  }
@@ -14,6 +16,7 @@ export interface ArcGisGeometryRenderer {
14
16
  export declare abstract class ArcGisGeometryBaseRenderer implements ArcGisGeometryRenderer {
15
17
  private _transform;
16
18
  constructor(world2PixelTransform?: Transform);
19
+ abstract get attributeSymbology(): ArcGisAttributeDrivenSymbology | undefined;
17
20
  get transform(): Transform | undefined;
18
21
  protected abstract beginPath(): void;
19
22
  protected abstract closePath(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisGeometryRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGeometryRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvI,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1H;AAED;;GAEG;AACH,8BAAsB,0BAA2B,YAAW,sBAAsB;IAChF,OAAO,CAAC,UAAU,CAAwB;gBAE9B,oBAAoB,CAAC,EAAE,SAAS;IAI5C,IAAW,SAAS,0BAA8B;IAElD,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI;IACpC,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI;IACpC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACxD,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD;;;;;;;MAOE;IACW,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;IAiEnI;;;;;;MAME;IACW,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;CA6CtH"}
1
+ {"version":3,"file":"ArcGisGeometryRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGeometryRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,kBAAkB,CAAC,EAAE,8BAA8B,CAAC;IACpD,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvI,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1H;AAED;;GAEG;AACH,8BAAsB,0BAA2B,YAAW,sBAAsB;IAChF,OAAO,CAAC,UAAU,CAAwB;gBAE9B,oBAAoB,CAAC,EAAE,SAAS;IAG5C,aAAoB,kBAAkB,IAAI,8BAA8B,GAAG,SAAS,CAAC;IAErF,IAAW,SAAS,0BAA8B;IAElD,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI;IACpC,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI;IACpC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IACxD,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD;;;;;;;MAOE;IACW,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;IAiEnI;;;;;;MAME;IACW,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;CA6CtH"}
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisGeometryRenderer.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGeometryRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Transform } from \"@itwin/core-geometry\";\r\n\r\n/** Interface defining minimal implementation needed to create an ArcGIS geometry renderer,\r\n * that will ultimately be called by an [[ArcGisFeatureReader]] implementation.\r\n * @internal\r\n */\r\nexport interface ArcGisGeometryRenderer {\r\n transform: Transform | undefined;\r\n renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean): Promise<void>;\r\n renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean): Promise<void>;\r\n}\r\n\r\n/** Internal implementation of [[ArcGisGeometryRenderer]]\r\n * @internal\r\n */\r\nexport abstract class ArcGisGeometryBaseRenderer implements ArcGisGeometryRenderer {\r\n private _transform: Transform | undefined;\r\n\r\n constructor(world2PixelTransform?: Transform) {\r\n this._transform = world2PixelTransform;\r\n }\r\n\r\n public get transform() { return this._transform; }\r\n\r\n protected abstract beginPath(): void;\r\n protected abstract closePath(): void;\r\n protected abstract lineTo(x: number, y: number): void;\r\n protected abstract moveTo(x: number, y: number): void;\r\n protected abstract stroke(): Promise<void>;\r\n protected abstract fill(): Promise<void>;\r\n protected abstract drawPoint(x: number, y: number): void;\r\n protected abstract finishPoints(): Promise<void>;\r\n\r\n /**\r\n * Render a path on the renderer's context.\r\n * Note: Inputs are designed based on the PBF format, to avoid any data transformation.\r\n * @param geometryLengths Array be used to determine the start and end of each sub-path / rings. (i.e. [5,5] = two rings of 5 vertices)\r\n * @param geometryCoords Array that linearly encodes the vertices of each sub-path of a polyline / ring of a polygon\r\n * @param fill Indicates if the path should be filled or not.\r\n * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.\r\n */\r\n public async renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean) {\r\n if (stride < 2 || stride > 3) {\r\n return;\r\n }\r\n\r\n // Keep track of our position in the in the 'coords' array:\r\n // Every time we loop on the 'lengths' array, the position\r\n // to start reading vertices in the 'coords' must be the sum of all previously read vertices.\r\n let coordsOffset = 0;\r\n\r\n // Begin the path here.\r\n // Note: Even though path is closed inside the 'geometryLengths' loop,\r\n // it's import to begin the path only once.\r\n this.beginPath();\r\n for (const vertexCount of geometryLengths) {\r\n let lastPtX = 0, lastPtY = 0;\r\n for (let vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) {\r\n let pX = geometryCoords[coordsOffset + (vertexIdx * stride)];\r\n let pY = geometryCoords[coordsOffset + (vertexIdx * stride) + 1];\r\n if (vertexIdx === 0) {\r\n // first vertex is always \"absolute\" and must be drawn as 'moveTo' (i.e. not lineTo)\r\n if (relativeCoords) {\r\n lastPtX = pX;\r\n lastPtY = pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n\r\n this.moveTo(pX, pY);\r\n } else {\r\n\r\n // Following vertices are relative to the previous one (sadly not really well documented by ESRI)\r\n // typically this happens when 'coordinates quantization' is active (i.e. no client side transformation is needed)\r\n if (relativeCoords) {\r\n pX = lastPtX = lastPtX + pX;\r\n pY = lastPtY = lastPtY + pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n this.lineTo(pX, pY);\r\n }\r\n\r\n }\r\n coordsOffset += stride * vertexCount;\r\n if (fill) {\r\n // ClosePath but do not 'fill' here, only at the very end (otherwise it will mess up holes)\r\n this.closePath();\r\n }\r\n }\r\n\r\n if (fill) {\r\n await this.fill();\r\n }\r\n\r\n await this.stroke(); // draw line path or polygon outline\r\n }\r\n\r\n /**\r\n * Render a point on the renderer's context.\r\n * Note: Inputs are designed based on the PBF format, to avoid any data transformation.\r\n * @param geometryLengths Array be used to determine the start and end of each multi-point array, empty for single point.\r\n * @param geometryCoords Array that linearly encodes vertices.\r\n * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.\r\n */\r\n public async renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean) {\r\n\r\n if (stride < 2 || stride > 3) {\r\n return;\r\n }\r\n let coordsOffset = 0;\r\n if (geometryLengths.length === 0) {\r\n // Strangely, for points, 'lengths' array is empty, so we assume there is a single vertex in 'coords' array.\r\n if (geometryCoords.length >= stride) {\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: geometryCoords[0], y: geometryCoords[1] });\r\n this.drawPoint(transformedPoint.x, transformedPoint.y);\r\n } else {\r\n this.drawPoint(geometryCoords[0], geometryCoords[1]);\r\n }\r\n }\r\n } else {\r\n // MULTI-POINTS: Needs testing\r\n // I assume 'lengths' array will get populated and 'coords' array will look similar to line/polygons.\r\n for (const vertexCount of geometryLengths) {\r\n let lastPtX = 0, lastPtY = 0;\r\n for (let vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) {\r\n let pX = geometryCoords[coordsOffset + (vertexIdx * stride)];\r\n let pY = geometryCoords[coordsOffset + (vertexIdx * stride) + 1];\r\n\r\n if (relativeCoords) {\r\n pX = lastPtX = lastPtX + pX;\r\n pY = lastPtY = lastPtY + pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n\r\n this.drawPoint(pX, pY);\r\n\r\n }\r\n coordsOffset += stride * vertexCount;\r\n }\r\n }\r\n await this.finishPoints();\r\n }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"ArcGisGeometryRenderer.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGeometryRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Transform } from \"@itwin/core-geometry\";\r\nimport { ArcGisAttributeDrivenSymbology } from \"../../internal\";\r\n\r\n/** Interface defining minimal implementation needed to create an ArcGIS geometry renderer,\r\n * that will ultimately be called by an [[ArcGisFeatureReader]] implementation.\r\n * @internal\r\n */\r\nexport interface ArcGisGeometryRenderer {\r\n transform: Transform | undefined;\r\n attributeSymbology?: ArcGisAttributeDrivenSymbology;\r\n renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean): Promise<void>;\r\n renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean): Promise<void>;\r\n}\r\n\r\n/** Internal implementation of [[ArcGisGeometryRenderer]]\r\n * @internal\r\n */\r\nexport abstract class ArcGisGeometryBaseRenderer implements ArcGisGeometryRenderer {\r\n private _transform: Transform | undefined;\r\n\r\n constructor(world2PixelTransform?: Transform) {\r\n this._transform = world2PixelTransform;\r\n }\r\n public abstract get attributeSymbology(): ArcGisAttributeDrivenSymbology | undefined;\r\n\r\n public get transform() { return this._transform; }\r\n\r\n protected abstract beginPath(): void;\r\n protected abstract closePath(): void;\r\n protected abstract lineTo(x: number, y: number): void;\r\n protected abstract moveTo(x: number, y: number): void;\r\n protected abstract stroke(): Promise<void>;\r\n protected abstract fill(): Promise<void>;\r\n protected abstract drawPoint(x: number, y: number): void;\r\n protected abstract finishPoints(): Promise<void>;\r\n\r\n /**\r\n * Render a path on the renderer's context.\r\n * Note: Inputs are designed based on the PBF format, to avoid any data transformation.\r\n * @param geometryLengths Array be used to determine the start and end of each sub-path / rings. (i.e. [5,5] = two rings of 5 vertices)\r\n * @param geometryCoords Array that linearly encodes the vertices of each sub-path of a polyline / ring of a polygon\r\n * @param fill Indicates if the path should be filled or not.\r\n * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.\r\n */\r\n public async renderPath(geometryLengths: number[], geometryCoords: number[], fill: boolean, stride: number, relativeCoords: boolean) {\r\n if (stride < 2 || stride > 3) {\r\n return;\r\n }\r\n\r\n // Keep track of our position in the in the 'coords' array:\r\n // Every time we loop on the 'lengths' array, the position\r\n // to start reading vertices in the 'coords' must be the sum of all previously read vertices.\r\n let coordsOffset = 0;\r\n\r\n // Begin the path here.\r\n // Note: Even though path is closed inside the 'geometryLengths' loop,\r\n // it's import to begin the path only once.\r\n this.beginPath();\r\n for (const vertexCount of geometryLengths) {\r\n let lastPtX = 0, lastPtY = 0;\r\n for (let vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) {\r\n let pX = geometryCoords[coordsOffset + (vertexIdx * stride)];\r\n let pY = geometryCoords[coordsOffset + (vertexIdx * stride) + 1];\r\n if (vertexIdx === 0) {\r\n // first vertex is always \"absolute\" and must be drawn as 'moveTo' (i.e. not lineTo)\r\n if (relativeCoords) {\r\n lastPtX = pX;\r\n lastPtY = pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n\r\n this.moveTo(pX, pY);\r\n } else {\r\n\r\n // Following vertices are relative to the previous one (sadly not really well documented by ESRI)\r\n // typically this happens when 'coordinates quantization' is active (i.e. no client side transformation is needed)\r\n if (relativeCoords) {\r\n pX = lastPtX = lastPtX + pX;\r\n pY = lastPtY = lastPtY + pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n this.lineTo(pX, pY);\r\n }\r\n\r\n }\r\n coordsOffset += stride * vertexCount;\r\n if (fill) {\r\n // ClosePath but do not 'fill' here, only at the very end (otherwise it will mess up holes)\r\n this.closePath();\r\n }\r\n }\r\n\r\n if (fill) {\r\n await this.fill();\r\n }\r\n\r\n await this.stroke(); // draw line path or polygon outline\r\n }\r\n\r\n /**\r\n * Render a point on the renderer's context.\r\n * Note: Inputs are designed based on the PBF format, to avoid any data transformation.\r\n * @param geometryLengths Array be used to determine the start and end of each multi-point array, empty for single point.\r\n * @param geometryCoords Array that linearly encodes vertices.\r\n * @param stride Dimension of each vertices (i.e. 2 or 3. 3 could be X,Y,Z, X,YM) Currently 3rd dimension is ignored.\r\n */\r\n public async renderPoint(geometryLengths: number[], geometryCoords: number[], stride: number, relativeCoords: boolean) {\r\n\r\n if (stride < 2 || stride > 3) {\r\n return;\r\n }\r\n let coordsOffset = 0;\r\n if (geometryLengths.length === 0) {\r\n // Strangely, for points, 'lengths' array is empty, so we assume there is a single vertex in 'coords' array.\r\n if (geometryCoords.length >= stride) {\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: geometryCoords[0], y: geometryCoords[1] });\r\n this.drawPoint(transformedPoint.x, transformedPoint.y);\r\n } else {\r\n this.drawPoint(geometryCoords[0], geometryCoords[1]);\r\n }\r\n }\r\n } else {\r\n // MULTI-POINTS: Needs testing\r\n // I assume 'lengths' array will get populated and 'coords' array will look similar to line/polygons.\r\n for (const vertexCount of geometryLengths) {\r\n let lastPtX = 0, lastPtY = 0;\r\n for (let vertexIdx = 0; vertexIdx < vertexCount; vertexIdx++) {\r\n let pX = geometryCoords[coordsOffset + (vertexIdx * stride)];\r\n let pY = geometryCoords[coordsOffset + (vertexIdx * stride) + 1];\r\n\r\n if (relativeCoords) {\r\n pX = lastPtX = lastPtX + pX;\r\n pY = lastPtY = lastPtY + pY;\r\n }\r\n\r\n if (this._transform) {\r\n const transformedPoint = this._transform.multiplyPoint2d({ x: pX, y: pY });\r\n pX = transformedPoint.x;\r\n pY = transformedPoint.y;\r\n }\r\n\r\n this.drawPoint(pX, pY);\r\n\r\n }\r\n coordsOffset += stride * vertexCount;\r\n }\r\n }\r\n await this.finishPoints();\r\n }\r\n}\r\n\r\n"]}
@@ -1,4 +1,4 @@
1
- import { ArcGisGeometryBaseRenderer } from "../../internal";
1
+ import { ArcGisAttributeDrivenSymbology, ArcGisGeometryBaseRenderer } from "../../internal";
2
2
  import { GraphicPrimitive } from "../../../render/GraphicPrimitive";
3
3
  import { IModelConnection } from "../../../IModelConnection";
4
4
  /** ArcGIS geometry renderer implementation that will "render" a list of [GraphicPrimitive]($frontend)
@@ -10,6 +10,7 @@ export declare class ArcGisGraphicsRenderer extends ArcGisGeometryBaseRenderer {
10
10
  private _scratchPaths;
11
11
  private _graphics;
12
12
  private _iModel;
13
+ get attributeSymbology(): ArcGisAttributeDrivenSymbology | undefined;
13
14
  constructor(iModel: IModelConnection);
14
15
  moveGraphics(): GraphicPrimitive[];
15
16
  protected beginPath(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisGraphicsRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGraphicsRenderer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAe,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI7D;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IACpE,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,OAAO,CAAmB;gBAEtB,MAAM,EAAE,gBAAgB;IAK7B,YAAY;IAMnB,SAAS,CAAC,SAAS;IAKnB,SAAS,CAAC,SAAS;cAOH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;cAI3B,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;cAU3B,IAAI;cA8BJ,MAAM;cAyBH,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;cAI/B,YAAY;YAmBvB,gBAAgB;IAI9B,OAAO,CAAC,gBAAgB;CAQzB"}
1
+ {"version":3,"file":"ArcGisGraphicsRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGraphicsRenderer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,8BAA8B,EAAE,0BAA0B,EAAe,MAAM,gBAAgB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI7D;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IACpE,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,OAAO,CAAmB;IAElC,IAAoB,kBAAkB,IAAI,8BAA8B,GAAG,SAAS,CAAoB;gBAE5F,MAAM,EAAE,gBAAgB;IAK7B,YAAY;IAMnB,SAAS,CAAC,SAAS;IAKnB,SAAS,CAAC,SAAS;cAOH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;cAI3B,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;cAU3B,IAAI;cA8BJ,MAAM;cAyBH,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;cAI/B,YAAY;YAmBvB,gBAAgB;IAI9B,OAAO,CAAC,gBAAgB;CAQzB"}
@@ -12,6 +12,7 @@ const loggerCategory = "MapLayerImageryProvider.ArcGisGraphicsRenderer";
12
12
  * @internal
13
13
  */
14
14
  export class ArcGisGraphicsRenderer extends ArcGisGeometryBaseRenderer {
15
+ get attributeSymbology() { return undefined; } // No symbology is applied in this renderer
15
16
  constructor(iModel) {
16
17
  super();
17
18
  this._scratchPointsArray = new GrowableXYZArray();
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisGraphicsRenderer.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGraphicsRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { Cartographic } from \"@itwin/core-common\";\r\nimport { GrowableXYZArray, LineString3d, Loop, Point3d, Point3dArray, RegionOps } from \"@itwin/core-geometry\";\r\nimport { ArcGisGeometryBaseRenderer, WebMercator } from \"../../internal\";\r\nimport { GraphicPrimitive } from \"../../../render/GraphicPrimitive\";\r\nimport { IModelConnection } from \"../../../IModelConnection\";\r\n\r\nconst loggerCategory = \"MapLayerImageryProvider.ArcGisGraphicsRenderer\";\r\n\r\n/** ArcGIS geometry renderer implementation that will \"render\" a list of [GraphicPrimitive]($frontend)\r\n * This renderer initial objective is to read geometries when a call to [[MapLayerImageryProvider.getFeatureInfo]] is performed.\r\n * @internal\r\n */\r\nexport class ArcGisGraphicsRenderer extends ArcGisGeometryBaseRenderer {\r\n private _scratchPointsArray = new GrowableXYZArray();\r\n private _scratchPaths: Point3d[][] = [];\r\n private _graphics: GraphicPrimitive[] = [];\r\n private _iModel: IModelConnection;\r\n\r\n constructor(iModel: IModelConnection) {\r\n super();\r\n this._iModel = iModel;\r\n }\r\n\r\n public moveGraphics() {\r\n const graphics = this._graphics;\r\n this._graphics = [];\r\n return graphics;\r\n }\r\n\r\n protected beginPath() {\r\n this._scratchPointsArray.clear();\r\n this._scratchPaths = [];\r\n }\r\n\r\n protected closePath() {\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n }\r\n\r\n protected async lineTo(x: number, y: number) {\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected async moveTo(x: number, y: number) {\r\n\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected async fill() {\r\n if (this._scratchPaths.length > 0) {\r\n const loops = [];\r\n if (this._iModel.noGcsDefined) {\r\n for (const points of this._scratchPaths) {\r\n loops.push(Loop.create(LineString3d.create(this.toSpatialFromEcf(points))));\r\n }\r\n } else {\r\n const pathPromises = [];\r\n for (const points of this._scratchPaths) {\r\n pathPromises.push(this.toSpatialFromGcs(points));\r\n }\r\n\r\n const pathsArray = await Promise.all(pathPromises);\r\n for (const pointsArray of pathsArray) {\r\n loops.push(Loop.create(LineString3d.create(pointsArray)));\r\n }\r\n }\r\n\r\n const mergedLoops = RegionOps.constructAllXYRegionLoops(loops);\r\n for (const loop of mergedLoops) {\r\n for (const negativeLoop of loop.negativeAreaLoops) {\r\n this._graphics.push({ type: \"loop\", loop: negativeLoop });\r\n }\r\n }\r\n\r\n this._scratchPaths = [];\r\n }\r\n }\r\n\r\n protected async stroke() {\r\n\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n\r\n if (this._iModel.noGcsDefined) {\r\n for (const linestring of this._scratchPaths) {\r\n this._graphics.push({ type: \"linestring\", points: this.toSpatialFromEcf(linestring) });\r\n }\r\n } else {\r\n const pathPromises = [];\r\n for (const noGcsDefined of this._scratchPaths) {\r\n pathPromises.push(this.toSpatialFromGcs(noGcsDefined));\r\n }\r\n\r\n const reprojectedPaths = await Promise.all(pathPromises);\r\n for (const path of reprojectedPaths) {\r\n this._graphics.push({ type: \"linestring\", points: Point3dArray.clonePoint3dArray(path) });\r\n }\r\n }\r\n this._scratchPaths = [];\r\n }\r\n\r\n protected override drawPoint(x: number, y: number): void {\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected override async finishPoints() {\r\n if (this._scratchPointsArray.length > 0) {\r\n\r\n if (this._iModel.noGcsDefined) {\r\n this._graphics.push({ type: \"pointstring\", points: this.toSpatialFromEcf(this._scratchPointsArray.getArray()) });\r\n } else {\r\n // Backend reprojection\r\n const pointsArray = this._scratchPointsArray.getArray();\r\n try {\r\n const spatialPoints = await this.toSpatialFromGcs(pointsArray);\r\n this._graphics.push({ type: \"pointstring\", points: spatialPoints });\r\n } catch (error) {\r\n Logger.logError(loggerCategory, \"ArcGisFeatureGraphicsRenderer: Could not reproject points\");\r\n }\r\n }\r\n this._scratchPointsArray.clear();\r\n }\r\n }\r\n\r\n private async toSpatialFromGcs(geoPoints: Point3d[]) {\r\n return this._iModel.toSpatialFromGcs(geoPoints, { horizontalCRS: { epsg: 3857 }, verticalCRS: { id: \"ELLIPSOID\" } });\r\n }\r\n\r\n private toSpatialFromEcf(geoPoints: Point3d[]) {\r\n const spatials = [];\r\n for (const pt of geoPoints) {\r\n const carto = { longitude: WebMercator.getEPSG4326Lon(pt.x), latitude: WebMercator.getEPSG4326Lat(pt.y), height: pt.z };\r\n spatials.push(this._iModel.cartographicToSpatialFromEcef(Cartographic.fromDegrees(carto)));\r\n }\r\n return spatials;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisGraphicsRenderer.js","sourceRoot":"","sources":["../../../../../src/tile/map/ImageryProviders/ArcGisGraphicsRenderer.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAW,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAkC,0BAA0B,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIzG,MAAM,cAAc,GAAG,gDAAgD,CAAC;AAExE;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,0BAA0B;IAMpE,IAAoB,kBAAkB,KAAgD,OAAO,SAAS,CAAC,CAAA,CAAC,CAAG,2CAA2C;IAEtJ,YAAY,MAAwB;QAClC,KAAK,EAAE,CAAC;QARF,wBAAmB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAC7C,kBAAa,GAAgB,EAAE,CAAC;QAChC,cAAS,GAAuB,EAAE,CAAC;QAOzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEM,YAAY;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAES,SAAS;QACjB,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;SAClC;IACH,CAAC;IAES,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,CAAS;QACzC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAES,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,CAAS;QAEzC,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;SAClC;QAED,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAES,KAAK,CAAC,IAAI;QAClB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAC7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;oBACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7E;aACF;iBAAM;gBACL,MAAM,YAAY,GAAG,EAAE,CAAC;gBACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;oBACvC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD;gBAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACnD,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE;oBACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;iBAC3D;aACF;YAED,MAAM,WAAW,GAAG,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAC/D,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;gBAC9B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;iBAC3D;aACF;YAED,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;SACzB;IACH,CAAC;IAES,KAAK,CAAC,MAAM;QAEpB,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;SAClC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAC7B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC3C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;aACxF;SACF;aAAM;YACL,MAAM,YAAY,GAAG,EAAE,CAAC;YACxB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC7C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;aACxD;YAED,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACzD,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE;gBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC3F;SACF;QACD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEkB,SAAS,CAAC,CAAS,EAAE,CAAS;QAC/C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAEkB,KAAK,CAAC,YAAY;QACnC,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;aAClH;iBAAM;gBACL,uBAAuB;gBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;gBACxD,IAAI;oBACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;oBAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;iBACrE;gBAAC,OAAO,KAAK,EAAE;oBACd,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,2DAA2D,CAAC,CAAC;iBAC9F;aACF;YACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;SAClC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,SAAoB;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IACvH,CAAC;IAEO,gBAAgB,CAAC,SAAoB;QAC3C,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;YAC1B,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;YACxH,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5F;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { Cartographic } from \"@itwin/core-common\";\r\nimport { GrowableXYZArray, LineString3d, Loop, Point3d, Point3dArray, RegionOps } from \"@itwin/core-geometry\";\r\nimport { ArcGisAttributeDrivenSymbology, ArcGisGeometryBaseRenderer, WebMercator } from \"../../internal\";\r\nimport { GraphicPrimitive } from \"../../../render/GraphicPrimitive\";\r\nimport { IModelConnection } from \"../../../IModelConnection\";\r\n\r\nconst loggerCategory = \"MapLayerImageryProvider.ArcGisGraphicsRenderer\";\r\n\r\n/** ArcGIS geometry renderer implementation that will \"render\" a list of [GraphicPrimitive]($frontend)\r\n * This renderer initial objective is to read geometries when a call to [[MapLayerImageryProvider.getFeatureInfo]] is performed.\r\n * @internal\r\n */\r\nexport class ArcGisGraphicsRenderer extends ArcGisGeometryBaseRenderer {\r\n private _scratchPointsArray = new GrowableXYZArray();\r\n private _scratchPaths: Point3d[][] = [];\r\n private _graphics: GraphicPrimitive[] = [];\r\n private _iModel: IModelConnection;\r\n\r\n public override get attributeSymbology(): ArcGisAttributeDrivenSymbology | undefined {return undefined;} // No symbology is applied in this renderer\r\n\r\n constructor(iModel: IModelConnection) {\r\n super();\r\n this._iModel = iModel;\r\n }\r\n\r\n public moveGraphics() {\r\n const graphics = this._graphics;\r\n this._graphics = [];\r\n return graphics;\r\n }\r\n\r\n protected beginPath() {\r\n this._scratchPointsArray.clear();\r\n this._scratchPaths = [];\r\n }\r\n\r\n protected closePath() {\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n }\r\n\r\n protected async lineTo(x: number, y: number) {\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected async moveTo(x: number, y: number) {\r\n\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected async fill() {\r\n if (this._scratchPaths.length > 0) {\r\n const loops = [];\r\n if (this._iModel.noGcsDefined) {\r\n for (const points of this._scratchPaths) {\r\n loops.push(Loop.create(LineString3d.create(this.toSpatialFromEcf(points))));\r\n }\r\n } else {\r\n const pathPromises = [];\r\n for (const points of this._scratchPaths) {\r\n pathPromises.push(this.toSpatialFromGcs(points));\r\n }\r\n\r\n const pathsArray = await Promise.all(pathPromises);\r\n for (const pointsArray of pathsArray) {\r\n loops.push(Loop.create(LineString3d.create(pointsArray)));\r\n }\r\n }\r\n\r\n const mergedLoops = RegionOps.constructAllXYRegionLoops(loops);\r\n for (const loop of mergedLoops) {\r\n for (const negativeLoop of loop.negativeAreaLoops) {\r\n this._graphics.push({ type: \"loop\", loop: negativeLoop });\r\n }\r\n }\r\n\r\n this._scratchPaths = [];\r\n }\r\n }\r\n\r\n protected async stroke() {\r\n\r\n if (this._scratchPointsArray.length > 0) {\r\n this._scratchPaths.push(this._scratchPointsArray.getArray());\r\n this._scratchPointsArray.clear();\r\n }\r\n\r\n if (this._iModel.noGcsDefined) {\r\n for (const linestring of this._scratchPaths) {\r\n this._graphics.push({ type: \"linestring\", points: this.toSpatialFromEcf(linestring) });\r\n }\r\n } else {\r\n const pathPromises = [];\r\n for (const noGcsDefined of this._scratchPaths) {\r\n pathPromises.push(this.toSpatialFromGcs(noGcsDefined));\r\n }\r\n\r\n const reprojectedPaths = await Promise.all(pathPromises);\r\n for (const path of reprojectedPaths) {\r\n this._graphics.push({ type: \"linestring\", points: Point3dArray.clonePoint3dArray(path) });\r\n }\r\n }\r\n this._scratchPaths = [];\r\n }\r\n\r\n protected override drawPoint(x: number, y: number): void {\r\n this._scratchPointsArray.push({ x, y, z: 0 });\r\n }\r\n\r\n protected override async finishPoints() {\r\n if (this._scratchPointsArray.length > 0) {\r\n\r\n if (this._iModel.noGcsDefined) {\r\n this._graphics.push({ type: \"pointstring\", points: this.toSpatialFromEcf(this._scratchPointsArray.getArray()) });\r\n } else {\r\n // Backend reprojection\r\n const pointsArray = this._scratchPointsArray.getArray();\r\n try {\r\n const spatialPoints = await this.toSpatialFromGcs(pointsArray);\r\n this._graphics.push({ type: \"pointstring\", points: spatialPoints });\r\n } catch (error) {\r\n Logger.logError(loggerCategory, \"ArcGisFeatureGraphicsRenderer: Could not reproject points\");\r\n }\r\n }\r\n this._scratchPointsArray.clear();\r\n }\r\n }\r\n\r\n private async toSpatialFromGcs(geoPoints: Point3d[]) {\r\n return this._iModel.toSpatialFromGcs(geoPoints, { horizontalCRS: { epsg: 3857 }, verticalCRS: { id: \"ELLIPSOID\" } });\r\n }\r\n\r\n private toSpatialFromEcf(geoPoints: Point3d[]) {\r\n const spatials = [];\r\n for (const pt of geoPoints) {\r\n const carto = { longitude: WebMercator.getEPSG4326Lon(pt.x), latitude: WebMercator.getEPSG4326Lat(pt.y), height: pt.z };\r\n spatials.push(this._iModel.cartographicToSpatialFromEcef(Cartographic.fromDegrees(carto)));\r\n }\r\n return spatials;\r\n }\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-frontend",
3
- "version": "4.1.0-dev.62",
3
+ "version": "4.1.0-dev.66",
4
4
  "description": "iTwin.js frontend components",
5
5
  "main": "lib/cjs/core-frontend.js",
6
6
  "module": "lib/esm/core-frontend.js",
@@ -23,12 +23,12 @@
23
23
  "url": "http://www.bentley.com"
24
24
  },
25
25
  "peerDependencies": {
26
- "@itwin/appui-abstract": "^4.1.0-dev.62",
27
- "@itwin/core-bentley": "^4.1.0-dev.62",
28
- "@itwin/core-common": "^4.1.0-dev.62",
29
- "@itwin/core-geometry": "^4.1.0-dev.62",
30
- "@itwin/core-orbitgt": "^4.1.0-dev.62",
31
- "@itwin/core-quantity": "^4.1.0-dev.62"
26
+ "@itwin/appui-abstract": "^4.1.0-dev.66",
27
+ "@itwin/core-bentley": "^4.1.0-dev.66",
28
+ "@itwin/core-common": "^4.1.0-dev.66",
29
+ "@itwin/core-geometry": "^4.1.0-dev.66",
30
+ "@itwin/core-orbitgt": "^4.1.0-dev.66",
31
+ "@itwin/core-quantity": "^4.1.0-dev.66"
32
32
  },
33
33
  "//devDependencies": [
34
34
  "NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install",
@@ -55,14 +55,14 @@
55
55
  "source-map-loader": "^4.0.0",
56
56
  "typescript": "~5.0.2",
57
57
  "webpack": "^5.76.0",
58
- "@itwin/appui-abstract": "4.1.0-dev.62",
59
- "@itwin/build-tools": "4.1.0-dev.62",
60
- "@itwin/core-geometry": "4.1.0-dev.62",
61
- "@itwin/core-bentley": "4.1.0-dev.62",
62
- "@itwin/core-common": "4.1.0-dev.62",
63
- "@itwin/core-quantity": "4.1.0-dev.62",
64
- "@itwin/certa": "4.1.0-dev.62",
65
- "@itwin/core-orbitgt": "4.1.0-dev.62"
58
+ "@itwin/appui-abstract": "4.1.0-dev.66",
59
+ "@itwin/core-bentley": "4.1.0-dev.66",
60
+ "@itwin/build-tools": "4.1.0-dev.66",
61
+ "@itwin/core-common": "4.1.0-dev.66",
62
+ "@itwin/core-geometry": "4.1.0-dev.66",
63
+ "@itwin/core-orbitgt": "4.1.0-dev.66",
64
+ "@itwin/core-quantity": "4.1.0-dev.66",
65
+ "@itwin/certa": "4.1.0-dev.66"
66
66
  },
67
67
  "//dependencies": [
68
68
  "NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API",
@@ -75,9 +75,9 @@
75
75
  "@loaders.gl/draco": "^3.1.6",
76
76
  "fuse.js": "^3.3.0",
77
77
  "wms-capabilities": "0.4.0",
78
- "@itwin/core-i18n": "4.1.0-dev.62",
79
- "@itwin/core-telemetry": "4.1.0-dev.62",
80
- "@itwin/webgl-compatibility": "4.1.0-dev.62"
78
+ "@itwin/core-i18n": "4.1.0-dev.66",
79
+ "@itwin/core-telemetry": "4.1.0-dev.66",
80
+ "@itwin/webgl-compatibility": "4.1.0-dev.66"
81
81
  },
82
82
  "nyc": {
83
83
  "extends": "./node_modules/@itwin/build-tools/.nycrc"