| Line |
Branch |
Decision |
Call |
Exec |
Source |
| 1 |
|
|
|
|
#include "PatternShapeRendererData.h" |
| 2 |
|
|
|
|
|
| 3 |
|
|
|
|
#include <ranges> |
| 4 |
|
|
|
|
|
| 5 |
|
|
|
|
using namespace Chrysalis; |
| 6 |
|
|
|
|
|
| 7 |
|
|
|
✗ |
PatternShapeRendererData::PatternShapeRendererData(BaseObservable<PatternShapeObserver>* observable, |
| 8 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
|
✗ |
const std::vector<BaseRendererObserver*>& observers) |
| 9 |
|
|
0/28
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 22 not invoked.
✗ Call 23 not invoked.
✗ Call 24 not invoked.
✗ Call 25 not invoked.
✗ Call 26 not invoked.
✗ Call 27 not invoked.
|
✗ |
: BaseObservableRendererData(observers), observable_(observable) { |
| 10 |
|
|
0/10
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
|
✗ |
observable_->addObserver(this); |
| 11 |
|
|
0/15
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
|
✗ |
} |
| 12 |
|
|
|
|
|
| 13 |
|
|
0/9
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
|
✗ |
PatternShapeRendererData::~PatternShapeRendererData() { |
| 14 |
|
|
0/10
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
|
✗ |
observable_->removeObserver(this); |
| 15 |
|
|
0/15
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
|
✗ |
} |
| 16 |
|
|
|
|
|
| 17 |
|
|
|
✗ |
void PatternShapeRendererData::pointAdded(const Outline* outline, const Point* point) { |
| 18 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
if (!data_.contains(outline)) { |
| 19 |
|
|
0/16
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
|
✗ |
triangulation_.emplace(outline, CGAL::Constrained_Delaunay_triangulation_2<CG::LinearKernel>{}); |
| 20 |
|
|
0/11
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
|
✗ |
data_.emplace(outline, std::vector<Vertex2f>()); |
| 21 |
|
|
|
|
} |
| 22 |
|
|
0/6
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
|
✗ |
data_[outline].clear(); |
| 23 |
|
|
0/17
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
|
✗ |
triangulation_[outline].insert(*point); |
| 24 |
|
0/1
? Decision couldn't be analyzed.
|
0/9
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
|
✗ |
for (auto face = triangulation_[outline].finite_faces_begin(); |
| 25 |
|
|
0/14
✗ Call 0 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 20 not invoked.
✗ Call 23 not invoked.
|
✗ |
face != triangulation_[outline].finite_faces_end(); ++face) { |
| 26 |
|
|
0/18
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 24 not invoked.
✗ Call 25 not invoked.
|
✗ |
data_[outline].emplace_back(face->vertex(0)->point()); |
| 27 |
|
|
0/18
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 24 not invoked.
✗ Call 25 not invoked.
|
✗ |
data_[outline].emplace_back(face->vertex(1)->point()); |
| 28 |
|
|
0/18
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 24 not invoked.
✗ Call 25 not invoked.
|
✗ |
data_[outline].emplace_back(face->vertex(2)->point()); |
| 29 |
|
|
|
|
} |
| 30 |
|
|
0/10
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
|
✗ |
updateVBO(); |
| 31 |
|
|
|
✗ |
} |
| 32 |
|
|
|
|
|
| 33 |
|
|
|
✗ |
std::vector<Layout> PatternShapeRendererData::layout() const { |
| 34 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
std::vector<Layout> layouts; |
| 35 |
|
0/1
? Decision couldn't be analyzed.
|
0/16
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
|
✗ |
for (const auto& outline: data_ | std::views::values) { |
| 36 |
|
|
0/11
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 9 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
|
✗ |
layouts.emplace_back(0, outline.size()); |
| 37 |
|
|
|
|
} |
| 38 |
|
|
|
✗ |
return layouts; |
| 39 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
} |
| 40 |
|
|
|
|
|
| 41 |
|
|
|
✗ |
std::vector<Vertex2f> PatternShapeRendererData::vbo() { |
| 42 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
std::vector<Vertex2f> vbo; |
| 43 |
|
0/1
? Decision couldn't be analyzed.
|
0/15
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
|
✗ |
for (const auto& triangles : data_ | std::views::values) { |
| 44 |
|
|
0/14
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
|
✗ |
vbo.insert(vbo.end(), triangles.cbegin(), triangles.cend()); |
| 45 |
|
|
|
|
} |
| 46 |
|
|
|
✗ |
return vbo; |
| 47 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
} |
| 48 |
|
|
|
|
|
| 49 |
|
|
|
✗ |
size_t PatternShapeRendererData::size() { |
| 50 |
|
|
0/9
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
✗ Call 8 not invoked.
|
✗ |
return std::accumulate(data_.begin(), data_.end(), static_cast<size_t>(0), [](auto sum, auto data) { |
| 51 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
|
✗ |
return sum + data.second.size(); |
| 52 |
|
|
|
✗ |
}); |
| 53 |
|
|
|
|
} |
| 54 |
|
|
|
|
|