earcut 2.1.0 → 2.1.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.
@@ -4,25 +4,49 @@
4
4
  "selected_items":
5
5
  [
6
6
  [
7
- "outer",
8
- "outerNode"
7
+ "elim",
8
+ "eliminateHoles"
9
9
  ],
10
10
  [
11
- "tria",
12
- "triangleArea"
11
+ "num",
12
+ "numTriangles"
13
13
  ],
14
14
  [
15
- "ring",
16
- "ringArea"
15
+ "polygon",
16
+ "polygonArea"
17
17
  ],
18
18
  [
19
19
  "tri",
20
20
  "triangleArea"
21
21
  ],
22
+ [
23
+ "tria",
24
+ "triangles"
25
+ ],
22
26
  [
23
27
  "poly",
24
28
  "polygonArea"
25
29
  ],
30
+ [
31
+ "pol",
32
+ "polygonArea"
33
+ ],
34
+ [
35
+ "hole",
36
+ "holeIndices"
37
+ ],
38
+ [
39
+ "outer",
40
+ "outerLen"
41
+ ],
42
+ [
43
+ "local",
44
+ "locallyReflex"
45
+ ],
46
+ [
47
+ "ring",
48
+ "ringArea"
49
+ ],
26
50
  [
27
51
  "out",
28
52
  "outerArea"
@@ -119,10 +143,6 @@
119
143
  "left",
120
144
  "leftmost"
121
145
  ],
122
- [
123
- "hole",
124
- "holeNode"
125
- ],
126
146
  [
127
147
  "draw",
128
148
  "drawRing"
@@ -156,97 +176,90 @@
156
176
  "buffers":
157
177
  [
158
178
  {
159
- "file": "viz/viz.js",
179
+ "file": "src/earcut.js",
160
180
  "settings":
161
181
  {
162
- "buffer_size": 57998,
182
+ "buffer_size": 18282,
163
183
  "line_ending": "Unix"
164
184
  }
165
185
  },
166
186
  {
167
- "file": "test/fixtures/water-huge.json",
187
+ "file": "test/fixtures/issue52.json",
168
188
  "settings":
169
189
  {
170
- "buffer_size": 67253,
190
+ "buffer_size": 1228,
171
191
  "line_ending": "Unix"
172
192
  }
173
193
  },
174
194
  {
175
- "contents": "'use strict';\n\nexports.readTile = readTile;\n\nfunction readTile(pbf, end) {\n return pbf.readFields(readTileField, {layers: []}, end);\n}\nfunction readTileField(tag, tile, pbf) {\n if (tag === 3) tile.layers.push(readLayer(pbf, pbf.readVarint() + pbf.pos));\n}\n\n// Value ========================================\n\nfunction readValue(pbf, end) {\n var value;\n while (pbf.pos < end) {\n var tag = pbf.readVarint() >> 3;\n if (tag === 1) value = pbf.readString();\n else if (tag === 2) value = pbf.readFloat();\n else if (tag === 3) value = pbf.readDouble();\n else if (tag === 4) value = pbf.readVarint();\n else if (tag === 5) value = pbf.readVarint();\n else if (tag === 6) value = pbf.readSVarint();\n else if (tag === 7) value = pbf.readBoolean();\n }\n return value;\n}\n\n// Geometry =======================================\n\nfunction readGeometry(pbf, end) {\n var length = 0;\n var x = 0;\n var y = 0;\n var cmd, line;\n var lines = [];\n\n while (pbf.pos < end) {\n if (length === 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n if (cmd === 1 || cmd === 2) {\n if (cmd === 1) {\n line = [];\n lines.push(line);\n }\n\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n line.push([x, y]);\n\n } else if (cmd === 7) {\n line.push(line[0]);\n\n } else {\n throw new Error('Unknown command ' + cmd);\n }\n\n length--;\n }\n\n return lines;\n}\n\n// Feature ========================================\n\nfunction readFeature(pbf, end) {\n return pbf.readFields(readFeatureField, {}, end);\n}\nfunction readFeatureField(tag, feature, pbf) {\n if (tag === 1) feature.id = pbf.readVarint();\n else if (tag === 2) feature.tags = pbf.readPackedVarint();\n else if (tag === 3) feature.type = pbf.readVarint();\n else if (tag === 4) feature.geometry = readGeometry(pbf, pbf.readVarint() + pbf.pos);\n}\n\n\n// Layer ========================================\n\nfunction readLayer(pbf, end) {\n return pbf.readFields(readLayerField, {features: [], keys: [], values: []}, end);\n}\nfunction readLayerField(tag, layer, pbf) {\n if (tag === 15) {\n layer.version = pbf.readVarint();\n // console.log(layer.version);\n }\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 2) layer.features.push(readFeature(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 3) layer.keys.push(pbf.readString());\n else if (tag === 4) layer.values.push(readValue(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 5) layer.extent = pbf.readVarint();\n}\n",
176
- "file": "viz/vector-tile.js",
177
- "file_size": 2750,
178
- "file_write_time": 131009811420000000,
195
+ "file": "test/test.js",
179
196
  "settings":
180
197
  {
181
- "buffer_size": 2750,
198
+ "buffer_size": 2240,
182
199
  "line_ending": "Unix"
183
200
  }
184
201
  },
185
202
  {
186
- "contents": "'use strict';\n\nvar vt2geojson = require('vt2geojson');\nvar earcut = require('../../');\n\nfunction test(data) {\n var expectedDeviation = 1000;\n var flat = flattenData(data),\n vertices = flat.vertices,\n holes = flat.holes,\n dim = flat.dimensions,\n indices = earcut(vertices, holes, dim),\n expectedArea = polygonArea(data),\n area = 0;\n\n for (var i = 0; i < indices.length; i += 3) {\n area += triangleArea(\n [vertices[dim * indices[i]], vertices[dim * indices[i] + 1]],\n [vertices[dim * indices[i + 1]], vertices[dim * indices[i + 1] + 1]],\n [vertices[dim * indices[i + 2]], vertices[dim * indices[i + 2] + 1]]);\n }\n\n var deviation = expectedArea === 0 && area === 0 ? 0 : area - expectedArea;\n\n return {\n expected: expectedArea,\n actual: area,\n deviation: deviation,\n ok: deviation < expectedDeviation,\n diff: area - expectedArea,\n log: area + ' vs ' + expectedArea + ', deviation: ' + deviation\n };\n}\n\nfunction areaTest(data) {\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n data[i][j] = [data[i][j].x, data[i][j].y];\n }\n }\n\n var result = test(data);\n console.log(result.log);\n\n if (!result.ok) {\n for (i = 1; i < data.length;) {\n var data2 = data.slice();\n data2.splice(i, 1);\n if (!test(data2).ok) {\n data = data2;\n } else {\n i++;\n }\n }\n\n console.log(JSON.stringify(data));\n }\n}\n\nfunction flattenData(data) {\n var dim = 2,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n result.vertices.push(data[i][j][0]);\n result.vertices.push(data[i][j][1]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n\n return result;\n}\n\nfunction triangleArea(a, b, c) {\n return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1])) / 2;\n}\n\nfunction ringArea(points) {\n var sum = 0;\n for (var i = 0, len = points.length, j = len - 1; i < len; j = i++) {\n sum += (points[i][0] - points[j][0]) * (points[i][1] + points[j][1]);\n }\n return Math.abs(sum) / 2;\n}\n\nfunction polygonArea(rings) {\n var sum = ringArea(rings[0]);\n for (var i = 1; i < rings.length; i++) {\n sum -= ringArea(rings[i]);\n }\n return sum;\n}\n\nvt2geojson({\n url: 'https://api-maps-staging.tilestream.net/v4/mikemorris.aqkwf6ur/5/29/19.vector.pbf?access_token=tk.eyJ1IjoibWlrZW1vcnJpcyIsImV4cCI6MTQ1NjUwODEyMiwiaWF0IjoxNDU2NTA0NTIyLCJzY29wZXMiOlsiZXNzZW50aWFscyIsInNjb3BlczpsaXN0IiwibWFwOnJlYWQiLCJtYXA6d3JpdGUiLCJ1c2VyOnJlYWQiLCJ1c2VyOndyaXRlIiwidXBsb2FkczpyZWFkIiwidXBsb2FkczpsaXN0IiwidXBsb2Fkczp3cml0ZSIsInN0eWxlczp0aWxlcyIsInN0eWxlczpyZWFkIiwiZm9udHM6cmVhZCIsInN0eWxlczp3cml0ZSIsInN0eWxlczpsaXN0Iiwic3R5bGVzOmRyYWZ0IiwiZm9udHM6bGlzdCIsImZvbnRzOndyaXRlIiwiZm9udHM6bWV0YWRhdGEiLCJkYXRhc2V0czpyZWFkIiwiZGF0YXNldHM6d3JpdGUiLCJhZG1pbiIsInN0YWZmIl0sImNsaWVudCI6Im1hcGJveC5jb20ifQ.z4jTWIkQ4KVOrjylDqZkFQ'\n}, function (err, result) {\n if (err) throw err;\n result.features.forEach(function (feature, i) {\n if (feature.geometry.type === 'Polygon') {\n areaTest(feature.coordinates[0], i);\n } else if (feature.geometry.type === 'MultiPolygon') {\n feature.coordinates.forEach(areaTest);\n }\n });\n});\n",
187
- "file": "test/fixtures/reduce-testcase.js",
188
- "file_size": 3623,
189
- "file_write_time": 131009829480000000,
203
+ "file": "package.json",
190
204
  "settings":
191
205
  {
192
- "buffer_size": 3623,
206
+ "buffer_size": 1301,
193
207
  "line_ending": "Unix"
194
208
  }
195
209
  },
196
210
  {
197
- "file": "test/fixtures/hilbert.json",
211
+ "file": "viz/viz.js",
198
212
  "settings":
199
213
  {
200
- "buffer_size": 9560,
214
+ "buffer_size": 32656,
201
215
  "line_ending": "Unix"
202
216
  }
203
217
  },
204
218
  {
205
- "file": "viz/index.html",
219
+ "file": "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - Otto/Otto Yesterday.sublime-theme",
206
220
  "settings":
207
221
  {
208
- "buffer_size": 329,
222
+ "buffer_size": 119157,
209
223
  "line_ending": "Unix"
210
224
  }
211
225
  },
212
226
  {
213
- "contents": "[[[0,0],[-1,0],[-1,-1],[0,-1],[0,-2],[0,-3],[-1,-3],[-1,-2],[-2,-2],[-2,-3],[-3,-3],[-3,-2],[-3,-1],[-2,-1],[-2,0],[-3,0],[-4,0],[-4,-1],[-5,-1],[-5,0],[-6,0],[-7,0],[-7,-1],[-6,-1],[-6,-2],[-7,-2],[-7,-3],[-6,-3],[-5,-3],[-5,-2],[-4,-2],[-4,-3],[-4,-4],[-4,-5],[-5,-5],[-5,-4],[-6,-4],[-7,-4],[-7,-5],[-6,-5],[-6,-6],[-7,-6],[-7,-7],[-6,-7],[-5,-7],[-5,-6],[-4,-6],[-4,-7],[-3,-7],[-2,-7],[-2,-6],[-3,-6],[-3,-5],[-3,-4],[-2,-4],[-2,-5],[-1,-5],[-1,-4],[0,-4],[0,-5],[0,-6],[-1,-6],[-1,-7],[0,-7],[0,-8],[0,-9],[-1,-9],[-1,-8],[-2,-8],[-3,-8],[-3,-9],[-2,-9],[-2,-10],[-3,-10],[-3,-11],[-2,-11],[-1,-11],[-1,-10],[0,-10],[0,-11],[0,-12],[-1,-12],[-1,-13],[0,-13],[0,-14],[0,-15],[-1,-15],[-1,-14],[-2,-14],[-2,-15],[-3,-15],[-3,-14],[-3,-13],[-2,-13],[-2,-12],[-3,-12],[-4,-12],[-5,-12],[-5,-13],[-4,-13],[-4,-14],[-4,-15],[-5,-15],[-5,-14],[-6,-14],[-6,-15],[-7,-15],[-7,-14],[-7,-13],[-6,-13],[-6,-12],[-7,-12],[-7,-11],[-7,-10],[-6,-10],[-6,-11],[-5,-11],[-4,-11],[-4,-10],[-5,-10],[-5,-9],[-4,-9],[-4,-8],[-5,-8],[-6,-8],[-6,-9],[-7,-9],[-7,-8],[-8,-8],[-8,-9],[-9,-9],[-9,-8],[-10,-8],[-11,-8],[-11,-9],[-10,-9],[-10,-10],[-11,-10],[-11,-11],[-10,-11],[-9,-11],[-9,-10],[-8,-10],[-8,-11],[-8,-12],[-9,-12],[-9,-13],[-8,-13],[-8,-14],[-8,-15],[-9,-15],[-9,-14],[-10,-14],[-10,-15],[-11,-15],[-11,-14],[-11,-13],[-10,-13],[-10,-12],[-11,-12],[-12,-12],[-13,-12],[-13,-13],[-12,-13],[-12,-14],[-12,-15],[-13,-15],[-13,-14],[-14,-14],[-14,-15],[-15,-15],[-15,-14],[-15,-13],[-14,-13],[-14,-12],[-15,-12],[-15,-11],[-15,-10],[-14,-10],[-14,-11],[-13,-11],[-12,-11],[-12,-10],[-13,-10],[-13,-9],[-12,-9],[-12,-8],[-13,-8],[-14,-8],[-14,-9],[-15,-9],[-15,-8],[-15,-7],[-14,-7],[-14,-6],[-15,-6],[-15,-5],[-15,-4],[-14,-4],[-14,-5],[-13,-5],[-13,-4],[-12,-4],[-12,-5],[-12,-6],[-13,-6],[-13,-7],[-12,-7],[-11,-7],[-11,-6],[-10,-6],[-10,-7],[-9,-7],[-8,-7],[-8,-6],[-9,-6],[-9,-5],[-8,-5],[-8,-4],[-9,-4],[-10,-4],[-10,-5],[-11,-5],[-11,-4],[-11,-3],[-11,-2],[-10,-2],[-10,-3],[-9,-3],[-8,-3],[-8,-2],[-9,-2],[-9,-1],[-8,-1],[-8,0],[-9,0],[-10,0],[-10,-1],[-11,-1],[-11,0],[-12,0],[-13,0],[-13,-1],[-12,-1],[-12,-2],[-12,-3],[-13,-3],[-13,-2],[-14,-2],[-14,-3],[-15,-3],[-15,-2],[-15,-1],[-14,-1],[-14,0],[-15,0],[-16,0],[-16,-1],[-17,-1],[-17,0],[-18,0],[-19,0],[-19,-1],[-18,-1],[-18,-2],[-19,-2],[-19,-3],[-18,-3],[-17,-3],[-17,-2],[-16,-2],[-16,-3],[-16,-4],[-17,-4],[-17,-5],[-16,-5],[-16,-6],[-16,-7],[-17,-7],[-17,-6],[-18,-6],[-18,-7],[-19,-7],[-19,-6],[-19,-5],[-18,-5],[-18,-4],[-19,-4],[-20,-4],[-21,-4],[-21,-5],[-20,-5],[-20,-6],[-20,-7],[-21,-7],[-21,-6],[-22,-6],[-22,-7],[-23,-7],[-23,-6],[-23,-5],[-22,-5],[-22,-4],[-23,-4],[-23,-3],[-23,-2],[-22,-2],[-22,-3],[-21,-3],[-20,-3],[-20,-2],[-21,-2],[-21,-1],[-20,-1],[-20,0],[-21,0],[-22,0],[-22,-1],[-23,-1],[-23,0],[-24,0],[-25,0],[-25,-1],[-24,-1],[-24,-2],[-24,-3],[-25,-3],[-25,-2],[-26,-2],[-26,-3],[-27,-3],[-27,-2],[-27,-1],[-26,-1],[-26,0],[-27,0],[-28,0],[-28,-1],[-29,-1],[-29,0],[-30,0],[-31,0],[-31,-1],[-30,-1],[-30,-2],[-31,-2],[-31,-3],[-30,-3],[-29,-3],[-29,-2],[-28,-2],[-28,-3],[-28,-4],[-28,-5],[-29,-5],[-29,-4],[-30,-4],[-31,-4],[-31,-5],[-30,-5],[-30,-6],[-31,-6],[-31,-7],[-30,-7],[-29,-7],[-29,-6],[-28,-6],[-28,-7],[-27,-7],[-26,-7],[-26,-6],[-27,-6],[-27,-5],[-27,-4],[-26,-4],[-26,-5],[-25,-5],[-25,-4],[-24,-4],[-24,-5],[-24,-6],[-25,-6],[-25,-7],[-24,-7],[-24,-8],[-25,-8],[-25,-9],[-24,-9],[-24,-10],[-24,-11],[-25,-11],[-25,-10],[-26,-10],[-26,-11],[-27,-11],[-27,-10],[-27,-9],[-26,-9],[-26,-8],[-27,-8],[-28,-8],[-28,-9],[-29,-9],[-29,-8],[-30,-8],[-31,-8],[-31,-9],[-30,-9],[-30,-10],[-31,-10],[-31,-11],[-30,-11],[-29,-11],[-29,-10],[-28,-10],[-28,-11],[-28,-12],[-28,-13],[-29,-13],[-29,-12],[-30,-12],[-31,-12],[-31,-13],[-30,-13],[-30,-14],[-31,-14],[-31,-15],[-30,-15],[-29,-15],[-29,-14],[-28,-14],[-28,-15],[-27,-15],[-26,-15],[-26,-14],[-27,-14],[-27,-13],[-27,-12],[-26,-12],[-26,-13],[-25,-13],[-25,-12],[-24,-12],[-24,-13],[-24,-14],[-25,-14],[-25,-15],[-24,-15],[-23,-15],[-23,-14],[-22,-14],[-22,-15],[-21,-15],[-20,-15],[-20,-14],[-21,-14],[-21,-13],[-20,-13],[-20,-12],[-21,-12],[-22,-12],[-22,-13],[-23,-13],[-23,-12],[-23,-11],[-22,-11],[-22,-10],[-23,-10],[-23,-9],[-23,-8],[-22,-8],[-22,-9],[-21,-9],[-21,-8],[-20,-8],[-20,-9],[-20,-10],[-21,-10],[-21,-11],[-20,-11],[-19,-11],[-18,-11],[-18,-10],[-19,-10],[-19,-9],[-19,-8],[-18,-8],[-18,-9],[-17,-9],[-17,-8],[-16,-8],[-16,-9],[-16,-10],[-17,-10],[-17,-11],[-16,-11],[-16,-12],[-16,-13],[-17,-13],[-17,-12],[-18,-12],[-19,-12],[-19,-13],[-18,-13],[-18,-14],[-19,-14],[-19,-15],[-18,-15],[-17,-15],[-17,-14],[-16,-14],[-16,-15],[-16,-16],[-16,-17],[-17,-17],[-17,-16],[-18,-16],[-19,-16],[-19,-17],[-18,-17],[-18,-18],[-19,-18],[-19,-19],[-18,-19],[-17,-19],[-17,-18],[-16,-18],[-16,-19],[-16,-20],[-17,-20],[-17,-21],[-16,-21],[-16,-22],[-16,-23],[-17,-23],[-17,-22],[-18,-22],[-18,-23],[-19,-23],[-19,-22],[-19,-21],[-18,-21],[-18,-20],[-19,-20],[-20,-20],[-21,-20],[-21,-21],[-20,-21],[-20,-22],[-20,-23],[-21,-23],[-21,-22],[-22,-22],[-22,-23],[-23,-23],[-23,-22],[-23,-21],[-22,-21],[-22,-20],[-23,-20],[-23,-19],[-23,-18],[-22,-18],[-22,-19],[-21,-19],[-20,-19],[-20,-18],[-21,-18],[-21,-17],[-20,-17],[-20,-16],[-21,-16],[-22,-16],[-22,-17],[-23,-17],[-23,-16],[-24,-16],[-25,-16],[-25,-17],[-24,-17],[-24,-18],[-24,-19],[-25,-19],[-25,-18],[-26,-18],[-26,-19],[-27,-19],[-27,-18],[-27,-17],[-26,-17],[-26,-16],[-27,-16],[-28,-16],[-28,-17],[-29,-17],[-29,-16],[-30,-16],[-31,-16],[-31,-17],[-30,-17],[-30,-18],[-31,-18],[-31,-19],[-30,-19],[-29,-19],[-29,-18],[-28,-18],[-28,-19],[-28,-20],[-28,-21],[-29,-21],[-29,-20],[-30,-20],[-31,-20],[-31,-21],[-30,-21],[-30,-22],[-31,-22],[-31,-23],[-30,-23],[-29,-23],[-29,-22],[-28,-22],[-28,-23],[-27,-23],[-26,-23],[-26,-22],[-27,-22],[-27,-21],[-27,-20],[-26,-20],[-26,-21],[-25,-21],[-25,-20],[-24,-20],[-24,-21],[-24,-22],[-25,-22],[-25,-23],[-24,-23],[-24,-24],[-25,-24],[-25,-25],[-24,-25],[-24,-26],[-24,-27],[-25,-27],[-25,-26],[-26,-26],[-26,-27],[-27,-27],[-27,-26],[-27,-25],[-26,-25],[-26,-24],[-27,-24],[-28,-24],[-28,-25],[-29,-25],[-29,-24],[-30,-24],[-31,-24],[-31,-25],[-30,-25],[-30,-26],[-31,-26],[-31,-27],[-30,-27],[-29,-27],[-29,-26],[-28,-26],[-28,-27],[-28,-28],[-28,-29],[-29,-29],[-29,-28],[-30,-28],[-31,-28],[-31,-29],[-30,-29],[-30,-30],[-31,-30],[-31,-31],[-30,-31],[-29,-31],[-29,-30],[-28,-30],[-28,-31],[-27,-31],[-26,-31],[-26,-30],[-27,-30],[-27,-29],[-27,-28],[-26,-28],[-26,-29],[-25,-29],[-25,-28],[-24,-28],[-24,-29],[-24,-30],[-25,-30],[-25,-31],[-24,-31],[-23,-31],[-23,-30],[-22,-30],[-22,-31],[-21,-31],[-20,-31],[-20,-30],[-21,-30],[-21,-29],[-20,-29],[-20,-28],[-21,-28],[-22,-28],[-22,-29],[-23,-29],[-23,-28],[-23,-27],[-22,-27],[-22,-26],[-23,-26],[-23,-25],[-23,-24],[-22,-24],[-22,-25],[-21,-25],[-21,-24],[-20,-24],[-20,-25],[-20,-26],[-21,-26],[-21,-27],[-20,-27],[-19,-27],[-18,-27],[-18,-26],[-19,-26],[-19,-25],[-19,-24],[-18,-24],[-18,-25],[-17,-25],[-17,-24],[-16,-24],[-16,-25],[-16,-26],[-17,-26],[-17,-27],[-16,-27],[-16,-28],[-16,-29],[-17,-29],[-17,-28],[-18,-28],[-19,-28],[-19,-29],[-18,-29],[-18,-30],[-19,-30],[-19,-31],[-18,-31],[-17,-31],[-17,-30],[-16,-30],[-16,-31],[-15,-31],[-14,-31],[-14,-30],[-15,-30],[-15,-29],[-15,-28],[-14,-28],[-14,-29],[-13,-29],[-13,-28],[-12,-28],[-12,-29],[-12,-30],[-13,-30],[-13,-31],[-12,-31],[-11,-31],[-11,-30],[-10,-30],[-10,-31],[-9,-31],[-8,-31],[-8,-30],[-9,-30],[-9,-29],[-8,-29],[-8,-28],[-9,-28],[-10,-28],[-10,-29],[-11,-29],[-11,-28],[-11,-27],[-11,-26],[-10,-26],[-10,-27],[-9,-27],[-8,-27],[-8,-26],[-9,-26],[-9,-25],[-8,-25],[-8,-24],[-9,-24],[-10,-24],[-10,-25],[-11,-25],[-11,-24],[-12,-24],[-13,-24],[-13,-25],[-12,-25],[-12,-26],[-12,-27],[-13,-27],[-13,-26],[-14,-26],[-14,-27],[-15,-27],[-15,-26],[-15,-25],[-14,-25],[-14,-24],[-15,-24],[-15,-23],[-15,-22],[-14,-22],[-14,-23],[-13,-23],[-12,-23],[-12,-22],[-13,-22],[-13,-21],[-12,-21],[-12,-20],[-13,-20],[-14,-20],[-14,-21],[-15,-21],[-15,-20],[-15,-19],[-14,-19],[-14,-18],[-15,-18],[-15,-17],[-15,-16],[-14,-16],[-14,-17],[-13,-17],[-13,-16],[-12,-16],[-12,-17],[-12,-18],[-13,-18],[-13,-19],[-12,-19],[-11,-19],[-10,-19],[-10,-18],[-11,-18],[-11,-17],[-11,-16],[-10,-16],[-10,-17],[-9,-17],[-9,-16],[-8,-16],[-8,-17],[-8,-18],[-9,-18],[-9,-19],[-8,-19],[-8,-20],[-8,-21],[-9,-21],[-9,-20],[-10,-20],[-11,-20],[-11,-21],[-10,-21],[-10,-22],[-11,-22],[-11,-23],[-10,-23],[-9,-23],[-9,-22],[-8,-22],[-8,-23],[-7,-23],[-7,-22],[-6,-22],[-6,-23],[-5,-23],[-4,-23],[-4,-22],[-5,-22],[-5,-21],[-4,-21],[-4,-20],[-5,-20],[-6,-20],[-6,-21],[-7,-21],[-7,-20],[-7,-19],[-6,-19],[-6,-18],[-7,-18],[-7,-17],[-7,-16],[-6,-16],[-6,-17],[-5,-17],[-5,-16],[-4,-16],[-4,-17],[-4,-18],[-5,-18],[-5,-19],[-4,-19],[-3,-19],[-2,-19],[-2,-18],[-3,-18],[-3,-17],[-3,-16],[-2,-16],[-2,-17],[-1,-17],[-1,-16],[0,-16],[0,-17],[0,-18],[-1,-18],[-1,-19],[0,-19],[0,-20],[0,-21],[-1,-21],[-1,-20],[-2,-20],[-3,-20],[-3,-21],[-2,-21],[-2,-22],[-3,-22],[-3,-23],[-2,-23],[-1,-23],[-1,-22],[0,-22],[0,-23],[0,-24],[-1,-24],[-1,-25],[0,-25],[0,-26],[0,-27],[-1,-27],[-1,-26],[-2,-26],[-2,-27],[-3,-27],[-3,-26],[-3,-25],[-2,-25],[-2,-24],[-3,-24],[-4,-24],[-4,-25],[-5,-25],[-5,-24],[-6,-24],[-7,-24],[-7,-25],[-6,-25],[-6,-26],[-7,-26],[-7,-27],[-6,-27],[-5,-27],[-5,-26],[-4,-26],[-4,-27],[-4,-28],[-4,-29],[-5,-29],[-5,-28],[-6,-28],[-7,-28],[-7,-29],[-6,-29],[-6,-30],[-7,-30],[-7,-31],[-6,-31],[-5,-31],[-5,-30],[-4,-30],[-4,-31],[-3,-31],[-2,-31],[-2,-30],[-3,-30],[-3,-29],[-3,-28],[-2,-28],[-2,-29],[-1,-29],[-1,-28],[0,-28],[0,-29],[0,-30],[-1,-30],[-1,-31],[0,-31],[1,-31],[1,0],[0,0]]]",
227
+ "file": "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - Otto/schemes/Otto Yesterday.YAML-tmTheme",
214
228
  "settings":
215
229
  {
216
- "buffer_size": 9559,
217
- "line_ending": "Unix",
218
- "name": "[[[0 0],[-1 0],[-1 -1],[0 -1],[0 -2],[0 -3],[-1 -3"
230
+ "buffer_size": 4204,
231
+ "line_ending": "Unix"
219
232
  }
220
233
  },
221
234
  {
222
- "file": "README.md",
235
+ "file": "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings",
223
236
  "settings":
224
237
  {
225
- "buffer_size": 7068,
238
+ "buffer_size": 1219,
226
239
  "line_ending": "Unix"
227
240
  }
228
241
  },
229
242
  {
230
- "file": ".npmignore",
243
+ "file": "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Themes/Serenity.tmTheme",
231
244
  "settings":
232
245
  {
233
- "buffer_size": 30,
246
+ "buffer_size": 10977,
234
247
  "line_ending": "Unix"
235
248
  }
236
249
  },
237
250
  {
238
- "file": "package.json",
251
+ "contents": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>comment</key>\n <string>By Mourner http://agafonkin.com, based on Tomorrow by http://chriskempson.com</string>\n <key>name</key>\n <string>Serenity</string>\n <key>settings</key>\n <array>\n <dict>\n <key>settings</key>\n <dict>\n <key>background</key>\n <string>#FFFFFF</string>\n <key>caret</key>\n <string>#AEAFAD</string>\n <key>foreground</key>\n <string>#333</string>\n <key>invisibles</key>\n <string>#D1D1D1</string>\n <key>lineHighlight</key>\n <string>#EFEFEF</string>\n <key>selection</key>\n <string>#D6D6D6</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Comment</string>\n <key>scope</key>\n <string>comment</string>\n <key>settings</key>\n <dict>\n <key>foreground</key>\n <string>#A3A6A1</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Foreground</string>\n <key>scope</key>\n <string>keyword.operator.class, constant.other, source.php.embedded.line</string>\n <key>settings</key>\n <dict>\n <key>fontStyle</key>\n <string></string>\n <key>foreground</key>\n <string>#666969</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Variable, String Link, Regular Expression, Tag Name</string>\n <key>scope</key>\n <string>variable.language, support.other.variable, string.other.link, string.regexp, entity.name.tag, entity.other.attribute-name, meta.tag, declaration.tag</string>\n <key>settings</key>\n <dict>\n <key>foreground</key>\n <string>#028097</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Number, Constant, Function Argument, Tag Attribute, Embedded</string>\n <key>scope</key>\n <string>constant.numeric, constant.language, support.constant, constant.character, punctuation.section.embedded, keyword.other.unit</string>\n <key>settings</key>\n <dict>\n <key>fontStyle</key>\n <string></string>\n <key>foreground</key>\n <string>#00A707</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Class, Support</string>\n <key>scope</key>\n <string>entity.name.class, entity.name.type.class, support.type, support.class</string>\n <key>settings</key>\n <dict>\n <key>fontStyle</key>\n <string></string>\n <key>foreground</key>\n <string>#AA8400</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>String, Symbols, Inherited Class, Markup Heading</string>\n <key>scope</key>\n <string>string, constant.other.symbol, entity.other.inherited-class, markup.heading</string>\n <key>settings</key>\n <dict>\n <key>fontStyle</key>\n <string></string>\n <key>foreground</key>\n <string>#de314b</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Operator, Misc</string>\n <key>scope</key>\n <string>keyword.operator, constant.other.color</string>\n <key>settings</key>\n <dict>\n <key>foreground</key>\n <string>#3E999F</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Function, Special Method, Block Level</string>\n <key>scope</key>\n <string>entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.block-level</string>\n <key>settings</key>\n <dict>\n <key>fontStyle</key>\n <string></string>\n <key>foreground</key>\n <string>#000</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Keyword, Storage</string>\n <key>scope</key>\n <string>keyword, storage, storage.type</string>\n <key>settings</key>\n <dict>\n <key>fontStyle</key>\n <string></string>\n <key>foreground</key>\n <string>#028097</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Invalid</string>\n <key>scope</key>\n <string>invalid</string>\n <key>settings</key>\n <dict>\n <key>background</key>\n <string>#C82829</string>\n <key>fontStyle</key>\n <string></string>\n <key>foreground</key>\n <string>#FFFFFF</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Separator</string>\n <key>scope</key>\n <string>meta.separator</string>\n <key>settings</key>\n <dict>\n <key>background</key>\n <string>#eee</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Deprecated</string>\n <key>scope</key>\n <string>invalid.deprecated</string>\n <key>settings</key>\n <dict>\n <key>background</key>\n <string>#8959A8</string>\n <key>fontStyle</key>\n <string></string>\n <key>foreground</key>\n <string>#FFFFFF</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Diff foreground</string>\n <key>scope</key>\n <string>markup.inserted.diff, markup.deleted.diff, meta.diff.header.to-file, meta.diff.header.from-file</string>\n <key>settings</key>\n <dict>\n <key>foreground</key>\n <string>#000</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Diff insertion</string>\n <key>scope</key>\n <string>markup.inserted.diff, meta.diff.header.to-file</string>\n <key>settings</key>\n <dict>\n <key>background</key>\n <string>#dfd</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Diff deletion</string>\n <key>scope</key>\n <string>markup.deleted.diff, meta.diff.header.from-file</string>\n <key>settings</key>\n <dict>\n <key>background</key>\n <string>#fdd</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Diff header</string>\n <key>scope</key>\n <string>meta.diff.header.from-file, meta.diff.header.to-file</string>\n <key>settings</key>\n <dict>\n <key>foreground</key>\n <string>#999</string>\n <key>background</key>\n <string>#EAF2F5</string>\n </dict>\n </dict>\n <dict>\n <key>name</key>\n <string>Diff range</string>\n <key>scope</key>\n <string>meta.diff.range</string>\n <key>settings</key>\n <dict>\n <key>fontStyle</key>\n <string>italic</string>\n <key>foreground</key>\n <string>#3e999f</string>\n <key>background</key>\n <string>#EAF2F5</string>\n </dict>\n </dict>\n </array>\n <key>uuid</key>\n <string>82CCD69C-F1B1-4529-B39E-780F91F07604</string>\n</dict>\n</plist>\n",
239
252
  "settings":
240
253
  {
241
- "buffer_size": 1240,
254
+ "buffer_size": 8367,
242
255
  "line_ending": "Unix"
243
256
  }
244
257
  },
245
258
  {
246
- "file": "test/fixtures/hole-touching-outer.json",
259
+ "file": "/Users/mourner/Downloads/Serenity2.tmTheme",
247
260
  "settings":
248
261
  {
249
- "buffer_size": 937,
262
+ "buffer_size": 13027,
250
263
  "line_ending": "Unix"
251
264
  }
252
265
  },
@@ -257,55 +270,6 @@
257
270
  "buffer_size": 702,
258
271
  "line_ending": "Unix"
259
272
  }
260
- },
261
- {
262
- "file": "src/earcut.js",
263
- "settings":
264
- {
265
- "buffer_size": 16440,
266
- "line_ending": "Unix"
267
- }
268
- },
269
- {
270
- "file": "bench/basic.js",
271
- "settings":
272
- {
273
- "buffer_size": 28055,
274
- "line_ending": "Unix"
275
- }
276
- },
277
- {
278
- "file": "bench/bench.js",
279
- "settings":
280
- {
281
- "buffer_size": 29781,
282
- "line_ending": "Unix"
283
- }
284
- },
285
- {
286
- "file": "test/test.js",
287
- "settings":
288
- {
289
- "buffer_size": 3713,
290
- "line_ending": "Unix"
291
- }
292
- },
293
- {
294
- "contents": "+ Я\n+ Наташа\n+ Лёша Катрук\n+ Вероника Катрук\n+ Андрей Никитенко\n+ Наташа Никитенко\n+ Маша Курбатова\n+ Даня\n+ Ярик Гладилин\n? Аня\n+ Андрей Филенко\n+ Полина Филенко\n+ Женя Бахмацкий\n+ Оля Бахмацкая\n+ Коля Ярощук\n+ Дима Blackout\n+ Катя\n+ Юля Иллюхина\n+ Стюарт\n+ Антон Матвийчук\n+ Антон Пекло\n+ Лена Пекло\nКоля Кривонос\nСаша\nАндрей Каут\nАндрей Блаженко",
295
- "settings":
296
- {
297
- "buffer_size": 348,
298
- "line_ending": "Unix",
299
- "name": "+ Я"
300
- }
301
- },
302
- {
303
- "contents": "var poly = [];\ndo {\n poly.push([data[ear.i], data[ear.i + 1], ear.i]);\n ear = ear.next;\n} while (ear !== stop);\nconsole.log(JSON.stringify([poly]));",
304
- "settings":
305
- {
306
- "buffer_size": 154,
307
- "line_ending": "Unix"
308
- }
309
273
  }
310
274
  ],
