@antv/l7-layers 2.7.1 → 2.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/es/core/BaseLayer.d.ts +5 -0
  2. package/es/core/BaseLayer.js +75 -5
  3. package/es/core/BaseLayer.js.map +1 -1
  4. package/es/core/interface.d.ts +60 -1
  5. package/es/core/interface.js.map +1 -1
  6. package/es/heatmap/index.d.ts +1 -4
  7. package/es/heatmap/index.js.map +1 -1
  8. package/es/heatmap/models/grid.js +9 -1
  9. package/es/heatmap/models/grid.js.map +1 -1
  10. package/es/heatmap/models/grid3d.js +9 -1
  11. package/es/heatmap/models/grid3d.js.map +1 -1
  12. package/es/heatmap/models/heatmap.js +29 -15
  13. package/es/heatmap/models/heatmap.js.map +1 -1
  14. package/es/heatmap/models/hexagon.js +9 -1
  15. package/es/heatmap/models/hexagon.js.map +1 -1
  16. package/es/image/index.d.ts +1 -4
  17. package/es/image/index.js.map +1 -1
  18. package/es/image/models/image.d.ts +3 -3
  19. package/es/image/models/image.js +9 -2
  20. package/es/image/models/image.js.map +1 -1
  21. package/es/index.d.ts +2 -1
  22. package/es/index.js +2 -1
  23. package/es/index.js.map +1 -1
  24. package/es/line/models/arc.js +8 -3
  25. package/es/line/models/arc.js.map +1 -1
  26. package/es/line/models/arc_3d.js +8 -3
  27. package/es/line/models/arc_3d.js.map +1 -1
  28. package/es/line/models/great_circle.js +13 -6
  29. package/es/line/models/great_circle.js.map +1 -1
  30. package/es/line/models/line.js +12 -5
  31. package/es/line/models/line.js.map +1 -1
  32. package/es/line/models/simpleLine.js +9 -2
  33. package/es/line/models/simpleLine.js.map +1 -1
  34. package/es/mask/index.d.ts +21 -0
  35. package/es/mask/index.js +73 -0
  36. package/es/mask/index.js.map +1 -0
  37. package/es/mask/models/fill.d.ts +11 -0
  38. package/es/mask/models/fill.js +92 -0
  39. package/es/mask/models/fill.js.map +1 -0
  40. package/es/mask/models/index.d.ts +5 -0
  41. package/es/mask/models/index.js +6 -0
  42. package/es/mask/models/index.js.map +1 -0
  43. package/es/plugins/DataSourcePlugin.js +2 -2
  44. package/es/plugins/DataSourcePlugin.js.map +1 -1
  45. package/es/plugins/MultiPassRendererPlugin.js +22 -3
  46. package/es/plugins/MultiPassRendererPlugin.js.map +1 -1
  47. package/es/plugins/PixelPickingPlugin.js +16 -18
  48. package/es/plugins/PixelPickingPlugin.js.map +1 -1
  49. package/es/point/index.d.ts +1 -6
  50. package/es/point/index.js.map +1 -1
  51. package/es/point/models/fill.js +9 -1
  52. package/es/point/models/fill.js.map +1 -1
  53. package/es/point/models/image.js +12 -4
  54. package/es/point/models/image.js.map +1 -1
  55. package/es/point/models/index.js.map +1 -1
  56. package/es/point/models/normal.d.ts +2 -6
  57. package/es/point/models/normal.js +9 -1
  58. package/es/point/models/normal.js.map +1 -1
  59. package/es/point/models/simplePoint.d.ts +2 -10
  60. package/es/point/models/simplePoint.js +9 -1
  61. package/es/point/models/simplePoint.js.map +1 -1
  62. package/es/point/models/text.js +60 -46
  63. package/es/point/models/text.js.map +1 -1
  64. package/es/polygon/index.d.ts +1 -4
  65. package/es/polygon/index.js.map +1 -1
  66. package/es/polygon/models/extrude.js +8 -2
  67. package/es/polygon/models/extrude.js.map +1 -1
  68. package/es/polygon/models/fill.js +8 -2
  69. package/es/polygon/models/fill.js.map +1 -1
  70. package/es/raster/index.d.ts +1 -10
  71. package/es/raster/index.js.map +1 -1
  72. package/es/raster/models/raster.d.ts +3 -3
  73. package/es/raster/models/raster.js +13 -6
  74. package/es/raster/models/raster.js.map +1 -1
  75. package/lib/core/BaseLayer.js +76 -5
  76. package/lib/core/BaseLayer.js.map +1 -1
  77. package/lib/core/interface.js.map +1 -1
  78. package/lib/heatmap/index.js.map +1 -1
  79. package/lib/heatmap/models/grid.js +10 -1
  80. package/lib/heatmap/models/grid.js.map +1 -1
  81. package/lib/heatmap/models/grid3d.js +10 -1
  82. package/lib/heatmap/models/grid3d.js.map +1 -1
  83. package/lib/heatmap/models/heatmap.js +28 -14
  84. package/lib/heatmap/models/heatmap.js.map +1 -1
  85. package/lib/heatmap/models/hexagon.js +10 -1
  86. package/lib/heatmap/models/hexagon.js.map +1 -1
  87. package/lib/image/index.js.map +1 -1
  88. package/lib/image/models/image.js +8 -1
  89. package/lib/image/models/image.js.map +1 -1
  90. package/lib/index.js +8 -0
  91. package/lib/index.js.map +1 -1
  92. package/lib/line/models/arc.js +7 -2
  93. package/lib/line/models/arc.js.map +1 -1
  94. package/lib/line/models/arc_3d.js +7 -2
  95. package/lib/line/models/arc_3d.js.map +1 -1
  96. package/lib/line/models/great_circle.js +12 -5
  97. package/lib/line/models/great_circle.js.map +1 -1
  98. package/lib/line/models/line.js +11 -4
  99. package/lib/line/models/line.js.map +1 -1
  100. package/lib/line/models/simpleLine.js +8 -1
  101. package/lib/line/models/simpleLine.js.map +1 -1
  102. package/lib/mask/index.js +86 -0
  103. package/lib/mask/index.js.map +1 -0
  104. package/lib/mask/models/fill.js +107 -0
  105. package/lib/mask/models/fill.js.map +1 -0
  106. package/lib/mask/models/index.js +17 -0
  107. package/lib/mask/models/index.js.map +1 -0
  108. package/lib/plugins/DataSourcePlugin.js +2 -2
  109. package/lib/plugins/DataSourcePlugin.js.map +1 -1
  110. package/lib/plugins/MultiPassRendererPlugin.js +23 -3
  111. package/lib/plugins/MultiPassRendererPlugin.js.map +1 -1
  112. package/lib/plugins/PixelPickingPlugin.js +16 -18
  113. package/lib/plugins/PixelPickingPlugin.js.map +1 -1
  114. package/lib/point/index.js.map +1 -1
  115. package/lib/point/models/fill.js +10 -1
  116. package/lib/point/models/fill.js.map +1 -1
  117. package/lib/point/models/image.js +13 -4
  118. package/lib/point/models/image.js.map +1 -1
  119. package/lib/point/models/index.js.map +1 -1
  120. package/lib/point/models/normal.js +10 -1
  121. package/lib/point/models/normal.js.map +1 -1
  122. package/lib/point/models/simplePoint.js +10 -1
  123. package/lib/point/models/simplePoint.js.map +1 -1
  124. package/lib/point/models/text.js +59 -45
  125. package/lib/point/models/text.js.map +1 -1
  126. package/lib/polygon/index.js.map +1 -1
  127. package/lib/polygon/models/extrude.js +9 -2
  128. package/lib/polygon/models/extrude.js.map +1 -1
  129. package/lib/polygon/models/fill.js +9 -2
  130. package/lib/polygon/models/fill.js.map +1 -1
  131. package/lib/raster/index.js.map +1 -1
  132. package/lib/raster/models/raster.js +12 -5
  133. package/lib/raster/models/raster.js.map +1 -1
  134. package/package.json +5 -5
