| 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 | }} |