311
275
  "build_system": "",
@@ -315,14 +279,70 @@
315
279
  "build_varint": "",
316
280
  "command_palette":
317
281
  {
318
- "height": 147.0,
319
- "last_filter": "install",
282
+ "height": 356.0,
283
+ "last_filter": "open",
320
284
  "selected_items":
321
285
  [
286
+ [
287
+ "open",
288
+ "PackageResourceViewer: Open Resource"
289
+ ],
290
+ [
291
+ "insta",
292
+ "Package Control: Install Package"
293
+ ],
294
+ [
295
+ "open re",
296
+ "PackageResourceViewer: Open Resource"
297
+ ],
298
+ [
299
+ "preview",
300
+ "Markdown Preview: Preview in Browser"
301
+ ],
302
+ [
303
+ "brow",
304
+ "Markdown Preview: Preview in Browser"
305
+ ],
306
+ [
307
+ "remove",
308
+ "Package Control: Remove Package"
309
+ ],
310
+ [
311
+ "vi",
312
+ "View In Browser"
313
+ ],
314
+ [
315
+ "view",
316
+ "View In Browser"
317
+ ],
318
+ [
319
+ "git",
320
+ "Package Control: Install Package"
321
+ ],
322
+ [
323
+ "ope",
324
+ "PackageResourceViewer: Open Resource"
325
+ ],
326
+ [
327
+ "disabl",
328
+ "Package Control: Disable Package"
329
+ ],
330
+ [
331
+ "resou",
332
+ "PackageResourceViewer: Open Resource"
333
+ ],
322
334
  [
323
335
  "install",
324
336
  "Package Control: Install Package"
325
337
  ],
338
+ [
339
+ "yaml",
340
+ "Set Syntax: YAML"
341
+ ],
342
+ [
343
+ "instal",
344
+ "Package Control: Install Package"
345
+ ],
326
346
  [
327
347
  "choose",
328
348
  "SublimeLinter: Choose Lint Mode"
@@ -339,10 +359,6 @@
339
359
  "java",
340
360
  "Set Syntax: JavaScript"
341
361
  ],
342
- [
343
- "insta",
344
- "Package Control: Install Package"
345
- ],
346
362
  [
347
363
  "install ",
348
364
  "Package Control: Install Package"
@@ -352,7 +368,7 @@
352
368
  "Package Control: Install Package"
353
369
  ]
354
370
  ],
355
- "width": 467.0
371
+ "width": 431.0
356
372
  },
