@itwin/map-layers-formats 4.5.0-dev.3 → 4.5.0-dev.32
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.
- package/CHANGELOG.md +41 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +7 -7
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +14 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +57 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts +46 -6
- package/lib/cjs/ArcGisFeature/EsriSymbology.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/EsriSymbology.js +66 -1
- package/lib/cjs/ArcGisFeature/EsriSymbology.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +8 -8
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +14 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +55 -0
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/esm/ArcGisFeature/EsriSymbology.d.ts +46 -6
- package/lib/esm/ArcGisFeature/EsriSymbology.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/EsriSymbology.js +63 -0
- package/lib/esm/ArcGisFeature/EsriSymbology.js.map +1 -1
- package/package.json +12 -12
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EsriRenderer, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from "./EsriSymbology";
|
|
1
|
+
import { EsriClassBreaksRenderer, EsriRenderer, EsriSMS, EsriSymbol, EsriUniqueValueRenderer } from "./EsriSymbology";
|
|
2
2
|
import { ArcGisAttributeDrivenSymbology } from "@itwin/core-frontend";
|
|
3
3
|
/** @internal */
|
|
4
4
|
export type ArcGisSymbologyRendererType = "simple" | "attributeDriven";
|
|
@@ -73,4 +73,17 @@ export declare class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymb
|
|
|
73
73
|
[key: string]: any;
|
|
74
74
|
}): void;
|
|
75
75
|
}
|
|
76
|
+
/** @internal */
|
|
77
|
+
export declare class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer implements ArcGisAttributeDrivenSymbology {
|
|
78
|
+
isAttributeDriven(): this is ArcGisAttributeDrivenSymbology;
|
|
79
|
+
protected _activeFeatureAttributes: {
|
|
80
|
+
[key: string]: any;
|
|
81
|
+
} | undefined;
|
|
82
|
+
protected cbRenderer: EsriClassBreaksRenderer;
|
|
83
|
+
get rendererFields(): string[] | undefined;
|
|
84
|
+
constructor(renderer: EsriClassBreaksRenderer, defaultSymbol: EsriSymbol);
|
|
85
|
+
setActiveFeatureAttributes(attributes: {
|
|
86
|
+
[key: string]: any;
|
|
87
|
+
}): void;
|
|
88
|
+
}
|
|
76
89
|
//# sourceMappingURL=ArcGisSymbologyRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArcGisSymbologyRenderer.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,YAAY,EAAsD,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ArcGisSymbologyRenderer.d.ts","sourceRoot":"","sources":["../../../src/ArcGisFeature/ArcGisSymbologyRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,9 @@ export class ArcGisSymbologyRenderer {
|
|
|
13
13
|
if (renderer?.type === "uniqueValue") {
|
|
14
14
|
return new ArcGisUniqueValueSymbologyRenderer(renderer, defaultSymbol);
|
|
15
15
|
}
|
|
16
|
+
else if (renderer?.type === "classBreaks") {
|
|
17
|
+
return new ArcGisClassBreaksSymbologyRenderer(renderer, defaultSymbol);
|
|
18
|
+
}
|
|
16
19
|
else {
|
|
17
20
|
return new ArcGisSimpleSymbologyRenderer(renderer, defaultSymbol);
|
|
18
21
|
}
|
|
@@ -322,4 +325,56 @@ export class ArcGisUniqueValueSymbologyRenderer extends ArcGisSimpleSymbologyRen
|
|
|
322
325
|
}
|
|
323
326
|
}
|
|
324
327
|
}
|
|
328
|
+
/** @internal */
|
|
329
|
+
export class ArcGisClassBreaksSymbologyRenderer extends ArcGisSimpleSymbologyRenderer {
|
|
330
|
+
isAttributeDriven() { return true; }
|
|
331
|
+
get rendererFields() {
|
|
332
|
+
if (this.cbRenderer)
|
|
333
|
+
return [this.cbRenderer.field];
|
|
334
|
+
else
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
constructor(renderer, defaultSymbol) {
|
|
338
|
+
super(renderer, defaultSymbol);
|
|
339
|
+
this.cbRenderer = this.renderer;
|
|
340
|
+
if (this.cbRenderer.defaultSymbol) {
|
|
341
|
+
this._defaultSymbol = this.cbRenderer.defaultSymbol;
|
|
342
|
+
this._symbol = this.defaultSymbol;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
setActiveFeatureAttributes(attributes) {
|
|
346
|
+
this._activeFeatureAttributes = attributes;
|
|
347
|
+
const newSymbolApplied = false;
|
|
348
|
+
if (this._activeFeatureAttributes) {
|
|
349
|
+
if (Object.keys(this._activeFeatureAttributes).includes(this.cbRenderer.field)) {
|
|
350
|
+
const queryValue = this._activeFeatureAttributes[this.cbRenderer.field];
|
|
351
|
+
if (queryValue !== null && queryValue !== undefined) {
|
|
352
|
+
let currentMinValue;
|
|
353
|
+
let currentClassIdx = 0;
|
|
354
|
+
do {
|
|
355
|
+
const currentClass = this.cbRenderer.classBreakInfos[currentClassIdx];
|
|
356
|
+
if (currentClass.classMinValue !== undefined) {
|
|
357
|
+
currentMinValue = currentClass.classMinValue;
|
|
358
|
+
}
|
|
359
|
+
else if (currentClass.classMinValue === undefined && currentClassIdx > 0) {
|
|
360
|
+
currentMinValue = this.cbRenderer.classBreakInfos[currentClassIdx - 1].classMaxValue;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
currentMinValue = this.cbRenderer.minValue;
|
|
364
|
+
}
|
|
365
|
+
if (queryValue >= currentMinValue
|
|
366
|
+
&& queryValue <= currentClass.classMaxValue) {
|
|
367
|
+
this._symbol = currentClass.symbol;
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
} while (++currentClassIdx < this.cbRenderer.classBreakInfos.length);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Fallback to default symbology to make sure we render something
|
|
374
|
+
if (!newSymbolApplied) {
|
|
375
|
+
this._symbol = this.defaultSymbol;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
325
380
|
//# sourceMappingURL=ArcGisSymbologyRenderer.js.map
|
|
@@ -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 { 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 {\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"]}
|
|
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"]}
|
|
@@ -127,6 +127,24 @@ export declare class EsriUniqueValueInfo {
|
|
|
127
127
|
static fromJSON(json: EsriUniqueValueInfoProps): EsriUniqueValueInfo;
|
|
128
128
|
}
|
|
129
129
|
/** @internal */
|
|
130
|
+
export interface EsriClassBreaksInfoProps {
|
|
131
|
+
classMaxValue: number;
|
|
132
|
+
classMinValue?: number;
|
|
133
|
+
label?: string;
|
|
134
|
+
description?: string;
|
|
135
|
+
symbol: EsriSymbolProps;
|
|
136
|
+
}
|
|
137
|
+
/** @internal */
|
|
138
|
+
export declare class EsriClassBreaksValueInfo {
|
|
139
|
+
readonly classMaxValue: number;
|
|
140
|
+
readonly classMinValue?: number;
|
|
141
|
+
readonly label: string | undefined;
|
|
142
|
+
readonly description: string | undefined;
|
|
143
|
+
readonly symbol: EsriSymbol;
|
|
144
|
+
private constructor();
|
|
145
|
+
static fromJSON(json: EsriClassBreaksInfoProps): EsriClassBreaksValueInfo;
|
|
146
|
+
}
|
|
147
|
+
/** @internal */
|
|
130
148
|
export interface EsriRendererBaseProps {
|
|
131
149
|
type: EsriRendererType;
|
|
132
150
|
}
|
|
@@ -135,10 +153,6 @@ export interface EsriSimpleRendererProps extends EsriRendererBaseProps {
|
|
|
135
153
|
symbol: EsriSymbolProps;
|
|
136
154
|
}
|
|
137
155
|
/** @internal */
|
|
138
|
-
export interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {
|
|
139
|
-
symbol?: EsriSymbolProps;
|
|
140
|
-
}
|
|
141
|
-
/** @internal */
|
|
142
156
|
export interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {
|
|
143
157
|
field1?: string;
|
|
144
158
|
field2?: string;
|
|
@@ -147,13 +161,24 @@ export interface EsriUniqueValueRendererProps extends EsriRendererBaseProps {
|
|
|
147
161
|
uniqueValueInfos: EsriUniqueValueInfoProps[];
|
|
148
162
|
}
|
|
149
163
|
/** @internal */
|
|
150
|
-
export type
|
|
164
|
+
export type EsriClassificationMethodType = "esriClassifyDefinedInterval" | "esriClassifyEqualInterval" | "esriClassifyManual" | "esriClassifyNaturalBreaks" | "esriClassifyQuantile" | "esriClassifyStandardDeviation";
|
|
165
|
+
/** @internal */
|
|
166
|
+
export interface EsriClassBreaksRendererProps extends EsriRendererBaseProps {
|
|
167
|
+
field: string;
|
|
168
|
+
minValue: number;
|
|
169
|
+
defaultSymbol?: EsriSymbolProps;
|
|
170
|
+
classificationMethod: EsriClassificationMethodType;
|
|
171
|
+
classBreakInfos: EsriClassBreaksInfoProps[];
|
|
172
|
+
}
|
|
173
|
+
/** @internal */
|
|
174
|
+
export type EsriRendererType = "simple" | "uniqueValue" | "classBreaks";
|
|
151
175
|
/** @internal */
|
|
152
|
-
export type EsriRendererProps = EsriSimpleRendererProps | EsriUniqueValueRendererProps;
|
|
176
|
+
export type EsriRendererProps = EsriSimpleRendererProps | EsriUniqueValueRendererProps | EsriClassBreaksRendererProps;
|
|
153
177
|
/** @internal */
|
|
154
178
|
export declare abstract class EsriRenderer {
|
|
155
179
|
abstract readonly type: EsriRendererType;
|
|
156
180
|
abstract initialize(): Promise<void>;
|
|
181
|
+
get fields(): string[] | undefined;
|
|
157
182
|
static fromJSON(json: EsriRendererProps): EsriRenderer;
|
|
158
183
|
}
|
|
159
184
|
/** @internal */
|
|
@@ -170,6 +195,7 @@ export declare class EsriUniqueValueRenderer extends EsriRenderer {
|
|
|
170
195
|
readonly type: EsriRendererType;
|
|
171
196
|
readonly defaultSymbol?: EsriSymbol;
|
|
172
197
|
readonly uniqueValueInfos: EsriUniqueValueInfo[];
|
|
198
|
+
get fields(): string[];
|
|
173
199
|
get field1(): string | undefined;
|
|
174
200
|
get field2(): string | undefined;
|
|
175
201
|
get field3(): string | undefined;
|
|
@@ -177,4 +203,18 @@ export declare class EsriUniqueValueRenderer extends EsriRenderer {
|
|
|
177
203
|
initialize(): Promise<void>;
|
|
178
204
|
static fromJSON(json: EsriUniqueValueRendererProps): EsriUniqueValueRenderer;
|
|
179
205
|
}
|
|
206
|
+
/** @internal */
|
|
207
|
+
export declare class EsriClassBreaksRenderer extends EsriRenderer {
|
|
208
|
+
private _props;
|
|
209
|
+
readonly type: EsriRendererType;
|
|
210
|
+
readonly defaultSymbol?: EsriSymbol;
|
|
211
|
+
get classificationMethod(): EsriClassificationMethodType;
|
|
212
|
+
readonly classBreakInfos: EsriClassBreaksValueInfo[];
|
|
213
|
+
get fields(): string[] | undefined;
|
|
214
|
+
get field(): string;
|
|
215
|
+
get minValue(): number;
|
|
216
|
+
protected constructor(json: EsriClassBreaksRendererProps);
|
|
217
|
+
initialize(): Promise<void>;
|
|
218
|
+
static fromJSON(json: EsriClassBreaksRendererProps): EsriClassBreaksRenderer;
|
|
219
|
+
}
|
|
180
220
|
//# sourceMappingURL=EsriSymbology.d.ts.map
|
|
@@ -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":"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"}
|
|
@@ -130,12 +130,28 @@ export class EsriUniqueValueInfo {
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
/** @internal */
|
|
133
|
+
export class EsriClassBreaksValueInfo {
|
|
134
|
+
constructor(json) {
|
|
135
|
+
this.classMaxValue = json.classMaxValue;
|
|
136
|
+
this.classMinValue = json.classMinValue;
|
|
137
|
+
this.label = json.label;
|
|
138
|
+
this.description = json.description;
|
|
139
|
+
this.symbol = EsriSymbol.fromJSON(json.symbol);
|
|
140
|
+
}
|
|
141
|
+
static fromJSON(json) {
|
|
142
|
+
return new EsriClassBreaksValueInfo(json);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/** @internal */
|
|
133
146
|
export class EsriRenderer {
|
|
147
|
+
get fields() { return undefined; }
|
|
134
148
|
static fromJSON(json) {
|
|
135
149
|
if (json.type === "simple")
|
|
136
150
|
return EsriSimpleRenderer.fromJSON(json);
|
|
137
151
|
else if (json.type === "uniqueValue")
|
|
138
152
|
return EsriUniqueValueRenderer.fromJSON(json);
|
|
153
|
+
else if (json.type === "classBreaks")
|
|
154
|
+
return EsriClassBreaksRenderer.fromJSON(json);
|
|
139
155
|
else
|
|
140
156
|
throw Error("Unknown renderer type");
|
|
141
157
|
}
|
|
@@ -161,6 +177,16 @@ export class EsriSimpleRenderer extends EsriRenderer {
|
|
|
161
177
|
}
|
|
162
178
|
/** @internal */
|
|
163
179
|
export class EsriUniqueValueRenderer extends EsriRenderer {
|
|
180
|
+
get fields() {
|
|
181
|
+
const fields = [];
|
|
182
|
+
if (this.field1)
|
|
183
|
+
fields.push(this.field1);
|
|
184
|
+
if (this.field2)
|
|
185
|
+
fields.push(this.field2);
|
|
186
|
+
if (this.field3)
|
|
187
|
+
fields.push(this.field3);
|
|
188
|
+
return fields;
|
|
189
|
+
}
|
|
164
190
|
get field1() { return this._props.field1 ?? undefined; }
|
|
165
191
|
get field2() { return this._props.field2 ?? undefined; }
|
|
166
192
|
get field3() { return this._props.field3 ?? undefined; }
|
|
@@ -191,4 +217,41 @@ export class EsriUniqueValueRenderer extends EsriRenderer {
|
|
|
191
217
|
return new EsriUniqueValueRenderer(json);
|
|
192
218
|
}
|
|
193
219
|
}
|
|
220
|
+
/** @internal */
|
|
221
|
+
export class EsriClassBreaksRenderer extends EsriRenderer {
|
|
222
|
+
get classificationMethod() { return this._props.classificationMethod; }
|
|
223
|
+
get fields() {
|
|
224
|
+
if (this.field)
|
|
225
|
+
return [this.field];
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
get field() { return this._props.field ?? undefined; }
|
|
229
|
+
get minValue() { return this._props.minValue ?? 0; }
|
|
230
|
+
constructor(json) {
|
|
231
|
+
super();
|
|
232
|
+
this.type = "classBreaks";
|
|
233
|
+
this.classBreakInfos = [];
|
|
234
|
+
if (json.defaultSymbol)
|
|
235
|
+
this.defaultSymbol = EsriSymbol.fromJSON(json.defaultSymbol);
|
|
236
|
+
for (const cbi of json.classBreakInfos) {
|
|
237
|
+
this.classBreakInfos.push(EsriClassBreaksValueInfo.fromJSON(cbi));
|
|
238
|
+
}
|
|
239
|
+
this._props = json;
|
|
240
|
+
}
|
|
241
|
+
async initialize() {
|
|
242
|
+
const promises = [];
|
|
243
|
+
if (this.defaultSymbol?.type === "esriPMS") {
|
|
244
|
+
promises.push(this.defaultSymbol.loadImage());
|
|
245
|
+
}
|
|
246
|
+
for (const cbi of this.classBreakInfos) {
|
|
247
|
+
if (cbi.symbol.type === "esriPMS") {
|
|
248
|
+
promises.push(cbi.symbol.loadImage());
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
await Promise.all(promises);
|
|
252
|
+
}
|
|
253
|
+
static fromJSON(json) {
|
|
254
|
+
return new EsriClassBreaksRenderer(json);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
194
257
|
//# sourceMappingURL=EsriSymbology.js.map
|
|
@@ -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 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 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 EsriRendererType = \"simple\" | \"uniqueValue\";\r\n\r\n/** @internal */\r\nexport type EsriRendererProps = EsriSimpleRendererProps | EsriUniqueValueRendererProps;\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 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\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 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"]}
|
|
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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/map-layers-formats",
|
|
3
|
-
"version": "4.5.0-dev.
|
|
3
|
+
"version": "4.5.0-dev.32",
|
|
4
4
|
"description": "Enables additional map-layers formats in iTwin.js",
|
|
5
5
|
"main": "lib/cjs/map-layers-formats.js",
|
|
6
6
|
"module": "lib/esm/map-layers-formats.js",
|
|
@@ -44,19 +44,19 @@
|
|
|
44
44
|
"source-map-support": "^0.5.6",
|
|
45
45
|
"typemoq": "^2.1.0",
|
|
46
46
|
"typescript": "~5.0.2",
|
|
47
|
-
"@itwin/
|
|
48
|
-
"@itwin/
|
|
49
|
-
"@itwin/
|
|
50
|
-
"@itwin/core-geometry": "4.5.0-dev.
|
|
51
|
-
"@itwin/core-
|
|
52
|
-
"@itwin/
|
|
47
|
+
"@itwin/core-common": "4.5.0-dev.32",
|
|
48
|
+
"@itwin/core-frontend": "4.5.0-dev.32",
|
|
49
|
+
"@itwin/appui-abstract": "4.5.0-dev.32",
|
|
50
|
+
"@itwin/core-geometry": "4.5.0-dev.32",
|
|
51
|
+
"@itwin/core-bentley": "4.5.0-dev.32",
|
|
52
|
+
"@itwin/build-tools": "4.5.0-dev.32"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@itwin/
|
|
56
|
-
"@itwin/core-bentley": "4.5.0-dev.
|
|
57
|
-
"@itwin/
|
|
58
|
-
"@itwin/core-
|
|
59
|
-
"@itwin/core-geometry": "4.5.0-dev.
|
|
55
|
+
"@itwin/core-frontend": "4.5.0-dev.32",
|
|
56
|
+
"@itwin/core-bentley": "4.5.0-dev.32",
|
|
57
|
+
"@itwin/appui-abstract": "4.5.0-dev.32",
|
|
58
|
+
"@itwin/core-common": "4.5.0-dev.32",
|
|
59
|
+
"@itwin/core-geometry": "4.5.0-dev.32"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"google-protobuf": "~3.20.1"
|