@antv/l7-layers 2.9.25-alpha.0 → 2.9.26-alpha.1

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 (126) hide show
  1. package/es/heatmap/models/heatmap.js +1 -1
  2. package/es/tile/tileFactory/base.d.ts +1 -1
  3. package/es/tile/utils.js +1 -1
  4. package/lib/Geometry/index.js +114 -77
  5. package/lib/Geometry/models/billboard.js +232 -181
  6. package/lib/Geometry/models/index.js +18 -34
  7. package/lib/Geometry/models/plane.js +407 -278
  8. package/lib/Geometry/models/sprite.js +291 -189
  9. package/lib/canvas/index.js +101 -66
  10. package/lib/canvas/models/canvas.js +207 -140
  11. package/lib/canvas/models/index.js +12 -30
  12. package/lib/citybuliding/building.js +98 -63
  13. package/lib/citybuliding/models/build.js +192 -146
  14. package/lib/core/BaseLayer.js +1331 -814
  15. package/lib/core/BaseModel.js +457 -279
  16. package/lib/core/interface.js +40 -53
  17. package/lib/core/schema.js +21 -39
  18. package/lib/core/shape/Path.js +67 -79
  19. package/lib/core/shape/extrude.js +132 -91
  20. package/lib/core/triangulation.js +378 -196
  21. package/lib/earth/index.js +100 -62
  22. package/lib/earth/models/atmosphere.js +146 -112
  23. package/lib/earth/models/base.js +210 -150
  24. package/lib/earth/models/bloomsphere.js +146 -112
  25. package/lib/earth/utils.js +111 -91
  26. package/lib/heatmap/index.js +149 -92
  27. package/lib/heatmap/models/grid.js +118 -91
  28. package/lib/heatmap/models/grid3d.js +155 -123
  29. package/lib/heatmap/models/heatmap.js +475 -338
  30. package/lib/heatmap/models/hexagon.js +121 -92
  31. package/lib/heatmap/models/index.js +22 -37
  32. package/lib/heatmap/triangulation.js +31 -47
  33. package/lib/image/index.js +111 -74
  34. package/lib/image/models/dataImage.js +232 -174
  35. package/lib/image/models/image.js +175 -128
  36. package/lib/image/models/index.js +15 -32
  37. package/lib/index.js +263 -97
  38. package/lib/line/index.js +131 -85
  39. package/lib/line/models/arc.js +352 -237
  40. package/lib/line/models/arc_3d.js +334 -228
  41. package/lib/line/models/earthArc_3d.js +336 -228
  42. package/lib/line/models/great_circle.js +291 -200
  43. package/lib/line/models/half.js +286 -201
  44. package/lib/line/models/index.js +42 -50
  45. package/lib/line/models/line.js +428 -299
  46. package/lib/line/models/linearline.js +277 -203
  47. package/lib/line/models/simpleLine.js +239 -175
  48. package/lib/line/models/tile.js +348 -237
  49. package/lib/line/models/wall.js +327 -235
  50. package/lib/mask/index.js +92 -59
  51. package/lib/mask/models/fill.js +134 -82
  52. package/lib/mask/models/index.js +12 -30
  53. package/lib/plugins/DataMappingPlugin.js +342 -224
  54. package/lib/plugins/DataSourcePlugin.js +102 -87
  55. package/lib/plugins/FeatureScalePlugin.js +330 -240
  56. package/lib/plugins/LayerAnimateStylePlugin.js +61 -55
  57. package/lib/plugins/LayerModelPlugin.js +80 -73
  58. package/lib/plugins/LayerStylePlugin.js +48 -51
  59. package/lib/plugins/LightingPlugin.js +80 -68
  60. package/lib/plugins/MultiPassRendererPlugin.js +91 -65
  61. package/lib/plugins/PixelPickingPlugin.js +150 -109
  62. package/lib/plugins/RegisterStyleAttributePlugin.js +110 -110
  63. package/lib/plugins/ShaderUniformPlugin.js +118 -99
  64. package/lib/plugins/UpdateModelPlugin.js +40 -47
  65. package/lib/plugins/UpdateStyleAttributePlugin.js +93 -75
  66. package/lib/point/index.js +226 -150
  67. package/lib/point/models/earthExtrude.js +279 -201
  68. package/lib/point/models/earthFill.js +287 -202
  69. package/lib/point/models/extrude.js +299 -203
  70. package/lib/point/models/fill.js +406 -275
  71. package/lib/point/models/fillmage.js +365 -256
  72. package/lib/point/models/image.js +241 -168
  73. package/lib/point/models/index.js +46 -52
  74. package/lib/point/models/normal.js +183 -134
  75. package/lib/point/models/radar.js +304 -211
  76. package/lib/point/models/simplePoint.js +194 -142
  77. package/lib/point/models/text.js +608 -385
  78. package/lib/point/models/tile.js +314 -223
  79. package/lib/point/shape/extrude.js +56 -52
  80. package/lib/polygon/index.js +154 -102
  81. package/lib/polygon/models/extrude.js +311 -223
  82. package/lib/polygon/models/fill.js +215 -153
  83. package/lib/polygon/models/index.js +46 -52
  84. package/lib/polygon/models/ocean.js +244 -173
  85. package/lib/polygon/models/tile.js +144 -100
  86. package/lib/polygon/models/water.js +222 -153
  87. package/lib/raster/buffers/triangulation.js +27 -40
  88. package/lib/raster/index.js +115 -75
  89. package/lib/raster/models/index.js +16 -33
  90. package/lib/raster/models/raster.js +178 -135
  91. package/lib/raster/raster.js +187 -132
  92. package/lib/tile/interface.js +4 -16
  93. package/lib/tile/manager/tileConfigManager.js +125 -86
  94. package/lib/tile/manager/tileLayerManager.js +313 -229
  95. package/lib/tile/manager/tilePickerManager.js +192 -123
  96. package/lib/tile/models/tileModel.js +71 -52
  97. package/lib/tile/tileFactory/base.js +432 -309
  98. package/lib/tile/tileFactory/index.js +51 -49
  99. package/lib/tile/tileFactory/line.js +65 -50
  100. package/lib/tile/tileFactory/point.js +65 -50
  101. package/lib/tile/tileFactory/polygon.js +65 -50
  102. package/lib/tile/tileFactory/raster.js +66 -54
  103. package/lib/tile/tileFactory/rasterData.js +88 -76
  104. package/lib/tile/tileFactory/rasterDataLayer.js +97 -62
  105. package/lib/tile/tileFactory/vectorLayer.js +168 -109
  106. package/lib/tile/tileLayer/baseTileLayer.js +420 -221
  107. package/lib/tile/tmsTileLayer.js +110 -67
  108. package/lib/tile/utils.js +110 -92
  109. package/lib/utils/blend.js +59 -79
  110. package/lib/utils/collision-index.js +107 -64
  111. package/lib/utils/dataMappingStyle.js +105 -60
  112. package/lib/utils/extrude_polyline.js +600 -398
  113. package/lib/utils/grid-index.js +163 -111
  114. package/lib/utils/layerData.js +130 -99
  115. package/lib/utils/multiPassRender.js +49 -41
  116. package/lib/utils/polylineNormal.js +148 -96
  117. package/lib/utils/simpleLine.js +100 -85
  118. package/lib/utils/symbol-layout.js +219 -116
  119. package/lib/utils/updateShape.js +15 -41
  120. package/lib/wind/index.js +109 -71
  121. package/lib/wind/models/index.js +12 -30
  122. package/lib/wind/models/utils.js +144 -105
  123. package/lib/wind/models/wind.js +333 -224
  124. package/lib/wind/models/windRender.js +329 -218
  125. package/lib/wind/models/windShader.js +23 -181
  126. package/package.json +6 -6