357
373
  "console":
358
374
  {
@@ -383,24 +399,43 @@
383
399
  ],
384
400
  "file_history":
385
401
  [
402
+ "/Users/mourner/projects/earcut/test/test.js",
403
+ "/Users/mourner/projects/earcut/test/fixtures/eberly-6.json",
404
+ "/Users/mourner/projects/earcut/test/fixtures/hole-touching-outer.json",
405
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/3024 Color Scheme/3024 Day.tmTheme",
406
+ "/Users/mourner/projects/earcut/package.json",
407
+ "/Users/mourner/projects/earcut/viz/index.html",
408
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings",
409
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - Otto/Otto Yesterday.sublime-theme",
410
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - Otto/schemes/Otto Yesterday.tmTheme",
411
+ "/Users/mourner/projects/earcut/README.md",
412
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - Otto/schemes/Otto Yesterday.YAML-tmTheme",
413
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/User/View In Browser.sublime-settings",
414
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/JavaScript/JavaScript.sublime-syntax",
415
+ "/Users/mourner/projects/earcut/.npmignore",
416
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/User/SublimeLinter.sublime-settings",
417
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/User/SublimeLinter/Otto Yesterday (SL).tmTheme",
418
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/User/SublimeLinter/Serenity (SL).tmTheme",
419
+ "/Users/mourner/projects/earcut/bench/basic.js",
420
+ "/Users/mourner/projects/earcut/bench/bench.js",
421
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - El Capitan/El Capitan.sublime-theme",
422
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - El Capitan/icons/file_type_default.png",
423
+ "/Users/mourner/Library/Application Support/Sublime Text 3/Installed Packages/Theme - El Capitan.sublime-package",
424
+ "/Users/mourner/projects/earcut/viz/viz.js",
425
+ "/Users/mourner/projects/earcut/viz/vector-tile.js",
426
+ "/Users/mourner/projects/earcut/test/fixtures/reduce-testcase.js",
427
+ "/Users/mourner/projects/earcut/test/fixtures/hilbert.json",
386
428
  "/Users/mourner/projects/earcut/src/earcut.js",
387
429
  "/Users/mourner/projects/earcut/perf.log",
388
430
  "/Users/mourner/projects/earcut/master2.log",
389
431
  "/Users/mourner/projects/earcut/master.log",
390
- "/Users/mourner/projects/earcut/bench/basic.js",
391
432
  "/usr/local/lib/node_modules/mapbox-cli/mapbox.sh",
392
- "/Users/mourner/projects/earcut/viz/viz.js",
393
- "/Users/mourner/projects/earcut/viz/index.html",
394
433
  "/Users/mourner/projects/earcut/test/fixtures/issue35.json",
395
434
  "/Users/mourner/projects/earcut/test/fixtures/issue34.json",
396
435
  "/Users/mourner/projects/earcut/test/fixtures/dude.json",
397
436
  "/Users/mourner/projects/earcut/test/fixtures/empty-square.json",
398
437
  "/Users/mourner/projects/earcut/test/fixtures/issue29.json",
399
- "/Users/mourner/projects/earcut/test/test.js",
400
- "/Users/mourner/projects/earcut/README.md",
401
- "/Users/mourner/projects/earcut/bench/bench.js",
402
438
  "/Users/mourner/projects/earcut/.travis.yml",
403
- "/Users/mourner/projects/earcut/package.json",
404
439
  "/Users/mourner/projects/earcut/.eslintrc",
405
440
  "/Users/mourner/projects/geojson-vt/debug/debug.js",
406
441
  "/Users/mourner/projects/geojson-vt/src/simplify.js",
@@ -409,7 +444,6 @@
409
444
  "/Users/mourner/projects/geojson-vt/LICENSE",
410
445
  "/Users/mourner/projects/geojson-vt/package.json",
411
446
  "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Default/Preferences.sublime-settings",
412
- "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings",
413
447
  "/Users/mourner/projects/Leaflet/CHANGELOG.md",
414
448
  "/usr/local/Library/Formula/node.rb",
415
449
  "/Users/mourner/projects/Leaflet/package.json",
@@ -423,11 +457,11 @@
423
457
  ],
