@itwin/map-layers-formats 4.6.0-dev.9 → 4.7.0-dev.0

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 (164) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js +1 -1
  3. package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  4. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts +15 -6
  5. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  6. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +64 -54
  7. package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  8. package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  9. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts +7 -11
  10. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  11. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js +3 -19
  12. package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  13. package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  14. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +3 -3
  15. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -1
  16. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js +3 -4
  17. package/lib/cjs/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
  18. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts +3 -3
  19. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -1
  20. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js +2 -3
  21. package/lib/cjs/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
  22. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +35 -15
  23. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
  24. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +54 -48
  25. package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  26. package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts +2 -1
  27. package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts.map +1 -1
  28. package/lib/cjs/ArcGisFeature/EsriSymbology.js +2 -1
  29. package/lib/cjs/ArcGisFeature/EsriSymbology.js.map +1 -1
  30. package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js +1 -1
  31. package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  32. package/lib/cjs/Feature/DefaultMarkerIcon.d.ts +10 -0
  33. package/lib/cjs/Feature/DefaultMarkerIcon.d.ts.map +1 -0
  34. package/lib/cjs/Feature/DefaultMarkerIcon.js +31 -0
  35. package/lib/cjs/Feature/DefaultMarkerIcon.js.map +1 -0
  36. package/lib/cjs/Feature/FeatureCanvasRenderer.d.ts +20 -0
  37. package/lib/cjs/Feature/FeatureCanvasRenderer.d.ts.map +1 -0
  38. package/lib/cjs/{ArcGisFeature/ArcGisCanvasRenderer.js → Feature/FeatureCanvasRenderer.js} +7 -6
  39. package/lib/cjs/Feature/FeatureCanvasRenderer.js.map +1 -0
  40. package/lib/cjs/Feature/FeatureInfoReader.d.ts +11 -0
  41. package/lib/cjs/Feature/FeatureInfoReader.d.ts.map +1 -0
  42. package/lib/cjs/Feature/FeatureInfoReader.js +35 -0
  43. package/lib/cjs/Feature/FeatureInfoReader.js.map +1 -0
  44. package/lib/cjs/Feature/FeatureSymbology.d.ts +8 -0
  45. package/lib/cjs/Feature/FeatureSymbology.d.ts.map +1 -0
  46. package/lib/cjs/Feature/FeatureSymbology.js +12 -0
  47. package/lib/cjs/Feature/FeatureSymbology.js.map +1 -0
  48. package/lib/cjs/Feature/RandomMapColor.d.ts +8 -0
  49. package/lib/cjs/Feature/RandomMapColor.d.ts.map +1 -0
  50. package/lib/cjs/Feature/RandomMapColor.js +29 -0
  51. package/lib/cjs/Feature/RandomMapColor.js.map +1 -0
  52. package/lib/cjs/GeoJSON/GeoJSONGeometry.d.ts +18 -0
  53. package/lib/cjs/GeoJSON/GeoJSONGeometry.d.ts.map +1 -0
  54. package/lib/cjs/GeoJSON/GeoJSONGeometry.js +11 -0
  55. package/lib/cjs/GeoJSON/GeoJSONGeometry.js.map +1 -0
  56. package/lib/cjs/GeoJSON/GeoJSONGeometryReader.d.ts +11 -0
  57. package/lib/cjs/GeoJSON/GeoJSONGeometryReader.d.ts.map +1 -0
  58. package/lib/cjs/GeoJSON/GeoJSONGeometryReader.js +83 -0
  59. package/lib/cjs/GeoJSON/GeoJSONGeometryReader.js.map +1 -0
  60. package/lib/cjs/Icons/MapInfoIcon.js.map +1 -1
  61. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.d.ts +9 -0
  62. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.d.ts.map +1 -0
  63. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.js +94 -0
  64. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesFormat.js.map +1 -0
  65. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.d.ts +54 -0
  66. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.d.ts.map +1 -0
  67. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.js +477 -0
  68. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesProvider.js.map +1 -0
  69. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.d.ts +23 -0
  70. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.d.ts.map +1 -0
  71. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.js +139 -0
  72. package/lib/cjs/OgcApiFeatures/OgcApiFeaturesReader.js.map +1 -0
  73. package/lib/cjs/Tools/MapFeatureInfoDecorator.js.map +1 -1
  74. package/lib/cjs/Tools/MapFeatureInfoTool.js +1 -1
  75. package/lib/cjs/Tools/MapFeatureInfoTool.js.map +1 -1
  76. package/lib/cjs/map-layers-formats.js.map +1 -1
  77. package/lib/cjs/mapLayersFormats.d.ts.map +1 -1
  78. package/lib/cjs/mapLayersFormats.js +5 -2
  79. package/lib/cjs/mapLayersFormats.js.map +1 -1
  80. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js +1 -2
  81. package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
  82. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts +15 -6
  83. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
  84. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +63 -55
  85. package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
  86. package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js.map +1 -1
  87. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts +7 -11
  88. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts.map +1 -1
  89. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js +3 -19
  90. package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js.map +1 -1
  91. package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
  92. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts +3 -3
  93. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.d.ts.map +1 -1
  94. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js +3 -4
  95. package/lib/esm/ArcGisFeature/ArcGisJsonFeatureReader.js.map +1 -1
  96. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts +3 -3
  97. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.d.ts.map +1 -1
  98. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js +2 -3
  99. package/lib/esm/ArcGisFeature/ArcGisPbfFeatureReader.js.map +1 -1
  100. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +35 -15
  101. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
  102. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +52 -47
  103. package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
  104. package/lib/esm/ArcGisFeature/EsriSymbology.d.ts +2 -1
  105. package/lib/esm/ArcGisFeature/EsriSymbology.d.ts.map +1 -1
  106. package/lib/esm/ArcGisFeature/EsriSymbology.js +2 -1
  107. package/lib/esm/ArcGisFeature/EsriSymbology.js.map +1 -1
  108. package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
  109. package/lib/esm/Feature/DefaultMarkerIcon.d.ts +10 -0
  110. package/lib/esm/Feature/DefaultMarkerIcon.d.ts.map +1 -0
  111. package/lib/esm/Feature/DefaultMarkerIcon.js +27 -0
  112. package/lib/esm/Feature/DefaultMarkerIcon.js.map +1 -0
  113. package/lib/esm/Feature/FeatureCanvasRenderer.d.ts +20 -0
  114. package/lib/esm/Feature/FeatureCanvasRenderer.d.ts.map +1 -0
  115. package/lib/esm/{ArcGisFeature/ArcGisCanvasRenderer.js → Feature/FeatureCanvasRenderer.js} +6 -5
  116. package/lib/esm/Feature/FeatureCanvasRenderer.js.map +1 -0
  117. package/lib/esm/Feature/FeatureInfoReader.d.ts +11 -0
  118. package/lib/esm/Feature/FeatureInfoReader.d.ts.map +1 -0
  119. package/lib/esm/Feature/FeatureInfoReader.js +31 -0
  120. package/lib/esm/Feature/FeatureInfoReader.js.map +1 -0
  121. package/lib/esm/Feature/FeatureSymbology.d.ts +8 -0
  122. package/lib/esm/Feature/FeatureSymbology.d.ts.map +1 -0
  123. package/lib/esm/Feature/FeatureSymbology.js +8 -0
  124. package/lib/esm/Feature/FeatureSymbology.js.map +1 -0
  125. package/lib/esm/Feature/RandomMapColor.d.ts +8 -0
  126. package/lib/esm/Feature/RandomMapColor.d.ts.map +1 -0
  127. package/lib/esm/Feature/RandomMapColor.js +25 -0
  128. package/lib/esm/Feature/RandomMapColor.js.map +1 -0
  129. package/lib/esm/GeoJSON/GeoJSONGeometry.d.ts +18 -0
  130. package/lib/esm/GeoJSON/GeoJSONGeometry.d.ts.map +1 -0
  131. package/lib/esm/GeoJSON/GeoJSONGeometry.js +7 -0
  132. package/lib/esm/GeoJSON/GeoJSONGeometry.js.map +1 -0
  133. package/lib/esm/GeoJSON/GeoJSONGeometryReader.d.ts +11 -0
  134. package/lib/esm/GeoJSON/GeoJSONGeometryReader.d.ts.map +1 -0
  135. package/lib/esm/GeoJSON/GeoJSONGeometryReader.js +79 -0
  136. package/lib/esm/GeoJSON/GeoJSONGeometryReader.js.map +1 -0
  137. package/lib/esm/Icons/MapInfoIcon.js.map +1 -1
  138. package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.d.ts +9 -0
  139. package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.d.ts.map +1 -0
  140. package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.js +90 -0
  141. package/lib/esm/OgcApiFeatures/OgcApiFeaturesFormat.js.map +1 -0
  142. package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.d.ts +54 -0
  143. package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.d.ts.map +1 -0
  144. package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.js +472 -0
  145. package/lib/esm/OgcApiFeatures/OgcApiFeaturesProvider.js.map +1 -0
  146. package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.d.ts +23 -0
  147. package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.d.ts.map +1 -0
  148. package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.js +135 -0
  149. package/lib/esm/OgcApiFeatures/OgcApiFeaturesReader.js.map +1 -0
  150. package/lib/esm/Tools/MapFeatureInfoDecorator.js.map +1 -1
  151. package/lib/esm/Tools/MapFeatureInfoTool.js +1 -2
  152. package/lib/esm/Tools/MapFeatureInfoTool.js.map +1 -1
  153. package/lib/esm/map-layers-formats.js.map +1 -1
  154. package/lib/esm/mapLayersFormats.d.ts.map +1 -1
  155. package/lib/esm/mapLayersFormats.js +5 -3
  156. package/lib/esm/mapLayersFormats.js.map +1 -1
  157. package/lib/public/locales/en/mapLayersFormats.json +18 -18
  158. package/package.json +18 -15
  159. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts +0 -19
  160. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +0 -1
  161. package/lib/cjs/ArcGisFeature/ArcGisCanvasRenderer.js.map +0 -1
  162. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts +0 -19
  163. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.d.ts.map +0 -1
  164. package/lib/esm/ArcGisFeature/ArcGisCanvasRenderer.js.map +0 -1
@@ -8,21 +8,24 @@ import { Angle } from "@itwin/core-geometry";
8
8
  /** @internal */
9
9
  const loggerCategory = "MapLayersFormats.ArcGISFeature";
10
10
  /** @internal */
11
- export class ArcGisSymbologyRenderer {
12
- static create(renderer, defaultSymbol) {
11
+ export class ArcGisSymbologyCanvasRenderer {
12
+ constructor() {
13
+ this.activeGeometryType = "";
14
+ }
15
+ static create(renderer, defaultSymbol, geometryType) {
13
16
  if (renderer?.type === "uniqueValue") {
14
- return new ArcGisUniqueValueSymbologyRenderer(renderer, defaultSymbol);
17
+ return new ArcGisUniqueValueSymbologyRenderer(renderer, defaultSymbol, geometryType);
15
18
  }
16
19
  else if (renderer?.type === "classBreaks") {
17
- return new ArcGisClassBreaksSymbologyRenderer(renderer, defaultSymbol);
20
+ return new ArcGisClassBreaksSymbologyRenderer(renderer, defaultSymbol, geometryType);
18
21
  }
19
22
  else {
20
- return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);
23
+ return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol, geometryType);
21
24
  }
22
25
  }
23
26
  }
24
27
  /** @internal */