@@ -1,205 +1,308 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
-
19
- // src/utils/symbol-layout.ts
20
- var symbol_layout_exports = {};
21
- __export(symbol_layout_exports, {
22
- getGlyphQuads: () => getGlyphQuads,
23
- shapeText: () => shapeText
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(symbol_layout_exports);
6
+ exports.getGlyphQuads = getGlyphQuads;
7
+ exports.shapeText = shapeText;
8
+
9
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
+
11
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
+
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
14
+
15
+ /**
16
+ * 返回文本相对锚点位置
17
+ * @param {string} anchor 锚点位置
18
+ * @return {alignment} alignment
19
+ */
26
20
  function getAnchorAlignment(anchor) {
27
- let horizontalAlign = 0.5;
28
- let verticalAlign = 0.5;
21
+ var horizontalAlign = 0.5;
22
+ var verticalAlign = 0.5;
23
+
29
24
  switch (anchor) {
30
- case "right":
31
- case "top-right":
32
- case "bottom-right":
25
+ case 'right':
26
+ case 'top-right':
27
+ case 'bottom-right':
33
28
  horizontalAlign = 1;
34
29
  break;
35
- case "left":
36
- case "top-left":
37
- case "bottom-left":
30
+
31
+ case 'left':
32
+ case 'top-left':
33
+ case 'bottom-left':
38
34
  horizontalAlign = 0;
39
35
  break;
36
+
40
37
  default:
41
38
  horizontalAlign = 0.5;
42
39
  }
40
+
43
41
  switch (anchor) {
44
- case "bottom":
45
- case "bottom-right":
46
- case "bottom-left":
42
+ case 'bottom':
43
+ case 'bottom-right':
44
+ case 'bottom-left':
47
45
  verticalAlign = 1;
48
46
  break;
49
- case "top":
50
- case "top-right":
51
- case "top-left":
47
+
48
+ case 'top':
49
+ case 'top-right':
50
+ case 'top-left':
52
51
  verticalAlign = 0;
53
52
  break;
53
+
54
54
  default:
55
55
  verticalAlign = 0.5;
56
56
  }
57
- return { horizontalAlign, verticalAlign };
58
- }
57
+
58
+ return {
59
+ horizontalAlign: horizontalAlign,
60
+ verticalAlign: verticalAlign
61
+ };
62
+ } // justify right = 1, left = 0, center = 0.5
63
+
64
+
59
65
  function justifyLine(positionedGlyphs, glyphMap, start, end, justify) {
60
66
  if (!justify) {
61
67
  return;
62
68
  }
63
- const lastPositionedGlyph = positionedGlyphs[end];
64
- const glyph = lastPositionedGlyph.glyph;
69
+
70
+ var lastPositionedGlyph = positionedGlyphs[end];
71
+ var glyph = lastPositionedGlyph.glyph;
72
+
65
73
  if (glyph) {
66
- const lastAdvance = glyphMap[glyph].advance * lastPositionedGlyph.scale;
67
- const lineIndent = (positionedGlyphs[end].x + lastAdvance) * justify;
68
- for (let j = start; j <= end; j++) {
74
+ var lastAdvance = glyphMap[glyph].advance * lastPositionedGlyph.scale;
75
+ var lineIndent = (positionedGlyphs[end].x + lastAdvance) * justify;
76
+
77
+ for (var j = start; j <= end; j++) {
69
78
  positionedGlyphs[j].x -= lineIndent;
70
79
  }
71
80
  }
72
- }
81
+ } // justify right=1 left=0 center=0.5
82
+ // horizontalAlign right=1 left=0 center=0.5
83
+ // verticalAlign right=1 left=0 center=0.5
84
+
85
+
73
86
  function align(positionedGlyphs, justify, horizontalAlign, verticalAlign, maxLineLength, lineHeight, lineCount) {
74
- const shiftX = (justify - horizontalAlign) * maxLineLength;
75
- const shiftY = (-verticalAlign * lineCount + 0.5) * lineHeight;
76
- for (const glyphs of positionedGlyphs) {
77
- glyphs.x += shiftX;
78
- glyphs.y += shiftY;
87
+ var shiftX = (justify - horizontalAlign) * maxLineLength;
88
+ var shiftY = (-verticalAlign * lineCount + 0.5) * lineHeight;
89
+
90
+ var _iterator = _createForOfIteratorHelper(positionedGlyphs),
91
+ _step;
92
+
93
+ try {
94
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
95
+ var glyphs = _step.value;
96
+ glyphs.x += shiftX;
97
+ glyphs.y += shiftY;
98
+ }
99
+ } catch (err) {
100
+ _iterator.e(err);
101
+ } finally {
102
+ _iterator.f();
79
103
  }
80
104
  }
105
+
81
106
  function shapeLines(shaping, glyphMap, lines, lineHeight, textAnchor, textJustify, spacing) {
82
- const yOffset = -8;
83
- let x = 0;
84
- let y = yOffset;
85
- let maxLineLength = 0;
86
- const positionedGlyphs = shaping.positionedGlyphs;
87
- const justify = textJustify === "right" ? 1 : textJustify === "left" ? 0 : 0.5;
88
- const lineStartIndex = positionedGlyphs.length;
89
- lines.forEach((line) => {
90
- line.split("").forEach((char) => {
91
- const glyph = glyphMap[char];
92
- const baselineOffset = 0;
107
+ // buffer 4
108
+ var yOffset = -8;
109
+ var x = 0;
110
+ var y = yOffset;
111
+ var maxLineLength = 0;
112
+ var positionedGlyphs = shaping.positionedGlyphs;
113
+ var justify = textJustify === 'right' ? 1 : textJustify === 'left' ? 0 : 0.5;
114
+ var lineStartIndex = positionedGlyphs.length;
115
+ lines.forEach(function (line) {
116
+ line.split('').forEach(function (char) {
117
+ var glyph = glyphMap[char];
118
+ var baselineOffset = 0;
119
+
93
120
  if (glyph) {
94
121
  positionedGlyphs.push({
95
122
  glyph: char,
96
- x,
123
+ x: x,
97
124
  y: y + baselineOffset,
98
125
  vertical: false,
126
+ // TODO:目前只支持水平方向
99
127
  scale: 1,
100
128
  metrics: glyph
101
129
  });
102
130
  x += glyph.advance + spacing;
103
131
  }
104
- });
132
+ }); // 左右对齐
133
+
105
134
  if (positionedGlyphs.length !== lineStartIndex) {
106
- const lineLength = x - spacing;
135
+ var lineLength = x - spacing;
107
136
  maxLineLength = Math.max(lineLength, maxLineLength);
108
137
  justifyLine(positionedGlyphs, glyphMap, lineStartIndex, positionedGlyphs.length - 1, justify);
109
138
  }
139
+
110
140
  x = 0;
111
141
  y -= lineHeight + 5;
112
142
  });
113
- const { horizontalAlign, verticalAlign } = getAnchorAlignment(textAnchor);
114
- align(positionedGlyphs, justify, horizontalAlign, verticalAlign, maxLineLength, lineHeight, lines.length);
115
- const height = y - yOffset;
143
+
144
+ var _getAnchorAlignment = getAnchorAlignment(textAnchor),
145
+ horizontalAlign = _getAnchorAlignment.horizontalAlign,
146
+ verticalAlign = _getAnchorAlignment.verticalAlign;
147
+
148
+ align(positionedGlyphs, justify, horizontalAlign, verticalAlign, maxLineLength, lineHeight, lines.length); // 计算包围盒
149
+
150
+ var height = y - yOffset;
116
151
  shaping.top += -verticalAlign * height;
117
152
  shaping.bottom = shaping.top - height;
118
153
  shaping.left += -horizontalAlign * maxLineLength;
119
154
  shaping.right = shaping.left + maxLineLength;
120
155
  }
156
+
121
157
  function shapeIconFont(shaping, glyphMap, iconfonts, lineHeight, textAnchor, textJustify, spacing) {
122
- const yOffset = -8;
123
- let x = 0;
124
- let y = yOffset;
125
- let maxLineLength = 0;
126
- const positionedGlyphs = shaping.positionedGlyphs;
127
- const justify = textJustify === "right" ? 1 : textJustify === "left" ? 0 : 0.5;
128
- const lineStartIndex = positionedGlyphs.length;
129
- iconfonts.forEach((iconfont) => {
130
- const glyph = glyphMap[iconfont];
131
- const baselineOffset = 0;
158
+ // buffer 4
159
+ var yOffset = -8;
160
+ var x = 0;
161
+ var y = yOffset;
162
+ var maxLineLength = 0;
163
+ var positionedGlyphs = shaping.positionedGlyphs;
164
+ var justify = textJustify === 'right' ? 1 : textJustify === 'left' ? 0 : 0.5;
165
+ var lineStartIndex = positionedGlyphs.length;
166
+ iconfonts.forEach(function (iconfont) {
167
+ var glyph = glyphMap[iconfont];
168
+ var baselineOffset = 0;
169
+
132
170
  if (glyph) {
133
171
  positionedGlyphs.push({
134
172
  glyph: iconfont,
173
+ // x,
174
+
175
+ /**
176
+ * iconfont
177
+ * 在计算大小的时候计算的是 unicode 字符 如 &#xe6d4;
178
+ * 在布局计算 icon 位置的时候应该始终保持居中(且 icon 只占一个字符的位置)
179
+ */
135
180
  x: glyph.advance / 2,
136
181
  y: y + baselineOffset,
137
182
  vertical: false,
183
+ // TODO:目前只支持水平方向
138
184
  scale: 1,
139
185
  metrics: glyph
140
186
  });
141
187
  x += glyph.advance + spacing;
142
- }
188
+ } // 左右对齐
189
+
190
+
143
191
  if (positionedGlyphs.length !== lineStartIndex) {
144
- const lineLength = x - spacing;
192
+ var lineLength = x - spacing;
145
193
  maxLineLength = Math.max(lineLength, maxLineLength);
146
194
  justifyLine(positionedGlyphs, glyphMap, lineStartIndex, positionedGlyphs.length - 1, justify);
147
195
  }
196
+
148
197
  x = 0;
149
198
  y -= lineHeight + 5;
150
199
  });
151
- const { horizontalAlign, verticalAlign } = getAnchorAlignment(textAnchor);
152
- align(positionedGlyphs, justify, horizontalAlign, verticalAlign, maxLineLength, lineHeight, iconfonts.length);
153
- const height = y - yOffset;
200
+
201
+ var _getAnchorAlignment2 = getAnchorAlignment(textAnchor),
202
+ horizontalAlign = _getAnchorAlignment2.horizontalAlign,
203
+ verticalAlign = _getAnchorAlignment2.verticalAlign;
204
+
205
+ align(positionedGlyphs, justify, horizontalAlign, verticalAlign, maxLineLength, lineHeight, iconfonts.length); // 计算包围盒
206
+
207
+ var height = y - yOffset;
154
208
  shaping.top += -verticalAlign * height;
155
209
  shaping.bottom = shaping.top - height;
156
210
  shaping.left += -horizontalAlign * maxLineLength;
157
211
  shaping.right = shaping.left + maxLineLength;
158
212
  }
159
- function shapeText(text, glyphs, lineHeight, textAnchor, textJustify, spacing, translate = [0, 0], isIconFont) {
160
- const lines = text.split("\n");
161
- const positionedGlyphs = [];
162
- const shaping = {
163
- positionedGlyphs,
213
+ /**
214
+ * 计算文本中每个独立字符相对锚点的位置
215
+ *
216
+ * @param {string} text 原始文本
217
+ * @param {*} glyphs mapping
218
+ * @param {number} lineHeight 行高
219
+ * @param {string} textAnchor 文本相对于锚点的位置
220
+ * @param {string} textJustify 左右对齐
221
+ * @param {number} spacing 字符间距
222
+ * @param {[number, number]} translate 文本水平 & 垂直偏移量
223
+ * @param {[boolean]} isIconFont 是否是 iconfont
224
+ * @return {boolean|shaping} 每个字符相对于锚点的位置
225
+ */
226
+
227
+
228
+ function shapeText(text, glyphs, lineHeight, textAnchor, textJustify, spacing) {
229
+ var translate = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : [0, 0];
230
+ var isIconFont = arguments.length > 7 ? arguments[7] : undefined;
231
+ // TODO:处理换行
232
+ var lines = text.split('\n');
233
+ var positionedGlyphs = [];
234
+ var shaping = {
235
+ positionedGlyphs: positionedGlyphs,
164
236
  top: translate[1],
165
237
  bottom: translate[1],
166
238
  left: translate[0],
167
239
  right: translate[0],
168
240
  lineCount: lines.length,
169
- text
241
+ text: text
170
242
  };
171
243
  isIconFont ? shapeIconFont(shaping, glyphs, lines, lineHeight, textAnchor, textJustify, spacing) : shapeLines(shaping, glyphs, lines, lineHeight, textAnchor, textJustify, spacing);
244
+
172
245
  if (!positionedGlyphs.length) {
173
246
  return false;
174
247
  }
248
+
175
249
  return shaping;
176
250
  }
177
- function getGlyphQuads(shaping, textOffset = [0, 0], alongLine) {
178
- const { positionedGlyphs = [] } = shaping;
179
- const quads = [];
180
- for (const positionedGlyph of positionedGlyphs) {
181
- const rect = positionedGlyph.metrics;
182
- const rectBuffer = 4;
183
- const halfAdvance = rect.advance * positionedGlyph.scale / 2;
184
- const glyphOffset = alongLine ? [positionedGlyph.x + halfAdvance, positionedGlyph.y] : [0, 0];
185
- const builtInOffset = alongLine ? [0, 0] : [
186
- positionedGlyph.x + halfAdvance + textOffset[0],
187
- positionedGlyph.y + textOffset[1]
188
- ];
189
- const x1 = (0 - rectBuffer) * positionedGlyph.scale - halfAdvance + builtInOffset[0];
190
- const y1 = (0 - rectBuffer) * positionedGlyph.scale + builtInOffset[1];
191
- const x2 = x1 + rect.width * positionedGlyph.scale;
192
- const y2 = y1 + rect.height * positionedGlyph.scale;
193
- const tl = { x: x1, y: y1 };
194
- const tr = { x: x2, y: y1 };
195
- const bl = { x: x1, y: y2 };
196
- const br = { x: x2, y: y2 };
197
- quads.push({ tl, tr, bl, br, tex: rect, glyphOffset });
251
+
252
+ function getGlyphQuads(shaping) {
253
+ var textOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0, 0];
254
+ var alongLine = arguments.length > 2 ? arguments[2] : undefined;
255
+ var _shaping$positionedGl = shaping.positionedGlyphs,
256
+ positionedGlyphs = _shaping$positionedGl === void 0 ? [] : _shaping$positionedGl;
257
+ var quads = [];
258
+
259
+ var _iterator2 = _createForOfIteratorHelper(positionedGlyphs),
260
+ _step2;
261
+
262
+ try {
263
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
264
+ var positionedGlyph = _step2.value;
265
+ var rect = positionedGlyph.metrics; // The rects have an addditional buffer that is not included in their size.
266
+
267
+ var rectBuffer = 4;
268
+ var halfAdvance = rect.advance * positionedGlyph.scale / 2;
269
+ var glyphOffset = alongLine ? [positionedGlyph.x + halfAdvance, positionedGlyph.y] : [0, 0];
270
+ var builtInOffset = alongLine ? [0, 0] : [positionedGlyph.x + halfAdvance + textOffset[0], positionedGlyph.y + textOffset[1]];
271
+ var x1 = (0 - rectBuffer) * positionedGlyph.scale - halfAdvance + builtInOffset[0];
272
+ var y1 = (0 - rectBuffer) * positionedGlyph.scale + builtInOffset[1];
273
+ var x2 = x1 + rect.width * positionedGlyph.scale;
274
+ var y2 = y1 + rect.height * positionedGlyph.scale;
275
+ var tl = {
276
+ x: x1,
277
+ y: y1
278
+ };
279
+ var tr = {
280
+ x: x2,
281
+ y: y1
282
+ };
283
+ var bl = {
284
+ x: x1,
285
+ y: y2
286
+ };
287
+ var br = {
288
+ x: x2,
289
+ y: y2
290
+ }; // TODO:处理字符旋转的情况
291
+
292
+ quads.push({
293
+ tl: tl,
294
+ tr: tr,
295
+ bl: bl,
296
+ br: br,
297
+ tex: rect,
298
+ glyphOffset: glyphOffset
299
+ });
300
+ }
301
+ } catch (err) {
302
+ _iterator2.e(err);
303
+ } finally {
304
+ _iterator2.f();
198
305
  }
306
+
199
307
  return quads;
200
- }
201
- // Annotate the CommonJS export names for ESM import in node:
202
- 0 && (module.exports = {
203
- getGlyphQuads,
204
- shapeText
205
- });
308
+ }
@@ -1,53 +1,27 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
18
2
 
19
- // src/utils/updateShape.ts
20
- var updateShape_exports = {};
21
- __export(updateShape_exports, {
22
- updateShape: () => updateShape
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(updateShape_exports);
25
- var shapeUpdateList = [
26
- ["circle", "cylinder"],
27
- ["square", "cylinder"],
28
- ["triangle", "cylinder"],
29
- ["pentagon", "cylinder"],
30
- ["hexagon", "cylinder"],
31
- ["octogon", "cylinder"],
32
- ["hexagram", "cylinder"],
33
- ["rhombus", "cylinder"],
34
- ["vesica", "cylinder"]
35
- ];
6
+ exports.updateShape = updateShape;
7
+ // TODO: shapeUpdateList 存储一系列的 shape 类型
8
+ // 当这一系列的 shape 相互切换的时候需要重构 layer 的 model (顶点数据集)
9
+ var shapeUpdateList = [// PointLayer
10
+ ['circle', 'cylinder'], ['square', 'cylinder'], ['triangle', 'cylinder'], ['pentagon', 'cylinder'], ['hexagon', 'cylinder'], ['octogon', 'cylinder'], ['hexagram', 'cylinder'], ['rhombus', 'cylinder'], ['vesica', 'cylinder']];
11
+
36
12
  function updateShape(layer, lastShape, currentShape) {
37
- if (typeof lastShape === "string" && typeof currentShape === "string" && lastShape !== currentShape) {
38
- if (layer.type === "PointLayer") {
13
+ if (typeof lastShape === 'string' && typeof currentShape === 'string' && lastShape !== currentShape) {
14
+ if (layer.type === 'PointLayer') {
39
15
  layer.dataState.dataSourceNeedUpdate = true;
40
16
  return;
41
17
  }
42
- shapeUpdateList.map((shapes) => {
18
+
19
+ shapeUpdateList.map(function (shapes) {
43
20
  if (shapes.includes(lastShape) && shapes.includes(currentShape)) {
21
+ // TODO: dataSourceNeedUpdate 借用数据更新时更新 layer model 的工作流
44
22
  layer.dataState.dataSourceNeedUpdate = true;
45
23
  return;
46
24
  }
47
25
  });
48
26
  }
49
- }
50
- // Annotate the CommonJS export names for ESM import in node:
51
- 0 && (module.exports = {
52
- updateShape
53
- });
27
+ }