424
458
  "find":
425
459
  {
426
- "height": 35.0
460
+ "height": 48.0
427
461
  },
428
462
  "find_in_files":
429
463
  {
430
- "height": 93.0,
464
+ "height": 128.0,
431
465
  "where_history":
432
466
  [
433
467
  ""
@@ -438,6 +472,121 @@
438
472
  "case_sensitive": false,
439
473
  "find_history":
440
474
  [
475
+ "steiner",
476
+ "data",
477
+ "linkedList",
478
+ "removenode",
479
+ "collinear",
480
+ "filterpoints",
481
+ "filterPoints",
482
+ "247",
483
+ "238",
484
+ "247",
485
+ "24",
486
+ "247",
487
+ "238",
488
+ "back",
489
+ "hasHoles",
490
+ "border",
491
+ "238",
492
+ "border",
493
+ "tab_",
494
+ "tab",
495
+ "property",
496
+ "function",
497
+ "link url",
498
+ "this",
499
+ "itali",
500
+ "class",
501
+ "ita",
502
+ ".string.begin",
503
+ " -meta.structure.dictionary.value.json",
504
+ "meta.function-call",
505
+ "call",
506
+ "function",
507
+ "metho",
508
+ "function",
509
+ "support.function",
510
+ "function",
511
+ "name",
512
+ "property",
513
+ "tag",
514
+ "class",
515
+ "brace",
516
+ "defini",
517
+ "call",
518
+ "meta",
519
+ "punctuation",
520
+ "Functions",
521
+ "constan",
522
+ "vari",
523
+ "keyword",
524
+ "variable",
525
+ "string",
526
+ "function",
527
+ "support",
528
+ "variable",
529
+ "Keyword",
530
+ "file-",
531
+ "default",
532
+ "variable",
533
+ "hex",
534
+ "<%= @base[\"08\"][\"hex\"] %>",
535
+ "<%= @base[\"0E\"][\"hex\"] %>",
536
+ "keyword",
537
+ "#<%= @base[\"04\"][\"hex\"] %>",
538
+ "#<%= @base[\"06\"][\"hex\"] %>",
539
+ "#<%= @base[\"02\"][\"hex\"] %>",
540
+ "#<%= @base[\"07\"][\"hex\"] %>",
541
+ "gutter",
542
+ "punctuation",
543
+ "string",
544
+ "punctuation",
545
+ "deco",
546
+ "clo",
547
+ "string.",
548
+ "string",
549
+ "variable.parameter",
550
+ "paramete",
551
+ "keyword",
552
+ "quo",
553
+ "quote",
554
+ "comment",
555
+ "string",
556
+ "comment",
557
+ "comments",
558
+ "indices.length / 3",
559
+ "indices",
560
+ "dim",
561
+ "holes",
562
+ "vertices",
563
+ "numDimensions",
564
+ "holeIndices",
565
+ "coords",
566
+ "dim",
567
+ "sum",
568
+ " / 2",
569
+ "signedArea",
570
+ "triangleArea",
571
+ "ringArea",
572
+ "holeIndices",
573
+ "a",
574
+ "b[1]",
575
+ "a[1]",
576
+ "data[i]",
577
+ "a[1]",
578
+ "a[0]",
579
+ "eliminateHoles",
580
+ "outerNode",
581
+ "next",
582
+ "prev",
583
+ "locallyInside",
584
+ "a",
585
+ "a.next",
586
+ "a.prev",
587
+ "locallyInside",
588
+ "findHoleBridge",
589
+ "[[",
441
590
  "earcutLinked",
442
591
  "splitEarcut",
443
592
  "[[",
@@ -450,122 +599,7 @@
450
599
  " * ratio",
451
600
  "dim",
452
601
  "geometry",
453
- "ctx.",
454
- "testPoints",
455
- "layer",
456
- "this",
457
- "eliminateHole",
458
- "eliminateHoles",
459
- "filterPoints",
460
- " console.time('bbox');\n",
461
- " <",
462
- "clockwise",
463
- "curelocal",
464
- "cureLocalIntersections",
465
- "splitEarcut",
466
- "earcutLinked",
467
- "linkedList2",
468
- "eliminateHoles",
469
- "eliminateholes",
470
- "linkedList2",
471
- "eliminateHoles",
472
- "linkedlist",
473
- "zorder",
474
- " ",
475
- "] [",
476
- "filterPoints",
477
- " || intersects(a, c, p, p.prev) || intersects(a, c, p, p.next)",
478
- " && !equals(p, ear)",
479
- "splitEarcut",
480
- " && !equals(p, ear)",
481
- "findholebridge",
482
- "eliminateHoles",
483
- "splitEarcut",
484
- "filterpoint",
485
- "filterpoints",
486
- "bridgeNode",
487
- "steiner",
488
- "bridgeNode",
489
- "eliminateHoles",
490
- "bridgeNode",
491
- "eliminateh",
492
- "filterpoints",
493
- "splitEarcut",
494
- "outerNode",
495
- "newNode",
496
- "outerNode",
497
- "filterpoint",
498
- "filter",
499
- "steiner",
500
- "while",
501
- "outerNode",
502
- "filterpoint",
503
- "splitpolygon",
504
- "filterpoint",
505
- "splitPolygon",
506
- "verifyfilter",
507
- "splitPolygon",
508
- "filterpoints",
509
- "verifyFilter",
510
- "eliminateHole",
511
- "eliminateHoles",
512
- "filterpoint",
513
- "filterpoints",
514
- "filterPoints2",
515
- "filterpoints2",
516
- "filterpoints",
517
- "filterpoints2",
518
- "steiner",
519
- "filterpoints",
520
- "steiner",
521
- "filterpoints",
522
- ", true",
523
- "removenode",
524
- "removeNode",
525
- "p.prev",
526
- "p.next",
527
- "removenode",
528
- "filterPoints",
529
- "z = ",
530
- "area(",
531
- "area(p.prev, p, p.next)",
532
- "area(",
533
- "outerNode",
534
- "linkedlist",
535
- ");\n",
536
- "area(",
537
- ".area",
538
- "removenode",
539
- "p.",
540
- "updatearea",
541
- "filterpoints",
542
- ".prev = ",
543
- ".next =",
544
- ".area ",
545
- "splitpolygon",
546
- "removenode",
547
- "node",
548
- "Node",
549
- "node",
550
- "orient",
551
- "node",
552
- ".i",
553
- "data, ",
554
- "curelocalinter",
555
- "split",
556
- "my",
557
- "mx",
558
- "mNode",
559
- "node",
560
- "Node",
561
- "node",
562
- "Node",
563
- "node",
564
- "p2",
565
- "p1",
566
- "node",
567
- "next",
568
- "p2"
602
+ "ctx."
569
603
  ],
570
604
  "highlight": true,
571
605
  "in_selection": false,
@@ -589,24 +623,24 @@
589
623
  "groups":
590
624
  [
591
625
  {
592
- "selected": 15,
626
+ "selected": 0,
593
627
  "sheets":
594
628
  [
595
629
  {
596
630
  "buffer": 0,
597
- "file": "viz/viz.js",
631
+ "file": "src/earcut.js",
598
632
  "semi_transient": false,
599
633
  "settings":
600
634
  {
601
- "buffer_size": 57998,
635
+ "buffer_size": 18282,
602
636
  "regions":
603
637
  {
604
638
  },
605
639
  "selection":
606
640
  [
607
641
  [
608
- 55311,
609
- 55311
642
+ 0,
643
+ 0
610
644
  ]
611
645
  ],
612
646
  "settings":
@@ -615,56 +649,57 @@
615
649
  "tab_size": 4,
616
650
  "translate_tabs_to_spaces": true
617
651
  },
618
- "translation.x": 440780.0,
619
- "translation.y": 0.0,
652
+ "translation.x": 0.0,
653
+ "translation.y": 2.0,
620
654
  "zoom_level": 1.0
621
655
  },
622
- "stack_index": 2,
656
+ "stack_index": 0,
623
657
  "type": "text"
624
658
  },
625
659
  {
626
660
  "buffer": 1,
627
- "file": "test/fixtures/water-huge.json",
628
- "semi_transient": true,
661
+ "file": "test/fixtures/issue52.json",
662
+ "semi_transient": false,
629
663
  "settings":
630
664
  {
631
- "buffer_size": 67253,
665
+ "buffer_size": 1228,
632
666
  "regions":
633
667
  {
634
668
  },
635
669
  "selection":
636
670
  [
637
671
  [
638
- 2,
639
- 54016
672
+ 1228,
673
+ 1228
640
674
  ]
641
675
  ],
642
676
  "settings":
643
677
  {
678
+ "open_with_edit": true,
644
679
  "syntax": "Packages/JavaScript/JSON.sublime-syntax"
645
680
  },
646
- "translation.x": 431116.0,
647
- "translation.y": -0.0,
681
+ "translation.x": 0.0,
682
+ "translation.y": 0.0,
648
683
  "zoom_level": 1.0
649
684
  },
650
- "stack_index": 4,
685
+ "stack_index": 2,
651
686
  "type": "text"
652
687
  },
653
688
  {
654
689
  "buffer": 2,
655
- "file": "viz/vector-tile.js",
690
+ "file": "test/test.js",
656
691
  "semi_transient": false,
657
692
  "settings":
658
693
  {
659
- "buffer_size": 2750,
694
+ "buffer_size": 2240,
660
695
  "regions":
661
696
  {
662
697
  },
663
698
  "selection":
664
699
  [
665
700
  [
666
- 1765,
667
- 1765
701
+ 557,
702
+ 557
668
703
  ]
669
704
  ],
670
705
  "settings":
@@ -677,148 +712,153 @@
677
712
  "translation.y": 0.0,
678
713
  "zoom_level": 1.0
679
714
  },
680
- "stack_index": 3,
715
+ "stack_index": 1,
681
716
  "type": "text"
682
717
  },
683
718
  {
684
719
  "buffer": 3,
685
- "file": "test/fixtures/reduce-testcase.js",
720
+ "file": "package.json",
686
721
  "semi_transient": false,
687
722
  "settings":
688
723
  {
689
- "buffer_size": 3623,
724
+ "buffer_size": 1301,
690
725
  "regions":
691
726
  {
692
727
  },
693
728
  "selection":
694
729
  [
695
730
  [
696
- 2543,
697
- 2543
731
+ 866,
732
+ 866
698
733
  ]
699
734
  ],
700
735
  "settings":
701
736
  {
702
- "syntax": "Packages/JavaScript/JavaScript.sublime-syntax",
703
- "tab_size": 4,
737
+ "syntax": "Packages/JavaScript/JSON.sublime-syntax",
738
+ "tab_size": 2,
704
739
  "translate_tabs_to_spaces": true
705
740
  },
706
741
  "translation.x": 0.0,
707
- "translation.y": 1222.0,
742
+ "translation.y": 0.0,
708
743
  "zoom_level": 1.0
709
744
  },
710
- "stack_index": 7,
745
+ "stack_index": 4,
711
746
  "type": "text"
712
747
  },
713
748
  {
714
749
  "buffer": 4,
715
- "file": "test/fixtures/hilbert.json",
750
+ "file": "viz/viz.js",
716
751
  "semi_transient": false,
717
752
  "settings":
718
753
  {
719
- "buffer_size": 9560,
754
+ "buffer_size": 32656,
720
755
  "regions":
721
756
  {
722
757
  },
723
758
  "selection":
724
759
  [
725
760
  [
726
- 0,
727
- 0
761
+ 1681,
762
+ 1681
728
763
  ]
729
764
  ],
730
765
  "settings":
731
766
  {
732
- "open_with_edit": true,
733
- "syntax": "Packages/JavaScript/JSON.sublime-syntax"
767
+ "syntax": "Packages/JavaScript/JavaScript.sublime-syntax",
768
+ "tab_size": 4,
769
+ "translate_tabs_to_spaces": true
734
770
  },
735
771
  "translation.x": 0.0,
736
772
  "translation.y": 0.0,
737
773
  "zoom_level": 1.0
738
774
  },
739
- "stack_index": 14,
775
+ "stack_index": 3,
740
776
  "type": "text"
741
777
  },
742
778
  {
743
779
  "buffer": 5,
744
- "file": "viz/index.html",
780
+ "file": "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - Otto/Otto Yesterday.sublime-theme",
745
781
  "semi_transient": false,
746
782
  "settings":
747
783
  {
748
- "buffer_size": 329,
784
+ "buffer_size": 119157,
749
785
  "regions":
750
786
  {
751
787
  },
752
788
  "selection":
753
789
  [
754
790
  [
755
- 245,
756
- 245
791
+ 118885,
792
+ 118885
757
793
  ]
758
794
  ],
759
795
  "settings":
760
796
  {
761
- "syntax": "Packages/HTML/HTML.sublime-syntax"
797
+ "syntax": "Packages/JavaScript/JSON.sublime-syntax",
798
+ "tab_size": 2,
799
+ "translate_tabs_to_spaces": true
762
800
  },
763
801
  "translation.x": 0.0,
764
- "translation.y": 0.0,
802
+ "translation.y": 88894.0,
765
803
  "zoom_level": 1.0
766
804
  },
767
- "stack_index": 6,
805
+ "stack_index": 5,
768
806
  "type": "text"
769
807
  },
770
808
  {
771
809
  "buffer": 6,
810
+ "file": "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Theme - Otto/schemes/Otto Yesterday.YAML-tmTheme",
772
811
  "semi_transient": false,
773
812
  "settings":
774
813
  {
775
- "buffer_size": 9559,
814
+ "buffer_size": 4204,
776
815
  "regions":
777
816
  {
778
817
  },
779
818
  "selection":
780
819
  [
781
820
  [
782
- 0,
783
- 9559
821
+ 2701,
822
+ 2718
784
823
  ]
785
824
  ],
786
825
  "settings":
787
826
  {
788
- "auto_name": "[[[0 0],[-1 0],[-1 -1],[0 -1],[0 -2],[0 -3],[-1 -3",
789
- "default_dir": "/Users/mourner/projects/earcut",
790
- "syntax": "Packages/Text/Plain text.tmLanguage"
827
+ "syntax": "Packages/Text/Plain text.tmLanguage",
828
+ "tab_size": 2,
829
+ "translate_tabs_to_spaces": true
791
830
  },
792
831
  "translation.x": 0.0,
793
- "translation.y": 0.0,
832
+ "translation.y": 1329.0,
794
833
  "zoom_level": 1.0
795
834
  },
796
- "stack_index": 15,
835
+ "stack_index": 7,
797
836
  "type": "text"
798
837
  },
799
838
  {
800
839
  "buffer": 7,
801
- "file": "README.md",
840
+ "file": "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings",
802
841
  "semi_transient": false,
803
842
  "settings":
804
843
  {
805
- "buffer_size": 7068,
844
+ "buffer_size": 1219,
806
845
  "regions":
807
846
  {
808
847
  },
809
848
  "selection":
810
849
  [
811
850
  [
812
- 0,
813
- 0
851
+ 945,
852
+ 945
814
853
  ]
815
854
  ],
816
855
  "settings":
817
856
  {
818
- "syntax": "Packages/Markdown/Markdown.sublime-syntax"
857
+ "syntax": "Packages/JavaScript/JSON.sublime-syntax",
858
+ "translate_tabs_to_spaces": false
819
859
  },
820
860
  "translation.x": 0.0,
821
- "translation.y": 0.0,
861
+ "translation.y": 415.0,
822
862
  "zoom_level": 1.0
823
863
  },
824
864
  "stack_index": 11,
@@ -826,90 +866,90 @@
826
866
  },
827
867
  {
828
868
  "buffer": 8,
829
- "file": ".npmignore",
869
+ "file": "/Users/mourner/Library/Application Support/Sublime Text 3/Packages/Themes/Serenity.tmTheme",
830
870
  "semi_transient": false,
831
871
  "settings":
832
872
  {
833
- "buffer_size": 30,
873
+ "buffer_size": 10977,
834
874
  "regions":
835
875
  {
836
876
  },
837
877
  "selection":
838
878
  [
839
879
  [
840
- 9,
841
- 9
880
+ 5513,
881
+ 5513
842
882
  ]
843
883
  ],
844
884
  "settings":
845
885
  {
846
- "open_with_edit": true,
847
- "syntax": "Packages/Text/Plain text.tmLanguage"
886
+ "syntax": "Packages/XML/XML.sublime-syntax",
887
+ "translate_tabs_to_spaces": false
848
888
  },
849
889
  "translation.x": 0.0,
850
- "translation.y": 0.0,
890
+ "translation.y": 3444.0,
851
891
  "zoom_level": 1.0
852
892
  },
853
- "stack_index": 13,
893
+ "stack_index": 6,
854
894
  "type": "text"
855
895
  },
856
896
  {
857
897
  "buffer": 9,
858
- "file": "package.json",
859
898
  "semi_transient": false,
860
899
  "settings":
861
900
  {
862
- "buffer_size": 1240,
901
+ "buffer_size": 8367,
863
902
  "regions":
864
903
  {
865
904
  },
866
905
  "selection":
867
906
  [
868
907
  [
869
- 0,
870
- 0
908
+ 1126,
909
+ 1126
871
910
  ]
872
911
  ],
873
912
  "settings":
874
913
  {
875
- "syntax": "Packages/JavaScript/JSON.sublime-syntax",
876
- "tab_size": 2,
914
+ "default_dir": "/Users/mourner/projects/earcut",
915
+ "syntax": "Packages/XML/XML.sublime-syntax",
916
+ "tab_size": 4,
877
917
  "translate_tabs_to_spaces": true
878
918
  },
879
919
  "translation.x": 0.0,
880
- "translation.y": 0.0,
920
+ "translation.y": 406.0,
881
921
  "zoom_level": 1.0
882
922
  },
883
- "stack_index": 5,
923
+ "stack_index": 10,
884
924
  "type": "text"
885
925
  },
886
926
  {
887
927
  "buffer": 10,
888
- "file": "test/fixtures/hole-touching-outer.json",
928
+ "file": "/Users/mourner/Downloads/Serenity2.tmTheme",
889
929
  "semi_transient": false,
890
930
  "settings":
891
931
  {
892
- "buffer_size": 937,
932
+ "buffer_size": 13027,
893
933
  "regions":
894
934
  {
895
935
  },
896
936
  "selection":
897
937
  [
898
938
  [
899
- 937,
900
- 937
939
+ 258,
940
+ 260
901
941
  ]
902
942
  ],
903
943
  "settings":
904
944
  {
905
- "open_with_edit": true,
906
- "syntax": "Packages/JavaScript/JSON.sublime-syntax"
945
+ "syntax": "Packages/XML/XML.sublime-syntax",
946
+ "translate_tabs_to_spaces": false
907
947
  },
908
948
  "translation.x": 0.0,
909
949
  "translation.y": 0.0,
910
950
  "zoom_level": 1.0
911
951
  },
912
- "stack_index": 17,
952
+ "stack_index": 8,
913
953
  "type": "text"
914
954
  },
915
955
  {
@@ -938,188 +978,15 @@
938
978
  "translation.y": 0.0,
939
979
  "zoom_level": 1.0
940
980
  },
941
- "stack_index": 8,
942
- "type": "text"
943
- },
944
- {
945
- "buffer": 12,
946
- "file": "src/earcut.js",
947
- "semi_transient": false,
948
- "settings":
949
- {
950
- "buffer_size": 16440,
951
- "regions":
952
- {
953
- },
954
- "selection":
955
- [
956
- [
957
- 1965,
958
- 2439
959
- ]
960
- ],
961
- "settings":
962
- {
963
- "syntax": "Packages/JavaScript/JavaScript.sublime-syntax",
964
- "tab_size": 4,
965
- "translate_tabs_to_spaces": true
966
- },
967
- "translation.x": 0.0,
968
- "translation.y": 943.0,
969
- "zoom_level": 1.0
970
- },
971
- "stack_index": 1,
972
- "type": "text"
973
- },
974
- {
975
- "buffer": 13,
976
- "file": "bench/basic.js",
977
- "semi_transient": false,
978
- "settings":
979
- {
980
- "buffer_size": 28055,
981
- "regions":
982
- {
983
- },
984
- "selection":
985
- [
986
- [
987
- 28055,
988
- 28055
989
- ]
990
- ],
991
- "settings":
992
- {
993
- "syntax": "Packages/JavaScript/JavaScript.sublime-syntax"
994
- },
995
- "translation.x": 0.0,
996
- "translation.y": 0.0,
997
- "zoom_level": 1.0
998
- },
999
- "stack_index": 10,
1000
- "type": "text"
1001
- },
1002
- {
1003
- "buffer": 14,
1004
- "file": "bench/bench.js",
1005
- "semi_transient": false,
1006
- "settings":
1007
- {
1008
- "buffer_size": 29781,
1009
- "regions":
1010
- {
1011
- },
1012
- "selection":
1013
- [
1014
- [
1015
- 16,
1016
- 4017
1017
- ]
1018
- ],
1019
- "settings":
1020
- {
1021
- "syntax": "Packages/JavaScript/JavaScript.sublime-syntax"
1022
- },
1023
- "translation.x": 0.0,
1024
- "translation.y": 0.0,
1025
- "zoom_level": 1.0
1026
- },
1027
981
  "stack_index": 9,
1028
982
  "type": "text"
1029
- },
1030
- {
1031
- "buffer": 15,
1032
- "file": "test/test.js",
1033
- "semi_transient": false,
1034
- "settings":
1035
- {
1036
- "buffer_size": 3713,
1037
- "regions":
1038
- {
1039
- },
1040
- "selection":
1041
- [
1042
- [
1043
- 3309,
1044
- 3544
1045
- ]
1046
- ],
1047
- "settings":
1048
- {
1049
- "syntax": "Packages/JavaScript/JavaScript.sublime-syntax",
1050
- "tab_size": 4,
1051
- "translate_tabs_to_spaces": true
1052
- },
1053
- "translation.x": 0.0,
1054
- "translation.y": 1492.0,
1055
- "zoom_level": 1.0
1056
- },
1057
- "stack_index": 0,
1058
- "type": "text"
1059
- },
1060
- {
1061
- "buffer": 16,
1062
- "semi_transient": false,
1063
- "settings":
1064
- {
1065
- "buffer_size": 348,
1066
- "regions":
1067
- {
1068
- },
1069
- "selection":
1070
- [
1071
- [
1072
- 302,
1073
- 302
1074
- ]
1075
- ],
1076
- "settings":
1077
- {
1078
- "auto_name": "+ Я",
1079
- "default_dir": "/Users/mourner/projects/earcut",
1080
- "syntax": "Packages/Text/Plain text.tmLanguage"
1081
- },
1082
- "translation.x": 0.0,
1083
- "translation.y": 0.0,
1084
- "zoom_level": 1.0
1085
- },
1086
- "stack_index": 12,
1087
- "type": "text"
1088
- },
1089
- {
1090
- "buffer": 17,
1091
- "semi_transient": false,
1092
- "settings":
1093
- {
1094
- "buffer_size": 154,
1095
- "regions":
1096
- {
1097
- },
1098
- "selection":
1099
- [
1100
- [
1101
- 0,
1102
- 154
1103
- ]
1104
- ],
1105
- "settings":
1106
- {
1107
- "default_dir": "/Users/mourner/projects/earcut",
1108
- "syntax": "Packages/JavaScript/JavaScript.sublime-syntax"
1109
- },
1110
- "translation.x": 0.0,
1111
- "translation.y": 0.0,
1112
- "zoom_level": 1.0
1113
- },
1114
- "stack_index": 16,
1115
- "type": "text"
1116
983
  }
1117
984
  ]
1118
985
  }
1119
986
  ],