25
- class ArcGisDashLineStyle {
28
+ export class ArcGisDashLineStyle {
26
29
  }
27
30
  _a = ArcGisDashLineStyle;
28
31
  // ESRI does not provide any values for their line style definition, those values have been
@@ -51,23 +54,24 @@ ArcGisDashLineStyle.dashValues = {
51
54
  esriSLSShortDashDotDot: [_a._dashLineLength, _a._dashShortGapLength, _a._dotLineLength, _a._dashGapLength, _a._dotLineLength, _a._dashShortGapLength],
52
55
  esriSLSShortDot: [_a._shortDotLineLength, _a._shortDotGapLength],
53
56
  };
54
- export { ArcGisDashLineStyle };
55
57
  /** @internal */
56
- export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
58
+ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyCanvasRenderer {
57
59
  isAttributeDriven() { return false; }
58
- get symbol() { return this._symbol; }
59
- get defaultSymbol() { return this._defaultSymbol; }
60
- constructor(renderer, defaultSymbol) {
60
+ get symbol() { return (this._symbol ?? this.defaultSymbol); }
61
+ set symbol(symbol) { this._symbol = symbol; }
62
+ get defaultSymbol() { return this._defaultSymbol.getSymbology(this.activeGeometryType); }
63
+ constructor(renderer, defaultSymbol, geometryType) {
61
64
  super();
62
65
  this.lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted
63
66
  this._defaultSymbol = defaultSymbol;
67
+ // ArcGIS service normally advertise upfront he geometry of all features. It's always possible to opt-out, but then
68
+ // you will have to set the activeGeometryType before rendering.
69
+ if (geometryType)
70
+ this.activeGeometryType = geometryType;
64
71
  this.renderer = renderer;
65
72
  if (this.renderer?.type === "simple") {
66
73
  this._symbol = this.renderer.symbol;
67
74
  }
68
- else {
69
- this._symbol = defaultSymbol;
70
- }
71
75
  }
72
76
  applyFillStyle(context) {
73
77
  if (!context)
@@ -81,15 +85,16 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
81
85
  }
82
86
  }
83
87
  getFillColor() {
88
+ const symbol = this.symbol;
84
89
  let fillColor;
85
- if (this._symbol.type === "esriSFS") {
86
- const sfs = this._symbol;
90
+ if (symbol.type === "esriSFS") {
91
+ const sfs = symbol;
87
92
  if (sfs.color) {
88
93
  fillColor = sfs.color;
89
94
  }
90
95
  }
91
- else if (this._symbol.type === "esriSMS") {
92
- const sms = this._symbol;
96
+ else if (symbol.type === "esriSMS") {
97
+ const sms = symbol;
93
98
  if (sms.color) {
94
99
  fillColor = sms.color;
95
100
  }
@@ -106,24 +111,25 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
106
111
  return;
107
112
  // Stroke style can be from SFS's outline style or a SLS's color
108
113
  let sls;
109
- if (this._symbol.type === "esriSFS") {
110
- const sfs = this._symbol;
114
+ const symbol = this.symbol;
115
+ if (symbol.type === "esriSFS") {
116
+ const sfs = this.symbol;
111
117
  if (sfs.outline) {
112
118
  sls = sfs.outline;
113
119
  }
114
120
  }
115
- else if (this._symbol.type === "esriSLS") {
116
- sls = this._symbol;
121
+ else if (symbol.type === "esriSLS") {
122
+ sls = this.symbol;
117
123
  }
118
- else if (this._symbol.type === "esriSMS") {
119
- const sms = this._symbol;
124
+ else if (symbol.type === "esriSMS") {
125
+ const sms = this.symbol;
120
126
  if (sms.outline) {
121
127
  sls = sms.outline;
122
128
  }
123
129
  }
124
130
  if (sls) {
125
131
  context.lineWidth = (sls.width > 0 ? sls.width : 1);
126
- if (this._symbol.type === "esriSLS")
132
+ if (symbol.type === "esriSLS")
127
133
  context.lineWidth *= this.lineWidthScaleFactor;
128
134
  if (sls.color) {
129
135
  context.strokeStyle = sls.color.toRgbaString();
@@ -236,12 +242,15 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
236
242
  drawPoint(context, ptX, ptY) {
237
243
  if (!context)
238
244
  return;
239
- if (this._symbol.type === "esriPMS") {
240
- const pms = this._symbol;
245
+ const symbol = this.symbol;
246
+ if (symbol.type === "esriPMS") {
247
+ const pms = this.symbol;
241
248
  const angleDegrees = pms.angle;
242
249
  // We scale up a little a bit the size of symbol.
243
- const width = pms.width === undefined ? pms.width : pms.width * 1.25;
244
- const height = pms.height === undefined ? pms.height : pms.height * 1.25;
250
+ // const width = pms.width === undefined ? pms.width : pms.width * 1.25;
251
+ // const height = pms.height === undefined ? pms.height : pms.height * 1.25;
252
+ const width = pms.width;
253
+ const height = pms.height;
245
254
  let xOffset = 0, yOffset = 0;
246
255
  // Center the marker around the anchor point
247
256
  if (width)
@@ -271,8 +280,8 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
271
280
  if (angleDegrees)
272
281
  context.restore();
273
282
  }
274
- else if (this._symbol.type === "esriSMS") {
275
- const sms = this._symbol;
283
+ else if (symbol.type === "esriSMS") {
284
+ const sms = this.symbol;
276
285
  let xOffset = 0;
277
286
  let yOffset = 0;
278
287
  if (sms.xoffset)
@@ -286,19 +295,17 @@ export class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {
286
295
  /** @internal */
287
296
  export class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
288
297
  isAttributeDriven() { return true; }
298
+ get defaultSymbol() { return this._defaultRenderSymbol ?? super.defaultSymbol; }
289
299
  get rendererFields() {
290
300
  if (this.uvRenderer.field1)
291
301
  return [this.uvRenderer.field1];
292
302
  else
293
303
  return undefined;
294
304
  }
295
- constructor(renderer, defaultSymbol) {
296
- super(renderer, defaultSymbol);
305
+ constructor(renderer, defaultSymbol, geometryType) {
306
+ super(renderer, defaultSymbol, geometryType);
297
307
  this.uvRenderer = this.renderer;
298
- if (this.uvRenderer.defaultSymbol) {
299
- this._defaultSymbol = this.uvRenderer.defaultSymbol;
300
- this._symbol = this.defaultSymbol;
301
- }
308
+ this._defaultRenderSymbol = this.uvRenderer.defaultSymbol;
302
309
  }
303
310
  setActiveFeatureAttributes(attributes) {
304
311
  this._activeFeatureAttributes = attributes;
@@ -311,7 +318,7 @@ export class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRen
311
318
  // Strangely, ArcGIS documentation says 'value' is a string,
312
319
  // not too sure if a comparison on other types is possible, or its always forced to string properties?
313
320
  if (uvi.value === queryValue.toString()) {
314
- this._symbol = uvi.symbol;
321
+ this.symbol = uvi.symbol;
315
322
  newSymbolApplied = true;
316
323
  break;
317
324
  }
@@ -321,26 +328,24 @@ export class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRen
321
328
  }
322
329
  // Fallback to default symbology to make sure we render something
323
330
  if (!newSymbolApplied) {
324
- this._symbol = this.defaultSymbol;
331
+ this.symbol = undefined;
325
332
  }
326
333
  }
327
334
  }
328
335
  /** @internal */
329
336
  export class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
330
337
  isAttributeDriven() { return true; }
338
+ get defaultSymbol() { return this._defaultRenderSymbol ?? super.defaultSymbol; }
331
339
  get rendererFields() {
332
340
  if (this.cbRenderer)
333
341
  return [this.cbRenderer.field];
334
342
  else
335
343
  return undefined;
336
344
  }
337
- constructor(renderer, defaultSymbol) {
338
- super(renderer, defaultSymbol);
345
+ constructor(renderer, defaultSymbol, geometryType) {
346
+ super(renderer, defaultSymbol, geometryType);
339
347
  this.cbRenderer = this.renderer;
340
- if (this.cbRenderer.defaultSymbol) {
341
- this._defaultSymbol = this.cbRenderer.defaultSymbol;
342
- this._symbol = this.defaultSymbol;
343
- }
348
+ this._defaultRenderSymbol = this.cbRenderer.defaultSymbol;
344
349
  }
345
350
  setActiveFeatureAttributes(attributes) {
346
351
  this._activeFeatureAttributes = attributes;
@@ -364,7 +369,7 @@ export class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRen
364
369
  }
365
370
  if (queryValue >= currentMinValue
366
371
  && queryValue <= currentClass.classMaxValue) {
367
- this._symbol = currentClass.symbol;
372
+ this.symbol = currentClass.symbol;
368
373
  return;
369
374
  }
370
375
  } while (++currentClassIdx < this.cbRenderer.classBreakInfos.length);
@@ -372,7 +377,7 @@ export class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRen
372
377
  }
373
378
  // Fallback to default symbology to make sure we render something
374
379
  if (!newSymbolApplied) {
375
- this._symbol = this.defaultSymbol;
380
+ this.symbol = this.defaultSymbol;
376
381
  }
377
382
  }
378
383
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { EsriClassBreaksRenderer, EsriPMS, EsriRenderer, EsriSFS, EsriSimpleRenderer, EsriSLS, EsriSLSStyle, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from \"./EsriSymbology\";\r\nimport { ArcGisAttributeDrivenSymbology } from \"@itwin/core-frontend\";\r\nimport { Angle } from \"@itwin/core-geometry\";\r\n\r\n/** @internal */\r\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\r\n\r\n/** @internal */\r\nexport type ArcGisSymbologyRendererType = \"simple\" | \"attributeDriven\";\r\n\r\n/** @internal */\r\nexport abstract class ArcGisSymbologyRenderer {\r\n public abstract isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;\r\n public abstract applyFillStyle(context: CanvasRenderingContext2D): void;\r\n public abstract applyStrokeStyle(context: CanvasRenderingContext2D): void;\r\n public abstract drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;\r\n\r\n public static create(renderer: EsriRenderer|undefined, defaultSymbol: EsriSymbol) {\r\n if (renderer?.type === \"uniqueValue\") {\r\n return new ArcGisUniqueValueSymbologyRenderer(renderer as EsriUniqueValueRenderer, defaultSymbol);\r\n } else if (renderer?.type === \"classBreaks\") {\r\n return new ArcGisClassBreaksSymbologyRenderer(renderer as EsriClassBreaksRenderer, defaultSymbol);\r\n } else {\r\n return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);\r\n }\r\n }\r\n}\r\n/** @internal */\r\nexport class ArcGisDashLineStyle {\r\n // ESRI does not provide any values for their line style definition, those values have been\r\n // determined by pixel-peeping tiles rendered by ArcGIS servers.\r\n // Available line styles are documented here: https://developers.arcgis.com/web-map-specification/objects/esriSLS_symbol/\r\n private static _dashLineLength = 6;\r\n private static _dashGapLength = 3;\r\n private static _dashShortLineLength = 3;\r\n private static _dashShortGapLength = 3;\r\n private static _dashLongLineLength = 12;\r\n private static _dashLongLineDotDotLength = 18;\r\n private static _dashLongGapLength = 6;\r\n private static _dotLineLength = 2;\r\n private static _dotGapLength = 3;\r\n private static _shortDotLineLength = 1;\r\n private static _shortDotGapLength = 2;\r\n public static dashValues = {\r\n esriSLSDash : [this._dashLineLength, this._dashGapLength],\r\n esriSLSDashDot : [this._dashLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],\r\n esriSLSDashDotDot : [this._dashLongLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],\r\n esriSLSDot : [this._dashLineLength, this._dotGapLength],\r\n esriSLSLongDash : [this._dashLongLineLength, this._dashLongGapLength],\r\n esriSLSLongDashDot : [this._dashLongLineDotDotLength, this._dashGapLength, this._dotLineLength, this._dashGapLength],\r\n esriSLSShortDash : [this._dashShortLineLength, this._dashShortGapLength],\r\n esriSLSShortDashDot : [this._dashShortLineLength, this._dashShortGapLength, this._dotLineLength, this._dashShortGapLength],\r\n esriSLSShortDashDotDot : [this._dashLineLength, this._dashShortGapLength, this._dotLineLength, this._dashGapLength, this._dotLineLength, this._dashShortGapLength],\r\n esriSLSShortDot : [this._shortDotLineLength, this._shortDotGapLength],\r\n };\r\n\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyRenderer {\r\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return false;}\r\n public lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted\r\n\r\n public get symbol() {return this._symbol;}\r\n public get defaultSymbol() {return this._defaultSymbol;}\r\n protected _symbol: EsriSymbol;\r\n protected _defaultSymbol: EsriSymbol;\r\n\r\n public readonly renderer?: EsriRenderer;\r\n\r\n public constructor(renderer: EsriRenderer|undefined, defaultSymbol: EsriSymbol) {\r\n super();\r\n this._defaultSymbol = defaultSymbol;\r\n this.renderer = renderer;\r\n\r\n if (this.renderer?.type === \"simple\") {\r\n this._symbol = (this.renderer as EsriSimpleRenderer).symbol;\r\n } else {\r\n this._symbol = defaultSymbol;\r\n }\r\n\r\n }\r\n\r\n public applyFillStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n const fillColor = this.getFillColor();\r\n if (fillColor) {\r\n context.fillStyle = fillColor.toRgbaString();\r\n } else {\r\n Logger.logTrace(loggerCategory, `Could not apply fill style`);\r\n }\r\n }\r\n\r\n private getFillColor() {\r\n let fillColor: ColorDef | undefined;\r\n if (this._symbol.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.color) {\r\n fillColor = sfs.color;\r\n }\r\n } else if (this._symbol.type === \"esriSMS\") {\r\n const sms = this._symbol as EsriSMS;\r\n if (sms.color) {\r\n fillColor = sms.color;\r\n }\r\n }\r\n\r\n return fillColor;\r\n }\r\n\r\n private applyLineDash(context: CanvasRenderingContext2D, slsStyle: EsriSLSStyle) {\r\n if (slsStyle !== \"esriSLSSolid\" && slsStyle !== \"esriSLSNull\") {\r\n context.setLineDash(ArcGisDashLineStyle.dashValues[slsStyle]);\r\n }\r\n }\r\n\r\n public applyStrokeStyle(context: CanvasRenderingContext2D) {\r\n if (!context)\r\n return;\r\n\r\n // Stroke style can be from SFS's outline style or a SLS's color\r\n let sls: EsriSLS | undefined;\r\n if (this._symbol.type === \"esriSFS\") {\r\n const sfs = this._symbol as EsriSFS;\r\n if (sfs.outline) {\r\n sls = sfs.outline;\r\n }\r\n } else if (this._symbol.type === \"esriSLS\") {\r\n sls = this._symbol as EsriSLS;\r\n } else if (this._symbol.type === \"esriSMS\") {\r\n const sms = this._symbol as EsriSMS;\r\n if (sms.outline) {\r\n sls = sms.outline;\r\n }\r\n }\r\n\r\n if (sls) {\r\n\r\n context.lineWidth = (sls.width > 0 ? sls.width : 1);\r\n if (this._symbol.type === \"esriSLS\")\r\n context.lineWidth *= this.lineWidthScaleFactor;\r\n if (sls.color) {\r\n context.strokeStyle = sls.color.toRgbaString();\r\n }\r\n if (sls.style) {\r\n this.applyLineDash(context, sls.style);\r\n }\r\n } else {\r\n Logger.logTrace(loggerCategory, `Could not apply stroke style`);\r\n }\r\n\r\n }\r\n /**\r\n * Draw a simple marker\r\n * @param x x-axis coordinate in the destination canvas at which to place the center of the marker\r\n * @param y y-axis coordinate in the destination canvas at which to place the center of the marker\r\n * @param size size of the marker\r\n * @public\r\n */\r\n public drawSimpleMarker(context: CanvasRenderingContext2D, sms: EsriSMS, x: number, y: number, size: number) {\r\n const halfSize = sms.size * 0.5;\r\n if (sms.angle) {\r\n context.save();\r\n context.translate(x,y);\r\n const angle = Angle.createDegrees(sms.angle);\r\n context.rotate(angle.radians);\r\n context.translate(-x,-y);\r\n }\r\n\r\n if (sms.style === \"esriSMSSquare\") {\r\n\r\n const dx = x + (-0.5 * size);\r\n const dy = y + (-0.5 * size);\r\n if (sms.color) {\r\n this.applyFillStyle(context);\r\n context.fillRect(dx, dy, size, size);\r\n }\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n context.strokeRect(dx, dy, size, size);\r\n }\r\n\r\n } else if (sms.style === \"esriSMSCircle\") {\r\n context.beginPath();\r\n context.arc(x, y, size*0.5, 0, 2*Math.PI);\r\n context.closePath();\r\n if (sms.color) {\r\n this.applyFillStyle(context);\r\n context.fill();\r\n }\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n context.stroke();\r\n }\r\n } else if (sms.style === \"esriSMSCross\") {\r\n context.beginPath();\r\n context.moveTo(x-halfSize, y);\r\n context.lineTo(x+halfSize, y);\r\n context.moveTo(x, y-halfSize);\r\n context.lineTo(x, y+halfSize);\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n }\r\n context.stroke();\r\n } else if (sms.style === \"esriSMSDiamond\") {\r\n context.beginPath();\r\n\r\n context.moveTo(x, y-halfSize);\r\n context.lineTo(x+halfSize, y);\r\n context.lineTo(x, y+halfSize);\r\n context.lineTo(x-halfSize, y);\r\n context.closePath();\r\n if (sms.color) {\r\n this.applyFillStyle(context);\r\n context.fill();\r\n }\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n }\r\n context.stroke();\r\n } else if (sms.style === \"esriSMSTriangle\") {\r\n context.beginPath();\r\n context.moveTo(x, y-halfSize);\r\n context.lineTo(x+halfSize, y+halfSize);\r\n context.lineTo(x-halfSize, y+halfSize);\r\n\r\n context.closePath();\r\n if (sms.color) {\r\n this.applyFillStyle(context);\r\n context.fill();\r\n }\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n }\r\n context.stroke();\r\n } else if(sms.style === \"esriSMSX\") {\r\n context.beginPath();\r\n context.moveTo(x-halfSize, y-halfSize);\r\n context.lineTo(x+halfSize, y+halfSize);\r\n context.moveTo(x-halfSize, y+halfSize);\r\n context.lineTo(x+halfSize, y-halfSize);\r\n if (sms.outline) {\r\n this.applyStrokeStyle(context);\r\n }\r\n context.stroke();\r\n }\r\n if (sms.angle)\r\n context.restore();\r\n }\r\n\r\n public drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number) {\r\n if (!context)\r\n return;\r\n\r\n if (this._symbol.type === \"esriPMS\") {\r\n const pms = this._symbol as EsriPMS;\r\n const angleDegrees = pms.angle;\r\n\r\n // We scale up a little a bit the size of symbol.\r\n const width = pms.width === undefined ? pms.width : pms.width * 1.25;\r\n const height = pms.height === undefined ? pms.height : pms.height * 1.25;\r\n\r\n let xOffset = 0, yOffset = 0;\r\n\r\n // Center the marker around the anchor point\r\n if (width)\r\n xOffset = width * -0.5;\r\n if (height)\r\n yOffset = height * -0.5;\r\n\r\n // Add additional offset\r\n if (pms.xoffset)\r\n xOffset += pms.xoffset;\r\n if (pms.yoffset)\r\n yOffset += pms.yoffset;\r\n\r\n const dx = ptX + xOffset;\r\n const dy = ptY + yOffset;\r\n\r\n if (angleDegrees) {\r\n context.save();\r\n context.translate(ptX, ptY);\r\n const angle = Angle.createDegrees(angleDegrees);\r\n context.rotate(angle.radians);\r\n context.translate(-ptX, -ptY);\r\n }\r\n\r\n if (width && height) {\r\n context.drawImage(pms.image, dx, dy, width, height);\r\n } else {\r\n context.drawImage(pms.image, dx, dy);\r\n }\r\n\r\n if (angleDegrees)\r\n context.restore();\r\n\r\n } else if (this._symbol.type === \"esriSMS\") {\r\n const sms = this._symbol as EsriSMS;\r\n\r\n let xOffset = 0;\r\n let yOffset = 0;\r\n\r\n if (sms.xoffset)\r\n xOffset += sms.xoffset;\r\n\r\n if (sms.yoffset)\r\n yOffset += sms.yoffset;\r\n\r\n this.drawSimpleMarker(context, sms, ptX + xOffset, ptY + yOffset, sms.size);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {\r\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return true;}\r\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\r\n protected uvRenderer: EsriUniqueValueRenderer;\r\n\r\n public get rendererFields() {\r\n if (this.uvRenderer.field1)\r\n return [this.uvRenderer.field1];\r\n else\r\n return undefined;\r\n }\r\n\r\n public constructor(renderer: EsriUniqueValueRenderer, defaultSymbol: EsriSymbol) {\r\n super(renderer, defaultSymbol);\r\n\r\n this.uvRenderer = (this.renderer as EsriUniqueValueRenderer);\r\n if (this.uvRenderer.defaultSymbol) {\r\n this._defaultSymbol = this.uvRenderer.defaultSymbol;\r\n this._symbol = this.defaultSymbol;\r\n }\r\n }\r\n\r\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\r\n this._activeFeatureAttributes = attributes;\r\n\r\n let newSymbolApplied = false;\r\n if (this._activeFeatureAttributes) {\r\n if (this.uvRenderer.field1 && Object.keys(this._activeFeatureAttributes).includes(this.uvRenderer.field1)) {\r\n\r\n const queryValue = this._activeFeatureAttributes[this.uvRenderer.field1];\r\n\r\n if (queryValue !== null && queryValue !== undefined) {\r\n for (const uvi of this.uvRenderer.uniqueValueInfos) {\r\n // Strangely, ArcGIS documentation says 'value' is a string,\r\n // not too sure if a comparison on other types is possible, or its always forced to string properties?\r\n if (uvi.value === queryValue.toString()) {\r\n this._symbol = uvi.symbol;\r\n newSymbolApplied = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Fallback to default symbology to make sure we render something\r\n if (!newSymbolApplied) {\r\n this._symbol = this.defaultSymbol;\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {\r\n public override isAttributeDriven(): this is ArcGisAttributeDrivenSymbology {return true;}\r\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\r\n protected cbRenderer: EsriClassBreaksRenderer;\r\n\r\n public get rendererFields() {\r\n if (this.cbRenderer)\r\n return [this.cbRenderer.field];\r\n else\r\n return undefined;\r\n }\r\n\r\n public constructor(renderer: EsriClassBreaksRenderer, defaultSymbol: EsriSymbol) {\r\n super(renderer, defaultSymbol);\r\n\r\n this.cbRenderer = (this.renderer as EsriClassBreaksRenderer);\r\n if (this.cbRenderer.defaultSymbol) {\r\n this._defaultSymbol = this.cbRenderer.defaultSymbol;\r\n this._symbol = this.defaultSymbol;\r\n }\r\n }\r\n\r\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\r\n this._activeFeatureAttributes = attributes;\r\n\r\n const newSymbolApplied = false;\r\n if (this._activeFeatureAttributes) {\r\n if (Object.keys(this._activeFeatureAttributes).includes(this.cbRenderer.field)) {\r\n\r\n const queryValue = this._activeFeatureAttributes[this.cbRenderer.field];\r\n\r\n if (queryValue !== null && queryValue !== undefined) {\r\n let currentMinValue: number|undefined;\r\n let currentClassIdx = 0;\r\n do {\r\n const currentClass = this.cbRenderer.classBreakInfos[currentClassIdx];\r\n if (currentClass.classMinValue !== undefined) {\r\n currentMinValue = currentClass.classMinValue;\r\n } else if (currentClass.classMinValue === undefined && currentClassIdx > 0) {\r\n currentMinValue = this.cbRenderer.classBreakInfos[currentClassIdx-1].classMaxValue;\r\n } else {\r\n currentMinValue = this.cbRenderer.minValue;\r\n }\r\n\r\n if ( queryValue >= currentMinValue\r\n && queryValue <= currentClass.classMaxValue) {\r\n this._symbol = currentClass.symbol;\r\n return;\r\n }\r\n }\r\n while (++currentClassIdx < this.cbRenderer.classBreakInfos.length);\r\n }\r\n }\r\n\r\n // Fallback to default symbology to make sure we render something\r\n if (!newSymbolApplied) {\r\n this._symbol = this.defaultSymbol;\r\n }\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ArcGisSymbologyRenderer.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { EsriClassBreaksRenderer, EsriPMS, EsriRenderer, EsriSFS, EsriSimpleRenderer, EsriSLS, EsriSLSStyle, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from \"./EsriSymbology\";\nimport { FeatureAttributeDrivenSymbology, FeatureSymbologyRenderer } from \"@itwin/core-frontend\";\nimport { Angle } from \"@itwin/core-geometry\";\nimport { FeatureDefaultSymbology } from \"../Feature/FeatureSymbology\";\nimport { ArcGisFeatureGeometryType } from \"./ArcGisFeatureQuery\";\n\n/** @internal */\nconst loggerCategory = \"MapLayersFormats.ArcGISFeature\";\n\n/** @internal */\nexport type ArcGisSymbologyRendererType = \"simple\" | \"attributeDriven\";\n\n/** Feature Symbology renderer applicable to an HTML 2D Canvas\n * @internal\n */\nexport interface FeatureSymbologyCanvasRenderer extends FeatureSymbologyRenderer {\n applyFillStyle(context: CanvasRenderingContext2D): void;\n applyStrokeStyle(context: CanvasRenderingContext2D): void;\n drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;\n}\n\n/** @internal */\nexport abstract class ArcGisSymbologyCanvasRenderer implements FeatureSymbologyCanvasRenderer {\n\n public abstract readonly renderer?: EsriRenderer;\n\n public abstract get symbol(): EsriSymbol;\n public abstract set symbol(symbol: EsriSymbol|undefined);\n public abstract get defaultSymbol(): EsriSymbol;\n public activeGeometryType: string = \"\";\n public abstract isAttributeDriven(): this is FeatureAttributeDrivenSymbology;\n public abstract applyFillStyle(context: CanvasRenderingContext2D): void;\n public abstract applyStrokeStyle(context: CanvasRenderingContext2D): void;\n public abstract drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number): void;\n\n public static create(renderer: EsriRenderer|undefined, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType): ArcGisSymbologyCanvasRenderer {\n if (renderer?.type === \"uniqueValue\") {\n return new ArcGisUniqueValueSymbologyRenderer(renderer as EsriUniqueValueRenderer, defaultSymbol, geometryType);\n } else if (renderer?.type === \"classBreaks\") {\n return new ArcGisClassBreaksSymbologyRenderer(renderer as EsriClassBreaksRenderer, defaultSymbol, geometryType);\n } else {\n return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol, geometryType);\n }\n }\n}\n\n/** @internal */\nexport class ArcGisDashLineStyle {\n // ESRI does not provide any values for their line style definition, those values have been\n // determined by pixel-peeping tiles rendered by ArcGIS servers.\n // Available line styles are documented here: https://developers.arcgis.com/web-map-specification/objects/esriSLS_symbol/\n private static _dashLineLength = 6;\n private static _dashGapLength = 3;\n private static _dashShortLineLength = 3;\n private static _dashShortGapLength = 3;\n private static _dashLongLineLength = 12;\n private static _dashLongLineDotDotLength = 18;\n private static _dashLongGapLength = 6;\n private static _dotLineLength = 2;\n private static _dotGapLength = 3;\n private static _shortDotLineLength = 1;\n private static _shortDotGapLength = 2;\n public static dashValues = {\n esriSLSDash : [this._dashLineLength, this._dashGapLength],\n esriSLSDashDot : [this._dashLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],\n esriSLSDashDotDot : [this._dashLongLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength, this._dotLineLength, this._dotGapLength],\n esriSLSDot : [this._dashLineLength, this._dotGapLength],\n esriSLSLongDash : [this._dashLongLineLength, this._dashLongGapLength],\n esriSLSLongDashDot : [this._dashLongLineDotDotLength, this._dashGapLength, this._dotLineLength, this._dashGapLength],\n esriSLSShortDash : [this._dashShortLineLength, this._dashShortGapLength],\n esriSLSShortDashDot : [this._dashShortLineLength, this._dashShortGapLength, this._dotLineLength, this._dashShortGapLength],\n esriSLSShortDashDotDot : [this._dashLineLength, this._dashShortGapLength, this._dotLineLength, this._dashGapLength, this._dotLineLength, this._dashShortGapLength],\n esriSLSShortDot : [this._shortDotLineLength, this._shortDotGapLength],\n };\n\n}\n\n/** @internal */\nexport class ArcGisSimpleSymbologyRenderer extends ArcGisSymbologyCanvasRenderer {\n\n protected _symbol: EsriSymbol|undefined;\n protected _defaultSymbol: FeatureDefaultSymbology;\n\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {return false;}\n public lineWidthScaleFactor = 2; // This is value is empirical, this might need to be adjusted\n\n public get symbol(): EsriSymbol {return (this._symbol ?? this.defaultSymbol);}\n public set symbol(symbol: EsriSymbol|undefined) {this._symbol = symbol;}\n\n public get defaultSymbol() {return this._defaultSymbol.getSymbology(this.activeGeometryType) as EsriSymbol;}\n public override readonly renderer?: EsriRenderer;\n\n public constructor(renderer: EsriRenderer|undefined, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\n super();\n this._defaultSymbol = defaultSymbol;\n\n // ArcGIS service normally advertise upfront he geometry of all features. It's always possible to opt-out, but then\n // you will have to set the activeGeometryType before rendering.\n if (geometryType)\n this.activeGeometryType = geometryType;\n this.renderer = renderer;\n\n if (this.renderer?.type === \"simple\") {\n this._symbol = (this.renderer as EsriSimpleRenderer).symbol;\n }\n }\n\n public applyFillStyle(context: CanvasRenderingContext2D) {\n if (!context)\n return;\n\n const fillColor = this.getFillColor();\n if (fillColor) {\n context.fillStyle = fillColor.toRgbaString();\n } else {\n Logger.logTrace(loggerCategory, `Could not apply fill style`);\n }\n }\n\n private getFillColor() {\n const symbol = this.symbol;\n let fillColor: ColorDef | undefined;\n if (symbol.type === \"esriSFS\") {\n const sfs = symbol as EsriSFS;\n if (sfs.color) {\n fillColor = sfs.color;\n }\n } else if (symbol.type === \"esriSMS\") {\n const sms = symbol as EsriSMS;\n if (sms.color) {\n fillColor = sms.color;\n }\n }\n\n return fillColor;\n }\n\n private applyLineDash(context: CanvasRenderingContext2D, slsStyle: EsriSLSStyle) {\n if (slsStyle !== \"esriSLSSolid\" && slsStyle !== \"esriSLSNull\") {\n context.setLineDash(ArcGisDashLineStyle.dashValues[slsStyle]);\n }\n }\n\n public applyStrokeStyle(context: CanvasRenderingContext2D) {\n if (!context)\n return;\n\n // Stroke style can be from SFS's outline style or a SLS's color\n let sls: EsriSLS | undefined;\n const symbol = this.symbol;\n if (symbol.type === \"esriSFS\") {\n const sfs = this.symbol as EsriSFS;\n if (sfs.outline) {\n sls = sfs.outline;\n }\n } else if (symbol.type === \"esriSLS\") {\n sls = this.symbol as EsriSLS;\n } else if (symbol.type === \"esriSMS\") {\n const sms = this.symbol as EsriSMS;\n if (sms.outline) {\n sls = sms.outline;\n }\n }\n\n if (sls) {\n\n context.lineWidth = (sls.width > 0 ? sls.width : 1);\n if (symbol.type === \"esriSLS\")\n context.lineWidth *= this.lineWidthScaleFactor;\n if (sls.color) {\n context.strokeStyle = sls.color.toRgbaString();\n }\n if (sls.style) {\n this.applyLineDash(context, sls.style);\n }\n } else {\n Logger.logTrace(loggerCategory, `Could not apply stroke style`);\n }\n\n }\n /**\n * Draw a simple marker\n * @param x x-axis coordinate in the destination canvas at which to place the center of the marker\n * @param y y-axis coordinate in the destination canvas at which to place the center of the marker\n * @param size size of the marker\n * @public\n */\n public drawSimpleMarker(context: CanvasRenderingContext2D, sms: EsriSMS, x: number, y: number, size: number) {\n const halfSize = sms.size * 0.5;\n if (sms.angle) {\n context.save();\n context.translate(x,y);\n const angle = Angle.createDegrees(sms.angle);\n context.rotate(angle.radians);\n context.translate(-x,-y);\n }\n\n if (sms.style === \"esriSMSSquare\") {\n\n const dx = x + (-0.5 * size);\n const dy = y + (-0.5 * size);\n if (sms.color) {\n this.applyFillStyle(context);\n context.fillRect(dx, dy, size, size);\n }\n if (sms.outline) {\n this.applyStrokeStyle(context);\n context.strokeRect(dx, dy, size, size);\n }\n\n } else if (sms.style === \"esriSMSCircle\") {\n context.beginPath();\n context.arc(x, y, size*0.5, 0, 2*Math.PI);\n context.closePath();\n if (sms.color) {\n this.applyFillStyle(context);\n context.fill();\n }\n if (sms.outline) {\n this.applyStrokeStyle(context);\n context.stroke();\n }\n } else if (sms.style === \"esriSMSCross\") {\n context.beginPath();\n context.moveTo(x-halfSize, y);\n context.lineTo(x+halfSize, y);\n context.moveTo(x, y-halfSize);\n context.lineTo(x, y+halfSize);\n if (sms.outline) {\n this.applyStrokeStyle(context);\n }\n context.stroke();\n } else if (sms.style === \"esriSMSDiamond\") {\n context.beginPath();\n\n context.moveTo(x, y-halfSize);\n context.lineTo(x+halfSize, y);\n context.lineTo(x, y+halfSize);\n context.lineTo(x-halfSize, y);\n context.closePath();\n if (sms.color) {\n this.applyFillStyle(context);\n context.fill();\n }\n if (sms.outline) {\n this.applyStrokeStyle(context);\n }\n context.stroke();\n } else if (sms.style === \"esriSMSTriangle\") {\n context.beginPath();\n context.moveTo(x, y-halfSize);\n context.lineTo(x+halfSize, y+halfSize);\n context.lineTo(x-halfSize, y+halfSize);\n\n context.closePath();\n if (sms.color) {\n this.applyFillStyle(context);\n context.fill();\n }\n if (sms.outline) {\n this.applyStrokeStyle(context);\n }\n context.stroke();\n } else if(sms.style === \"esriSMSX\") {\n context.beginPath();\n context.moveTo(x-halfSize, y-halfSize);\n context.lineTo(x+halfSize, y+halfSize);\n context.moveTo(x-halfSize, y+halfSize);\n context.lineTo(x+halfSize, y-halfSize);\n if (sms.outline) {\n this.applyStrokeStyle(context);\n }\n context.stroke();\n }\n if (sms.angle)\n context.restore();\n }\n\n public drawPoint(context: CanvasRenderingContext2D, ptX: number, ptY: number) {\n if (!context)\n return;\n\n const symbol = this.symbol;\n\n if (symbol.type === \"esriPMS\") {\n const pms = this.symbol as EsriPMS;\n const angleDegrees = pms.angle;\n\n // We scale up a little a bit the size of symbol.\n // const width = pms.width === undefined ? pms.width : pms.width * 1.25;\n // const height = pms.height === undefined ? pms.height : pms.height * 1.25;\n const width = pms.width;\n const height = pms.height;\n\n let xOffset = 0, yOffset = 0;\n\n // Center the marker around the anchor point\n if (width)\n xOffset = width * -0.5;\n if (height)\n yOffset = height * -0.5;\n\n // Add additional offset\n if (pms.xoffset)\n xOffset += pms.xoffset;\n if (pms.yoffset)\n yOffset += pms.yoffset;\n\n const dx = ptX + xOffset;\n const dy = ptY + yOffset;\n\n if (angleDegrees) {\n context.save();\n context.translate(ptX, ptY);\n const angle = Angle.createDegrees(angleDegrees);\n context.rotate(angle.radians);\n context.translate(-ptX, -ptY);\n }\n\n if (width && height) {\n context.drawImage(pms.image, dx, dy, width, height);\n } else {\n context.drawImage(pms.image, dx, dy);\n }\n\n if (angleDegrees)\n context.restore();\n\n } else if (symbol.type === \"esriSMS\") {\n const sms = this.symbol as EsriSMS;\n\n let xOffset = 0;\n let yOffset = 0;\n\n if (sms.xoffset)\n xOffset += sms.xoffset;\n\n if (sms.yoffset)\n yOffset += sms.yoffset;\n\n this.drawSimpleMarker(context, sms, ptX + xOffset, ptY + yOffset, sms.size);\n }\n }\n}\n\n/** @internal */\nexport class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements FeatureAttributeDrivenSymbology {\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {return true;}\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\n protected uvRenderer: EsriUniqueValueRenderer;\n private _defaultRenderSymbol: EsriSymbol|undefined;\n\n public override get defaultSymbol() {return this._defaultRenderSymbol ?? super.defaultSymbol;}\n\n public get rendererFields() {\n if (this.uvRenderer.field1)\n return [this.uvRenderer.field1];\n else\n return undefined;\n }\n\n public constructor(renderer: EsriUniqueValueRenderer, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\n super(renderer, defaultSymbol, geometryType);\n\n this.uvRenderer = (this.renderer as EsriUniqueValueRenderer);\n this._defaultRenderSymbol = this.uvRenderer.defaultSymbol;\n }\n\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\n this._activeFeatureAttributes = attributes;\n\n let newSymbolApplied = false;\n if (this._activeFeatureAttributes) {\n if (this.uvRenderer.field1 && Object.keys(this._activeFeatureAttributes).includes(this.uvRenderer.field1)) {\n\n const queryValue = this._activeFeatureAttributes[this.uvRenderer.field1];\n\n if (queryValue !== null && queryValue !== undefined) {\n for (const uvi of this.uvRenderer.uniqueValueInfos) {\n // Strangely, ArcGIS documentation says 'value' is a string,\n // not too sure if a comparison on other types is possible, or its always forced to string properties?\n if (uvi.value === queryValue.toString()) {\n this.symbol = uvi.symbol ;\n newSymbolApplied = true;\n break;\n }\n }\n }\n }\n }\n\n // Fallback to default symbology to make sure we render something\n if (!newSymbolApplied) {\n this.symbol = undefined;\n }\n }\n}\n\n/** @internal */\nexport class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements FeatureAttributeDrivenSymbology {\n public override isAttributeDriven(): this is FeatureAttributeDrivenSymbology {return true;}\n protected _activeFeatureAttributes: {[key: string]: any} | undefined;\n protected cbRenderer: EsriClassBreaksRenderer;\n private _defaultRenderSymbol: EsriSymbol|undefined;\n\n public override get defaultSymbol() {return this._defaultRenderSymbol ?? super.defaultSymbol;}\n\n public get rendererFields() {\n if (this.cbRenderer)\n return [this.cbRenderer.field];\n else\n return undefined;\n }\n\n public constructor(renderer: EsriClassBreaksRenderer, defaultSymbol: FeatureDefaultSymbology, geometryType?: ArcGisFeatureGeometryType) {\n super(renderer, defaultSymbol, geometryType);\n\n this.cbRenderer = (this.renderer as EsriClassBreaksRenderer);\n this._defaultRenderSymbol = this.cbRenderer.defaultSymbol;\n }\n\n public setActiveFeatureAttributes(attributes: { [key: string]: any }) {\n this._activeFeatureAttributes = attributes;\n\n const newSymbolApplied = false;\n if (this._activeFeatureAttributes) {\n if (Object.keys(this._activeFeatureAttributes).includes(this.cbRenderer.field)) {\n\n const queryValue = this._activeFeatureAttributes[this.cbRenderer.field];\n\n if (queryValue !== null && queryValue !== undefined) {\n let currentMinValue: number|undefined;\n let currentClassIdx = 0;\n do {\n const currentClass = this.cbRenderer.classBreakInfos[currentClassIdx];\n if (currentClass.classMinValue !== undefined) {\n currentMinValue = currentClass.classMinValue;\n } else if (currentClass.classMinValue === undefined && currentClassIdx > 0) {\n currentMinValue = this.cbRenderer.classBreakInfos[currentClassIdx-1].classMaxValue;\n } else {\n currentMinValue = this.cbRenderer.minValue;\n }\n\n if ( queryValue >= currentMinValue\n && queryValue <= currentClass.classMaxValue) {\n this.symbol = currentClass.symbol;\n return;\n }\n }\n while (++currentClassIdx < this.cbRenderer.classBreakInfos.length);\n }\n }\n\n // Fallback to default symbology to make sure we render something\n if (!newSymbolApplied) {\n this.symbol = this.defaultSymbol;\n }\n }\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { ColorDef } from "@itwin/core-common";
2
+ import { FeatureSymbology } from "../Feature/FeatureSymbology";
2
3
  /** @internal */
3
4
  export type EsriSymbolPropsType = "esriSFS" | "esriPMS" | "esriSMS" | "esriSLS" | "esriSMS" | "esriTS" | "CIMSymbolReference";
4
5
  /** @internal */
@@ -8,7 +9,7 @@ export interface EsriSymbolCommonProps {
8
9
  /** @internal */
9
10
  export type EsriSymbolProps = EsriSLSProps | EsriPMSProps | EsriSFSProps | EsriSMSProps;
10
11
  /** @internal */
11
- export declare abstract class EsriSymbol implements EsriSymbolCommonProps {
12
+ export declare abstract class EsriSymbol extends FeatureSymbology implements EsriSymbolCommonProps {
12
13
  abstract readonly type: EsriSymbolPropsType;
13
14
  static fromJSON(props: EsriSymbolProps): EsriSFS | EsriSLS | EsriPMS | EsriSMS;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EsriSymbology.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/EsriSymbology.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EsriSymbology.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/EsriSymbology.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAa/D,gBAAgB;AAChB,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,oBAAoB,CAAC;AAE9H,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED,gBAAgB;AAChB,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;AAExF,gBAAgB;AAChB,8BAAsB,UAAW,SAAQ,gBAAiB,YAAW,qBAAqB;IACxF,kBAAyB,IAAI,EAAE,mBAAmB,CAAC;WAErC,QAAQ,CAAC,KAAK,EAAE,eAAe;CAY9C;AAED,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,YAAY,GAAG,iBAAiB,GAAG,oBAAoB,GAC3I,aAAa,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,wBAAwB,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE3H,gBAAgB;AAChB,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,gBAAgB;AAChB,qBAAa,OAAQ,YAAW,qBAAqB;IACnD,SAAgB,KAAK,EAAE,YAAY,CAAC;IAEpC,IAAW,KAAK,yBAA+C;IAC/D,IAAW,IAAI,cAA8B;IAC7C,IAAW,KAAK,WAA+B;IAC/C,IAAW,KAAK,iBAA+B;gBAEnC,IAAI,EAAE,YAAY;WAIhB,QAAQ,CAAC,IAAI,EAAE,YAAY;CAG1C;AAED,gBAAgB;AAChB,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gBAAgB;AAChB,qBAAa,OAAQ,YAAW,qBAAqB;IACnD,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,MAAM,CAA6B;IAE3C,IAAW,IAAI,cAA8B;IAC7C,IAAW,GAAG,WAA6B;IAC3C,IAAW,SAAS,WAAmC;IACvD,IAAW,QAAQ,WAAkE;IACrF,IAAW,KAAK,qBAGf;IACD,IAAW,WAAW,WAAqC;IAC3D,IAAW,KAAK,uBAA+B;IAC/C,IAAW,MAAM,uBAAgC;IACjD,IAAW,OAAO,uBAAiC;IACnD,IAAW,OAAO,uBAAiC;IACnD,IAAW,KAAK,uBAA+B;IAElC,SAAS;IAgBtB,OAAO;WAIO,QAAQ,CAAC,IAAI,EAAE,YAAY;CAG1C;AAED,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAEtI,gBAAgB;AAChB,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,gBAAgB;AAChB,qBAAa,OAAQ,YAAW,qBAAqB;IACnD,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAsB;IACtC,IAAW,KAAK,uBAAkC;IAClD,IAAW,KAAK,yBAAkD;IAClE,IAAW,OAAO,wBAA6B;IAC/C,IAAW,IAAI,WAAkC;IACjD,IAAW,KAAK,qBAAkC;IAClD,IAAW,IAAI,cAAkC;IACjD,IAAW,OAAO,uBAAkC;IACpD,IAAW,OAAO,uBAAkC;IAEpD,OAAO;WAMO,QAAQ,CAAC,IAAI,EAAE,YAAY;CAG1C;AAED,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,GAAG,cAAc,GAAG,sBAAsB,GAAG,wBAAwB,GAAG,mBAAmB,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAE1M,gBAAgB;AAChB,MAAM,WAAW,YAAa,SAAQ,qBAAqB;IACzD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,gBAAgB;AAChB,qBAAa,OAAQ,YAAW,qBAAqB;IACnD,SAAgB,KAAK,EAAE,YAAY,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAsB;IAEtC,IAAW,KAAK,yBAA+C;IAC/D,IAAW,IAAI,cAA8B;IAC7C,IAAW,KAAK,sBAA+B;IAC/C,IAAW,OAAO,wBAA4B;gBAClC,IAAI,EAAE,YAAY;WAMhB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;CAGpD;AAED,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,gBAAgB;AAChB,qBAAa,mBAAmB;IAE9B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,KAAK,EAAE,MAAM,GAAC,SAAS,CAAC;IACxC,SAAgB,WAAW,EAAE,MAAM,GAAC,SAAS,CAAC;IAC9C,SAAgB,MAAM,EAAE,UAAU,CAAC;IAEnC,OAAO;WAOO,QAAQ,CAAC,IAAI,EAAE,wBAAwB;CAGtD;AAED,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,gBAAgB;AAChB,qBAAa,wBAAwB;IAEnC,SAAgB,aAAa,EAAE,MAAM,CAAC;IACtC,SAAgB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvC,SAAgB,KAAK,EAAE,MAAM,GAAC,SAAS,CAAC;IACxC,SAAgB,WAAW,EAAE,MAAM,GAAC,SAAS,CAAC;IAC9C,SAAgB,MAAM,EAAE,UAAU,CAAC;IAEnC,OAAO;WAQO,QAAQ,CAAC,IAAI,EAAE,wBAAwB;CAGtD;AAED,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,gBAAgB;AAChB,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,gBAAgB;AAChB,MAAM,WAAW,4BAA6B,SAAQ,qBAAqB;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;CAC9C;AAED,gBAAgB;AAChB,MAAM,MAAM,4BAA4B,GAAG,6BAA6B,GAAG,2BAA2B,GAAG,oBAAoB,GAAG,2BAA2B,GAAG,sBAAsB,GAAG,+BAA+B,CAAC;AAEvN,gBAAgB;AAChB,MAAM,WAAW,4BAA6B,SAAQ,qBAAqB;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,oBAAoB,EAAE,4BAA4B,CAAC;IACnD,eAAe,EAAE,wBAAwB,EAAE,CAAC;CAC7C;AAED,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC;AAExE,gBAAgB;AAChB,MAAM,MAAO,iBAAiB,GAAG,uBAAuB,GAAG,4BAA4B,GAAG,4BAA4B,CAAC;AAEvH,gBAAgB;AAChB,8BAAsB,YAAY;IAChC,kBAAyB,IAAI,EAAE,gBAAgB,CAAC;aAChC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3C,IAAW,MAAM,IAAI,MAAM,EAAE,GAAC,SAAS,CAAoB;WAC7C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY;CAU9D;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,SAAgB,IAAI,EAAE,gBAAgB,CAAY;IAClD,SAAgB,MAAM,EAAE,UAAU,CAAC;IAEnC,SAAS,aAAa,IAAI,EAAE,uBAAuB;IAKtC,UAAU;WAQA,QAAQ,CAAC,IAAI,EAAE,uBAAuB;CAG9D;AAED,gBAAgB;AAChB,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAA+B;IAC7C,SAAgB,IAAI,EAAE,gBAAgB,CAAiB;IACvD,SAAgB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3C,SAAgB,gBAAgB,EAAE,mBAAmB,EAAE,CAAM;IAE7D,IAAoB,MAAM,aAUzB;IAED,IAAW,MAAM,uBAA8C;IAC/D,IAAW,MAAM,uBAA8C;IAC/D,IAAW,MAAM,uBAA8C;IAE/D,SAAS,aAAa,IAAI,EAAE,4BAA4B;IAWlC,UAAU;WAaT,QAAQ,CAAC,IAAI,EAAE,4BAA4B;CAGnE;AAED,gBAAgB;AAChB,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAA+B;IAC7C,SAAgB,IAAI,EAAE,gBAAgB,CAAiB;IACvD,SAAgB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3C,IAAW,oBAAoB,iCAA6C;IAC5E,SAAgB,eAAe,EAAE,wBAAwB,EAAE,CAAM;IAEjE,IAAoB,MAAM,yBAKzB;IAED,IAAW,KAAK,WAA6C;IAC7D,IAAW,QAAQ,WAAwC;IAE3D,SAAS,aAAa,IAAI,EAAE,4BAA4B;IAYlC,UAAU;WAaT,QAAQ,CAAC,IAAI,EAAE,4BAA4B;CAGnE"}
@@ -4,6 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { assert } from "@itwin/core-bentley";
6
6
  import { ColorDef } from "@itwin/core-common";
7
+ import { FeatureSymbology } from "../Feature/FeatureSymbology";
7
8
  /** Convert a channel array [r, g, b, a] to ColorDef
8
9
  * @internal
9
10
  */
@@ -15,7 +16,7 @@ function colorFromArray(channels) {
15
16
  return undefined;
16
17
  }
17
18
  /** @internal */
18
- export class EsriSymbol {
19
+ export class EsriSymbol extends FeatureSymbology {
19
20
  static fromJSON(props) {
20
21
  if (props.type === "esriSFS") {
21
22
  return EsriSFS.fromJSON(props);
@@ -1 +1 @@
1
- {"version":3,"file":"EsriSymbology.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/EsriSymbology.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\n\r\n/** Convert a channel array [r, g, b, a] to ColorDef\r\n * @internal\r\n */\r\nfunction colorFromArray(channels?: number[]) {\r\n if (channels && channels.length === 4) {\r\n // Alpha channel is reversed, 255 = opaque\r\n return ColorDef.from(channels[0], channels[1], channels[2], 255 - channels[3]);\r\n }\r\n return undefined;\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSymbolPropsType = \"esriSFS\" | \"esriPMS\" | \"esriSMS\" | \"esriSLS\" | \"esriSMS\" | \"esriTS\" | \"CIMSymbolReference\";\r\n\r\n/** @internal */\r\nexport interface EsriSymbolCommonProps {\r\n type: EsriSymbolPropsType;\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSymbolProps = EsriSLSProps | EsriPMSProps | EsriSFSProps | EsriSMSProps;\r\n\r\n/** @internal */\r\nexport abstract class EsriSymbol implements EsriSymbolCommonProps {\r\n public readonly abstract type: EsriSymbolPropsType;\r\n\r\n public static fromJSON(props: EsriSymbolProps) {\r\n if (props.type === \"esriSFS\") {\r\n return EsriSFS.fromJSON(props );\r\n } else if (props.type === \"esriSLS\") {\r\n return EsriSLS.fromJSON(props );\r\n } else if (props.type === \"esriPMS\") {\r\n return EsriPMS.fromJSON(props );\r\n } else if (props.type === \"esriSMS\") {\r\n return EsriSMS.fromJSON(props );\r\n }\r\n throw new Error(`Unknown ESRI symbology type}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSLSStyle = \"esriSLSDash\" | \"esriSLSDashDot\" | \"esriSLSDashDotDot\" | \"esriSLSDot\" | \"esriSLSLongDash\" | \"esriSLSLongDashDot\" |\r\n\"esriSLSNull\" | \"esriSLSShortDash\" | \"esriSLSShortDashDot\" | \"esriSLSShortDashDotDot\" | \"esriSLSShortDot\" | \"esriSLSSolid\";\r\n\r\n/** @internal */\r\nexport interface EsriSLSProps extends EsriSymbolCommonProps {\r\n color: number[];\r\n type: \"esriSLS\";\r\n width: number;\r\n style: EsriSLSStyle;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSLS implements EsriSymbolCommonProps {\r\n public readonly props: EsriSLSProps;\r\n\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get type() { return this.props.type; }\r\n public get width() { return this.props.width; }\r\n public get style() { return this.props.style; }\r\n\r\n constructor(json: EsriSLSProps) {\r\n this.props = json;\r\n }\r\n\r\n public static fromJSON(json: EsriSLSProps) {\r\n return new EsriSLS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface EsriPMSProps extends EsriSymbolCommonProps {\r\n type: \"esriPMS\";\r\n url: string;\r\n imageData: string;\r\n contentType: string;\r\n width?: number;\r\n height?: number;\r\n xoffset?: number;\r\n yoffset?: number;\r\n angle?: number;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriPMS implements EsriSymbolCommonProps {\r\n public readonly props: EsriPMSProps;\r\n private _image: HTMLImageElement|undefined;\r\n\r\n public get type() { return this.props.type; }\r\n public get url() { return this.props.url; }\r\n public get imageData() { return this.props.imageData; }\r\n public get imageUrl() { return `data:${this.contentType};base64,${this.imageData}`; }\r\n public get image() {\r\n assert(this._image !== undefined);\r\n return this._image;\r\n }\r\n public get contentType() { return this.props.contentType; }\r\n public get width() { return this.props.width; }\r\n public get height() { return this.props.height; }\r\n public get xoffset() { return this.props.xoffset; }\r\n public get yoffset() { return this.props.yoffset; }\r\n public get angle() { return this.props.angle; }\r\n\r\n public async loadImage() {\r\n if (this._image === undefined) {\r\n this._image = new Image();\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n if (this._image) {\r\n this._image.addEventListener(\"load\", () => {\r\n resolve();\r\n });\r\n this._image.src = this.imageUrl;\r\n } else\r\n reject(new Error(\"Failed to load image\"));\r\n });\r\n }\r\n }\r\n\r\n private constructor(json: EsriPMSProps) {\r\n this.props = json;\r\n }\r\n\r\n public static fromJSON(json: EsriPMSProps) {\r\n return new EsriPMS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSMSStyleType = \"esriSMSCircle\" | \"esriSMSCross\" | \"esriSMSDiamond\" | \"esriSMSSquare\" | \"esriSMSTriangle\" | \"esriSMSX\";\r\n\r\n/** @internal */\r\nexport interface EsriSMSProps extends EsriSymbolCommonProps {\r\n angle?: number;\r\n color?: number[];\r\n outline?: EsriSLSProps;\r\n size: number;\r\n style: EsriSMSStyleType;\r\n type: \"esriSMS\";\r\n xoffset?: number;\r\n yoffset?: number;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSMS implements EsriSymbolCommonProps {\r\n public readonly props: EsriSMSProps;\r\n private _outline: EsriSLS | undefined;\r\n public get angle() { return this.props.angle; }\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get outline() { return this._outline; }\r\n public get size() { return this.props.size; }\r\n public get style() { return this.props.style; }\r\n public get type() { return this.props.type; }\r\n public get xoffset() { return this.props.xoffset; }\r\n public get yoffset() { return this.props.yoffset; }\r\n\r\n private constructor(json: EsriSMSProps) {\r\n this.props = json;\r\n if (json.outline)\r\n this._outline = EsriSLS.fromJSON(json.outline);\r\n }\r\n\r\n public static fromJSON(json: EsriSMSProps) {\r\n return new EsriSMS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type EsriSFSStyleProps = \"esriSFSBackwardDiagonal\" | \"esriSFSCross\" | \"esriSFSDiagonalCross\" | \"esriSFSForwardDiagonal\" | \"esriSFSHorizontal\" | \"esriSFSNull\" | \"esriSFSSolid\" | \"esriSFSVertical\";\r\n\r\n/** @internal */\r\nexport interface EsriSFSProps extends EsriSymbolCommonProps {\r\n color?: number[];\r\n type: \"esriSFS\";\r\n style: EsriSFSStyleProps;\r\n outline?: EsriSLSProps;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSFS implements EsriSymbolCommonProps {\r\n public readonly props: EsriSFSProps;\r\n private _outline: EsriSLS | undefined;\r\n\r\n public get color() { return colorFromArray(this.props.color); }\r\n public get type() { return this.props.type; }\r\n public get style() { return this.props.style; }\r\n public get outline() { return this._outline; }\r\n constructor(json: EsriSFSProps) {\r\n this.props = json;\r\n if (json.outline)\r\n this._outline = EsriSLS.fromJSON(json.outline);\r\n }\r\n\r\n public static fromJSON(json: EsriSFSProps): EsriSFS {\r\n return new EsriSFS(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface EsriUniqueValueInfoProps {\r\n value: string;\r\n label?: string;\r\n description?: string;\r\n symbol: EsriSymbolProps;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriUniqueValueInfo {\r\n\r\n public readonly value: string;\r\n public readonly label: string|undefined;\r\n public readonly description: string|undefined;\r\n public readonly symbol: EsriSymbol;\r\n\r\n private constructor(json: EsriUniqueValueInfoProps) {\r\n this.value = json.value;\r\n this.label = json.label;\r\n this.description = json.description;\r\n this.symbol = EsriSymbol.fromJSON(json.symbol);\r\n }\r\n\r\n public static fromJSON(json: EsriUniqueValueInfoProps) {\r\n return new EsriUniqueValueInfo(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface EsriClassBreaksInfoProps {\r\n classMaxValue: number;\r\n classMinValue?: number;\r\n label?: string;\r\n description?: string;\r\n symbol: EsriSymbolProps;\r\n}\r\n\r\n/** @internal */\r\nexport class EsriClassBreaksValueInfo {\r\n\r\n public readonly classMaxValue: number;\r\n public readonly classMinValue?: number;\r\n public readonly label: string|undefined;\r\n public readonly description: string|undefined;\r\n public readonly symbol: EsriSymbol;\r\n\r\n private constructor(json: EsriClassBreaksInfoProps) {\r\n this.classMaxValue = json.classMaxValue;\r\n this.classMinValue = json.classMinValue;\r\n this.label = json.label;\r\n this.description = json.description;\r\n this.symbol = EsriSymbol.fromJSON(json.symbol);\r\n }\r\n\r\n public static fromJSON(json: EsriClassBreaksInfoProps) {\r\n return new EsriClassBreaksValueInfo(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface EsriRendererBaseProps {\r\n type: EsriRendererType;\r\n}\r\n\r\n/** @internal */\r\nexport interface EsriSimpleRendererProps extends EsriRendererBaseProps {\r\n symbol: EsriSymbolProps;\r\n}\r\n\r\n/** @internal */\r\nexport interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {\r\n field1?: string;\r\n field2?: string;\r\n field3?: string;\r\n defaultSymbol?: EsriSymbolProps;\r\n uniqueValueInfos: EsriUniqueValueInfoProps[];\r\n}\r\n\r\n/** @internal */\r\nexport type EsriClassificationMethodType = \"esriClassifyDefinedInterval\" | \"esriClassifyEqualInterval\" | \"esriClassifyManual\" | \"esriClassifyNaturalBreaks\" | \"esriClassifyQuantile\" | \"esriClassifyStandardDeviation\";\r\n\r\n/** @internal */\r\nexport interface EsriClassBreaksRendererProps extends EsriRendererBaseProps {\r\n field: string;\r\n minValue: number;\r\n defaultSymbol?: EsriSymbolProps;\r\n classificationMethod: EsriClassificationMethodType;\r\n classBreakInfos: EsriClassBreaksInfoProps[];\r\n}\r\n\r\n/** @internal */\r\nexport type EsriRendererType = \"simple\" | \"uniqueValue\" | \"classBreaks\";\r\n\r\n/** @internal */\r\nexport type EsriRendererProps = EsriSimpleRendererProps | EsriUniqueValueRendererProps | EsriClassBreaksRendererProps;\r\n\r\n/** @internal */\r\nexport abstract class EsriRenderer {\r\n public readonly abstract type: EsriRendererType;\r\n public abstract initialize(): Promise<void>;\r\n public get fields(): string[]|undefined {return undefined;}\r\n public static fromJSON(json: EsriRendererProps): EsriRenderer {\r\n if (json.type === \"simple\")\r\n return EsriSimpleRenderer.fromJSON(json as EsriSimpleRendererProps);\r\n else if (json.type === \"uniqueValue\")\r\n return EsriUniqueValueRenderer.fromJSON(json as EsriUniqueValueRendererProps);\r\n else if (json.type === \"classBreaks\")\r\n return EsriClassBreaksRenderer.fromJSON(json as EsriClassBreaksRendererProps);\r\n else\r\n throw Error(\"Unknown renderer type\");\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class EsriSimpleRenderer extends EsriRenderer {\r\n public readonly type: EsriRendererType = \"simple\";\r\n public readonly symbol: EsriSymbol;\r\n\r\n protected constructor(json: EsriSimpleRendererProps) {\r\n super();\r\n this.type = json.type;\r\n this.symbol = EsriSymbol.fromJSON(json.symbol);\r\n }\r\n public async initialize() {\r\n const promises: Promise<void>[] = [];\r\n if (this.symbol.type === \"esriPMS\") {\r\n promises.push((this.symbol as EsriPMS).loadImage());\r\n }\r\n await Promise.all(promises);\r\n }\r\n\r\n public static override fromJSON(json: EsriSimpleRendererProps) {\r\n return new EsriSimpleRenderer(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class EsriUniqueValueRenderer extends EsriRenderer {\r\n private _props: EsriUniqueValueRendererProps;\r\n public readonly type: EsriRendererType = \"uniqueValue\";\r\n public readonly defaultSymbol?: EsriSymbol;\r\n public readonly uniqueValueInfos: EsriUniqueValueInfo[] = [];\r\n\r\n public override get fields() {\r\n const fields: string[] = [];\r\n if (this.field1)\r\n fields.push(this.field1);\r\n if (this.field2)\r\n fields.push(this.field2);\r\n if (this.field3)\r\n fields.push(this.field3);\r\n\r\n return fields;\r\n }\r\n\r\n public get field1() { return this._props.field1 ?? undefined; }\r\n public get field2() { return this._props.field2 ?? undefined; }\r\n public get field3() { return this._props.field3 ?? undefined; }\r\n\r\n protected constructor(json: EsriUniqueValueRendererProps) {\r\n super();\r\n if (json.defaultSymbol)\r\n this.defaultSymbol = EsriSymbol.fromJSON(json.defaultSymbol);\r\n for (const uvi of json.uniqueValueInfos) {\r\n this.uniqueValueInfos.push(EsriUniqueValueInfo.fromJSON(uvi));\r\n }\r\n\r\n this._props = json;\r\n }\r\n\r\n public override async initialize() {\r\n const promises: Promise<void>[] = [];\r\n if (this.defaultSymbol?.type === \"esriPMS\") {\r\n promises.push((this.defaultSymbol as EsriPMS).loadImage());\r\n }\r\n for (const uvi of this.uniqueValueInfos) {\r\n if (uvi.symbol.type === \"esriPMS\") {\r\n promises.push((uvi.symbol as EsriPMS).loadImage());\r\n }\r\n }\r\n await Promise.all(promises);\r\n }\r\n\r\n public static override fromJSON(json: EsriUniqueValueRendererProps) {\r\n return new EsriUniqueValueRenderer(json);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class EsriClassBreaksRenderer extends EsriRenderer {\r\n private _props: EsriClassBreaksRendererProps;\r\n public readonly type: EsriRendererType = \"classBreaks\";\r\n public readonly defaultSymbol?: EsriSymbol;\r\n public get classificationMethod() {return this._props.classificationMethod;}\r\n public readonly classBreakInfos: EsriClassBreaksValueInfo[] = [];\r\n\r\n public override get fields() {\r\n if (this.field)\r\n return [this.field];\r\n\r\n return undefined;\r\n }\r\n\r\n public get field() { return this._props.field ?? undefined; }\r\n public get minValue() { return this._props.minValue ?? 0; }\r\n\r\n protected constructor(json: EsriClassBreaksRendererProps) {\r\n super();\r\n if (json.defaultSymbol)\r\n this.defaultSymbol = EsriSymbol.fromJSON(json.defaultSymbol);\r\n\r\n for (const cbi of json.classBreakInfos) {\r\n this.classBreakInfos.push(EsriClassBreaksValueInfo.fromJSON(cbi));\r\n }\r\n\r\n this._props = json;\r\n }\r\n\r\n public override async initialize() {\r\n const promises: Promise<void>[] = [];\r\n if (this.defaultSymbol?.type === \"esriPMS\") {\r\n promises.push((this.defaultSymbol as EsriPMS).loadImage());\r\n }\r\n for (const cbi of this.classBreakInfos) {\r\n if (cbi.symbol.type === \"esriPMS\") {\r\n promises.push((cbi.symbol as EsriPMS).loadImage());\r\n }\r\n }\r\n await Promise.all(promises);\r\n }\r\n\r\n public static override fromJSON(json: EsriClassBreaksRendererProps) {\r\n return new EsriClassBreaksRenderer(json);\r\n }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"EsriSymbology.js","sourceRoot":"","sources":["../../../src/ArcGisFeature/EsriSymbology.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { ColorDef } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../Feature/FeatureSymbology\";\n\n/** Convert a channel array [r, g, b, a] to ColorDef\n * @internal\n */\nfunction colorFromArray(channels?: number[]) {\n if (channels && channels.length === 4) {\n // Alpha channel is reversed, 255 = opaque\n return ColorDef.from(channels[0], channels[1], channels[2], 255 - channels[3]);\n }\n return undefined;\n}\n\n/** @internal */\nexport type EsriSymbolPropsType = \"esriSFS\" | \"esriPMS\" | \"esriSMS\" | \"esriSLS\" | \"esriSMS\" | \"esriTS\" | \"CIMSymbolReference\";\n\n/** @internal */\nexport interface EsriSymbolCommonProps {\n type: EsriSymbolPropsType;\n}\n\n/** @internal */\nexport type EsriSymbolProps = EsriSLSProps | EsriPMSProps | EsriSFSProps | EsriSMSProps;\n\n/** @internal */\nexport abstract class EsriSymbol extends FeatureSymbology implements EsriSymbolCommonProps {\n public readonly abstract type: EsriSymbolPropsType;\n\n public static fromJSON(props: EsriSymbolProps) {\n if (props.type === \"esriSFS\") {\n return EsriSFS.fromJSON(props );\n } else if (props.type === \"esriSLS\") {\n return EsriSLS.fromJSON(props );\n } else if (props.type === \"esriPMS\") {\n return EsriPMS.fromJSON(props );\n } else if (props.type === \"esriSMS\") {\n return EsriSMS.fromJSON(props );\n }\n throw new Error(`Unknown ESRI symbology type}`);\n }\n}\n\n/** @internal */\nexport type EsriSLSStyle = \"esriSLSDash\" | \"esriSLSDashDot\" | \"esriSLSDashDotDot\" | \"esriSLSDot\" | \"esriSLSLongDash\" | \"esriSLSLongDashDot\" |\n\"esriSLSNull\" | \"esriSLSShortDash\" | \"esriSLSShortDashDot\" | \"esriSLSShortDashDotDot\" | \"esriSLSShortDot\" | \"esriSLSSolid\";\n\n/** @internal */\nexport interface EsriSLSProps extends EsriSymbolCommonProps {\n color: number[];\n type: \"esriSLS\";\n width: number;\n style: EsriSLSStyle;\n}\n\n/** @internal */\nexport class EsriSLS implements EsriSymbolCommonProps {\n public readonly props: EsriSLSProps;\n\n public get color() { return colorFromArray(this.props.color); }\n public get type() { return this.props.type; }\n public get width() { return this.props.width; }\n public get style() { return this.props.style; }\n\n constructor(json: EsriSLSProps) {\n this.props = json;\n }\n\n public static fromJSON(json: EsriSLSProps) {\n return new EsriSLS(json);\n }\n}\n\n/** @internal */\nexport interface EsriPMSProps extends EsriSymbolCommonProps {\n type: \"esriPMS\";\n url: string;\n imageData: string;\n contentType: string;\n width?: number;\n height?: number;\n xoffset?: number;\n yoffset?: number;\n angle?: number;\n}\n\n/** @internal */\nexport class EsriPMS implements EsriSymbolCommonProps {\n public readonly props: EsriPMSProps;\n private _image: HTMLImageElement|undefined;\n\n public get type() { return this.props.type; }\n public get url() { return this.props.url; }\n public get imageData() { return this.props.imageData; }\n public get imageUrl() { return `data:${this.contentType};base64,${this.imageData}`; }\n public get image() {\n assert(this._image !== undefined);\n return this._image;\n }\n public get contentType() { return this.props.contentType; }\n public get width() { return this.props.width; }\n public get height() { return this.props.height; }\n public get xoffset() { return this.props.xoffset; }\n public get yoffset() { return this.props.yoffset; }\n public get angle() { return this.props.angle; }\n\n public async loadImage() {\n if (this._image === undefined) {\n this._image = new Image();\n\n return new Promise<void>((resolve, reject) => {\n if (this._image) {\n this._image.addEventListener(\"load\", () => {\n resolve();\n });\n this._image.src = this.imageUrl;\n } else\n reject(new Error(\"Failed to load image\"));\n });\n }\n }\n\n private constructor(json: EsriPMSProps) {\n this.props = json;\n }\n\n public static fromJSON(json: EsriPMSProps) {\n return new EsriPMS(json);\n }\n}\n\n/** @internal */\nexport type EsriSMSStyleType = \"esriSMSCircle\" | \"esriSMSCross\" | \"esriSMSDiamond\" | \"esriSMSSquare\" | \"esriSMSTriangle\" | \"esriSMSX\";\n\n/** @internal */\nexport interface EsriSMSProps extends EsriSymbolCommonProps {\n angle?: number;\n color?: number[];\n outline?: EsriSLSProps;\n size: number;\n style: EsriSMSStyleType;\n type: \"esriSMS\";\n xoffset?: number;\n yoffset?: number;\n}\n\n/** @internal */\nexport class EsriSMS implements EsriSymbolCommonProps {\n public readonly props: EsriSMSProps;\n private _outline: EsriSLS | undefined;\n public get angle() { return this.props.angle; }\n public get color() { return colorFromArray(this.props.color); }\n public get outline() { return this._outline; }\n public get size() { return this.props.size; }\n public get style() { return this.props.style; }\n public get type() { return this.props.type; }\n public get xoffset() { return this.props.xoffset; }\n public get yoffset() { return this.props.yoffset; }\n\n private constructor(json: EsriSMSProps) {\n this.props = json;\n if (json.outline)\n this._outline = EsriSLS.fromJSON(json.outline);\n }\n\n public static fromJSON(json: EsriSMSProps) {\n return new EsriSMS(json);\n }\n}\n\n/** @internal */\nexport type EsriSFSStyleProps = \"esriSFSBackwardDiagonal\" | \"esriSFSCross\" | \"esriSFSDiagonalCross\" | \"esriSFSForwardDiagonal\" | \"esriSFSHorizontal\" | \"esriSFSNull\" | \"esriSFSSolid\" | \"esriSFSVertical\";\n\n/** @internal */\nexport interface EsriSFSProps extends EsriSymbolCommonProps {\n color?: number[];\n type: \"esriSFS\";\n style: EsriSFSStyleProps;\n outline?: EsriSLSProps;\n}\n\n/** @internal */\nexport class EsriSFS implements EsriSymbolCommonProps {\n public readonly props: EsriSFSProps;\n private _outline: EsriSLS | undefined;\n\n public get color() { return colorFromArray(this.props.color); }\n public get type() { return this.props.type; }\n public get style() { return this.props.style; }\n public get outline() { return this._outline; }\n constructor(json: EsriSFSProps) {\n this.props = json;\n if (json.outline)\n this._outline = EsriSLS.fromJSON(json.outline);\n }\n\n public static fromJSON(json: EsriSFSProps): EsriSFS {\n return new EsriSFS(json);\n }\n}\n\n/** @internal */\nexport interface EsriUniqueValueInfoProps {\n value: string;\n label?: string;\n description?: string;\n symbol: EsriSymbolProps;\n}\n\n/** @internal */\nexport class EsriUniqueValueInfo {\n\n public readonly value: string;\n public readonly label: string|undefined;\n public readonly description: string|undefined;\n public readonly symbol: EsriSymbol;\n\n private constructor(json: EsriUniqueValueInfoProps) {\n this.value = json.value;\n this.label = json.label;\n this.description = json.description;\n this.symbol = EsriSymbol.fromJSON(json.symbol);\n }\n\n public static fromJSON(json: EsriUniqueValueInfoProps) {\n return new EsriUniqueValueInfo(json);\n }\n}\n\n/** @internal */\nexport interface EsriClassBreaksInfoProps {\n classMaxValue: number;\n classMinValue?: number;\n label?: string;\n description?: string;\n symbol: EsriSymbolProps;\n}\n\n/** @internal */\nexport class EsriClassBreaksValueInfo {\n\n public readonly classMaxValue: number;\n public readonly classMinValue?: number;\n public readonly label: string|undefined;\n public readonly description: string|undefined;\n public readonly symbol: EsriSymbol;\n\n private constructor(json: EsriClassBreaksInfoProps) {\n this.classMaxValue = json.classMaxValue;\n this.classMinValue = json.classMinValue;\n this.label = json.label;\n this.description = json.description;\n this.symbol = EsriSymbol.fromJSON(json.symbol);\n }\n\n public static fromJSON(json: EsriClassBreaksInfoProps) {\n return new EsriClassBreaksValueInfo(json);\n }\n}\n\n/** @internal */\nexport interface EsriRendererBaseProps {\n type: EsriRendererType;\n}\n\n/** @internal */\nexport interface EsriSimpleRendererProps extends EsriRendererBaseProps {\n symbol: EsriSymbolProps;\n}\n\n/** @internal */\nexport interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {\n field1?: string;\n field2?: string;\n field3?: string;\n defaultSymbol?: EsriSymbolProps;\n uniqueValueInfos: EsriUniqueValueInfoProps[];\n}\n\n/** @internal */\nexport type EsriClassificationMethodType = \"esriClassifyDefinedInterval\" | \"esriClassifyEqualInterval\" | \"esriClassifyManual\" | \"esriClassifyNaturalBreaks\" | \"esriClassifyQuantile\" | \"esriClassifyStandardDeviation\";\n\n/** @internal */\nexport interface EsriClassBreaksRendererProps extends EsriRendererBaseProps {\n field: string;\n minValue: number;\n defaultSymbol?: EsriSymbolProps;\n classificationMethod: EsriClassificationMethodType;\n classBreakInfos: EsriClassBreaksInfoProps[];\n}\n\n/** @internal */\nexport type EsriRendererType = \"simple\" | \"uniqueValue\" | \"classBreaks\";\n\n/** @internal */\nexport type EsriRendererProps = EsriSimpleRendererProps | EsriUniqueValueRendererProps | EsriClassBreaksRendererProps;\n\n/** @internal */\nexport abstract class EsriRenderer {\n public readonly abstract type: EsriRendererType;\n public abstract initialize(): Promise<void>;\n public get fields(): string[]|undefined {return undefined;}\n public static fromJSON(json: EsriRendererProps): EsriRenderer {\n if (json.type === \"simple\")\n return EsriSimpleRenderer.fromJSON(json as EsriSimpleRendererProps);\n else if (json.type === \"uniqueValue\")\n return EsriUniqueValueRenderer.fromJSON(json as EsriUniqueValueRendererProps);\n else if (json.type === \"classBreaks\")\n return EsriClassBreaksRenderer.fromJSON(json as EsriClassBreaksRendererProps);\n else\n throw Error(\"Unknown renderer type\");\n }\n}\n\n/** @internal */\nexport class EsriSimpleRenderer extends EsriRenderer {\n public readonly type: EsriRendererType = \"simple\";\n public readonly symbol: EsriSymbol;\n\n protected constructor(json: EsriSimpleRendererProps) {\n super();\n this.type = json.type;\n this.symbol = EsriSymbol.fromJSON(json.symbol);\n }\n public async initialize() {\n const promises: Promise<void>[] = [];\n if (this.symbol.type === \"esriPMS\") {\n promises.push((this.symbol as EsriPMS).loadImage());\n }\n await Promise.all(promises);\n }\n\n public static override fromJSON(json: EsriSimpleRendererProps) {\n return new EsriSimpleRenderer(json);\n }\n}\n\n/** @internal */\nexport class EsriUniqueValueRenderer extends EsriRenderer {\n private _props: EsriUniqueValueRendererProps;\n public readonly type: EsriRendererType = \"uniqueValue\";\n public readonly defaultSymbol?: EsriSymbol;\n public readonly uniqueValueInfos: EsriUniqueValueInfo[] = [];\n\n public override get fields() {\n const fields: string[] = [];\n if (this.field1)\n fields.push(this.field1);\n if (this.field2)\n fields.push(this.field2);\n if (this.field3)\n fields.push(this.field3);\n\n return fields;\n }\n\n public get field1() { return this._props.field1 ?? undefined; }\n public get field2() { return this._props.field2 ?? undefined; }\n public get field3() { return this._props.field3 ?? undefined; }\n\n protected constructor(json: EsriUniqueValueRendererProps) {\n super();\n if (json.defaultSymbol)\n this.defaultSymbol = EsriSymbol.fromJSON(json.defaultSymbol);\n for (const uvi of json.uniqueValueInfos) {\n this.uniqueValueInfos.push(EsriUniqueValueInfo.fromJSON(uvi));\n }\n\n this._props = json;\n }\n\n public override async initialize() {\n const promises: Promise<void>[] = [];\n if (this.defaultSymbol?.type === \"esriPMS\") {\n promises.push((this.defaultSymbol as EsriPMS).loadImage());\n }\n for (const uvi of this.uniqueValueInfos) {\n if (uvi.symbol.type === \"esriPMS\") {\n promises.push((uvi.symbol as EsriPMS).loadImage());\n }\n }\n await Promise.all(promises);\n }\n\n public static override fromJSON(json: EsriUniqueValueRendererProps) {\n return new EsriUniqueValueRenderer(json);\n }\n}\n\n/** @internal */\nexport class EsriClassBreaksRenderer extends EsriRenderer {\n private _props: EsriClassBreaksRendererProps;\n public readonly type: EsriRendererType = \"classBreaks\";\n public readonly defaultSymbol?: EsriSymbol;\n public get classificationMethod() {return this._props.classificationMethod;}\n public readonly classBreakInfos: EsriClassBreaksValueInfo[] = [];\n\n public override get fields() {\n if (this.field)\n return [this.field];\n\n return undefined;\n }\n\n public get field() { return this._props.field ?? undefined; }\n public get minValue() { return this._props.minValue ?? 0; }\n\n protected constructor(json: EsriClassBreaksRendererProps) {\n super();\n if (json.defaultSymbol)\n this.defaultSymbol = EsriSymbol.fromJSON(json.defaultSymbol);\n\n for (const cbi of json.classBreakInfos) {\n this.classBreakInfos.push(EsriClassBreaksValueInfo.fromJSON(cbi));\n }\n\n this._props = json;\n }\n\n public override async initialize() {\n const promises: Promise<void>[] = [];\n if (this.defaultSymbol?.type === \"esriPMS\") {\n promises.push((this.defaultSymbol as EsriPMS).loadImage());\n }\n for (const cbi of this.classBreakInfos) {\n if (cbi.symbol.type === \"esriPMS\") {\n promises.push((cbi.symbol as EsriPMS).loadImage());\n }\n }\n await Promise.all(promises);\n }\n\n public static override fromJSON(json: EsriClassBreaksRendererProps) {\n return new EsriClassBreaksRenderer(json);\n }\n}\n\n"]}