@carto/api-client 0.5.32-alpha.48cef4f.127 → 0.5.32-alpha.723d642.132
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/build/api-client.cjs +238 -21
- package/build/api-client.cjs.map +1 -1
- package/build/api-client.js +238 -21
- package/build/api-client.js.map +1 -1
- package/package.json +1 -1
- package/src/fetch-map/parse-map.ts +4 -1
- package/src/fetch-map/pattern-atlas.ts +279 -33
- package/src/fetch-map/patterns/checker-large.svg +1 -0
- package/src/fetch-map/patterns/checker-medium.svg +1 -0
- package/src/fetch-map/patterns/checker-small.svg +1 -0
- package/src/fetch-map/patterns/cross-hatch-large.svg +1 -0
- package/src/fetch-map/patterns/cross-hatch-medium.svg +1 -0
- package/src/fetch-map/patterns/cross-hatch-small.svg +1 -0
- package/src/fetch-map/patterns/diag-left-large.svg +1 -0
- package/src/fetch-map/patterns/diag-left-medium.svg +1 -0
- package/src/fetch-map/patterns/diag-left-small.svg +1 -0
- package/src/fetch-map/patterns/diag-right-large.svg +1 -0
- package/src/fetch-map/patterns/diag-right-medium.svg +1 -0
- package/src/fetch-map/patterns/diag-right-small.svg +1 -0
- package/src/fetch-map/patterns/dots-large.svg +1 -0
- package/src/fetch-map/patterns/dots-medium.svg +1 -0
- package/src/fetch-map/patterns/dots-small.svg +1 -0
- package/src/fetch-map/patterns/hlines-large.svg +1 -0
- package/src/fetch-map/patterns/hlines-medium.svg +1 -0
- package/src/fetch-map/patterns/hlines-small.svg +1 -0
- package/src/fetch-map/patterns/solid.svg +1 -0
- package/src/fetch-map/patterns/vlines-large.svg +1 -0
- package/src/fetch-map/patterns/vlines-medium.svg +1 -0
- package/src/fetch-map/patterns/vlines-small.svg +1 -0
package/build/api-client.cjs
CHANGED
|
@@ -10741,8 +10741,76 @@ var checker_small_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAA
|
|
|
10741
10741
|
// src/fetch-map/patterns/solid.png
|
|
10742
10742
|
var solid_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAAAAFzUkdCAK7OHOkAAACWSURBVHic7dBBEcAwAMOwrPw5dzD0qIXA52/b3cOODtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QGuADtAaoAO0BugArQE6QPsBULQBfwAqZPkAAAAASUVORK5CYII=";
|
|
10743
10743
|
|
|
10744
|
+
// src/fetch-map/patterns/hlines-large.svg
|
|
10745
|
+
var hlines_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="64" height="16" patternUnits="userSpaceOnUse"><rect width="64" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10746
|
+
|
|
10747
|
+
// src/fetch-map/patterns/hlines-medium.svg
|
|
10748
|
+
var hlines_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="64" height="8" patternUnits="userSpaceOnUse"><rect width="64" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10749
|
+
|
|
10750
|
+
// src/fetch-map/patterns/hlines-small.svg
|
|
10751
|
+
var hlines_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="64" height="4" patternUnits="userSpaceOnUse"><rect width="64" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10752
|
+
|
|
10753
|
+
// src/fetch-map/patterns/vlines-large.svg
|
|
10754
|
+
var vlines_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="16" height="64" patternUnits="userSpaceOnUse"><rect width="2" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10755
|
+
|
|
10756
|
+
// src/fetch-map/patterns/vlines-medium.svg
|
|
10757
|
+
var vlines_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="8" height="64" patternUnits="userSpaceOnUse"><rect width="2" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10758
|
+
|
|
10759
|
+
// src/fetch-map/patterns/vlines-small.svg
|
|
10760
|
+
var vlines_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="4" height="64" patternUnits="userSpaceOnUse"><rect width="2" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10761
|
+
|
|
10762
|
+
// src/fetch-map/patterns/diag-left-large.svg
|
|
10763
|
+
var diag_left_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="45.2548" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10764
|
+
|
|
10765
|
+
// src/fetch-map/patterns/diag-left-medium.svg
|
|
10766
|
+
var diag_left_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="22.6274" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10767
|
+
|
|
10768
|
+
// src/fetch-map/patterns/diag-left-small.svg
|
|
10769
|
+
var diag_left_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="11.3137" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10770
|
+
|
|
10771
|
+
// src/fetch-map/patterns/diag-right-large.svg
|
|
10772
|
+
var diag_right_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="45.2548" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10773
|
+
|
|
10774
|
+
// src/fetch-map/patterns/diag-right-medium.svg
|
|
10775
|
+
var diag_right_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="22.6274" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10776
|
+
|
|
10777
|
+
// src/fetch-map/patterns/diag-right-small.svg
|
|
10778
|
+
var diag_right_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="11.3137" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10779
|
+
|
|
10780
|
+
// src/fetch-map/patterns/cross-hatch-large.svg
|
|
10781
|
+
var cross_hatch_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="a" width="45.2548" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern><pattern id="b" width="45.2548" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23a)"/><rect width="64" height="64" fill="url(%23b)"/></svg>%0A';
|
|
10782
|
+
|
|
10783
|
+
// src/fetch-map/patterns/cross-hatch-medium.svg
|
|
10784
|
+
var cross_hatch_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="a" width="22.6274" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern><pattern id="b" width="22.6274" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23a)"/><rect width="64" height="64" fill="url(%23b)"/></svg>%0A';
|
|
10785
|
+
|
|
10786
|
+
// src/fetch-map/patterns/cross-hatch-small.svg
|
|
10787
|
+
var cross_hatch_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="a" width="11.3137" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(-45)"><rect width="1.4142" height="64"/></pattern><pattern id="b" width="11.3137" height="64" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1.4142" height="64"/></pattern></defs><rect width="64" height="64" fill="url(%23a)"/><rect width="64" height="64" fill="url(%23b)"/></svg>%0A';
|
|
10788
|
+
|
|
10789
|
+
// src/fetch-map/patterns/dots-large.svg
|
|
10790
|
+
var dots_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="16" height="16" patternUnits="userSpaceOnUse"><rect width="2" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10791
|
+
|
|
10792
|
+
// src/fetch-map/patterns/dots-medium.svg
|
|
10793
|
+
var dots_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="8" height="8" patternUnits="userSpaceOnUse"><rect width="2" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10794
|
+
|
|
10795
|
+
// src/fetch-map/patterns/dots-small.svg
|
|
10796
|
+
var dots_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="4" height="4" patternUnits="userSpaceOnUse"><rect width="2" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10797
|
+
|
|
10798
|
+
// src/fetch-map/patterns/checker-large.svg
|
|
10799
|
+
var checker_large_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="16" height="16" patternUnits="userSpaceOnUse"><rect width="8" height="8"/><rect x="8" y="8" width="8" height="8"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10800
|
+
|
|
10801
|
+
// src/fetch-map/patterns/checker-medium.svg
|
|
10802
|
+
var checker_medium_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="8" height="8" patternUnits="userSpaceOnUse"><rect width="4" height="4"/><rect x="4" y="4" width="4" height="4"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10803
|
+
|
|
10804
|
+
// src/fetch-map/patterns/checker-small.svg
|
|
10805
|
+
var checker_small_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs><pattern id="p" width="4" height="4" patternUnits="userSpaceOnUse"><rect width="2" height="2"/><rect x="2" y="2" width="2" height="2"/></pattern></defs><rect width="64" height="64" fill="url(%23p)"/></svg>%0A';
|
|
10806
|
+
|
|
10807
|
+
// src/fetch-map/patterns/solid.svg
|
|
10808
|
+
var solid_default2 = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"><defs></defs><rect width="64" height="64"/></svg>%0A';
|
|
10809
|
+
|
|
10744
10810
|
// src/fetch-map/pattern-atlas.ts
|
|
10745
10811
|
var DEFAULT_CELL_SIZE = 128;
|
|
10812
|
+
var SOURCE_TILE_SIZE = 64;
|
|
10813
|
+
var VECTOR_RENDER_SIZE = 128;
|
|
10746
10814
|
var PATTERN_ROWS = [
|
|
10747
10815
|
"hlines",
|
|
10748
10816
|
"vlines",
|
|
@@ -10777,6 +10845,30 @@ var CELL_URLS = {
|
|
|
10777
10845
|
"checker-small": checker_small_default,
|
|
10778
10846
|
solid: solid_default
|
|
10779
10847
|
};
|
|
10848
|
+
var CELL_SVG_URLS = {
|
|
10849
|
+
"hlines-large": hlines_large_default2,
|
|
10850
|
+
"hlines-medium": hlines_medium_default2,
|
|
10851
|
+
"hlines-small": hlines_small_default2,
|
|
10852
|
+
"vlines-large": vlines_large_default2,
|
|
10853
|
+
"vlines-medium": vlines_medium_default2,
|
|
10854
|
+
"vlines-small": vlines_small_default2,
|
|
10855
|
+
"diag-left-large": diag_left_large_default2,
|
|
10856
|
+
"diag-left-medium": diag_left_medium_default2,
|
|
10857
|
+
"diag-left-small": diag_left_small_default2,
|
|
10858
|
+
"diag-right-large": diag_right_large_default2,
|
|
10859
|
+
"diag-right-medium": diag_right_medium_default2,
|
|
10860
|
+
"diag-right-small": diag_right_small_default2,
|
|
10861
|
+
"cross-hatch-large": cross_hatch_large_default2,
|
|
10862
|
+
"cross-hatch-medium": cross_hatch_medium_default2,
|
|
10863
|
+
"cross-hatch-small": cross_hatch_small_default2,
|
|
10864
|
+
"dots-large": dots_large_default2,
|
|
10865
|
+
"dots-medium": dots_medium_default2,
|
|
10866
|
+
"dots-small": dots_small_default2,
|
|
10867
|
+
"checker-large": checker_large_default2,
|
|
10868
|
+
"checker-medium": checker_medium_default2,
|
|
10869
|
+
"checker-small": checker_small_default2,
|
|
10870
|
+
solid: solid_default2
|
|
10871
|
+
};
|
|
10780
10872
|
function debugGlobals() {
|
|
10781
10873
|
return globalThis;
|
|
10782
10874
|
}
|
|
@@ -10784,15 +10876,31 @@ function getPatternCellSize() {
|
|
|
10784
10876
|
const cell = debugGlobals().__CARTO_PATTERN_CELL_SIZE__;
|
|
10785
10877
|
return typeof cell === "number" && cell > 0 ? cell : DEFAULT_CELL_SIZE;
|
|
10786
10878
|
}
|
|
10879
|
+
function getPatternAssetSource() {
|
|
10880
|
+
const source = debugGlobals().__CARTO_PATTERN_ASSET_SOURCE__;
|
|
10881
|
+
return source === "svg" || source === "procedural" ? source : "png";
|
|
10882
|
+
}
|
|
10787
10883
|
function getPatternTextureParameters() {
|
|
10788
10884
|
const params = debugGlobals().__CARTO_PATTERN_TEXTURE_PARAMS__;
|
|
10789
10885
|
return params && typeof params === "object" ? params : void 0;
|
|
10790
10886
|
}
|
|
10887
|
+
function getPatternRepeats(cell, source = getPatternAssetSource()) {
|
|
10888
|
+
const repeatSize = source === "png" ? SOURCE_TILE_SIZE : VECTOR_RENDER_SIZE;
|
|
10889
|
+
return Math.max(1, Math.floor(cell / repeatSize));
|
|
10890
|
+
}
|
|
10891
|
+
function getPatternScaleAdjustment(cell = getPatternCellSize()) {
|
|
10892
|
+
return SOURCE_TILE_SIZE * getPatternRepeats(cell) / cell;
|
|
10893
|
+
}
|
|
10894
|
+
function getPatternCellPadding(cell) {
|
|
10895
|
+
return Math.max(2, Math.round(cell / 16));
|
|
10896
|
+
}
|
|
10791
10897
|
function getPatternAtlasMapping(cell = getPatternCellSize()) {
|
|
10898
|
+
const pad = getPatternCellPadding(cell);
|
|
10899
|
+
const pitch = cell + 2 * pad;
|
|
10792
10900
|
const mapping = {};
|
|
10793
10901
|
const frame = (col, row) => ({
|
|
10794
|
-
x: col *
|
|
10795
|
-
y: row *
|
|
10902
|
+
x: pad + col * pitch,
|
|
10903
|
+
y: pad + row * pitch,
|
|
10796
10904
|
width: cell,
|
|
10797
10905
|
height: cell,
|
|
10798
10906
|
mask: true
|
|
@@ -10830,39 +10938,148 @@ async function loadImage(dataUrl) {
|
|
|
10830
10938
|
img.src = dataUrl;
|
|
10831
10939
|
});
|
|
10832
10940
|
}
|
|
10833
|
-
|
|
10834
|
-
|
|
10835
|
-
|
|
10836
|
-
|
|
10837
|
-
|
|
10838
|
-
|
|
10839
|
-
|
|
10840
|
-
|
|
10941
|
+
function loadSvgImage(dataUrl) {
|
|
10942
|
+
return new Promise((resolve, reject) => {
|
|
10943
|
+
const img = new Image();
|
|
10944
|
+
img.onload = () => resolve(img);
|
|
10945
|
+
img.onerror = reject;
|
|
10946
|
+
img.src = dataUrl;
|
|
10947
|
+
});
|
|
10948
|
+
}
|
|
10949
|
+
var DENSITY_STEP = { small: 1, medium: 2, large: 4 };
|
|
10950
|
+
function paintDesignTile(ctx, key) {
|
|
10951
|
+
const [, name, density] = key.match(/^(.*?)(?:-(small|medium|large))?$/) ?? [];
|
|
10952
|
+
const step = DENSITY_STEP[density ?? ""] ?? 1;
|
|
10953
|
+
const linePeriod = 4 * step;
|
|
10954
|
+
const diagPeriod = 16 * step;
|
|
10955
|
+
const square = 2 * step;
|
|
10956
|
+
ctx.fillStyle = "#000";
|
|
10957
|
+
ctx.strokeStyle = "#000";
|
|
10958
|
+
const diag = (dir) => {
|
|
10959
|
+
ctx.lineWidth = Math.SQRT2;
|
|
10960
|
+
ctx.beginPath();
|
|
10961
|
+
for (let k = -Math.ceil(64 / diagPeriod); k <= 2 * Math.ceil(64 / diagPeriod); k++) {
|
|
10962
|
+
ctx.moveTo(k * diagPeriod - 8 * dir, -8);
|
|
10963
|
+
ctx.lineTo(k * diagPeriod + 72 * dir, 72);
|
|
10964
|
+
}
|
|
10965
|
+
ctx.stroke();
|
|
10966
|
+
};
|
|
10967
|
+
switch (name) {
|
|
10968
|
+
case "solid":
|
|
10969
|
+
ctx.fillRect(0, 0, 64, 64);
|
|
10970
|
+
break;
|
|
10971
|
+
case "hlines":
|
|
10972
|
+
for (let y = 0; y < 64; y += linePeriod) ctx.fillRect(0, y, 64, 2);
|
|
10973
|
+
break;
|
|
10974
|
+
case "vlines":
|
|
10975
|
+
for (let x = 0; x < 64; x += linePeriod) ctx.fillRect(x, 0, 2, 64);
|
|
10976
|
+
break;
|
|
10977
|
+
case "dots":
|
|
10978
|
+
for (let y = 0; y < 64; y += linePeriod)
|
|
10979
|
+
for (let x = 0; x < 64; x += linePeriod) ctx.fillRect(x, y, 2, 2);
|
|
10980
|
+
break;
|
|
10981
|
+
case "checker":
|
|
10982
|
+
for (let j = 0; j * square < 64; j++)
|
|
10983
|
+
for (let i = 0; i * square < 64; i++)
|
|
10984
|
+
if ((i + j) % 2 === 0)
|
|
10985
|
+
ctx.fillRect(i * square, j * square, square, square);
|
|
10986
|
+
break;
|
|
10987
|
+
case "diag-left":
|
|
10988
|
+
diag(1);
|
|
10989
|
+
break;
|
|
10990
|
+
case "diag-right":
|
|
10991
|
+
diag(-1);
|
|
10992
|
+
break;
|
|
10993
|
+
case "cross-hatch":
|
|
10994
|
+
diag(1);
|
|
10995
|
+
diag(-1);
|
|
10996
|
+
break;
|
|
10841
10997
|
}
|
|
10842
|
-
return promise;
|
|
10843
10998
|
}
|
|
10844
|
-
|
|
10999
|
+
function paintTileCanvas(key, size) {
|
|
11000
|
+
const canvas = createCanvas(size, size);
|
|
11001
|
+
const ctx = canvas.getContext("2d");
|
|
11002
|
+
if (!ctx)
|
|
11003
|
+
throw new Error(
|
|
11004
|
+
"carto-api-client: 2D context unavailable for pattern tile"
|
|
11005
|
+
);
|
|
11006
|
+
ctx.scale(size / 64, size / 64);
|
|
11007
|
+
paintDesignTile(ctx, key);
|
|
11008
|
+
return canvas;
|
|
11009
|
+
}
|
|
11010
|
+
async function composeAtlas(cell, reps, images) {
|
|
10845
11011
|
const mapping = getPatternAtlasMapping(cell);
|
|
10846
|
-
const
|
|
11012
|
+
const pad = getPatternCellPadding(cell);
|
|
11013
|
+
const pitch = cell + 2 * pad;
|
|
11014
|
+
const step = cell / reps;
|
|
11015
|
+
const canvas = createCanvas(pitch * 3, pitch * (PATTERN_ROWS.length + 1));
|
|
10847
11016
|
const ctx = canvas.getContext("2d");
|
|
10848
11017
|
if (!ctx)
|
|
10849
11018
|
throw new Error(
|
|
10850
11019
|
"carto-api-client: 2D context unavailable for pattern atlas"
|
|
10851
11020
|
);
|
|
11021
|
+
for (const [key, frame] of Object.entries(mapping)) {
|
|
11022
|
+
const img = images[key];
|
|
11023
|
+
if (!img) continue;
|
|
11024
|
+
ctx.save();
|
|
11025
|
+
ctx.beginPath();
|
|
11026
|
+
ctx.rect(frame.x - pad, frame.y - pad, cell + 2 * pad, cell + 2 * pad);
|
|
11027
|
+
ctx.clip();
|
|
11028
|
+
for (let i = -1; i <= reps; i++) {
|
|
11029
|
+
for (let j = -1; j <= reps; j++) {
|
|
11030
|
+
ctx.drawImage(img, frame.x + i * step, frame.y + j * step, step, step);
|
|
11031
|
+
}
|
|
11032
|
+
}
|
|
11033
|
+
ctx.restore();
|
|
11034
|
+
}
|
|
11035
|
+
if (typeof createImageBitmap !== "undefined")
|
|
11036
|
+
return createImageBitmap(canvas);
|
|
11037
|
+
return canvas;
|
|
11038
|
+
}
|
|
11039
|
+
async function buildPngAtlas(cell) {
|
|
10852
11040
|
const images = {};
|
|
10853
11041
|
await Promise.all(
|
|
10854
11042
|
Object.entries(CELL_URLS).map(async ([key, url]) => {
|
|
10855
11043
|
images[key] = await loadImage(url);
|
|
10856
11044
|
})
|
|
10857
11045
|
);
|
|
10858
|
-
|
|
10859
|
-
|
|
10860
|
-
|
|
10861
|
-
|
|
11046
|
+
return composeAtlas(cell, getPatternRepeats(cell, "png"), images);
|
|
11047
|
+
}
|
|
11048
|
+
async function buildSvgAtlas(cell) {
|
|
11049
|
+
const images = {};
|
|
11050
|
+
await Promise.all(
|
|
11051
|
+
Object.entries(CELL_SVG_URLS).map(async ([key, url]) => {
|
|
11052
|
+
images[key] = await loadSvgImage(url);
|
|
11053
|
+
})
|
|
11054
|
+
);
|
|
11055
|
+
return composeAtlas(cell, getPatternRepeats(cell, "svg"), images);
|
|
11056
|
+
}
|
|
11057
|
+
async function buildProceduralAtlas(cell) {
|
|
11058
|
+
const reps = getPatternRepeats(cell, "procedural");
|
|
11059
|
+
const step = cell / reps;
|
|
11060
|
+
const images = {};
|
|
11061
|
+
for (const key of Object.keys(CELL_URLS)) {
|
|
11062
|
+
images[key] = paintTileCanvas(key, step);
|
|
10862
11063
|
}
|
|
10863
|
-
|
|
10864
|
-
|
|
10865
|
-
|
|
11064
|
+
return composeAtlas(cell, reps, images);
|
|
11065
|
+
}
|
|
11066
|
+
var ATLAS_BUILDERS = {
|
|
11067
|
+
png: buildPngAtlas,
|
|
11068
|
+
svg: buildSvgAtlas,
|
|
11069
|
+
procedural: buildProceduralAtlas
|
|
11070
|
+
};
|
|
11071
|
+
var atlasPromises = /* @__PURE__ */ new Map();
|
|
11072
|
+
function getPatternAtlas(cell = getPatternCellSize()) {
|
|
11073
|
+
const source = getPatternAssetSource();
|
|
11074
|
+
const memoKey = `${source}:${cell}`;
|
|
11075
|
+
let promise = atlasPromises.get(memoKey);
|
|
11076
|
+
if (!promise) {
|
|
11077
|
+
promise = ATLAS_BUILDERS[source](cell);
|
|
11078
|
+
promise.catch(() => {
|
|
11079
|
+
});
|
|
11080
|
+
atlasPromises.set(memoKey, promise);
|
|
11081
|
+
}
|
|
11082
|
+
return promise;
|
|
10866
11083
|
}
|
|
10867
11084
|
|
|
10868
11085
|
// src/fetch-map/parse-map.ts
|
|
@@ -11299,7 +11516,7 @@ function createChannelProps(id, layerType, config2, visualChannels, data, datase
|
|
|
11299
11516
|
if (textureParameters) {
|
|
11300
11517
|
result.textureParameters = textureParameters;
|
|
11301
11518
|
}
|
|
11302
|
-
result.getFillPatternScale = visConfig.fillPatternSize ?? 1;
|
|
11519
|
+
result.getFillPatternScale = (visConfig.fillPatternSize ?? 1) * getPatternScaleAdjustment();
|
|
11303
11520
|
result.fillPattern = visConfig.fillPattern;
|
|
11304
11521
|
const { fillPatternField, fillPatternScale } = visualChannels;
|
|
11305
11522
|
const { fillPatternRange, fillPatternDensity } = visConfig;
|