1120
987
  "incremental_find":
1121
988
  {
1122
- "height": 23.0
989
+ "height": 24.0
1123
990
  },
1124
991
  "input":
1125
992
  {
@@ -1156,7 +1023,7 @@
1156
1023
  "project": "earcut.sublime-project",
1157
1024
  "replace":
1158
1025
  {
1159
- "height": 64.0
1026
+ "height": 44.0
1160
1027
  },
1161
1028
  "save_all_on_build": true,
1162
1029
  "select_file":
@@ -1165,6 +1032,42 @@
1165
1032
  "last_filter": "",
1166
1033
  "selected_items":
1167
1034
  [
1035
+ [
1036
+ "viz",
1037
+ "viz/viz.js"
1038
+ ],
1039
+ [
1040
+ "pre",
1041
+ "~/Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings"
1042
+ ],
1043
+ [
1044
+ "otto",
1045
+ "~/Library/Application Support/Sublime Text 3/Packages/Theme - Otto/schemes/Otto Yesterday.tmTheme"
1046
+ ],
1047
+ [
1048
+ "rea",
1049
+ "README.md"
1050
+ ],
1051
+ [
1052
+ "sere",
1053
+ "~/Library/Application Support/Sublime Text 3/Packages/Themes/Serenity.tmTheme"
1054
+ ],
1055
+ [
1056
+ "in",
1057
+ "viz/index.html"
1058
+ ],
1059
+ [
1060
+ "pac",
1061
+ "package.json"
1062
+ ],
1063
+ [
1064
+ "pack",
1065
+ "package.json"
1066
+ ],
1067
+ [
1068
+ "pa",
1069
+ "package.json"
1070
+ ],
1168
1071
  [
1169
1072
  "redu",
1170
1073
  "test/fixtures/reduce-testcase.js"
@@ -1173,10 +1076,6 @@
1173
1076
  "ear",
1174
1077
  "src/earcut.js"
1175
1078
  ],
1176
- [
1177
- "viz",
1178
- "viz/viz.js"
1179
- ],
1180
1079
  [
1181
1080
  "inde",
1182
1081
  "viz/index.html"
@@ -1185,10 +1084,6 @@
1185
1084
  "read",
1186
1085
  "README.md"
1187
1086
  ],
1188
- [
1189
- "rea",
1190
- "README.md"
1191
- ],
1192
1087
  [
1193
1088
  "vi",
1194
1089
  "viz/viz.js"
@@ -1362,6 +1257,10 @@
1362
1257
  "rb",
1363
1258
  "~/projects/rbush/rbush.sublime-project"
1364
1259
  ],
1260
+ [
1261
+ "lea",
1262
+ "~/projects/Leaflet/Leaflet.sublime-project"
1263
+ ],
1365
1264
  [
1366
1265
  "ma",
1367
1266
  "~/projects/mapbox-gl-js/mapbox-gl-js.sublime-project"