@@ -0,0 +1,21 @@
1
+ import BaseLayer from '../core/BaseLayer';
2
+ import { MaskModelType } from './models';
3
+ interface IMaskLayerStyleOptions {
4
+ opacity: number;
5
+ }
6
+ export default class MaskLayer extends BaseLayer<IMaskLayerStyleOptions> {
7
+ type: string;
8
+ buildModels(): void;
9
+ rebuildModels(): void;
10
+ protected getConfigSchema(): {
11
+ properties: {
12
+ opacity: {
13
+ type: string;
14
+ minimum: number;
15
+ maximum: number;
16
+ };
17
+ };
18
+ };
19
+ protected getModelType(): MaskModelType;
20
+ }
21
+ export {};
@@ -0,0 +1,73 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
+ import _inherits from "@babel/runtime/helpers/inherits";
5
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+
9
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10
+
11
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
+
13
+ import BaseLayer from '../core/BaseLayer';
14
+ import MaskModels from './models';
15
+
16
+ var MaskLayer = function (_BaseLayer) {
17
+ _inherits(MaskLayer, _BaseLayer);
18
+
19
+ var _super = _createSuper(MaskLayer);
20
+
21
+ function MaskLayer() {
22
+ var _this;
23
+
24
+ _classCallCheck(this, MaskLayer);
25
+
26
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
27
+ args[_key] = arguments[_key];
28
+ }
29
+
30
+ _this = _super.call.apply(_super, [this].concat(args));
31
+
32
+ _defineProperty(_assertThisInitialized(_this), "type", 'MaskLayer');
33
+
34
+ return _this;
35
+ }
36
+
37
+ _createClass(MaskLayer, [{
38
+ key: "buildModels",
39
+ value: function buildModels() {
40
+ var shape = this.getModelType();
41
+ this.layerModel = new MaskModels[shape](this);
42
+ this.models = this.layerModel.initModels();
43
+ }
44
+ }, {
45
+ key: "rebuildModels",
46
+ value: function rebuildModels() {
47
+ this.models = this.layerModel.buildModels();
48
+ }
49
+ }, {
50
+ key: "getConfigSchema",
51
+ value: function getConfigSchema() {
52
+ return {
53
+ properties: {
54
+ opacity: {
55
+ type: 'number',
56
+ minimum: 0,
57
+ maximum: 1
58
+ }
59
+ }
60
+ };
61
+ }
62
+ }, {
63
+ key: "getModelType",
64
+ value: function getModelType() {
65
+ return 'fill';
66
+ }
67
+ }]);
68
+
69
+ return MaskLayer;
70
+ }(BaseLayer);
71
+
72
+ export { MaskLayer as default };
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mask/index.ts"],"names":["BaseLayer","MaskModels","MaskLayer","shape","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AACA,OAAOC,UAAP,MAA0C,UAA1C;;IAMqBC,S;;;;;;;;;;;;;;;;2DACG,W;;;;;;;WACtB,uBAAqB;AACnB,UAAMC,KAAK,GAAG,KAAKC,YAAL,EAAd;AACA,WAAKC,UAAL,GAAkB,IAAIJ,UAAU,CAACE,KAAD,CAAd,CAAsB,IAAtB,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WAED,wBAAwC;AACtC,aAAO,MAAP;AACD;;;;EAxBoCb,S;;SAAlBE,S","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport MaskModels, { MaskModelType } from './models';\n\ninterface IMaskLayerStyleOptions {\n opacity: number;\n}\n\nexport default class MaskLayer extends BaseLayer<IMaskLayerStyleOptions> {\n public type: string = 'MaskLayer';\n public buildModels() {\n const shape = this.getModelType();\n this.layerModel = new MaskModels[shape](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected getModelType(): MaskModelType {\n return 'fill';\n }\n}\n"],"file":"index.js"}
@@ -0,0 +1,11 @@
1
+ import { IModel } from '@antv/l7-core';
2
+ import BaseModel from '../../core/BaseModel';
3
+ export default class MaskModel extends BaseModel {
4
+ getUninforms(): {
5
+ u_opacity: number;
6
+ };
7
+ initModels(): IModel[];
8
+ buildModels(): IModel[];
9
+ clearModels(): void;
10
+ protected registerBuiltinAttributes(): string;
11
+ }
@@ -0,0 +1,92 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _inherits from "@babel/runtime/helpers/inherits";
4
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
6
+ import _isNumber from "lodash/isNumber";
7
+
8
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
9
+
10
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
11
+
12
+ import { gl } from '@antv/l7-core';
13
+ import BaseModel from '../../core/BaseModel';
14
+ import { polygonTriangulation } from '../../core/triangulation';
15
+ var mask_frag = "uniform float u_opacity;\nvarying vec4 v_Color;\n\nvoid main() {\n gl_FragColor = v_Color;\n gl_FragColor.a *= u_opacity;\n}\n";
16
+ var mask_vert = "attribute vec4 a_Color;\nattribute vec3 a_Position;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\n\n#pragma include \"projection\"\n\nvoid main() {\n\n v_Color = a_Color;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n}\n\n";
17
+
18
+ var MaskModel = function (_BaseModel) {
19
+ _inherits(MaskModel, _BaseModel);
20
+
21
+ var _super = _createSuper(MaskModel);
22
+
23
+ function MaskModel() {
24
+ _classCallCheck(this, MaskModel);
25
+
26
+ return _super.apply(this, arguments);
27
+ }
28
+
29
+ _createClass(MaskModel, [{
30
+ key: "getUninforms",
31
+ value: function getUninforms() {
32
+ var _ref = this.layer.getLayerConfig(),
33
+ _ref$opacity = _ref.opacity,
34
+ opacity = _ref$opacity === void 0 ? 0 : _ref$opacity;
35
+
36
+ return {
37
+ u_opacity: _isNumber(opacity) ? opacity : 0.0
38
+ };
39
+ }
40
+ }, {
41
+ key: "initModels",
42
+ value: function initModels() {
43
+ this.layer.zIndex = -1000;
44
+ return this.buildModels();
45
+ }
46
+ }, {
47
+ key: "buildModels",
48
+ value: function buildModels() {
49
+ return [this.layer.buildLayerModel({
50
+ moduleName: 'mask',
51
+ vertexShader: mask_vert,
52
+ fragmentShader: mask_frag,
53
+ triangulation: polygonTriangulation,
54
+ blend: this.getBlend(),
55
+ depth: {
56
+ enable: false
57
+ },
58
+ stencil: {
59
+ enable: true,
60
+ mask: 0xff,
61
+ func: {
62
+ cmp: gl.ALWAYS,
63
+ ref: 1,
64
+ mask: 0xff
65
+ },
66
+ opFront: {
67
+ fail: gl.REPLACE,
68
+ zfail: gl.REPLACE,
69
+ zpass: gl.REPLACE
70
+ }
71
+ }
72
+ })];
73
+ }
74
+ }, {
75
+ key: "clearModels",
76
+ value: function clearModels() {
77
+ var _this$dataTexture;
78
+
79
+ (_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
80
+ }
81
+ }, {
82
+ key: "registerBuiltinAttributes",
83
+ value: function registerBuiltinAttributes() {
84
+ return '';
85
+ }
86
+ }]);
87
+
88
+ return MaskModel;
89
+ }(BaseModel);
90
+
91
+ export { MaskModel as default };
92
+ //# sourceMappingURL=fill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mask/models/fill.ts"],"names":["gl","BaseModel","polygonTriangulation","MaskModel","layer","getLayerConfig","opacity","u_opacity","zIndex","buildModels","buildLayerModel","moduleName","vertexShader","mask_vert","fragmentShader","mask_frag","triangulation","blend","getBlend","depth","enable","stencil","mask","func","cmp","ALWAYS","ref","opFront","fail","REPLACE","zfail","zpass","dataTexture","destroy"],"mappings":";;;;;;;;;;;AAAA,SAASA,EAAT,QAA2B,eAA3B;AAEA,OAAOC,SAAP,MAAuC,sBAAvC;AACA,SAASC,oBAAT,QAAqC,0BAArC;;;;IAMqBC,S;;;;;;;;;;;;;WACnB,wBAAsB;AACpB,iBAAwB,KAAKC,KAAL,CAAWC,cAAX,EAAxB;AAAA,8BAAQC,OAAR;AAAA,UAAQA,OAAR,6BAAkB,CAAlB;;AACA,aAAO;AACLC,QAAAA,SAAS,EAAE,UAASD,OAAT,IAAoBA,OAApB,GAA8B;AADpC,OAAP;AAGD;;;WAED,sBAA8B;AAE5B,WAAKF,KAAL,CAAWI,MAAX,GAAoB,CAAC,IAArB;AACA,aAAO,KAAKC,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,aAAO,CACL,KAAKL,KAAL,CAAWM,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,MADa;AAEzBC,QAAAA,YAAY,EAAEC,SAFW;AAGzBC,QAAAA,cAAc,EAAEC,SAHS;AAIzBC,QAAAA,aAAa,EAAEd,oBAJU;AAKzBe,QAAAA,KAAK,EAAE,KAAKC,QAAL,EALkB;AAMzBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SANkB;AAQzBC,QAAAA,OAAO,EAAE;AACPD,UAAAA,MAAM,EAAE,IADD;AAEPE,UAAAA,IAAI,EAAE,IAFC;AAGPC,UAAAA,IAAI,EAAE;AACJC,YAAAA,GAAG,EAAExB,EAAE,CAACyB,MADJ;AAEJC,YAAAA,GAAG,EAAE,CAFD;AAGJJ,YAAAA,IAAI,EAAE;AAHF,WAHC;AAQPK,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE5B,EAAE,CAAC6B,OADF;AAEPC,YAAAA,KAAK,EAAE9B,EAAE,CAAC6B,OAFH;AAGPE,YAAAA,KAAK,EAAE/B,EAAE,CAAC6B;AAHH;AARF;AARgB,OAA3B,CADK,CAAP;AAyBD;;;WAED,uBAAqB;AAAA;;AACnB,gCAAKG,WAAL,wEAAkBC,OAAlB;AACD;;;WAED,qCAAsC;AACpC,aAAO,EAAP;AACD;;;;EAhDoChC,S;;SAAlBE,S","sourcesContent":["import { gl, IModel } from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleSingle } from '../../core/BaseModel';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport mask_frag from '../shaders/mask_frag.glsl';\nimport mask_vert from '../shaders/mask_vert.glsl';\ninterface IMaskStyleOptions {\n opacity: styleSingle;\n}\nexport default class MaskModel extends BaseModel {\n public getUninforms() {\n const { opacity = 0 } = this.layer.getLayerConfig() as IMaskStyleOptions;\n return {\n u_opacity: isNumber(opacity) ? opacity : 0.0,\n };\n }\n\n public initModels(): IModel[] {\n // TODO: 瓦片组件默认在最下层\n this.layer.zIndex = -1000;\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'mask',\n vertexShader: mask_vert,\n fragmentShader: mask_frag,\n triangulation: polygonTriangulation,\n blend: this.getBlend(),\n depth: { enable: false },\n\n stencil: {\n enable: true,\n mask: 0xff,\n func: {\n cmp: gl.ALWAYS,\n ref: 1,\n mask: 0xff,\n },\n opFront: {\n fail: gl.REPLACE,\n zfail: gl.REPLACE,\n zpass: gl.REPLACE,\n },\n },\n }),\n ];\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n return '';\n }\n}\n"],"file":"fill.js"}
@@ -0,0 +1,5 @@
1
+ export declare type MaskModelType = 'fill';
2
+ declare const MaskModels: {
3
+ [key in MaskModelType]: any;
4
+ };
5
+ export default MaskModels;
@@ -0,0 +1,6 @@
1
+ import FillModel from './fill';
2
+ var MaskModels = {
3
+ fill: FillModel
4
+ };
5
+ export default MaskModels;
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/mask/models/index.ts"],"names":["FillModel","MaskModels","fill"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,QAAtB;AAIA,IAAMC,UAA2C,GAAG;AAClDC,EAAAA,IAAI,EAAEF;AAD4C,CAApD;AAGA,eAAeC,UAAf","sourcesContent":["import FillModel from './fill';\n\nexport type MaskModelType = 'fill';\n\nconst MaskModels: { [key in MaskModelType]: any } = {\n fill: FillModel,\n};\nexport default MaskModels;\n"],"file":"index.js"}
@@ -58,9 +58,9 @@ var DataSourcePlugin = (_dec = injectable(), _dec(_class = function () {
58
58
  var newZoom = this.mapService.getZoom() - 1;
59
59
  var dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;
60
60
 
61
- if (cluster && (dataSourceNeedUpdate || Math.abs(layer.clusterZoom - newZoom) >= 1) && maxZoom > layer.clusterZoom) {
61
+ if (cluster && (dataSourceNeedUpdate || Math.abs(layer.clusterZoom - newZoom) >= 1)) {
62
62
  if (zoom !== Math.floor(newZoom)) {
63
- source.updateClusterData(Math.round(newZoom));
63
+ source.updateClusterData(Math.floor(newZoom));
64
64
  }
65
65
 
66
66
  layer.clusterZoom = newZoom;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/DataSourcePlugin.ts"],"names":["TYPES","Source","DEFAULT_DATA","DEFAULT_PARSER","injectable","DataSourcePlugin","layer","mapService","getContainer","get","IMapService","hooks","init","tap","source","getSource","sourceOption","data","options","setSource","updateClusterData","beforeRenderData","neeUpdateCluster","dataSourceNeedUpdate","dataState","cluster","clusterOptions","zoom","maxZoom","newZoom","getZoom","Math","abs","clusterZoom","floor","round"],"mappings":";;;;;;AAAA,SAKEA,KALF,QAMO,eANP;AAOA,OAAOC,MAAP,IAAiBC,YAAjB,EAA+BC,cAA/B,QAAqD,iBAArD;AACA,SAASC,UAAT,QAA2B,WAA3B;AACA,OAAO,kBAAP;IAGqBC,gB,WADpBD,UAAU,E;;;;;;;;;WAGT,eAAaE,KAAb,EAA4B;AAAA;;AAC1B,WAAKC,UAAL,GAAkBD,KAAK,CAACE,YAAN,GAAqBC,GAArB,CAAsCT,KAAK,CAACU,WAA5C,CAAlB;AACAJ,MAAAA,KAAK,CAACK,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,kBAArB,EAAyC,YAAM;AAC7C,YAAMC,MAAM,GAAGR,KAAK,CAACS,SAAN,EAAf;;AACA,YAAI,CAACD,MAAL,EAAa;AAEX,qBAA0BR,KAAK,CAACU,YAAN,IAAsB;AAC9CC,YAAAA,IAAI,EAAEf,YADwC;AAE9CgB,YAAAA,OAAO,EAAEf;AAFqC,WAAhD;AAAA,cAAQc,IAAR,QAAQA,IAAR;AAAA,cAAcC,OAAd,QAAcA,OAAd;;AAIAZ,UAAAA,KAAK,CAACa,SAAN,CAAgB,IAAIlB,MAAJ,CAAWgB,IAAX,EAAiBC,OAAjB,CAAhB;AACD;;AAED,QAAA,KAAI,CAACE,iBAAL,CAAuBd,KAAvB;AACD,OAZD;AAeAA,MAAAA,KAAK,CAACK,KAAN,CAAYU,gBAAZ,CAA6BR,GAA7B,CAAiC,kBAAjC,EAAqD,YAAM;AACzD,YAAMS,gBAAgB,GAAG,KAAI,CAACF,iBAAL,CAAuBd,KAAvB,CAAzB;;AACA,YAAMiB,oBAAoB,GAAGjB,KAAK,CAACkB,SAAN,CAAgBD,oBAA7C;AACAjB,QAAAA,KAAK,CAACkB,SAAN,CAAgBD,oBAAhB,GAAuC,KAAvC;AACA,eAAOD,gBAAgB,IAAIC,oBAA3B;AACD,OALD;AAMD;;;WAED,2BAA0BjB,KAA1B,EAAkD;AAChD,UAAMQ,MAAM,GAAGR,KAAK,CAACS,SAAN,EAAf;AACA,UAAMU,OAAO,GAAGX,MAAM,CAACW,OAAvB;AACA,kCAAmCX,MAAM,CAACY,cAA1C;AAAA,yDAAQC,IAAR;AAAA,UAAQA,IAAR,uCAAe,CAAf;AAAA,yDAAkBC,OAAlB;AAAA,UAAkBA,OAAlB,uCAA4B,EAA5B;AACA,UAAMC,OAAO,GAAG,KAAKtB,UAAL,CAAgBuB,OAAhB,KAA4B,CAA5C;AACA,UAAMP,oBAAoB,GAAGjB,KAAK,CAACkB,SAAN,CAAgBD,oBAA7C;;AAEA,UACEE,OAAO,KACNF,oBAAoB,IAAIQ,IAAI,CAACC,GAAL,CAAS1B,KAAK,CAAC2B,WAAN,GAAoBJ,OAA7B,KAAyC,CAD3D,CAAP,IAEAD,OAAO,GAAGtB,KAAK,CAAC2B,WAHlB,EAIE;AAEA,YAAIN,IAAI,KAAKI,IAAI,CAACG,KAAL,CAAWL,OAAX,CAAb,EAAkC;AAChCf,UAAAA,MAAM,CAACM,iBAAP,CAAyBW,IAAI,CAACI,KAAL,CAAWN,OAAX,CAAzB;AACD;;AACDvB,QAAAA,KAAK,CAAC2B,WAAN,GAAoBJ,OAApB;AACA,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD;;;;;SA/CkBxB,gB","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n TYPES,\n} from '@antv/l7-core';\nimport Source, { DEFAULT_DATA, DEFAULT_PARSER } from '@antv/l7-source';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataSourcePlugin implements ILayerPlugin {\n protected mapService: IMapService;\n public apply(layer: ILayer) {\n this.mapService = layer.getContainer().get<IMapService>(TYPES.IMapService);\n layer.hooks.init.tap('DataSourcePlugin', () => {\n const source = layer.getSource();\n if (!source) {\n // TODO: 允许用户不使用 layer 的 source 方法,在这里传入一个默认的替换的默认数据\n const { data, options } = layer.sourceOption || {\n data: DEFAULT_DATA,\n options: DEFAULT_PARSER,\n };\n layer.setSource(new Source(data, options));\n }\n\n this.updateClusterData(layer);\n });\n\n // 检测数据是否需要更新\n layer.hooks.beforeRenderData.tap('DataSourcePlugin', () => {\n const neeUpdateCluster = this.updateClusterData(layer);\n const dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;\n layer.dataState.dataSourceNeedUpdate = false;\n return neeUpdateCluster || dataSourceNeedUpdate;\n });\n }\n\n private updateClusterData(layer: ILayer): boolean {\n const source = layer.getSource();\n const cluster = source.cluster;\n const { zoom = 0, maxZoom = 16 } = source.clusterOptions;\n const newZoom = this.mapService.getZoom() - 1;\n const dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;\n // 如果 dataSource 有更新,跳过 zoom 的判断,直接更新一次\n if (\n cluster &&\n (dataSourceNeedUpdate || Math.abs(layer.clusterZoom - newZoom) >= 1) &&\n maxZoom > layer.clusterZoom\n ) {\n // TODO 判断数据是否更新\n if (zoom !== Math.floor(newZoom)) {\n source.updateClusterData(Math.round(newZoom));\n }\n layer.clusterZoom = newZoom;\n return true;\n }\n return false;\n }\n}\n"],"file":"DataSourcePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/DataSourcePlugin.ts"],"names":["TYPES","Source","DEFAULT_DATA","DEFAULT_PARSER","injectable","DataSourcePlugin","layer","mapService","getContainer","get","IMapService","hooks","init","tap","source","getSource","sourceOption","data","options","setSource","updateClusterData","beforeRenderData","neeUpdateCluster","dataSourceNeedUpdate","dataState","cluster","clusterOptions","zoom","maxZoom","newZoom","getZoom","Math","abs","clusterZoom","floor"],"mappings":";;;;;;AAAA,SAKEA,KALF,QAMO,eANP;AAOA,OAAOC,MAAP,IAAiBC,YAAjB,EAA+BC,cAA/B,QAAqD,iBAArD;AACA,SAASC,UAAT,QAA2B,WAA3B;AACA,OAAO,kBAAP;IAGqBC,gB,WADpBD,UAAU,E;;;;;;;;;WAGT,eAAaE,KAAb,EAA4B;AAAA;;AAC1B,WAAKC,UAAL,GAAkBD,KAAK,CAACE,YAAN,GAAqBC,GAArB,CAAsCT,KAAK,CAACU,WAA5C,CAAlB;AACAJ,MAAAA,KAAK,CAACK,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,kBAArB,EAAyC,YAAM;AAC7C,YAAMC,MAAM,GAAGR,KAAK,CAACS,SAAN,EAAf;;AACA,YAAI,CAACD,MAAL,EAAa;AAEX,qBAA0BR,KAAK,CAACU,YAAN,IAAsB;AAC9CC,YAAAA,IAAI,EAAEf,YADwC;AAE9CgB,YAAAA,OAAO,EAAEf;AAFqC,WAAhD;AAAA,cAAQc,IAAR,QAAQA,IAAR;AAAA,cAAcC,OAAd,QAAcA,OAAd;;AAIAZ,UAAAA,KAAK,CAACa,SAAN,CAAgB,IAAIlB,MAAJ,CAAWgB,IAAX,EAAiBC,OAAjB,CAAhB;AACD;;AAED,QAAA,KAAI,CAACE,iBAAL,CAAuBd,KAAvB;AACD,OAZD;AAeAA,MAAAA,KAAK,CAACK,KAAN,CAAYU,gBAAZ,CAA6BR,GAA7B,CAAiC,kBAAjC,EAAqD,YAAM;AACzD,YAAMS,gBAAgB,GAAG,KAAI,CAACF,iBAAL,CAAuBd,KAAvB,CAAzB;;AACA,YAAMiB,oBAAoB,GAAGjB,KAAK,CAACkB,SAAN,CAAgBD,oBAA7C;AACAjB,QAAAA,KAAK,CAACkB,SAAN,CAAgBD,oBAAhB,GAAuC,KAAvC;AACA,eAAOD,gBAAgB,IAAIC,oBAA3B;AACD,OALD;AAMD;;;WAED,2BAA0BjB,KAA1B,EAAkD;AAChD,UAAMQ,MAAM,GAAGR,KAAK,CAACS,SAAN,EAAf;AACA,UAAMU,OAAO,GAAGX,MAAM,CAACW,OAAvB;AACA,kCAAmCX,MAAM,CAACY,cAA1C;AAAA,yDAAQC,IAAR;AAAA,UAAQA,IAAR,uCAAe,CAAf;AAAA,yDAAkBC,OAAlB;AAAA,UAAkBA,OAAlB,uCAA4B,EAA5B;AACA,UAAMC,OAAO,GAAG,KAAKtB,UAAL,CAAgBuB,OAAhB,KAA4B,CAA5C;AACA,UAAMP,oBAAoB,GAAGjB,KAAK,CAACkB,SAAN,CAAgBD,oBAA7C;;AAEA,UACEE,OAAO,KACNF,oBAAoB,IAAIQ,IAAI,CAACC,GAAL,CAAS1B,KAAK,CAAC2B,WAAN,GAAoBJ,OAA7B,KAAyC,CAD3D,CADT,EAGE;AAEA,YAAIF,IAAI,KAAKI,IAAI,CAACG,KAAL,CAAWL,OAAX,CAAb,EAAkC;AAChCf,UAAAA,MAAM,CAACM,iBAAP,CAAyBW,IAAI,CAACG,KAAL,CAAWL,OAAX,CAAzB;AACD;;AACDvB,QAAAA,KAAK,CAAC2B,WAAN,GAAoBJ,OAApB;AACA,eAAO,IAAP;AACD;;AACD,aAAO,KAAP;AACD;;;;;SA9CkBxB,gB","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n TYPES,\n} from '@antv/l7-core';\nimport Source, { DEFAULT_DATA, DEFAULT_PARSER } from '@antv/l7-source';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataSourcePlugin implements ILayerPlugin {\n protected mapService: IMapService;\n public apply(layer: ILayer) {\n this.mapService = layer.getContainer().get<IMapService>(TYPES.IMapService);\n layer.hooks.init.tap('DataSourcePlugin', () => {\n const source = layer.getSource();\n if (!source) {\n // TODO: 允许用户不使用 layer 的 source 方法,在这里传入一个默认的替换的默认数据\n const { data, options } = layer.sourceOption || {\n data: DEFAULT_DATA,\n options: DEFAULT_PARSER,\n };\n layer.setSource(new Source(data, options));\n }\n\n this.updateClusterData(layer);\n });\n\n // 检测数据是否需要更新\n layer.hooks.beforeRenderData.tap('DataSourcePlugin', () => {\n const neeUpdateCluster = this.updateClusterData(layer);\n const dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;\n layer.dataState.dataSourceNeedUpdate = false;\n return neeUpdateCluster || dataSourceNeedUpdate;\n });\n }\n\n private updateClusterData(layer: ILayer): boolean {\n const source = layer.getSource();\n const cluster = source.cluster;\n const { zoom = 0, maxZoom = 16 } = source.clusterOptions;\n const newZoom = this.mapService.getZoom() - 1;\n const dataSourceNeedUpdate = layer.dataState.dataSourceNeedUpdate;\n // 如果 dataSource 有更新,跳过 zoom 的判断,直接更新一次\n if (\n cluster &&\n (dataSourceNeedUpdate || Math.abs(layer.clusterZoom - newZoom) >= 1)\n ) {\n // TODO 判断数据是否更新\n if (zoom !== Math.floor(newZoom)) {\n source.updateClusterData(Math.floor(newZoom));\n }\n layer.clusterZoom = newZoom;\n return true;\n }\n return false;\n }\n}\n"],"file":"DataSourcePlugin.js"}
@@ -1,3 +1,4 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
2
  import _initializerDefineProperty from "@babel/runtime/helpers/initializerDefineProperty";
2
3
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
4
  import _createClass from "@babel/runtime/helpers/createClass";
@@ -49,7 +50,15 @@ var MultiPassRendererPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IGlobal
49
50
  layer.multiPassRenderer.setRenderFlag(true);
50
51
  }
51
52
  });
52
- layer.hooks.beforeRender.tap('MultiPassRendererPlugin', function () {});
53
+ layer.hooks.beforeRender.tap('MultiPassRendererPlugin', function () {
54
+ if (_this.enabled) {
55
+ var _rendererService$getV = rendererService.getViewportSize(),
56
+ width = _rendererService$getV.width,
57
+ height = _rendererService$getV.height;
58
+
59
+ layer.multiPassRenderer.resize(width, height);
60
+ }
61
+ });
53
62
  }
54
63
  }, {
55
64
  key: "createMultiPassRenderer",
@@ -60,10 +69,20 @@ var MultiPassRendererPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IGlobal
60
69
  enablePicking = _layer$getLayerConfig3.enablePicking,
61
70
  enableTAA = _layer$getLayerConfig3.enableTAA;
62
71
 
63
- if (enablePicking) {
64
- multiPassRenderer.add(normalPassFactory('pixelPicking'));
72
+ if (enableTAA) {
73
+ multiPassRenderer.add(normalPassFactory('taa'));
74
+ } else {
75
+ multiPassRenderer.add(normalPassFactory('render'));
65
76
  }
66
77
 
78
+ normalizePasses(passes).forEach(function (pass) {
79
+ var _pass = _slicedToArray(pass, 2),
80
+ passName = _pass[0],
81
+ initializationOptions = _pass[1];
82
+
83
+ multiPassRenderer.add(postProcessingPassFactory(passName), initializationOptions);
84
+ });
85
+ multiPassRenderer.add(postProcessingPassFactory('copy'));
67
86
  return multiPassRenderer;
68
87
  }
69
88
  }]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/MultiPassRendererPlugin.ts"],"names":["TYPES","inject","injectable","normalizePasses","passes","map","pass","MultiPassRendererPlugin","IGlobalConfigService","layer","rendererService","postProcessingPassFactory","normalPassFactory","hooks","init","tap","getLayerConfig","enableMultiPassRenderer","enabled","multiPassRenderer","createMultiPassRenderer","setRenderFlag","beforeRender","enablePicking","enableTAA","add"],"mappings":";;;;;;;;;AAAA,SAOEA,KAPF,QAQO,eARP;AASA,SAASC,MAAT,EAAiBC,UAAjB,QAAmC,WAAnC;AACA,OAAO,kBAAP;AAKA,OAAO,SAASC,eAAT,CACLC,MADK,EAEL;AACA,SAAOA,MAAM,CAACC,GAAP,CAAW,UAACC,IAAD,EAAyD;AACzE,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,MAAAA,IAAI,GAAG,CAACA,IAAD,EAAO,EAAP,CAAP;AACD;;AACD,WAAOA,IAAP;AACD,GALM,CAAP;AAMD;IAgBoBC,uB,WADpBL,UAAU,E,UAERD,MAAM,CAACD,KAAK,CAACQ,oBAAP,C;;;;;;;;;;;WAKP,eACEC,KADF,QAWE;AAAA;;AAAA,UAREC,eAQF,QAREA,eAQF;AAAA,UAPEC,yBAOF,QAPEA,yBAOF;AAAA,UANEC,iBAMF,QANEA,iBAMF;AACAH,MAAAA,KAAK,CAACI,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,yBAArB,EAAgD,YAAM;AACpD,oCAAiDN,KAAK,CAACO,cAAN,EAAjD;AAAA,YAAQC,uBAAR,yBAAQA,uBAAR;AAAA,2DAAiCb,MAAjC;AAAA,YAAiCA,MAAjC,uCAA0C,EAA1C;;AAGA,QAAA,KAAI,CAACc,OAAL,GACE,CAAC,CAACD,uBAAF,IACAR,KAAK,CAACO,cAAN,GAAuBC,uBAAvB,KAAmD,KAFrD;;AAKA,YAAI,KAAI,CAACC,OAAT,EAAkB;AAChBT,UAAAA,KAAK,CAACU,iBAAN,GAA0B,KAAI,CAACC,uBAAL,CACxBX,KADwB,EAExBL,MAFwB,EAGxBO,yBAHwB,EAIxBC,iBAJwB,CAA1B;AAMAH,UAAAA,KAAK,CAACU,iBAAN,CAAwBE,aAAxB,CAAsC,IAAtC;AACD;AACF,OAlBD;AAoBAZ,MAAAA,KAAK,CAACI,KAAN,CAAYS,YAAZ,CAAyBP,GAAzB,CAA6B,yBAA7B,EAAwD,YAAM,CAM7D,CAND;AAOD;;;WAMD,iCACEN,KADF,EAEEL,MAFF,EAGEO,yBAHF,EAIEC,iBAJF,EAKE;AACA,UAAMO,iBAAiB,GAAGV,KAAK,CAACU,iBAAhC;;AACA,mCAAqCV,KAAK,CAACO,cAAN,EAArC;AAAA,UAAQO,aAAR,0BAAQA,aAAR;AAAA,UAAuBC,SAAvB,0BAAuBA,SAAvB;;AAGA,UAAID,aAAJ,EAAmB;AACjBJ,QAAAA,iBAAiB,CAACM,GAAlB,CAAsBb,iBAAiB,CAAC,cAAD,CAAvC;AACD;;AAwBD,aAAOO,iBAAP;AACD;;;;;;;;;;SAxFkBZ,uB","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IPass,\n IPostProcessingPass,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 'blurH' -> ['blurH', {}]\n */\nexport function normalizePasses(\n passes: Array<string | [string, { [key: string]: unknown }]>,\n) {\n return passes.map((pass: string | [string, { [key: string]: unknown }]) => {\n if (typeof pass === 'string') {\n pass = [pass, {}];\n }\n return pass;\n });\n}\n\n/**\n * 自定义渲染管线:\n * ClearPass -> PixelPickingPass(可选) -> RenderPass/TAAPass -> PostProcessing -> CopyPass\n * 根据 Layer 配置的 passes 创建 PostProcessing\n * @example\n * new PolygonLayer({\n * enableMultiPassRenderer: true,\n * passes: [\n * 'blurH',\n * ['blurV', { radius: 10 }],\n * ],\n * })\n */\n@injectable()\nexport default class MultiPassRendererPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n private enabled: boolean;\n\n public apply(\n layer: ILayer,\n {\n rendererService,\n postProcessingPassFactory,\n normalPassFactory,\n }: {\n rendererService: IRendererService;\n postProcessingPassFactory: (name: string) => IPostProcessingPass<unknown>;\n normalPassFactory: (name: string) => IPass<unknown>;\n },\n ) {\n layer.hooks.init.tap('MultiPassRendererPlugin', () => {\n const { enableMultiPassRenderer, passes = [] } = layer.getLayerConfig();\n\n // SceneConfig 的 enableMultiPassRenderer 配置项可以统一关闭\n this.enabled =\n !!enableMultiPassRenderer &&\n layer.getLayerConfig().enableMultiPassRenderer !== false;\n\n // 根据 LayerConfig passes 配置项初始化\n if (this.enabled) {\n layer.multiPassRenderer = this.createMultiPassRenderer(\n layer,\n passes,\n postProcessingPassFactory,\n normalPassFactory,\n );\n layer.multiPassRenderer.setRenderFlag(true);\n }\n });\n\n layer.hooks.beforeRender.tap('MultiPassRendererPlugin', () => {\n // if (this.enabled) {\n // // 渲染前根据 viewport 调整 FBO size\n // const { width, height } = rendererService.getViewportSize();\n // layer.multiPassRenderer.resize(width, height);\n // }\n });\n }\n\n /**\n * 默认添加 ClearPass、RenderPass\n * 以及 PostProcessing 中的最后一个 CopyPass\n */\n private createMultiPassRenderer(\n layer: ILayer,\n passes: Array<string | [string, { [key: string]: unknown }]>,\n postProcessingPassFactory: (name: string) => IPostProcessingPass<unknown>,\n normalPassFactory: (name: string) => IPass<unknown>,\n ) {\n const multiPassRenderer = layer.multiPassRenderer;\n const { enablePicking, enableTAA } = layer.getLayerConfig();\n\n // picking pass if enabled\n if (enablePicking) {\n multiPassRenderer.add(normalPassFactory('pixelPicking'));\n }\n\n // use TAA pass if enabled instead of render pass\n // if (enableTAA) {\n // multiPassRenderer.add(normalPassFactory('taa'));\n // } else {\n // // render all layers in this pass\n // multiPassRenderer.add(normalPassFactory('render'));\n // }\n\n // post processing\n // normalizePasses(passes).forEach(\n // (pass: [string, { [key: string]: unknown }]) => {\n // const [passName, initializationOptions] = pass;\n // multiPassRenderer.add(\n // postProcessingPassFactory(passName),\n // initializationOptions,\n // );\n // },\n // );\n\n // 末尾为固定的 CopyPass\n // multiPassRenderer.add(postProcessingPassFactory('copy'));\n\n return multiPassRenderer;\n }\n}\n"],"file":"MultiPassRendererPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/MultiPassRendererPlugin.ts"],"names":["TYPES","inject","injectable","normalizePasses","passes","map","pass","MultiPassRendererPlugin","IGlobalConfigService","layer","rendererService","postProcessingPassFactory","normalPassFactory","hooks","init","tap","getLayerConfig","enableMultiPassRenderer","enabled","multiPassRenderer","createMultiPassRenderer","setRenderFlag","beforeRender","getViewportSize","width","height","resize","enablePicking","enableTAA","add","forEach","passName","initializationOptions"],"mappings":";;;;;;;;;;AAAA,SAOEA,KAPF,QAQO,eARP;AASA,SAASC,MAAT,EAAiBC,UAAjB,QAAmC,WAAnC;AACA,OAAO,kBAAP;AAKA,OAAO,SAASC,eAAT,CACLC,MADK,EAEL;AACA,SAAOA,MAAM,CAACC,GAAP,CAAW,UAACC,IAAD,EAAyD;AACzE,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,MAAAA,IAAI,GAAG,CAACA,IAAD,EAAO,EAAP,CAAP;AACD;;AACD,WAAOA,IAAP;AACD,GALM,CAAP;AAMD;IAgBoBC,uB,WADpBL,UAAU,E,UAERD,MAAM,CAACD,KAAK,CAACQ,oBAAP,C;;;;;;;;;;;WAKP,eACEC,KADF,QAWE;AAAA;;AAAA,UAREC,eAQF,QAREA,eAQF;AAAA,UAPEC,yBAOF,QAPEA,yBAOF;AAAA,UANEC,iBAMF,QANEA,iBAMF;AACAH,MAAAA,KAAK,CAACI,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,yBAArB,EAAgD,YAAM;AACpD,oCAAiDN,KAAK,CAACO,cAAN,EAAjD;AAAA,YAAQC,uBAAR,yBAAQA,uBAAR;AAAA,2DAAiCb,MAAjC;AAAA,YAAiCA,MAAjC,uCAA0C,EAA1C;;AAGA,QAAA,KAAI,CAACc,OAAL,GACE,CAAC,CAACD,uBAAF,IACAR,KAAK,CAACO,cAAN,GAAuBC,uBAAvB,KAAmD,KAFrD;;AAKA,YAAI,KAAI,CAACC,OAAT,EAAkB;AAChBT,UAAAA,KAAK,CAACU,iBAAN,GAA0B,KAAI,CAACC,uBAAL,CACxBX,KADwB,EAExBL,MAFwB,EAGxBO,yBAHwB,EAIxBC,iBAJwB,CAA1B;AAMAH,UAAAA,KAAK,CAACU,iBAAN,CAAwBE,aAAxB,CAAsC,IAAtC;AACD;AACF,OAlBD;AAoBAZ,MAAAA,KAAK,CAACI,KAAN,CAAYS,YAAZ,CAAyBP,GAAzB,CAA6B,yBAA7B,EAAwD,YAAM;AAC5D,YAAI,KAAI,CAACG,OAAT,EAAkB;AAEhB,sCAA0BR,eAAe,CAACa,eAAhB,EAA1B;AAAA,cAAQC,KAAR,yBAAQA,KAAR;AAAA,cAAeC,MAAf,yBAAeA,MAAf;;AACAhB,UAAAA,KAAK,CAACU,iBAAN,CAAwBO,MAAxB,CAA+BF,KAA/B,EAAsCC,MAAtC;AACD;AACF,OAND;AAOD;;;WAMD,iCACEhB,KADF,EAEEL,MAFF,EAGEO,yBAHF,EAIEC,iBAJF,EAKE;AACA,UAAMO,iBAAiB,GAAGV,KAAK,CAACU,iBAAhC;;AACA,mCAAqCV,KAAK,CAACO,cAAN,EAArC;AAAA,UAAQW,aAAR,0BAAQA,aAAR;AAAA,UAAuBC,SAAvB,0BAAuBA,SAAvB;;AAQA,UAAIA,SAAJ,EAAe;AACbT,QAAAA,iBAAiB,CAACU,GAAlB,CAAsBjB,iBAAiB,CAAC,KAAD,CAAvC;AACD,OAFD,MAEO;AAELO,QAAAA,iBAAiB,CAACU,GAAlB,CAAsBjB,iBAAiB,CAAC,QAAD,CAAvC;AACD;;AAGDT,MAAAA,eAAe,CAACC,MAAD,CAAf,CAAwB0B,OAAxB,CACE,UAACxB,IAAD,EAAgD;AAC9C,mCAA0CA,IAA1C;AAAA,YAAOyB,QAAP;AAAA,YAAiBC,qBAAjB;;AACAb,QAAAA,iBAAiB,CAACU,GAAlB,CACElB,yBAAyB,CAACoB,QAAD,CAD3B,EAEEC,qBAFF;AAID,OAPH;AAWAb,MAAAA,iBAAiB,CAACU,GAAlB,CAAsBlB,yBAAyB,CAAC,MAAD,CAA/C;AAEA,aAAOQ,iBAAP;AACD;;;;;;;;;;SAxFkBZ,uB","sourcesContent":["import {\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n IPass,\n IPostProcessingPass,\n IRendererService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 'blurH' -> ['blurH', {}]\n */\nexport function normalizePasses(\n passes: Array<string | [string, { [key: string]: unknown }]>,\n) {\n return passes.map((pass: string | [string, { [key: string]: unknown }]) => {\n if (typeof pass === 'string') {\n pass = [pass, {}];\n }\n return pass;\n });\n}\n\n/**\n * 自定义渲染管线:\n * ClearPass -> PixelPickingPass(可选) -> RenderPass/TAAPass -> PostProcessing -> CopyPass\n * 根据 Layer 配置的 passes 创建 PostProcessing\n * @example\n * new PolygonLayer({\n * enableMultiPassRenderer: true,\n * passes: [\n * 'blurH',\n * ['blurV', { radius: 10 }],\n * ],\n * })\n */\n@injectable()\nexport default class MultiPassRendererPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n private enabled: boolean;\n\n public apply(\n layer: ILayer,\n {\n rendererService,\n postProcessingPassFactory,\n normalPassFactory,\n }: {\n rendererService: IRendererService;\n postProcessingPassFactory: (name: string) => IPostProcessingPass<unknown>;\n normalPassFactory: (name: string) => IPass<unknown>;\n },\n ) {\n layer.hooks.init.tap('MultiPassRendererPlugin', () => {\n const { enableMultiPassRenderer, passes = [] } = layer.getLayerConfig();\n\n // SceneConfig 的 enableMultiPassRenderer 配置项可以统一关闭\n this.enabled =\n !!enableMultiPassRenderer &&\n layer.getLayerConfig().enableMultiPassRenderer !== false;\n\n // 根据 LayerConfig passes 配置项初始化\n if (this.enabled) {\n layer.multiPassRenderer = this.createMultiPassRenderer(\n layer,\n passes,\n postProcessingPassFactory,\n normalPassFactory,\n );\n layer.multiPassRenderer.setRenderFlag(true);\n }\n });\n\n layer.hooks.beforeRender.tap('MultiPassRendererPlugin', () => {\n if (this.enabled) {\n // 渲染前根据 viewport 调整 FBO size\n const { width, height } = rendererService.getViewportSize();\n layer.multiPassRenderer.resize(width, height);\n }\n });\n }\n\n /**\n * 默认添加 ClearPass、RenderPass\n * 以及 PostProcessing 中的最后一个 CopyPass\n */\n private createMultiPassRenderer(\n layer: ILayer,\n passes: Array<string | [string, { [key: string]: unknown }]>,\n postProcessingPassFactory: (name: string) => IPostProcessingPass<unknown>,\n normalPassFactory: (name: string) => IPass<unknown>,\n ) {\n const multiPassRenderer = layer.multiPassRenderer;\n const { enablePicking, enableTAA } = layer.getLayerConfig();\n\n // picking pass if enabled\n // if (enablePicking) {\n // multiPassRenderer.add(normalPassFactory('pixelPicking'));\n // }\n\n // use TAA pass if enabled instead of render pass\n if (enableTAA) {\n multiPassRenderer.add(normalPassFactory('taa'));\n } else {\n // render all layers in this pass\n multiPassRenderer.add(normalPassFactory('render'));\n }\n\n // post processing\n normalizePasses(passes).forEach(\n (pass: [string, { [key: string]: unknown }]) => {\n const [passName, initializationOptions] = pass;\n multiPassRenderer.add(\n postProcessingPassFactory(passName),\n initializationOptions,\n );\n },\n );\n\n // 末尾为固定的 CopyPass\n multiPassRenderer.add(postProcessingPassFactory('copy'));\n\n return multiPassRenderer;\n }\n}\n"],"file":"MultiPassRendererPlugin.js"}
@@ -23,9 +23,7 @@ var PixelPickingPlugin = (_dec = injectable(), _dec(_class = function () {
23
23
  var rendererService = _ref.rendererService,
24
24
  styleAttributeService = _ref.styleAttributeService;
25
25
  layer.hooks.init.tap('PixelPickingPlugin', function () {
26
- var _layer$getLayerConfig = layer.getLayerConfig(),
27
- enablePicking = _layer$getLayerConfig.enablePicking;
28
-
26
+ var enablePicking = true;
29
27
  styleAttributeService.registerStyleAttribute({
30
28
  name: 'pickingColor',
31
29
  type: AttributeType.Attribute,
@@ -44,8 +42,8 @@ var PixelPickingPlugin = (_dec = injectable(), _dec(_class = function () {
44
42
  });
45
43
  });
46
44
  layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', function () {
47
- var _layer$getLayerConfig2 = layer.getLayerConfig(),
48
- enablePicking = _layer$getLayerConfig2.enablePicking;
45
+ var _layer$getLayerConfig = layer.getLayerConfig(),
46
+ enablePicking = _layer$getLayerConfig.enablePicking;
49
47
 
50
48
  if (enablePicking && layer.isVisible()) {
51
49
  layer.models.forEach(function (model) {
@@ -56,8 +54,8 @@ var PixelPickingPlugin = (_dec = injectable(), _dec(_class = function () {
56
54
  }
57
55
  });
58
56
  layer.hooks.afterPickingEncode.tap('PixelPickingPlugin', function () {
59
- var _layer$getLayerConfig3 = layer.getLayerConfig(),
60
- enablePicking = _layer$getLayerConfig3.enablePicking;
57
+ var _layer$getLayerConfig2 = layer.getLayerConfig(),
58
+ enablePicking = _layer$getLayerConfig2.enablePicking;
61
59
 
62
60
  if (enablePicking && layer.isVisible()) {
63
61
  layer.models.forEach(function (model) {
@@ -68,16 +66,16 @@ var PixelPickingPlugin = (_dec = injectable(), _dec(_class = function () {
68
66
  }
69
67
  });
70
68
  layer.hooks.beforeHighlight.tap('PixelPickingPlugin', function (pickedColor) {
71
- var _layer$getLayerConfig4 = layer.getLayerConfig(),
72
- highlightColor = _layer$getLayerConfig4.highlightColor,
73
- _layer$getLayerConfig5 = _layer$getLayerConfig4.activeMix,
74
- activeMix = _layer$getLayerConfig5 === void 0 ? 0 : _layer$getLayerConfig5,
75
- enableSelect = _layer$getLayerConfig4.enableSelect;
69
+ var _layer$getLayerConfig3 = layer.getLayerConfig(),
70
+ highlightColor = _layer$getLayerConfig3.highlightColor,
71
+ _layer$getLayerConfig4 = _layer$getLayerConfig3.activeMix,
72
+ activeMix = _layer$getLayerConfig4 === void 0 ? 0 : _layer$getLayerConfig4,
73
+ enableSelect = _layer$getLayerConfig3.enableSelect;
76
74
 
77
75
  var highlightColorInArray = typeof highlightColor === 'string' ? rgb2arr(highlightColor) : highlightColor || [1, 0, 0, 1];
78
76
 
79
- var _layer$getLayerConfig6 = layer.getLayerConfig(),
80
- selectColor = _layer$getLayerConfig6.selectColor;
77
+ var _layer$getLayerConfig5 = layer.getLayerConfig(),
78
+ selectColor = _layer$getLayerConfig5.selectColor;
81
79
 
82
80
  var selectColorInArray = typeof selectColor === 'string' ? rgb2arr(selectColor) : selectColor || [1, 0, 0, 1];
83
81
  layer.updateLayerConfig({
@@ -101,10 +99,10 @@ var PixelPickingPlugin = (_dec = injectable(), _dec(_class = function () {
101
99
  });
102
100
  });
103
101
  layer.hooks.beforeSelect.tap('PixelPickingPlugin', function (pickedColor) {
104
- var _layer$getLayerConfig7 = layer.getLayerConfig(),
105
- selectColor = _layer$getLayerConfig7.selectColor,
106
- _layer$getLayerConfig8 = _layer$getLayerConfig7.selectMix,
107
- selectMix = _layer$getLayerConfig8 === void 0 ? 0 : _layer$getLayerConfig8;
102
+ var _layer$getLayerConfig6 = layer.getLayerConfig(),
103
+ selectColor = _layer$getLayerConfig6.selectColor,
104
+ _layer$getLayerConfig7 = _layer$getLayerConfig6.selectMix,
105
+ selectMix = _layer$getLayerConfig7 === void 0 ? 0 : _layer$getLayerConfig7;
108
106
 
109
107
  var highlightColorInArray = typeof selectColor === 'string' ? rgb2arr(selectColor) : selectColor || [1, 0, 0, 1];
110
108
  layer.updateLayerConfig({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PixelPickingPlugin.ts"],"names":["AttributeType","gl","decodePickingColor","encodePickingColor","rgb2arr","injectable","PickingStage","NONE","ENCODE","HIGHLIGHT","PixelPickingPlugin","layer","rendererService","styleAttributeService","hooks","init","tap","getLayerConfig","enablePicking","registerStyleAttribute","name","type","Attribute","descriptor","buffer","data","FLOAT","size","update","feature","featureIdx","id","beforePickingEncode","isVisible","models","forEach","model","addUniforms","u_PickingStage","afterPickingEncode","beforeHighlight","pickedColor","highlightColor","activeMix","enableSelect","highlightColorInArray","selectColor","selectColorInArray","updateLayerConfig","pickedFeatureID","Uint8Array","currentSelectedId","getCurrentSelectedId","u_PickingColor","u_HighlightColor","map","c","u_activeMix","u_CurrentSelectedId","u_SelectColor","u_EnableSelect","beforeSelect","selectMix"],"mappings":";;;;;AAAA,SACEA,aADF,EAEEC,EAFF,QAQO,eARP;AASA,SACEC,kBADF,EAEEC,kBAFF,EAGEC,OAHF,QAIO,gBAJP;AAKA,SAASC,UAAT,QAA2B,WAA3B;AACA,OAAO,kBAAP;AAEA,IAAMC,YAAY,GAAG;AACnBC,EAAAA,IAAI,EAAE,GADa;AAEnBC,EAAAA,MAAM,EAAE,GAFW;AAGnBC,EAAAA,SAAS,EAAE;AAHQ,CAArB;IAOqBC,kB,WADpBL,UAAU,E;;;;;;;WAET,eACEM,KADF,QASE;AAAA,UANEC,eAMF,QANEA,eAMF;AAAA,UALEC,qBAKF,QALEA,qBAKF;AAEAF,MAAAA,KAAK,CAACG,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,oBAArB,EAA2C,YAAM;AAC/C,oCAA0BL,KAAK,CAACM,cAAN,EAA1B;AAAA,YAAQC,aAAR,yBAAQA,aAAR;;AACAL,QAAAA,qBAAqB,CAACM,sBAAtB,CAA6C;AAC3CC,UAAAA,IAAI,EAAE,cADqC;AAE3CC,UAAAA,IAAI,EAAErB,aAAa,CAACsB,SAFuB;AAG3CC,UAAAA,UAAU,EAAE;AACVH,YAAAA,IAAI,EAAE,gBADI;AAEVI,YAAAA,MAAM,EAAE;AACNC,cAAAA,IAAI,EAAE,EADA;AAENJ,cAAAA,IAAI,EAAEpB,EAAE,CAACyB;AAFH,aAFE;AAMVC,YAAAA,IAAI,EAAE,CANI;AAQVC,YAAAA,MAAM,EAAE,gBAACC,OAAD,EAA0BC,UAA1B,EAAiD;AAEvD,kBAAQC,EAAR,GAAeF,OAAf,CAAQE,EAAR;AACA,qBAAOb,aAAa,GAAGf,kBAAkB,CAAC4B,EAAD,CAArB,GAAsC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAA1D;AACD;AAZS;AAH+B,SAA7C;AAkBD,OApBD;AAuBApB,MAAAA,KAAK,CAACG,KAAN,CAAYkB,mBAAZ,CAAgChB,GAAhC,CAAoC,oBAApC,EAA0D,YAAM;AAC9D,qCAA0BL,KAAK,CAACM,cAAN,EAA1B;AAAA,YAAQC,aAAR,0BAAQA,aAAR;;AACA,YAAIA,aAAa,IAAIP,KAAK,CAACsB,SAAN,EAArB,EAAwC;AACtCtB,UAAAA,KAAK,CAACuB,MAAN,CAAaC,OAAb,CAAqB,UAACC,KAAD;AAAA,mBACnBA,KAAK,CAACC,WAAN,CAAkB;AAChBC,cAAAA,cAAc,EAAEhC,YAAY,CAACE;AADb,aAAlB,CADmB;AAAA,WAArB;AAKD;AACF,OATD;AAWAG,MAAAA,KAAK,CAACG,KAAN,CAAYyB,kBAAZ,CAA+BvB,GAA/B,CAAmC,oBAAnC,EAAyD,YAAM;AAC7D,qCAA0BL,KAAK,CAACM,cAAN,EAA1B;AAAA,YAAQC,aAAR,0BAAQA,aAAR;;AAEA,YAAIA,aAAa,IAAIP,KAAK,CAACsB,SAAN,EAArB,EAAwC;AACtCtB,UAAAA,KAAK,CAACuB,MAAN,CAAaC,OAAb,CAAqB,UAACC,KAAD;AAAA,mBACnBA,KAAK,CAACC,WAAN,CAAkB;AAChBC,cAAAA,cAAc,EAAEhC,YAAY,CAACG;AADb,aAAlB,CADmB;AAAA,WAArB;AAKD;AACF,OAVD;AAYAE,MAAAA,KAAK,CAACG,KAAN,CAAY0B,eAAZ,CAA4BxB,GAA5B,CACE,oBADF,EAEE,UAACyB,WAAD,EAA2B;AACzB,qCAII9B,KAAK,CAACM,cAAN,EAJJ;AAAA,YACEyB,cADF,0BACEA,cADF;AAAA,4DAEEC,SAFF;AAAA,YAEEA,SAFF,uCAEc,CAFd;AAAA,YAGEC,YAHF,0BAGEA,YAHF;;AAKA,YAAMC,qBAAqB,GACzB,OAAOH,cAAP,KAA0B,QAA1B,GACItC,OAAO,CAACsC,cAAD,CADX,GAEIA,cAAc,IAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAHxB;;AAKA,qCAAwB/B,KAAK,CAACM,cAAN,EAAxB;AAAA,YAAQ6B,WAAR,0BAAQA,WAAR;;AACA,YAAMC,kBAAkB,GACtB,OAAOD,WAAP,KAAuB,QAAvB,GACI1C,OAAO,CAAC0C,WAAD,CADX,GAEIA,WAAW,IAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAHrB;AAIAnC,QAAAA,KAAK,CAACqC,iBAAN,CAAwB;AACtBC,UAAAA,eAAe,EAAE/C,kBAAkB,CAAC,IAAIgD,UAAJ,CAAeT,WAAf,CAAD;AADb,SAAxB;AAGA,YAAMU,iBAAiB,GAAGxC,KAAK,CAACyC,oBAAN,EAA1B;AACAzC,QAAAA,KAAK,CAACuB,MAAN,CAAaC,OAAb,CAAqB,UAACC,KAAD;AAAA,iBACnBA,KAAK,CAACC,WAAN,CAAkB;AAChBC,YAAAA,cAAc,EAAEhC,YAAY,CAACG,SADb;AAEhB4C,YAAAA,cAAc,EAAEZ,WAFA;AAGhBa,YAAAA,gBAAgB,EAAET,qBAAqB,CAACU,GAAtB,CAA0B,UAACC,CAAD;AAAA,qBAAOA,CAAC,GAAG,GAAX;AAAA,aAA1B,CAHF;AAIhBC,YAAAA,WAAW,EAAEd,SAJG;AAKhBe,YAAAA,mBAAmB,EAAEP,iBAAiB,GAClChD,kBAAkB,CAACQ,KAAK,CAACyC,oBAAN,EAAD,CADgB,GAElC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAPY;AAQhBO,YAAAA,aAAa,EAAEZ,kBAAkB,CAACQ,GAAnB,CAAuB,UAACC,CAAD;AAAA,qBAAOA,CAAC,GAAG,GAAX;AAAA,aAAvB,CARC;AAShBI,YAAAA,cAAc,EAAE,EAAEhB,YAAY,IAAI,KAAlB;AATA,WAAlB,CADmB;AAAA,SAArB;AAaD,OAnCH;AAsCAjC,MAAAA,KAAK,CAACG,KAAN,CAAY+C,YAAZ,CAAyB7C,GAAzB,CACE,oBADF,EAEE,UAACyB,WAAD,EAA2B;AACzB,qCAAuC9B,KAAK,CAACM,cAAN,EAAvC;AAAA,YAAQ6B,WAAR,0BAAQA,WAAR;AAAA,4DAAqBgB,SAArB;AAAA,YAAqBA,SAArB,uCAAiC,CAAjC;;AACA,YAAMjB,qBAAqB,GACzB,OAAOC,WAAP,KAAuB,QAAvB,GACI1C,OAAO,CAAC0C,WAAD,CADX,GAEIA,WAAW,IAAI,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAHrB;AAIAnC,QAAAA,KAAK,CAACqC,iBAAN,CAAwB;AACtBC,UAAAA,eAAe,EAAE/C,kBAAkB,CAAC,IAAIgD,UAAJ,CAAeT,WAAf,CAAD;AADb,SAAxB;AAGA9B,QAAAA,KAAK,CAACuB,MAAN,CAAaC,OAAb,CAAqB,UAACC,KAAD;AAAA,iBACnBA,KAAK,CAACC,WAAN,CAAkB;AAChBC,YAAAA,cAAc,EAAEhC,YAAY,CAACG,SADb;AAEhB4C,YAAAA,cAAc,EAAEZ,WAFA;AAGhBa,YAAAA,gBAAgB,EAAET,qBAAqB,CAACU,GAAtB,CAA0B,UAACC,CAAD;AAAA,qBAAOA,CAAC,GAAG,GAAX;AAAA,aAA1B,CAHF;AAIhBC,YAAAA,WAAW,EAAEK,SAJG;AAKhBJ,YAAAA,mBAAmB,EAAEjB,WALL;AAMhBkB,YAAAA,aAAa,EAAEd,qBAAqB,CAACU,GAAtB,CAA0B,UAACC,CAAD;AAAA,qBAAOA,CAAC,GAAG,GAAX;AAAA,aAA1B,CANC;AAOhBI,YAAAA,cAAc,EAAE;AAPA,WAAlB,CADmB;AAAA,SAArB;AAWD,OAtBH;AAyBD;;;;;SAzHkBlD,kB","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerPlugin,\n IRendererService,\n IStyleAttributeService,\n} from '@antv/l7-core';\nimport {\n decodePickingColor,\n encodePickingColor,\n rgb2arr,\n} from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0,\n};\n\n@injectable()\nexport default class PixelPickingPlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n rendererService,\n styleAttributeService,\n }: {\n rendererService: IRendererService;\n styleAttributeService: IStyleAttributeService;\n },\n ) {\n // TODO: 由于 Shader 目前无法根据是否开启拾取进行内容修改,因此即使不开启也需要生成 a_PickingColor\n layer.hooks.init.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n styleAttributeService.registerStyleAttribute({\n name: 'pickingColor',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_PickingColor',\n buffer: {\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // TODO: 固定 feature range 范围内的 pickingColor 都是固定的,可以生成 cache\n update: (feature: IEncodeFeature, featureIdx: number) => {\n // 只有开启拾取才需要 encode\n const { id } = feature;\n return enablePicking ? encodePickingColor(id as number) : [0, 0, 0];\n },\n },\n });\n });\n // 必须要与 PixelPickingPass 结合使用,因此必须开启 multiPassRenderer\n // if (layer.multiPassRenderer) {\n layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.ENCODE,\n }),\n );\n }\n });\n\n layer.hooks.afterPickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n // 区分选中高亮 和滑过高亮\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n }),\n );\n }\n });\n\n layer.hooks.beforeHighlight.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const {\n highlightColor,\n activeMix = 0,\n enableSelect,\n } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof highlightColor === 'string'\n ? rgb2arr(highlightColor)\n : highlightColor || [1, 0, 0, 1];\n\n const { selectColor } = layer.getLayerConfig();\n const selectColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n const currentSelectedId = layer.getCurrentSelectedId();\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: activeMix,\n u_CurrentSelectedId: currentSelectedId\n ? encodePickingColor(layer.getCurrentSelectedId()!)\n : [0, 0, 0],\n u_SelectColor: selectColorInArray.map((c) => c * 255),\n u_EnableSelect: +(enableSelect || false),\n }),\n );\n },\n );\n\n layer.hooks.beforeSelect.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const { selectColor, selectMix = 0 } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: selectMix,\n u_CurrentSelectedId: pickedColor,\n u_SelectColor: highlightColorInArray.map((c) => c * 255),\n u_EnableSelect: 1,\n }),\n );\n },\n );\n // }\n }\n}\n"],"file":"PixelPickingPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PixelPickingPlugin.ts"],"names":["AttributeType","gl","decodePickingColor","encodePickingColor","rgb2arr","injectable","PickingStage","NONE","ENCODE","HIGHLIGHT","PixelPickingPlugin","layer","rendererService","styleAttributeService","hooks","init","tap","enablePicking","registerStyleAttribute","name","type","Attribute","descriptor","buffer","data","FLOAT","size","update","feature","featureIdx","id","beforePickingEncode","getLayerConfig","isVisible","models","forEach","model","addUniforms","u_PickingStage","afterPickingEncode","beforeHighlight","pickedColor","highlightColor","activeMix","enableSelect","highlightColorInArray","selectColor","selectColorInArray","updateLayerConfig","pickedFeatureID","Uint8Array","currentSelectedId","getCurrentSelectedId","u_PickingColor","u_HighlightColor","map","c","u_activeMix","u_CurrentSelectedId","u_SelectColor","u_EnableSelect","beforeSelect","selectMix"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n ILayer,\n ILayerPlugin,\n IRendererService,\n IStyleAttributeService,\n} from '@antv/l7-core';\nimport {\n decodePickingColor,\n encodePickingColor,\n rgb2arr,\n} from '@antv/l7-utils';\nimport { injectable } from 'inversify';\nimport 'reflect-metadata';\n\nconst PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0,\n};\n\n@injectable()\nexport default class PixelPickingPlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n rendererService,\n styleAttributeService,\n }: {\n rendererService: IRendererService;\n styleAttributeService: IStyleAttributeService;\n },\n ) {\n // TODO: 由于 Shader 目前无法根据是否开启拾取进行内容修改,因此即使不开启也需要生成 a_PickingColor\n layer.hooks.init.tap('PixelPickingPlugin', () => {\n // const { enablePicking, enableMultiPassRenderer } = layer.getLayerConfig();\n const enablePicking = true;\n styleAttributeService.registerStyleAttribute({\n name: 'pickingColor',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_PickingColor',\n buffer: {\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n // TODO: 固定 feature range 范围内的 pickingColor 都是固定的,可以生成 cache\n update: (feature: IEncodeFeature, featureIdx: number) => {\n // 只有开启拾取才需要 encode\n const { id } = feature;\n return enablePicking ? encodePickingColor(id as number) : [0, 0, 0];\n },\n },\n });\n });\n // 必须要与 PixelPickingPass 结合使用,因此必须开启 multiPassRenderer\n // if (layer.multiPassRenderer) {\n layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.ENCODE,\n }),\n );\n }\n });\n\n layer.hooks.afterPickingEncode.tap('PixelPickingPlugin', () => {\n const { enablePicking } = layer.getLayerConfig();\n // 区分选中高亮 和滑过高亮\n if (enablePicking && layer.isVisible()) {\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n }),\n );\n }\n });\n\n layer.hooks.beforeHighlight.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const {\n highlightColor,\n activeMix = 0,\n enableSelect,\n } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof highlightColor === 'string'\n ? rgb2arr(highlightColor)\n : highlightColor || [1, 0, 0, 1];\n\n const { selectColor } = layer.getLayerConfig();\n const selectColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n const currentSelectedId = layer.getCurrentSelectedId();\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: activeMix,\n u_CurrentSelectedId: currentSelectedId\n ? encodePickingColor(layer.getCurrentSelectedId()!)\n : [0, 0, 0],\n u_SelectColor: selectColorInArray.map((c) => c * 255),\n u_EnableSelect: +(enableSelect || false),\n }),\n );\n },\n );\n\n layer.hooks.beforeSelect.tap(\n 'PixelPickingPlugin',\n (pickedColor: number[]) => {\n const { selectColor, selectMix = 0 } = layer.getLayerConfig();\n const highlightColorInArray =\n typeof selectColor === 'string'\n ? rgb2arr(selectColor)\n : selectColor || [1, 0, 0, 1];\n layer.updateLayerConfig({\n pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)),\n });\n layer.models.forEach((model) =>\n model.addUniforms({\n u_PickingStage: PickingStage.HIGHLIGHT,\n u_PickingColor: pickedColor,\n u_HighlightColor: highlightColorInArray.map((c) => c * 255),\n u_activeMix: selectMix,\n u_CurrentSelectedId: pickedColor,\n u_SelectColor: highlightColorInArray.map((c) => c * 255),\n u_EnableSelect: 1,\n }),\n );\n },\n );\n // }\n }\n}\n"],"file":"PixelPickingPlugin.js"}
@@ -1,10 +1,6 @@
1
1
  import BaseLayer from '../core/BaseLayer';
2
+ import { IPointLayerStyleOptions } from '../core/interface';
2
3
  import { PointType } from './models/index';
3
- interface IPointLayerStyleOptions {
4
- opacity: number;
5
- strokeWidth: number;
6
- stroke: string;
7
- }
8
4
  export default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {
9
5
  type: string;
10
6
  buildModels(): void;
@@ -27,4 +23,3 @@ export default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {
27
23
  };
28
24
  protected getModelType(): PointType;
29
25
  }
30
- export {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/point/index.ts"],"names":["BaseLayer","PointModels","PointLayer","modelType","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","normal","blend","simplePoint","fill","extrude","image","icon","text","layerData","getEncodedData","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","item","find","fe","hasOwnProperty","shape","indexOf","fontService","getGlyph"],"mappings":";;;;;;;;;;;;AACA,OAAOA,SAAP,MAAsB,mBAAtB;AACA,OAAOC,WAAP,MAAuC,gBAAvC;;IAMqBC,U;;;;;;;;;;;;;;;;2DACG,Y;;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIJ,WAAW,CAACE,SAAD,CAAf,CAA2B,IAA3B,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKP,YAAL,EAAb;AACA,UAAMU,aAAa,GAAG;AACpBC,QAAAA,MAAM,EAAE;AACNC,UAAAA,KAAK,EAAE;AADD,SADY;AAIpBC,QAAAA,WAAW,EAAE,EAJO;AAKpBC,QAAAA,IAAI,EAAE;AAAEF,UAAAA,KAAK,EAAE;AAAT,SALc;AAMpBG,QAAAA,OAAO,EAAE,EANW;AAOpBC,QAAAA,KAAK,EAAE,EAPa;AAQpBC,QAAAA,IAAI,EAAE,EARc;AASpBC,QAAAA,IAAI,EAAE;AACJN,UAAAA,KAAK,EAAE;AADH;AATc,OAAtB;AAaA,aAAOF,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAAoC;AAGlC,UAAMY,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,iCAA6B,KAAKC,cAAL,EAA7B;AAAA,UAAQC,OAAR,wBAAQA,OAAR;AAAA,UAAiBC,OAAjB,wBAAiBA,OAAjB;;AACA,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBC,UAAjB,EAAhB;AACA,UAAMC,IAAI,GAAGR,SAAS,CAACS,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACC,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAGA,UAAI,CAACH,IAAL,EAAW;AACT,eAAO,QAAP;AACD,OAFD,MAEO;AACL,YAAMI,KAAK,GAAGJ,IAAI,CAACI,KAAnB;;AACA,YAAIA,KAAK,KAAK,KAAd,EAAqB;AACnB,iBAAO,QAAP;AACD;;AACD,YAAIA,KAAK,KAAK,QAAd,EAAwB;AACtB,iBAAO,aAAP;AACD;;AACD,YAAI,CAAAT,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEU,OAAT,CAAiBD,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,MAAP;AACD;;AACD,YAAI,CAAAR,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAES,OAAT,CAAiBD,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,SAAP;AACD;;AACD,YAAIP,OAAO,CAACM,cAAR,CAAuBC,KAAvB,CAAJ,EAA6C;AAC3C,iBAAO,OAAP;AACD;;AACD,YAAI,KAAKE,WAAL,CAAiBC,QAAjB,CAA0BH,KAA1B,MAA+C,EAAnD,EAAuD;AACrD,iBAAO,MAAP;AACD;;AACD,eAAO,MAAP;AACD;AACF;;;;EAxEqCnC,S;;SAAnBE,U","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport PointModels, { PointType } from './models/index';\ninterface IPointLayerStyleOptions {\n opacity: number;\n strokeWidth: number;\n stroke: string;\n}\nexport default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {\n public type: string = 'PointLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new PointModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n normal: {\n blend: 'additive',\n },\n simplePoint: {},\n fill: { blend: 'normal' },\n extrude: {},\n image: {},\n icon: {},\n text: {\n blend: 'normal',\n },\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): PointType {\n // pointlayer\n // 2D、 3d、 shape、image、text、normal、\n const layerData = this.getEncodedData();\n const { shape2d, shape3d } = this.getLayerConfig();\n const iconMap = this.iconService.getIconMap();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n if (!item) {\n return 'normal';\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'normal';\n }\n if (shape === 'simple') {\n return 'simplePoint';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'image';\n }\n if (this.fontService.getGlyph(shape as string) !== '') {\n return 'icon';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/point/index.ts"],"names":["BaseLayer","PointModels","PointLayer","modelType","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","normal","blend","simplePoint","fill","extrude","image","icon","text","layerData","getEncodedData","getLayerConfig","shape2d","shape3d","iconMap","iconService","getIconMap","item","find","fe","hasOwnProperty","shape","indexOf","fontService","getGlyph"],"mappings":";;;;;;;;;;;;AACA,OAAOA,SAAP,MAAsB,mBAAtB;AAEA,OAAOC,WAAP,MAAuC,gBAAvC;;IAEqBC,U;;;;;;;;;;;;;;;;2DACG,Y;;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIJ,WAAW,CAACE,SAAD,CAAf,CAA2B,IAA3B,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKP,YAAL,EAAb;AACA,UAAMU,aAAa,GAAG;AACpBC,QAAAA,MAAM,EAAE;AACNC,UAAAA,KAAK,EAAE;AADD,SADY;AAIpBC,QAAAA,WAAW,EAAE,EAJO;AAKpBC,QAAAA,IAAI,EAAE;AAAEF,UAAAA,KAAK,EAAE;AAAT,SALc;AAMpBG,QAAAA,OAAO,EAAE,EANW;AAOpBC,QAAAA,KAAK,EAAE,EAPa;AAQpBC,QAAAA,IAAI,EAAE,EARc;AASpBC,QAAAA,IAAI,EAAE;AACJN,UAAAA,KAAK,EAAE;AADH;AATc,OAAtB;AAaA,aAAOF,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAAoC;AAGlC,UAAMY,SAAS,GAAG,KAAKC,cAAL,EAAlB;;AACA,iCAA6B,KAAKC,cAAL,EAA7B;AAAA,UAAQC,OAAR,wBAAQA,OAAR;AAAA,UAAiBC,OAAjB,wBAAiBA,OAAjB;;AACA,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBC,UAAjB,EAAhB;AACA,UAAMC,IAAI,GAAGR,SAAS,CAACS,IAAV,CAAe,UAACC,EAAD,EAAwB;AAClD,eAAOA,EAAE,CAACC,cAAH,CAAkB,OAAlB,CAAP;AACD,OAFY,CAAb;;AAGA,UAAI,CAACH,IAAL,EAAW;AACT,eAAO,QAAP;AACD,OAFD,MAEO;AACL,YAAMI,KAAK,GAAGJ,IAAI,CAACI,KAAnB;;AACA,YAAIA,KAAK,KAAK,KAAd,EAAqB;AACnB,iBAAO,QAAP;AACD;;AACD,YAAIA,KAAK,KAAK,QAAd,EAAwB;AACtB,iBAAO,aAAP;AACD;;AACD,YAAI,CAAAT,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEU,OAAT,CAAiBD,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,MAAP;AACD;;AACD,YAAI,CAAAR,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAES,OAAT,CAAiBD,KAAjB,OAAsC,CAAC,CAA3C,EAA8C;AAC5C,iBAAO,SAAP;AACD;;AACD,YAAIP,OAAO,CAACM,cAAR,CAAuBC,KAAvB,CAAJ,EAA6C;AAC3C,iBAAO,OAAP;AACD;;AACD,YAAI,KAAKE,WAAL,CAAiBC,QAAjB,CAA0BH,KAA1B,MAA+C,EAAnD,EAAuD;AACrD,iBAAO,MAAP;AACD;;AACD,eAAO,MAAP;AACD;AACF;;;;EAxEqCnC,S;;SAAnBE,U","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport BaseLayer from '../core/BaseLayer';\nimport { IPointLayerStyleOptions } from '../core/interface';\nimport PointModels, { PointType } from './models/index';\n\nexport default class PointLayer extends BaseLayer<IPointLayerStyleOptions> {\n public type: string = 'PointLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new PointModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n normal: {\n blend: 'additive',\n },\n simplePoint: {},\n fill: { blend: 'normal' },\n extrude: {},\n image: {},\n icon: {},\n text: {\n blend: 'normal',\n },\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): PointType {\n // pointlayer\n // 2D、 3d、 shape、image、text、normal、\n const layerData = this.getEncodedData();\n const { shape2d, shape3d } = this.getLayerConfig();\n const iconMap = this.iconService.getIconMap();\n const item = layerData.find((fe: IEncodeFeature) => {\n return fe.hasOwnProperty('shape');\n });\n if (!item) {\n return 'normal';\n } else {\n const shape = item.shape;\n if (shape === 'dot') {\n return 'normal';\n }\n if (shape === 'simple') {\n return 'simplePoint';\n }\n if (shape2d?.indexOf(shape as string) !== -1) {\n return 'fill';\n }\n if (shape3d?.indexOf(shape as string) !== -1) {\n return 'extrude';\n }\n if (iconMap.hasOwnProperty(shape as string)) {\n return 'image';\n }\n if (this.fontService.getGlyph(shape as string) !== '') {\n return 'icon';\n }\n return 'text';\n }\n }\n}\n"],"file":"index.js"}
@@ -14,6 +14,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
14
14
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
15
15
 
16
16
  import { AttributeType, gl } from '@antv/l7-core';
17
+ import { getMask } from '@antv/l7-utils';
17
18
  import BaseModel from '../../core/BaseModel';
18
19
  import { GlobelPointFillTriangulation, PointFillTriangulation } from '../../core/triangulation';
19
20
  var pointFillFrag = "#define Animate 0.0\n\nuniform float u_globel;\nuniform float u_additive;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\n\nvoid main() {\n int shape = int(floor(v_data.w + 0.5));\n\n \n vec4 textrueStroke = vec4(\n styleMappingMat[1][0],\n styleMappingMat[1][1],\n styleMappingMat[1][2],\n styleMappingMat[1][3]\n );\n\n float opacity = styleMappingMat[0][0];\n float stroke_opacity = styleMappingMat[0][1];\n float strokeWidth = styleMappingMat[0][2];\n vec4 strokeColor = textrueStroke == vec4(0) ? v_color : textrueStroke;\n\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius + strokeWidth);\n\n float outer_df;\n float inner_df;\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\n if (shape == 0) {\n outer_df = sdCircle(v_data.xy, 1.0);\n inner_df = sdCircle(v_data.xy, r);\n } else if (shape == 1) {\n outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\n inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\n } else if (shape == 2) {\n outer_df = sdBox(v_data.xy, vec2(1.));\n inner_df = sdBox(v_data.xy, vec2(r));\n } else if (shape == 3) {\n outer_df = sdPentagon(v_data.xy, 0.8);\n inner_df = sdPentagon(v_data.xy, r * 0.8);\n } else if (shape == 4) {\n outer_df = sdHexagon(v_data.xy, 0.8);\n inner_df = sdHexagon(v_data.xy, r * 0.8);\n } else if (shape == 5) {\n outer_df = sdOctogon(v_data.xy, 1.0);\n inner_df = sdOctogon(v_data.xy, r);\n } else if (shape == 6) {\n outer_df = sdHexagram(v_data.xy, 0.52);\n inner_df = sdHexagram(v_data.xy, r * 0.52);\n } else if (shape == 7) {\n outer_df = sdRhombus(v_data.xy, vec2(1.0));\n inner_df = sdRhombus(v_data.xy, vec2(r));\n } else if (shape == 8) {\n outer_df = sdVesica(v_data.xy, 1.1, 0.8);\n inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\n }\n\n if(u_globel > 0.0) {\n // TODO: \u5730\u7403\u6A21\u5F0F\u4E0B\u907F\u514D\u591A\u4F59\u7247\u5143\u7ED8\u5236\uFF0C\u540C\u65F6\u4E5F\u80FD\u907F\u514D\u6709\u7528\u7247\u5143\u5728\u900F\u660E\u4E14\u91CD\u53E0\u7684\u60C5\u51B5\u4E0B\u65E0\u6CD5\u5199\u5165\n // \u4ED8\u51FA\u7684\u4EE3\u4EF7\u662F\u8FB9\u7F18\u4F1A\u6709\u4E00\u4E9B\u952F\u9F7F\n if(outer_df > antialiasblur + 0.018) discard;\n }\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n float color_t = strokeWidth < 0.01 ? 0.0 : smoothstep(\n antialiasblur,\n 0.0,\n inner_df\n );\n float PI = 3.14159;\n float N_RINGS = 3.0;\n float FREQ = 1.0;\n\n if(strokeWidth < 0.01) {\n gl_FragColor = vec4(v_color.rgb, v_color.a * opacity);\n } else {\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * opacity), strokeColor * stroke_opacity, color_t);\n }\n\n // gl_FragColor = mix(vec4(v_color.rgb, v_color.a * opacity), strokeColor * stroke_opacity, color_t);\n\n if(u_aimate.x == Animate) {\n float d = length(v_data.xy);\n float intensity = clamp(cos(d * PI), 0.0, 1.0) * clamp(cos(2.0 * PI * (d * 2.0 * u_aimate.z - u_aimate.y * u_time)), 0.0, 1.0);\n \n // TODO: \u6839\u636E\u53E0\u52A0\u6A21\u5F0F\u9009\u62E9\u6548\u679C\n if(u_additive > 0.0) {\n gl_FragColor *= intensity;\n } else {\n gl_FragColor = vec4(gl_FragColor.xyz, intensity);\n }\n \n // TODO: \u4F18\u5316\u5728\u6C34\u6CE2\u7EB9\u60C5\u51B5\u4E0B\u7684\u62FE\u53D6\uFF08a == 0 \u65F6\u65E0\u6CD5\u62FE\u53D6\uFF09\n if(d < 0.7) {\n gl_FragColor.a = max(gl_FragColor.a, 0.001);\n }\n\n if(u_additive > 0.0) {\n gl_FragColor = filterColorAnimate(gl_FragColor);\n } else {\n gl_FragColor = filterColor(gl_FragColor);\n }\n } else {\n gl_FragColor = filterColor(gl_FragColor);\n \n }\n\n if(u_additive > 0.0) {\n gl_FragColor *= opacity_t;\n } else {\n gl_FragColor.a *= opacity_t;\n }\n}\n";
@@ -165,6 +166,12 @@ var FillModel = function (_BaseModel) {
165
166
  }, {
166
167
  key: "buildModels",
167
168
  value: function buildModels() {
169
+ var _ref4 = this.layer.getLayerConfig(),
170
+ _ref4$mask = _ref4.mask,
171
+ mask = _ref4$mask === void 0 ? false : _ref4$mask,
172
+ _ref4$maskInside = _ref4.maskInside,
173
+ maskInside = _ref4$maskInside === void 0 ? true : _ref4$maskInside;
174
+
168
175
  var isGlobel = this.mapService.version === 'GLOBEL';
169
176
  return [this.layer.buildLayerModel({
170
177
  moduleName: 'pointfill',
@@ -174,7 +181,8 @@ var FillModel = function (_BaseModel) {
174
181
  depth: {
175
182
  enable: isGlobel
176
183
  },
177
- blend: this.getBlend()
184
+ blend: this.getBlend(),
185
+ stencil: getMask(mask, maskInside)
178
186
  })];
179
187
  }
180
188
  }, {