ol 10.2.2-dev.1730934210683 → 10.2.2-dev.1730987055849

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol",
3
- "version": "10.2.2-dev.1730934210683",
3
+ "version": "10.2.2-dev.1730987055849",
4
4
  "description": "OpenLayers mapping library",
5
5
  "keywords": [
6
6
  "map",
package/style/Fill.d.ts CHANGED
@@ -56,6 +56,10 @@ declare class Fill {
56
56
  * @api
57
57
  */
58
58
  setColor(color: import("../color.js").Color | import("../colorlike.js").ColorLike | import("../colorlike.js").PatternDescriptor | null): void;
59
+ /**
60
+ * @return {string} Key of the fill for cache lookup.
61
+ */
62
+ getKey(): string;
59
63
  /**
60
64
  * @return {boolean} The fill style is loading an image pattern.
61
65
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Fill.d.ts","sourceRoot":"","sources":["Fill.js"],"names":[],"mappings":";;;;;;;;;;;AAOA;;;;;;;GAOG;AAEH;;;;GAIG;AACH;IACE;;OAEG;IACH,2CAiBC;IAdC;;;OAGG;IACH,sBAAyB;IAEzB;;;OAGG;IACH,eAAkB;IAMpB;;;;OAIG;IACH,SAHY,IAAI,CAQf;IAED;;;;OAIG;IACH,YAHY,OAAO,aAAa,EAAE,KAAK,GAAC,OAAO,iBAAiB,EAAE,SAAS,GAAC,OAAO,iBAAiB,EAAE,iBAAiB,GAAC,IAAI,CAK3H;IAED;;;;;OAKG;IACH,gBAHW,OAAO,aAAa,EAAE,KAAK,GAAC,OAAO,iBAAiB,EAAE,SAAS,GAAC,OAAO,iBAAiB,EAAE,iBAAiB,GAAC,IAAI,QAwB1H;IAED;;OAEG;IACH,WAFY,OAAO,CAIlB;IAED;;OAEG;IACH,SAFY,OAAO,CAAC,IAAI,CAAC,CAIxB;CACF"}
1
+ {"version":3,"file":"Fill.d.ts","sourceRoot":"","sources":["Fill.js"],"names":[],"mappings":";;;;;;;;;;;AASA;;;;;;;GAOG;AAEH;;;;GAIG;AACH;IACE;;OAEG;IACH,2CAiBC;IAdC;;;OAGG;IACH,sBAAyB;IAEzB;;;OAGG;IACH,eAAkB;IAMpB;;;;OAIG;IACH,SAHY,IAAI,CAQf;IAED;;;;OAIG;IACH,YAHY,OAAO,aAAa,EAAE,KAAK,GAAC,OAAO,iBAAiB,EAAE,SAAS,GAAC,OAAO,iBAAiB,EAAE,iBAAiB,GAAC,IAAI,CAK3H;IAED;;;;;OAKG;IACH,gBAHW,OAAO,aAAa,EAAE,KAAK,GAAC,OAAO,iBAAiB,EAAE,SAAS,GAAC,OAAO,iBAAiB,EAAE,iBAAiB,GAAC,IAAI,QAwB1H;IAED;;OAEG;IACH,UAFY,MAAM,CAYjB;IAED;;OAEG;IACH,WAFY,OAAO,CAIlB;IAED;;OAEG;IACH,SAFY,OAAO,CAAC,IAAI,CAAC,CAIxB;CACF"}
package/style/Fill.js CHANGED
@@ -3,7 +3,9 @@
3
3
  */
4
4
 
5
5
  import ImageState from '../ImageState.js';
6
+ import {asArray} from '../color.js';
6
7
  import {get as getIconImage} from './IconImage.js';
8
+ import {getUid} from '../util.js';
7
9
 
8
10
  /**
9
11
  * @typedef {Object} Options
@@ -92,6 +94,21 @@ class Fill {
92
94
  this.color_ = color;
93
95
  }
94
96
 
97
+ /**
98
+ * @return {string} Key of the fill for cache lookup.
99
+ */
100
+ getKey() {
101
+ const fill = this.getColor();
102
+ if (!fill) {
103
+ return '';
104
+ }
105
+ return fill instanceof CanvasPattern || fill instanceof CanvasGradient
106
+ ? getUid(fill)
107
+ : typeof fill === 'object' && 'src' in fill
108
+ ? fill.src + ':' + fill.offset
109
+ : asArray(fill).toString();
110
+ }
111
+
95
112
  /**
96
113
  * @return {boolean} The fill style is loading an image pattern.
97
114
  */
@@ -72,8 +72,8 @@ declare class IconImageCache {
72
72
  */
73
73
  set(src: string, crossOrigin: string | null, color: import("../color.js").Color | string | null, iconImage: import("./IconImage.js").default | null, pattern?: boolean | undefined): void;
74
74
  /**
75
- * Set the cache size of the icon cache. Default is `32`. Change this value when
76
- * your map uses more than 32 different icon images and you are not caching icon
75
+ * Set the cache size of the icon cache. Default is `1024`. Change this value when
76
+ * your map uses more than 1024 different icon images and you are not caching icon
77
77
  * styles on the application level.
78
78
  * @param {number} maxCacheSize Cache max size.
79
79
  * @api
@@ -1 +1 @@
1
- {"version":3,"file":"IconImageCache.d.ts","sourceRoot":"","sources":["IconImageCache.js"],"names":[],"mappings":"AA4IA;;;;;GAKG;AACH,iCALW,MAAM,eACL,MAAM,OAAA,SACP,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,IAAI,GACtC,MAAM,CAKjB;;AAID;;;;GAIG;AACH,oCAA2C;AAvJ3C;;;GAGG;AACH;IAEI;;;OAGG;IACH,eAAgB;IAEhB;;;OAGG;IACH,sBAAuB;IAEvB;;;OAGG;IACH,mBAAmB;IAEnB;;;OAGG;IACH,sBAAuB;IAGzB;;OAEG;IACH,cAIC;IAED;;OAEG;IACH,kBAFY,OAAO,CAIlB;IAED;;OAEG;IACH,eAYC;IAED;;;;;OAKG;IACH,SALW,MAAM,eACL,MAAM,OAAA,SACP,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,IAAI,GACtC,OAAO,gBAAgB,EAAE,OAAO,CAK3C;IAED;;;;;OAKG;IACH,gBALW,MAAM,eACL,MAAM,OAAA,SACP,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,IAAI,GACtC,aAAa,CAKxB;IAED;;;;;;OAMG;IACH,SANW,MAAM,eACL,MAAM,OAAA,SACP,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,IAAI,aACvC,OAAO,gBAAgB,EAAE,OAAO,GAAC,IAAI,uCA4B/C;IAED;;;;;;OAMG;IACH,sBAHW,MAAM,QAMhB;CACF"}
1
+ {"version":3,"file":"IconImageCache.d.ts","sourceRoot":"","sources":["IconImageCache.js"],"names":[],"mappings":"AA4IA;;;;;GAKG;AACH,iCALW,MAAM,eACL,MAAM,OAAA,SACP,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,IAAI,GACtC,MAAM,CAKjB;;AAID;;;;GAIG;AACH,oCAA2C;AAvJ3C;;;GAGG;AACH;IAEI;;;OAGG;IACH,eAAgB;IAEhB;;;OAGG;IACH,sBAAuB;IAEvB;;;OAGG;IACH,mBAAmB;IAEnB;;;OAGG;IACH,sBAAyB;IAG3B;;OAEG;IACH,cAIC;IAED;;OAEG;IACH,kBAFY,OAAO,CAIlB;IAED;;OAEG;IACH,eAYC;IAED;;;;;OAKG;IACH,SALW,MAAM,eACL,MAAM,OAAA,SACP,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,IAAI,GACtC,OAAO,gBAAgB,EAAE,OAAO,CAK3C;IAED;;;;;OAKG;IACH,gBALW,MAAM,eACL,MAAM,OAAA,SACP,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,IAAI,GACtC,aAAa,CAKxB;IAED;;;;;;OAMG;IACH,SANW,MAAM,eACL,MAAM,OAAA,SACP,OAAO,aAAa,EAAE,KAAK,GAAC,MAAM,GAAC,IAAI,aACvC,OAAO,gBAAgB,EAAE,OAAO,GAAC,IAAI,uCA4B/C;IAED;;;;;;OAMG;IACH,sBAHW,MAAM,QAMhB;CACF"}
@@ -33,7 +33,7 @@ class IconImageCache {
33
33
  * @type {number}
34
34
  * @private
35
35
  */
36
- this.maxCacheSize_ = 32;
36
+ this.maxCacheSize_ = 1024;
37
37
  }
38
38
 
39
39
  /**
@@ -126,8 +126,8 @@ class IconImageCache {
126
126
  }
127
127
 
128
128
  /**
129
- * Set the cache size of the icon cache. Default is `32`. Change this value when
130
- * your map uses more than 32 different icon images and you are not caching icon
129
+ * Set the cache size of the icon cache. Default is `1024`. Change this value when
130
+ * your map uses more than 1024 different icon images and you are not caching icon
131
131
  * styles on the application level.
132
132
  * @param {number} maxCacheSize Cache max size.
133
133
  * @api
@@ -126,11 +126,6 @@ declare class RegularShape extends ImageStyle {
126
126
  * @param {Options} options Options.
127
127
  */
128
128
  constructor(options: Options);
129
- /**
130
- * @private
131
- * @type {Object<number, HTMLCanvasElement>}
132
- */
133
- private canvases_;
134
129
  /**
135
130
  * @private
136
131
  * @type {HTMLCanvasElement|null}
@@ -1 +1 @@
1
- {"version":3,"file":"RegularShape.d.ts","sourceRoot":"","sources":["RegularShape.js"],"names":[],"mappings":";;;;;;;;;;;;;YAsBc,MAAM;;;;YAEN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAeN,OAAO,iBAAiB,EAAE,SAAS,GAAC,SAAS;;;;iBAC7C,MAAM;;;;UACN,MAAM;;;;aACN,aAAa;;;;cACb,KAAK,CAAC,MAAM,CAAC,GAAC,IAAI;;;;oBAClB,MAAM;;;;cACN,cAAc;;;;gBACd,MAAM;;AA5BpB;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;GAUG;AAEH;;;;;;GAMG;AACH;IACE;;OAEG;IACH,qBAFW,OAAO,EA2FjB;IA7EC;;;OAGG;IACH,kBAAc;IAEd;;;OAGG;IACH,4BAA+B;IAE/B;;;OAGG;IACH,cAA6D;IAE7D;;;OAGG;IACH,gBAAqB;IAErB;;;OAGG;IACH,gBAA6B;IAE7B;;;OAGG;IACH,kBAFU,MAAM,CAEY;IAE5B;;;OAGG;IACH,iBAA+B;IAE/B;;;OAGG;IACH,eAA6D;IAE7D;;;OAGG;IACH,gBAAmE;IAEnE;;;OAGG;IACH,cAAU;IAEV;;;OAGG;IACH,uBAAmB;IAEnB;;OAEG;IACH,oBAGuB;IAOzB;;;;;OAKG;IACH,kBAJY,YAAY,CAqBvB;IAqBD;;;;OAIG;IACH,YAHY,MAAM,CAKjB;IAED;;;;OAIG;IACH,WAHY,OAAO,WAAW,EAAE,OAAO,GAAC,IAAI,CAK3C;IAED;;;;OAIG;IACH,cAHW,OAAO,WAAW,EAAE,OAAO,GAAC,IAAI,QAM1C;IAED;;;OAGG;IACH,iCAHY,iBAAiB,CAU5B;IAED;;;;;;OAMG;IACH,8BALW,MAAM,GACL,iBAAiB,CAkB5B;IAsCD;;;;OAIG;IACH,aAHY,MAAM,CAKjB;IAED;;;;OAIG;IACH,aAHY,MAAM,CAKjB;IAED;;;;OAIG;IACH,cAHY,MAAM,GAAC,SAAS,CAK3B;IAYD;;;;OAIG;IACH,aAHY,OAAO,aAAa,EAAE,OAAO,GAAC,IAAI,CAK7C;IAED;;;;OAIG;IACH,kBAHW,OAAO,aAAa,EAAE,OAAO,GAAC,IAAI,QAM5C;IAoBD;;;;;;;OAOG;IACH,+BAgFC;IAED;;;OAGG;IACH,iCAHY,aAAa,CAoCxB;IAED;;OAEG;IACH,yBAMC;IAED;;;;;OAKG;IACH,cA2BC;IAED;;;;OAIG;IACH,kCAuBC;IAED;;;OAGG;IACH,oBAmBC;IAED;;;;OAIG;IACH,gCAmBC;CAQF;uBAlnBsB,YAAY"}
1
+ {"version":3,"file":"RegularShape.d.ts","sourceRoot":"","sources":["RegularShape.js"],"names":[],"mappings":";;;;;;;;;;;;;YAwBc,MAAM;;;;YAEN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAeN,OAAO,iBAAiB,EAAE,SAAS,GAAC,SAAS;;;;iBAC7C,MAAM;;;;UACN,MAAM;;;;aACN,aAAa;;;;cACb,KAAK,CAAC,MAAM,CAAC,GAAC,IAAI;;;;oBAClB,MAAM;;;;cACN,cAAc;;;;gBACd,MAAM;;AA5BpB;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;GAUG;AAEH;;;;;;GAMG;AACH;IACE;;OAEG;IACH,qBAFW,OAAO,EAqFjB;IAvEC;;;OAGG;IACH,4BAA+B;IAE/B;;;OAGG;IACH,cAA6D;IAE7D;;;OAGG;IACH,gBAAqB;IAErB;;;OAGG;IACH,gBAA6B;IAE7B;;;OAGG;IACH,kBAFU,MAAM,CAEY;IAE5B;;;OAGG;IACH,iBAA+B;IAE/B;;;OAGG;IACH,eAA6D;IAE7D;;;OAGG;IACH,gBAAmE;IAEnE;;;OAGG;IACH,cAAU;IAEV;;;OAGG;IACH,uBAAmB;IAEnB;;OAEG;IACH,oBAGuB;IAOzB;;;;;OAKG;IACH,kBAJY,YAAY,CAqBvB;IAqBD;;;;OAIG;IACH,YAHY,MAAM,CAKjB;IAED;;;;OAIG;IACH,WAHY,OAAO,WAAW,EAAE,OAAO,GAAC,IAAI,CAK3C;IAED;;;;OAIG;IACH,cAHW,OAAO,WAAW,EAAE,OAAO,GAAC,IAAI,QAM1C;IAED;;;OAGG;IACH,iCAHY,iBAAiB,CAU5B;IAED;;;;;;OAMG;IACH,8BALW,MAAM,GACL,iBAAiB,CA6B5B;IAsCD;;;;OAIG;IACH,aAHY,MAAM,CAKjB;IAED;;;;OAIG;IACH,aAHY,MAAM,CAKjB;IAED;;;;OAIG;IACH,cAHY,MAAM,GAAC,SAAS,CAK3B;IAYD;;;;OAIG;IACH,aAHY,OAAO,aAAa,EAAE,OAAO,GAAC,IAAI,CAK7C;IAED;;;;OAIG;IACH,kBAHW,OAAO,aAAa,EAAE,OAAO,GAAC,IAAI,QAM5C;IAoBD;;;;;;;OAOG;IACH,+BAgFC;IAED;;;OAGG;IACH,iCAHY,aAAa,CAoCxB;IAED;;OAEG;IACH,yBAKC;IAED;;;;;OAKG;IACH,cA2BC;IAED;;;;OAIG;IACH,kCAuBC;IAED;;;OAGG;IACH,oBAmBC;IAED;;;;OAIG;IACH,gCAmBC;CAQF;uBAvnBsB,YAAY"}
@@ -2,6 +2,7 @@
2
2
  * @module ol/style/RegularShape
3
3
  */
4
4
 
5
+ import IconImage from './IconImage.js';
5
6
  import ImageState from '../ImageState.js';
6
7
  import ImageStyle from './Image.js';
7
8
  import {asArray} from '../color.js';
@@ -15,6 +16,7 @@ import {
15
16
  defaultMiterLimit,
16
17
  defaultStrokeStyle,
17
18
  } from '../render/canvas.js';
19
+ import {shared as iconImageCache} from './IconImageCache.js';
18
20
 
19
21
  /**
20
22
  * Specify radius for regular polygons, or both radius and radius2 for stars.
@@ -70,12 +72,6 @@ class RegularShape extends ImageStyle {
70
72
  declutterMode: options.declutterMode,
71
73
  });
72
74
 
73
- /**
74
- * @private
75
- * @type {Object<number, HTMLCanvasElement>}
76
- */
77
- this.canvases_;
78
-
79
75
  /**
80
76
  * @private
81
77
  * @type {HTMLCanvasElement|null}
@@ -242,7 +238,13 @@ class RegularShape extends ImageStyle {
242
238
  * @override
243
239
  */
244
240
  getImage(pixelRatio) {
245
- let image = this.canvases_[pixelRatio];
241
+ const fillKey = this.fill_?.getKey();
242
+ const cacheKey =
243
+ `${pixelRatio},${this.angle_},${this.radius},${this.radius2_},${this.points_},${fillKey}` +
244
+ Object.values(this.renderOptions_).join(',');
245
+ let image = /** @type {HTMLCanvasElement} */ (
246
+ iconImageCache.get(cacheKey, null, null)?.getImage(1)
247
+ );
246
248
  if (!image) {
247
249
  const renderOptions = this.renderOptions_;
248
250
  const context = createCanvasContext2D(
@@ -252,7 +254,12 @@ class RegularShape extends ImageStyle {
252
254
  this.draw_(renderOptions, context, pixelRatio);
253
255
 
254
256
  image = context.canvas;
255
- this.canvases_[pixelRatio] = image;
257
+ iconImageCache.set(
258
+ cacheKey,
259
+ null,
260
+ null,
261
+ new IconImage(image, undefined, null, ImageState.LOADED, null),
262
+ );
256
263
  }
257
264
  return image;
258
265
  }
@@ -502,7 +509,6 @@ class RegularShape extends ImageStyle {
502
509
  render() {
503
510
  this.renderOptions_ = this.createRenderOptions();
504
511
  const size = this.renderOptions_.size;
505
- this.canvases_ = {};
506
512
  this.hitDetectionCanvas_ = null;
507
513
  this.size_ = [size, size];
508
514
  }
package/util.js CHANGED
@@ -33,4 +33,4 @@ export function getUid(obj) {
33
33
  * OpenLayers version.
34
34
  * @type {string}
35
35
  */
36
- export const VERSION = '10.2.2-dev.1730934210683';
36
+ export const VERSION = '10.2.2-dev.1730987055849';