| line |
true |
false |
branch |
|
34
|
1 |
0 |
auto shell = input.getExteriorRing(); |
|
35
|
1 |
0 |
auto shell_coords = seq_holder_t{shell->getCoordinates()}; |
|
40
|
1 |
0 |
assert(shell_coords->size() > 1); |
|
|
0 |
1 |
assert(shell_coords->size() > 1); |
|
42
|
5 |
0 |
for (size_t i = 0; i < shell_coords->size() - 1; ++i) { |
|
|
4 |
1 |
for (size_t i = 0; i < shell_coords->size() - 1; ++i) { |
|
43
|
4 |
0 |
auto& coord = shell_coords->getAt(i); |
|
44
|
4 |
0 |
shell_seq.push_back(coord); |
|
45
|
4 |
0 |
linearized.push_back(coord); |
|
47
|
1 |
0 |
polygon.push_back(shell_seq); |
|
50
|
1 |
0 |
auto holes_num = input.getNumInteriorRing(); |
|
51
|
1 |
1 |
for (size_t i = 0; i < holes_num; ++i) { |
|
52
|
1 |
0 |
auto* hole = input.getInteriorRingN(i); |
|
53
|
1 |
0 |
auto hole_coords = seq_holder_t{hole->getCoordinates()}; |
|
54
|
1 |
0 |
assert(hole_coords->size() > 1); |
|
|
0 |
1 |
assert(hole_coords->size() > 1); |
|
56
|
5 |
0 |
for (size_t j = 0; j < hole_coords->size() - 1; ++j) { |
|
|
4 |
1 |
for (size_t j = 0; j < hole_coords->size() - 1; ++j) { |
|
57
|
4 |
0 |
auto& coord = hole_coords->getAt(j); |
|
58
|
4 |
0 |
seq.push_back(coord); |
|
59
|
4 |
0 |
linearized.push_back(coord); |
|
61
|
1 |
0 |
polygon.push_back(seq); |
|
66
|
1 |
0 |
std::vector indices = mapbox::earcut(polygon); |
|
68
|
0 |
1 |
if (!vertices) throw "no tesselation (invalid polygon?)"; |
|
69
|
0 |
1 |
assert(vertices % 3 == 0); |
|
73
|
1 |
0 |
auto seq_factory = factory->getCoordinateSequenceFactory(); |
|
74
|
1 |
0 |
auto triangles = new result_t(); |
|
75
|
8 |
1 |
for(size_t i = 0; i < indices.size(); i += 3) { |
|
79
|
8 |
0 |
auto seq = seq_holder_t{seq_factory->create(4, 2)}; |
|
80
|
8 |
0 |
seq->setAt(c_A, 0); |
|
81
|
8 |
0 |
seq->setAt(c_B, 1); |
|
82
|
8 |
0 |
seq->setAt(c_C, 2); |
|
83
|
8 |
0 |
seq->setAt(c_A, 3); /* close the poly */ |
|
85
|
8 |
0 |
auto shell = factory->createLinearRing(seq.release()); |
|
86
|
8 |
0 |
auto holes = new std::vector(); |
|
87
|
8 |
0 |
auto poly = factory->createPolygon(shell, holes); |
|
88
|
8 |
0 |
triangles->push_back(poly); |
|
|
8 |
0 |
triangles->push_back(poly); |
|
91
|
1 |
0 |
return factory->createGeometryCollection(triangles); |
|
95
|
46 |
0 |
}} |
|
|
46 |
0 |
}} |