@antv/l7-layers 2.15.1 → 2.15.3
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/es/Geometry/index.js +9 -31
- package/es/Geometry/models/billboard.js +51 -89
- package/es/Geometry/models/plane.js +81 -143
- package/es/Geometry/models/sprite.js +60 -118
- package/es/canvas/index.js +10 -33
- package/es/canvas/models/canvas.js +41 -97
- package/es/citybuliding/building.js +8 -27
- package/es/citybuliding/models/build.js +57 -82
- package/es/core/BaseLayer.js +320 -484
- package/es/core/BaseModel.js +97 -126
- package/es/core/LayerPickService.js +21 -32
- package/es/core/TextureService.js +0 -13
- package/es/core/interface.js +17 -24
- package/es/core/shape/Path.js +13 -20
- package/es/core/shape/extrude.js +10 -31
- package/es/core/triangulation.js +54 -114
- package/es/earth/index.js +9 -33
- package/es/earth/models/atmosphere.js +30 -54
- package/es/earth/models/base.js +47 -85
- package/es/earth/models/bloomsphere.js +30 -54
- package/es/earth/utils.js +9 -13
- package/es/heatmap/index.js +10 -40
- package/es/heatmap/models/grid.js +28 -52
- package/es/heatmap/models/grid3d.js +28 -52
- package/es/heatmap/models/heatmap.js +91 -146
- package/es/heatmap/models/hexagon.js +28 -52
- package/es/heatmap/triangulation.js +0 -4
- package/es/image/index.js +9 -28
- package/es/image/models/image.js +66 -100
- package/es/index.js +9 -17
- package/es/line/index.js +9 -34
- package/es/line/models/arc.js +66 -118
- package/es/line/models/arc_3d.js +60 -108
- package/es/line/models/earthArc_3d.js +63 -111
- package/es/line/models/great_circle.js +56 -100
- package/es/line/models/half.js +46 -77
- package/es/line/models/line.js +94 -148
- package/es/line/models/linearline.js +45 -80
- package/es/line/models/simpleLine.js +41 -74
- package/es/line/models/wall.js +52 -92
- package/es/mask/index.js +9 -28
- package/es/mask/models/fill.js +29 -54
- package/es/plugins/DataMappingPlugin.js +80 -117
- package/es/plugins/DataSourcePlugin.js +45 -68
- package/es/plugins/FeatureScalePlugin.js +67 -122
- package/es/plugins/LayerAnimateStylePlugin.js +0 -5
- package/es/plugins/LayerMaskPlugin.js +3 -11
- package/es/plugins/LayerModelPlugin.js +67 -104
- package/es/plugins/LayerStylePlugin.js +3 -9
- package/es/plugins/LightingPlugin.js +12 -18
- package/es/plugins/MultiPassRendererPlugin.js +11 -16
- package/es/plugins/PixelPickingPlugin.js +12 -21
- package/es/plugins/RegisterStyleAttributePlugin.js +5 -12
- package/es/plugins/ShaderUniformPlugin.js +13 -27
- package/es/plugins/UpdateModelPlugin.js +0 -5
- package/es/plugins/UpdateStyleAttributePlugin.js +5 -11
- package/es/point/index.js +26 -77
- package/es/point/models/earthExtrude.js +61 -102
- package/es/point/models/earthFill.js +57 -87
- package/es/point/models/extrude.js +60 -101
- package/es/point/models/fill.js +70 -100
- package/es/point/models/fillmage.js +63 -107
- package/es/point/models/image.js +48 -88
- package/es/point/models/index.js +2 -2
- package/es/point/models/normal.js +30 -54
- package/es/point/models/radar.js +40 -64
- package/es/point/models/simplePoint.js +41 -69
- package/es/point/models/text.d.ts +2 -0
- package/es/point/models/text.js +214 -295
- package/es/point/shape/extrude.js +4 -13
- package/es/polygon/index.js +11 -40
- package/es/polygon/models/extrude.js +48 -92
- package/es/polygon/models/fill.js +54 -88
- package/es/polygon/models/index.js +3 -2
- package/es/polygon/models/ocean.js +42 -76
- package/es/polygon/models/water.js +37 -71
- package/es/raster/buffers/triangulation.js +2 -4
- package/es/raster/index.js +9 -32
- package/es/raster/models/raster.js +80 -116
- package/es/raster/models/rasterRgb.js +84 -127
- package/es/raster/models/rasterTerrainRgb.js +56 -84
- package/es/tile/interaction/getRasterData.js +14 -20
- package/es/tile/interaction/utils.js +7 -9
- package/es/tile/manager/base.js +63 -96
- package/es/tile/service/TileLayerService.js +30 -52
- package/es/tile/service/TilePickService.js +26 -40
- package/es/tile/service/TileSourceService.js +3 -7
- package/es/tile/tileFactory/DebugTile.js +28 -45
- package/es/tile/tileFactory/ImageTile.js +20 -38
- package/es/tile/tileFactory/MaskTile.js +22 -43
- package/es/tile/tileFactory/RasterRGBTile.js +22 -42
- package/es/tile/tileFactory/RasterTerrainRGBTile.js +20 -38
- package/es/tile/tileFactory/RasterTile.js +30 -53
- package/es/tile/tileFactory/Tile.js +63 -97
- package/es/tile/tileFactory/VectorTile.js +41 -68
- package/es/tile/tileFactory/index.js +0 -11
- package/es/tile/tileFactory/layers/TileDebugLayer.js +6 -27
- package/es/tile/tileFactory/util.js +0 -3
- package/es/tile/tileLayer/BaseLayer.js +105 -146
- package/es/tile/utils.js +1 -1
- package/es/utils/blend.js +0 -2
- package/es/utils/collision-index.js +9 -16
- package/es/utils/dataMappingStyle.js +8 -18
- package/es/utils/extrude_polyline.js +101 -149
- package/es/utils/grid-index.js +2 -27
- package/es/utils/identityScale.js +0 -8
- package/es/utils/layerData.js +30 -44
- package/es/utils/multiPassRender.js +11 -13
- package/es/utils/polylineNormal.js +31 -37
- package/es/utils/simpleLine.js +2 -16
- package/es/utils/stencil.js +2 -3
- package/es/utils/symbol-layout.js +27 -53
- package/es/wind/index.js +9 -29
- package/es/wind/models/utils.js +26 -51
- package/es/wind/models/wind.js +101 -147
- package/es/wind/models/windRender.js +53 -66
- package/lib/Geometry/index.js +9 -38
- package/lib/Geometry/models/billboard.js +51 -97
- package/lib/Geometry/models/index.js +0 -5
- package/lib/Geometry/models/plane.js +79 -151
- package/lib/Geometry/models/sprite.js +60 -127
- package/lib/canvas/index.js +10 -40
- package/lib/canvas/models/canvas.js +41 -101
- package/lib/canvas/models/index.js +0 -3
- package/lib/citybuliding/building.js +8 -35
- package/lib/citybuliding/models/build.js +57 -92
- package/lib/core/BaseLayer.js +320 -478
- package/lib/core/BaseModel.js +97 -139
- package/lib/core/LayerPickService.js +21 -37
- package/lib/core/TextureService.js +0 -16
- package/lib/core/interface.js +21 -31
- package/lib/core/schema.js +0 -1
- package/lib/core/shape/Path.js +14 -31
- package/lib/core/shape/extrude.js +10 -54
- package/lib/core/triangulation.js +53 -153
- package/lib/earth/index.js +9 -43
- package/lib/earth/models/atmosphere.js +30 -63
- package/lib/earth/models/base.js +47 -90
- package/lib/earth/models/bloomsphere.js +30 -63
- package/lib/earth/utils.js +7 -31
- package/lib/heatmap/index.js +10 -48
- package/lib/heatmap/models/grid.js +28 -60
- package/lib/heatmap/models/grid3d.js +28 -60
- package/lib/heatmap/models/heatmap.js +91 -162
- package/lib/heatmap/models/hexagon.js +28 -60
- package/lib/heatmap/models/index.js +0 -6
- package/lib/heatmap/triangulation.js +0 -5
- package/lib/image/index.js +9 -36
- package/lib/image/models/image.js +66 -109
- package/lib/image/models/index.js +0 -3
- package/lib/index.js +7 -61
- package/lib/line/index.js +9 -40
- package/lib/line/models/arc.js +64 -128
- package/lib/line/models/arc_3d.js +58 -119
- package/lib/line/models/earthArc_3d.js +61 -122
- package/lib/line/models/great_circle.js +56 -111
- package/lib/line/models/half.js +46 -87
- package/lib/line/models/index.js +0 -11
- package/lib/line/models/line.js +92 -156
- package/lib/line/models/linearline.js +45 -92
- package/lib/line/models/simpleLine.js +41 -84
- package/lib/line/models/wall.js +52 -103
- package/lib/mask/index.js +9 -36
- package/lib/mask/models/fill.js +29 -63
- package/lib/mask/models/index.js +0 -3
- package/lib/plugins/DataMappingPlugin.js +80 -128
- package/lib/plugins/DataSourcePlugin.js +45 -76
- package/lib/plugins/FeatureScalePlugin.js +67 -138
- package/lib/plugins/LayerAnimateStylePlugin.js +0 -10
- package/lib/plugins/LayerMaskPlugin.js +4 -17
- package/lib/plugins/LayerModelPlugin.js +68 -113
- package/lib/plugins/LayerStylePlugin.js +4 -14
- package/lib/plugins/LightingPlugin.js +12 -25
- package/lib/plugins/MultiPassRendererPlugin.js +11 -22
- package/lib/plugins/PixelPickingPlugin.js +12 -27
- package/lib/plugins/RegisterStyleAttributePlugin.js +5 -19
- package/lib/plugins/ShaderUniformPlugin.js +13 -34
- package/lib/plugins/UpdateModelPlugin.js +1 -10
- package/lib/plugins/UpdateStyleAttributePlugin.js +5 -16
- package/lib/point/index.js +26 -83
- package/lib/point/models/earthExtrude.js +61 -113
- package/lib/point/models/earthFill.js +57 -117
- package/lib/point/models/extrude.js +60 -111
- package/lib/point/models/fill.js +68 -109
- package/lib/point/models/fillmage.js +61 -115
- package/lib/point/models/image.js +48 -98
- package/lib/point/models/index.js +1 -12
- package/lib/point/models/normal.js +30 -64
- package/lib/point/models/radar.js +40 -74
- package/lib/point/models/simplePoint.js +41 -79
- package/lib/point/models/text.js +214 -303
- package/lib/point/shape/extrude.js +4 -20
- package/lib/polygon/index.js +11 -48
- package/lib/polygon/models/extrude.js +48 -103
- package/lib/polygon/models/fill.js +54 -98
- package/lib/polygon/models/index.js +2 -14
- package/lib/polygon/models/ocean.js +42 -88
- package/lib/polygon/models/water.js +37 -82
- package/lib/raster/buffers/triangulation.js +3 -7
- package/lib/raster/index.js +9 -40
- package/lib/raster/models/index.js +0 -5
- package/lib/raster/models/raster.js +80 -125
- package/lib/raster/models/rasterRgb.js +84 -139
- package/lib/raster/models/rasterTerrainRgb.js +56 -93
- package/lib/tile/interaction/getRasterData.js +14 -25
- package/lib/tile/interaction/utils.js +7 -19
- package/lib/tile/manager/base.js +63 -104
- package/lib/tile/service/TileLayerService.js +30 -57
- package/lib/tile/service/TilePickService.js +26 -48
- package/lib/tile/service/TileSourceService.js +2 -16
- package/lib/tile/style/utils.js +0 -3
- package/lib/tile/tileFactory/DebugTile.js +28 -53
- package/lib/tile/tileFactory/ImageTile.js +20 -46
- package/lib/tile/tileFactory/MaskTile.js +22 -51
- package/lib/tile/tileFactory/RasterRGBTile.js +22 -50
- package/lib/tile/tileFactory/RasterTerrainRGBTile.js +20 -46
- package/lib/tile/tileFactory/RasterTile.js +30 -63
- package/lib/tile/tileFactory/Tile.js +63 -102
- package/lib/tile/tileFactory/VectorTile.js +41 -76
- package/lib/tile/tileFactory/index.js +0 -25
- package/lib/tile/tileFactory/layers/TileDebugLayer.js +6 -32
- package/lib/tile/tileFactory/util.js +0 -9
- package/lib/tile/tileLayer/BaseLayer.js +105 -153
- package/lib/tile/utils.js +1 -5
- package/lib/utils/blend.js +0 -5
- package/lib/utils/collision-index.js +9 -25
- package/lib/utils/dataMappingStyle.js +8 -19
- package/lib/utils/extrude_polyline.js +101 -181
- package/lib/utils/grid-index.js +2 -28
- package/lib/utils/identityScale.js +0 -9
- package/lib/utils/layerData.js +30 -49
- package/lib/utils/multiPassRender.js +11 -16
- package/lib/utils/polylineNormal.js +31 -66
- package/lib/utils/simpleLine.js +2 -21
- package/lib/utils/stencil.js +0 -4
- package/lib/utils/symbol-layout.js +27 -55
- package/lib/wind/index.js +9 -37
- package/lib/wind/models/index.js +0 -3
- package/lib/wind/models/utils.js +26 -62
- package/lib/wind/models/wind.js +101 -157
- package/lib/wind/models/windRender.js +53 -71
- package/lib/wind/models/windShader.js +0 -1
- package/package.json +7 -7
|
@@ -1,65 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
12
|
var _l7Core = require("@antv/l7-core");
|
|
19
|
-
|
|
20
13
|
var _inversify = require("inversify");
|
|
21
|
-
|
|
22
14
|
require("reflect-metadata");
|
|
23
|
-
|
|
24
15
|
var _BaseLayer = _interopRequireDefault(require("../tile/tileLayer/BaseLayer"));
|
|
25
|
-
|
|
26
16
|
var _dec, _class;
|
|
27
|
-
|
|
28
|
-
var LayerModelPlugin = (
|
|
29
17
|
/**
|
|
30
18
|
* Layer Model 初始化,更新,销毁
|
|
31
19
|
*/
|
|
32
|
-
_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
20
|
+
var LayerModelPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
33
21
|
function LayerModelPlugin() {
|
|
34
22
|
(0, _classCallCheck2.default)(this, LayerModelPlugin);
|
|
35
23
|
}
|
|
36
|
-
|
|
37
24
|
(0, _createClass2.default)(LayerModelPlugin, [{
|
|
38
25
|
key: "build",
|
|
39
26
|
value: function () {
|
|
40
27
|
var _build = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(layer) {
|
|
41
28
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
42
|
-
while (1) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
case "end":
|
|
53
|
-
return _context.stop();
|
|
54
|
-
}
|
|
29
|
+
while (1) switch (_context.prev = _context.next) {
|
|
30
|
+
case 0:
|
|
31
|
+
// 更新Model 配置项
|
|
32
|
+
layer.prepareBuildModel();
|
|
33
|
+
// 初始化 Model
|
|
34
|
+
_context.next = 3;
|
|
35
|
+
return layer.buildModels();
|
|
36
|
+
case 3:
|
|
37
|
+
case "end":
|
|
38
|
+
return _context.stop();
|
|
55
39
|
}
|
|
56
40
|
}, _callee);
|
|
57
41
|
}));
|
|
58
|
-
|
|
59
42
|
function build(_x) {
|
|
60
43
|
return _build.apply(this, arguments);
|
|
61
44
|
}
|
|
62
|
-
|
|
63
45
|
return build;
|
|
64
46
|
}()
|
|
65
47
|
}, {
|
|
@@ -67,27 +49,21 @@ _dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
|
67
49
|
value: function () {
|
|
68
50
|
var _initLayerModel = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(layer) {
|
|
69
51
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
70
|
-
while (1) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
case 3:
|
|
80
|
-
case "end":
|
|
81
|
-
return _context2.stop();
|
|
82
|
-
}
|
|
52
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
53
|
+
case 0:
|
|
54
|
+
_context2.next = 2;
|
|
55
|
+
return this.build(layer);
|
|
56
|
+
case 2:
|
|
57
|
+
layer.styleNeedUpdate = false;
|
|
58
|
+
case 3:
|
|
59
|
+
case "end":
|
|
60
|
+
return _context2.stop();
|
|
83
61
|
}
|
|
84
62
|
}, _callee2, this);
|
|
85
63
|
}));
|
|
86
|
-
|
|
87
64
|
function initLayerModel(_x2) {
|
|
88
65
|
return _initLayerModel.apply(this, arguments);
|
|
89
66
|
}
|
|
90
|
-
|
|
91
67
|
return initLayerModel;
|
|
92
68
|
}()
|
|
93
69
|
}, {
|
|
@@ -95,99 +71,78 @@ _dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
|
95
71
|
value: function () {
|
|
96
72
|
var _prepareLayerModel = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(layer) {
|
|
97
73
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
98
|
-
while (1) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
case "end":
|
|
106
|
-
return _context3.stop();
|
|
107
|
-
}
|
|
74
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
75
|
+
case 0:
|
|
76
|
+
_context3.next = 2;
|
|
77
|
+
return this.build(layer);
|
|
78
|
+
case 2:
|
|
79
|
+
case "end":
|
|
80
|
+
return _context3.stop();
|
|
108
81
|
}
|
|
109
82
|
}, _callee3, this);
|
|
110
83
|
}));
|
|
111
|
-
|
|
112
84
|
function prepareLayerModel(_x3) {
|
|
113
85
|
return _prepareLayerModel.apply(this, arguments);
|
|
114
86
|
}
|
|
115
|
-
|
|
116
87
|
return prepareLayerModel;
|
|
117
88
|
}()
|
|
118
89
|
}, {
|
|
119
90
|
key: "apply",
|
|
120
91
|
value: function apply(layer) {
|
|
121
92
|
var _this = this;
|
|
122
|
-
|
|
123
93
|
layer.hooks.init.tapPromise('LayerModelPlugin', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
124
94
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
125
|
-
while (1) {
|
|
126
|
-
|
|
95
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
96
|
+
case 0:
|
|
97
|
+
if (!layer.getSource().isTile) {
|
|
98
|
+
_context4.next = 4;
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
layer.prepareBuildModel();
|
|
102
|
+
layer.tileLayer = new _BaseLayer.default(layer);
|
|
103
|
+
return _context4.abrupt("return");
|
|
104
|
+
case 4:
|
|
105
|
+
layer.log(_l7Core.IDebugLog.BuildModelStart, _l7Core.ILayerStage.INIT);
|
|
106
|
+
_context4.next = 7;
|
|
107
|
+
return _this.initLayerModel(layer);
|
|
108
|
+
case 7:
|
|
109
|
+
layer.log(_l7Core.IDebugLog.BuildModelEnd, _l7Core.ILayerStage.INIT);
|
|
110
|
+
case 8:
|
|
111
|
+
case "end":
|
|
112
|
+
return _context4.stop();
|
|
113
|
+
}
|
|
114
|
+
}, _callee4);
|
|
115
|
+
})));
|
|
116
|
+
layer.hooks.beforeRenderData.tapPromise('LayerModelPlugin', /*#__PURE__*/function () {
|
|
117
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(flag) {
|
|
118
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
119
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
127
120
|
case 0:
|
|
121
|
+
if (flag) {
|
|
122
|
+
_context5.next = 2;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
return _context5.abrupt("return", false);
|
|
126
|
+
case 2:
|
|
128
127
|
if (!layer.getSource().isTile) {
|
|
129
|
-
|
|
128
|
+
_context5.next = 5;
|
|
130
129
|
break;
|
|
131
130
|
}
|
|
132
|
-
|
|
133
|
-
layer.prepareBuildModel();
|
|
134
131
|
layer.tileLayer = new _BaseLayer.default(layer);
|
|
135
|
-
return
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return _this.initLayerModel(layer);
|
|
141
|
-
|
|
142
|
-
case 7:
|
|
143
|
-
layer.log(_l7Core.IDebugLog.BuildModelEnd, _l7Core.ILayerStage.INIT);
|
|
144
|
-
|
|
132
|
+
return _context5.abrupt("return", false);
|
|
133
|
+
case 5:
|
|
134
|
+
layer.log(_l7Core.IDebugLog.BuildModelStart, _l7Core.ILayerStage.UPDATE);
|
|
135
|
+
_context5.next = 8;
|
|
136
|
+
return _this.prepareLayerModel(layer);
|
|
145
137
|
case 8:
|
|
138
|
+
layer.log(_l7Core.IDebugLog.BuildModelEnd, _l7Core.ILayerStage.UPDATE);
|
|
139
|
+
return _context5.abrupt("return", true);
|
|
140
|
+
case 10:
|
|
146
141
|
case "end":
|
|
147
|
-
return
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}, _callee4);
|
|
151
|
-
})));
|
|
152
|
-
layer.hooks.beforeRenderData.tapPromise('LayerModelPlugin', /*#__PURE__*/function () {
|
|
153
|
-
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(flag) {
|
|
154
|
-
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
155
|
-
while (1) {
|
|
156
|
-
switch (_context5.prev = _context5.next) {
|
|
157
|
-
case 0:
|
|
158
|
-
if (flag) {
|
|
159
|
-
_context5.next = 2;
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
return _context5.abrupt("return", false);
|
|
164
|
-
|
|
165
|
-
case 2:
|
|
166
|
-
if (!layer.getSource().isTile) {
|
|
167
|
-
_context5.next = 5;
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
layer.tileLayer = new _BaseLayer.default(layer);
|
|
172
|
-
return _context5.abrupt("return", false);
|
|
173
|
-
|
|
174
|
-
case 5:
|
|
175
|
-
layer.log(_l7Core.IDebugLog.BuildModelStart, _l7Core.ILayerStage.UPDATE);
|
|
176
|
-
_context5.next = 8;
|
|
177
|
-
return _this.prepareLayerModel(layer);
|
|
178
|
-
|
|
179
|
-
case 8:
|
|
180
|
-
layer.log(_l7Core.IDebugLog.BuildModelEnd, _l7Core.ILayerStage.UPDATE);
|
|
181
|
-
return _context5.abrupt("return", true);
|
|
182
|
-
|
|
183
|
-
case 10:
|
|
184
|
-
case "end":
|
|
185
|
-
return _context5.stop();
|
|
186
|
-
}
|
|
142
|
+
return _context5.stop();
|
|
187
143
|
}
|
|
188
144
|
}, _callee5);
|
|
189
145
|
}));
|
|
190
|
-
|
|
191
146
|
return function (_x4) {
|
|
192
147
|
return _ref2.apply(this, arguments);
|
|
193
148
|
};
|
|
@@ -1,40 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _inversify = require("inversify");
|
|
15
|
-
|
|
16
11
|
require("reflect-metadata");
|
|
17
|
-
|
|
18
12
|
var _dec, _class;
|
|
19
|
-
|
|
20
|
-
var LayerStylePlugin = (
|
|
21
13
|
/**
|
|
22
14
|
* 更新图层样式,初始图层相关配置
|
|
23
15
|
*/
|
|
24
|
-
_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
16
|
+
var LayerStylePlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
25
17
|
function LayerStylePlugin() {
|
|
26
18
|
(0, _classCallCheck2.default)(this, LayerStylePlugin);
|
|
27
19
|
}
|
|
28
|
-
|
|
29
20
|
(0, _createClass2.default)(LayerStylePlugin, [{
|
|
30
21
|
key: "apply",
|
|
31
22
|
value: function apply(layer) {
|
|
32
23
|
layer.hooks.afterInit.tap('LayerStylePlugin', function () {
|
|
33
24
|
var _layer$getLayerConfig = layer.getLayerConfig(),
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
autoFit = _layer$getLayerConfig.autoFit,
|
|
26
|
+
fitBoundsOptions = _layer$getLayerConfig.fitBoundsOptions;
|
|
27
|
+
// mask 初始化
|
|
38
28
|
if (autoFit) {
|
|
39
29
|
layer.fitBounds(fitBoundsOptions);
|
|
40
30
|
}
|
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
8
|
exports.generateLightingUniforms = generateLightingUniforms;
|
|
10
|
-
|
|
11
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
-
|
|
13
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
-
|
|
15
11
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
16
|
-
|
|
17
12
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
18
|
-
|
|
19
13
|
var _inversify = require("inversify");
|
|
20
|
-
|
|
21
14
|
require("reflect-metadata");
|
|
22
|
-
|
|
23
15
|
var _dec, _class;
|
|
24
|
-
|
|
25
16
|
var _excluded = ["type"];
|
|
26
17
|
var lightTypeUniformMap = {
|
|
27
18
|
directional: {
|
|
@@ -59,7 +50,6 @@ var DEFAULT_SPOT_LIGHT = {
|
|
|
59
50
|
exponent: 40,
|
|
60
51
|
blur: 5
|
|
61
52
|
};
|
|
62
|
-
|
|
63
53
|
function generateLightingUniforms(lights) {
|
|
64
54
|
var lightsMap = {
|
|
65
55
|
u_DirectionalLights: new Array(3).fill((0, _objectSpread2.default)({}, DEFAULT_DIRECTIONAL_LIGHT)),
|
|
@@ -67,46 +57,43 @@ function generateLightingUniforms(lights) {
|
|
|
67
57
|
u_SpotLights: new Array(3).fill((0, _objectSpread2.default)({}, DEFAULT_SPOT_LIGHT)),
|
|
68
58
|
u_NumOfSpotLights: 0
|
|
69
59
|
};
|
|
70
|
-
|
|
71
60
|
if (!lights || !lights.length) {
|
|
72
61
|
lights = [DEFAULT_LIGHT];
|
|
73
62
|
}
|
|
74
|
-
|
|
75
63
|
lights.forEach(function (_ref) {
|
|
76
64
|
var _ref$type = _ref.type,
|
|
77
|
-
|
|
78
|
-
|
|
65
|
+
type = _ref$type === void 0 ? 'directional' : _ref$type,
|
|
66
|
+
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
79
67
|
var lightsUniformName = lightTypeUniformMap[type].lights;
|
|
80
|
-
var lightsNumUniformName = lightTypeUniformMap[type].num;
|
|
81
|
-
|
|
82
|
-
var num = lightsMap[lightsNumUniformName]; // @ts-ignore
|
|
83
|
-
|
|
84
|
-
lightsMap[lightsUniformName][num] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, lightsMap[lightsUniformName][num]), rest); // @ts-ignore
|
|
68
|
+
var lightsNumUniformName = lightTypeUniformMap[type].num;
|
|
85
69
|
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
var num = lightsMap[lightsNumUniformName];
|
|
72
|
+
// @ts-ignore
|
|
73
|
+
lightsMap[lightsUniformName][num] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, lightsMap[lightsUniformName][num]), rest);
|
|
74
|
+
// @ts-ignore
|
|
86
75
|
lightsMap[lightsNumUniformName]++;
|
|
87
76
|
});
|
|
88
77
|
return lightsMap;
|
|
89
78
|
}
|
|
79
|
+
|
|
90
80
|
/**
|
|
91
81
|
* 光照 & Shadow
|
|
92
82
|
*/
|
|
93
|
-
|
|
94
|
-
|
|
95
83
|
var LightingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
96
84
|
function LightingPlugin() {
|
|
97
85
|
(0, _classCallCheck2.default)(this, LightingPlugin);
|
|
98
86
|
}
|
|
99
|
-
|
|
100
87
|
(0, _createClass2.default)(LightingPlugin, [{
|
|
101
88
|
key: "apply",
|
|
102
89
|
value: function apply(layer) {
|
|
103
90
|
layer.hooks.beforeRender.tap('LightingPlugin', function () {
|
|
104
91
|
var _layer$getLayerConfig = layer.getLayerConfig(),
|
|
105
|
-
|
|
106
|
-
|
|
92
|
+
enableLighting = _layer$getLayerConfig.enableLighting;
|
|
107
93
|
if (enableLighting) {
|
|
108
94
|
layer.models.forEach(function (model) {
|
|
109
|
-
return (
|
|
95
|
+
return (
|
|
96
|
+
// @ts-ignore
|
|
110
97
|
model.addUniforms((0, _objectSpread2.default)({}, generateLightingUniforms()))
|
|
111
98
|
);
|
|
112
99
|
});
|
|
@@ -1,25 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _inversify = require("inversify");
|
|
15
|
-
|
|
16
11
|
require("reflect-metadata");
|
|
17
|
-
|
|
18
12
|
var _multiPassRender = require("../utils/multiPassRender");
|
|
19
|
-
|
|
20
13
|
var _dec, _class;
|
|
21
|
-
|
|
22
|
-
var MultiPassRendererPlugin = (
|
|
23
14
|
/**
|
|
24
15
|
* 自定义渲染管线:
|
|
25
16
|
* ClearPass -> PixelPickingPass(可选) -> RenderPass/TAAPass -> PostProcessing -> CopyPass
|
|
@@ -33,28 +24,27 @@ var MultiPassRendererPlugin = (
|
|
|
33
24
|
* ],
|
|
34
25
|
* })
|
|
35
26
|
*/
|
|
36
|
-
_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
27
|
+
var MultiPassRendererPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
37
28
|
function MultiPassRendererPlugin() {
|
|
38
29
|
(0, _classCallCheck2.default)(this, MultiPassRendererPlugin);
|
|
39
30
|
}
|
|
40
|
-
|
|
41
31
|
(0, _createClass2.default)(MultiPassRendererPlugin, [{
|
|
42
32
|
key: "apply",
|
|
43
33
|
value: function apply(layer, _ref) {
|
|
44
34
|
var _this = this;
|
|
45
|
-
|
|
46
35
|
var rendererService = _ref.rendererService,
|
|
47
|
-
|
|
48
|
-
|
|
36
|
+
postProcessingPassFactory = _ref.postProcessingPassFactory,
|
|
37
|
+
normalPassFactory = _ref.normalPassFactory;
|
|
49
38
|
layer.hooks.init.tapPromise('MultiPassRendererPlugin', function () {
|
|
50
39
|
var _layer$getLayerConfig = layer.getLayerConfig(),
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
40
|
+
enableMultiPassRenderer = _layer$getLayerConfig.enableMultiPassRenderer,
|
|
41
|
+
_layer$getLayerConfig2 = _layer$getLayerConfig.passes,
|
|
42
|
+
passes = _layer$getLayerConfig2 === void 0 ? [] : _layer$getLayerConfig2;
|
|
55
43
|
|
|
56
|
-
|
|
44
|
+
// SceneConfig 的 enableMultiPassRenderer 配置项可以统一关闭
|
|
45
|
+
_this.enabled = !!enableMultiPassRenderer && layer.getLayerConfig().enableMultiPassRenderer !== false;
|
|
57
46
|
|
|
47
|
+
// 根据 LayerConfig passes 配置项初始化
|
|
58
48
|
if (_this.enabled) {
|
|
59
49
|
layer.multiPassRenderer = (0, _multiPassRender.createMultiPassRenderer)(layer, passes, postProcessingPassFactory, normalPassFactory);
|
|
60
50
|
layer.multiPassRenderer.setRenderFlag(true);
|
|
@@ -64,9 +54,8 @@ _dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
|
64
54
|
if (_this.enabled) {
|
|
65
55
|
// 渲染前根据 viewport 调整 FBO size
|
|
66
56
|
var _rendererService$getV = rendererService.getViewportSize(),
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
57
|
+
width = _rendererService$getV.width,
|
|
58
|
+
height = _rendererService$getV.height;
|
|
70
59
|
layer.multiPassRenderer.resize(width, height);
|
|
71
60
|
}
|
|
72
61
|
});
|
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _l7Core = require("@antv/l7-core");
|
|
15
|
-
|
|
16
11
|
var _l7Utils = require("@antv/l7-utils");
|
|
17
|
-
|
|
18
12
|
var _inversify = require("inversify");
|
|
19
|
-
|
|
20
13
|
require("reflect-metadata");
|
|
21
|
-
|
|
22
14
|
var _dec, _class;
|
|
23
|
-
|
|
24
15
|
var PickingStage = {
|
|
25
16
|
NONE: 0.0,
|
|
26
17
|
ENCODE: 1.0,
|
|
@@ -30,7 +21,6 @@ var PixelPickingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#
|
|
|
30
21
|
function PixelPickingPlugin() {
|
|
31
22
|
(0, _classCallCheck2.default)(this, PixelPickingPlugin);
|
|
32
23
|
}
|
|
33
|
-
|
|
34
24
|
(0, _createClass2.default)(PixelPickingPlugin, [{
|
|
35
25
|
key: "apply",
|
|
36
26
|
value: function apply(layer, _ref) {
|
|
@@ -38,8 +28,7 @@ var PixelPickingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#
|
|
|
38
28
|
// TODO: 由于 Shader 目前无法根据是否开启拾取进行内容修改,因此即使不开启也需要生成 a_PickingColor
|
|
39
29
|
layer.hooks.init.tapPromise('PixelPickingPlugin', function () {
|
|
40
30
|
var _layer$getLayerConfig = layer.getLayerConfig(),
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
enablePicking = _layer$getLayerConfig.enablePicking;
|
|
43
32
|
styleAttributeService.registerStyleAttribute({
|
|
44
33
|
name: 'pickingColor',
|
|
45
34
|
type: _l7Core.AttributeType.Attribute,
|
|
@@ -58,12 +47,11 @@ var PixelPickingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#
|
|
|
58
47
|
}
|
|
59
48
|
}
|
|
60
49
|
});
|
|
61
|
-
});
|
|
62
|
-
|
|
50
|
+
});
|
|
51
|
+
// 必须要与 PixelPickingPass 结合使用,因此必须开启 multiPassRenderer
|
|
63
52
|
layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', function () {
|
|
64
53
|
var _layer$getLayerConfig2 = layer.getLayerConfig(),
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
enablePicking = _layer$getLayerConfig2.enablePicking;
|
|
67
55
|
if (enablePicking && layer.isVisible()) {
|
|
68
56
|
layer.models.forEach(function (model) {
|
|
69
57
|
return model.addUniforms({
|
|
@@ -74,9 +62,8 @@ var PixelPickingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#
|
|
|
74
62
|
});
|
|
75
63
|
layer.hooks.afterPickingEncode.tap('PixelPickingPlugin', function () {
|
|
76
64
|
var _layer$getLayerConfig3 = layer.getLayerConfig(),
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
65
|
+
enablePicking = _layer$getLayerConfig3.enablePicking;
|
|
66
|
+
// 区分选中高亮 和滑过高亮
|
|
80
67
|
if (enablePicking && layer.isVisible()) {
|
|
81
68
|
layer.models.forEach(function (model) {
|
|
82
69
|
return model.addUniforms({
|
|
@@ -87,10 +74,9 @@ var PixelPickingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#
|
|
|
87
74
|
});
|
|
88
75
|
layer.hooks.beforeHighlight.tap('PixelPickingPlugin', function (pickedColor) {
|
|
89
76
|
var _layer$getLayerConfig4 = layer.getLayerConfig(),
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
77
|
+
highlightColor = _layer$getLayerConfig4.highlightColor,
|
|
78
|
+
_layer$getLayerConfig5 = _layer$getLayerConfig4.activeMix,
|
|
79
|
+
activeMix = _layer$getLayerConfig5 === void 0 ? 0 : _layer$getLayerConfig5;
|
|
94
80
|
var highlightColorInArray = typeof highlightColor === 'string' ? (0, _l7Utils.rgb2arr)(highlightColor) : highlightColor || [1, 0, 0, 1];
|
|
95
81
|
layer.updateLayerConfig({
|
|
96
82
|
pickedFeatureID: (0, _l7Utils.decodePickingColor)(new Uint8Array(pickedColor))
|
|
@@ -108,10 +94,9 @@ var PixelPickingPlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#
|
|
|
108
94
|
});
|
|
109
95
|
layer.hooks.beforeSelect.tap('PixelPickingPlugin', function (pickedColor) {
|
|
110
96
|
var _layer$getLayerConfig6 = layer.getLayerConfig(),
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
97
|
+
selectColor = _layer$getLayerConfig6.selectColor,
|
|
98
|
+
_layer$getLayerConfig7 = _layer$getLayerConfig6.selectMix,
|
|
99
|
+
selectMix = _layer$getLayerConfig7 === void 0 ? 0 : _layer$getLayerConfig7;
|
|
115
100
|
var highlightColorInArray = typeof selectColor === 'string' ? (0, _l7Utils.rgb2arr)(selectColor) : selectColor || [1, 0, 0, 1];
|
|
116
101
|
layer.updateLayerConfig({
|
|
117
102
|
pickedFeatureID: (0, _l7Utils.decodePickingColor)(new Uint8Array(pickedColor))
|
|
@@ -1,47 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _l7Core = require("@antv/l7-core");
|
|
15
|
-
|
|
16
11
|
var _inversify = require("inversify");
|
|
17
|
-
|
|
18
12
|
require("reflect-metadata");
|
|
19
|
-
|
|
20
13
|
var _utils = require("../tile/utils");
|
|
21
|
-
|
|
22
14
|
var _dec, _class;
|
|
23
|
-
|
|
24
|
-
var RegisterStyleAttributePlugin = (
|
|
25
15
|
/**
|
|
26
16
|
* 在初始化阶段完成属性的注册,以及首次根据 Layer 指定的三角化方法完成 indices 和 attribute 的创建
|
|
27
17
|
*/
|
|
28
|
-
_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
18
|
+
var RegisterStyleAttributePlugin = (_dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
29
19
|
function RegisterStyleAttributePlugin() {
|
|
30
20
|
(0, _classCallCheck2.default)(this, RegisterStyleAttributePlugin);
|
|
31
21
|
}
|
|
32
|
-
|
|
33
22
|
(0, _createClass2.default)(RegisterStyleAttributePlugin, [{
|
|
34
23
|
key: "apply",
|
|
35
24
|
value: function apply(layer, _ref) {
|
|
36
25
|
var _this = this;
|
|
37
|
-
|
|
38
26
|
var styleAttributeService = _ref.styleAttributeService;
|
|
39
27
|
layer.hooks.init.tapPromise('RegisterStyleAttributePlugin', function () {
|
|
40
28
|
// 过滤 tileGroup layer (瓦片图层不需要注册)
|
|
41
29
|
if ((0, _utils.isTileGroup)(layer)) {
|
|
42
30
|
return;
|
|
43
31
|
}
|
|
44
|
-
|
|
45
32
|
_this.registerBuiltinAttributes(styleAttributeService, layer);
|
|
46
33
|
});
|
|
47
34
|
}
|
|
@@ -52,11 +39,10 @@ _dec = (0, _inversify.injectable)(), _dec(_class = /*#__PURE__*/function () {
|
|
|
52
39
|
if (layer.type === 'MaskLayer') {
|
|
53
40
|
this.registerPositionAttribute(styleAttributeService);
|
|
54
41
|
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
42
|
+
}
|
|
43
|
+
// Tip: normal render layer
|
|
44
|
+
this.registerPositionAttribute(styleAttributeService);
|
|
45
|
+
// this.registerFilterAttribute(styleAttributeService);//数据层数据过滤
|
|
60
46
|
this.registerColorAttribute(styleAttributeService);
|
|
61
47
|
this.registerVertexIdAttribute(styleAttributeService);
|
|
62
48
|
}
|