| Line |
Branch |
Decision |
Call |
Exec |
Source |
| 1 |
|
|
|
|
#include "PatternTraceRendererData.h" |
| 2 |
|
|
|
|
|
| 3 |
|
|
|
|
#include <ranges> |
| 4 |
|
|
|
|
|
| 5 |
|
|
|
|
|
| 6 |
|
|
|
|
using namespace Chrysalis; |
| 7 |
|
|
|
|
|
| 8 |
|
|
|
✗ |
PatternTraceRendererData::PatternTraceRendererData(BaseObservable<PatternTraceObserver>* observable, |
| 9 |
|
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
|
✗ |
const std::vector<BaseRendererObserver*>& observers) |
| 10 |
|
|
0/59
✗ 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.
✗ Call 28 not invoked.
✗ Call 29 not invoked.
✗ Call 30 not invoked.
✗ Call 31 not invoked.
✗ Call 32 not invoked.
✗ Call 33 not invoked.
✗ Call 34 not invoked.
✗ Call 35 not invoked.
✗ Call 36 not invoked.
✗ Call 37 not invoked.
✗ Call 38 not invoked.
✗ Call 39 not invoked.
✗ Call 40 not invoked.
✗ Call 41 not invoked.
✗ Call 42 not invoked.
✗ Call 43 not invoked.
✗ Call 44 not invoked.
✗ Call 45 not invoked.
✗ Call 46 not invoked.
✗ Call 47 not invoked.
✗ Call 48 not invoked.
✗ Call 49 not invoked.
✗ Call 50 not invoked.
✗ Call 51 not invoked.
✗ Call 52 not invoked.
✗ Call 53 not invoked.
✗ Call 54 not invoked.
✗ Call 55 not invoked.
✗ Call 56 not invoked.
✗ Call 57 not invoked.
✗ Call 58 not invoked.
|
✗ |
: BaseObservableRendererData(observers), observable_(observable) { |
| 11 |
|
|
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); |
| 12 |
|
|
0/29
✗ 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.
✗ Call 28 not invoked.
|
✗ |
} |
| 13 |
|
|
|
|
|
| 14 |
|
|
0/20
✗ 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.
|
✗ |
PatternTraceRendererData::~PatternTraceRendererData() { |
| 15 |
|
|
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); |
| 16 |
|
|
0/29
✗ 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.
✗ Call 28 not invoked.
|
✗ |
} |
| 17 |
|
|
|
|
|
| 18 |
|
|
|
✗ |
PatternTraceRendererData::Arrow PatternTraceRendererData::buildArrow(const CG::Point& pointFrom, const CG::Point& pointTo) { |
| 19 |
|
|
|
|
static constexpr double ARROW_BASE_FACTOR = 0.75; |
| 20 |
|
|
|
|
static constexpr double ARROW_WING_LENGTH = 0.75; |
| 21 |
|
|
|
|
static constexpr double ARROW_WING_ANGLE = 20; |
| 22 |
|
|
|
|
|
| 23 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
CG::Vector dir = pointFrom - pointTo; |
| 24 |
|
|
0/6
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 4 not invoked.
✗ Call 5 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
|
✗ |
dir /= std::sqrt(dir.squared_length()); |
| 25 |
|
|
|
|
|
| 26 |
|
|
0/6
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 6 not invoked.
✗ Call 7 not invoked.
|
✗ |
const CG::Vector shift = dir * POINT_RADIUS; |
| 27 |
|
|
|
|
|
| 28 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
dir *= ARROW_WING_LENGTH; |
| 29 |
|
|
|
|
return Arrow( |
| 30 |
|
|
0/2
✗ Call 0 not invoked.
✗ Call 1 not invoked.
|
✗ |
pointTo + shift, |
| 31 |
|
|
0/12
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 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 17 not invoked.
|
✗ |
pointTo + (dir + shift) * ARROW_BASE_FACTOR, |
| 32 |
|
|
0/12
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 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 17 not invoked.
|
✗ |
pointTo + CG::rotate(dir + shift, ARROW_WING_ANGLE), |
| 33 |
|
|
0/12
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 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 17 not invoked.
|
✗ |
pointTo + CG::rotate(dir + shift, -ARROW_WING_ANGLE) |
| 34 |
|
|
|
✗ |
); |
| 35 |
|
|
|
|
} |
| 36 |
|
|
|
|
|
| 37 |
|
|
|
✗ |
float PatternTraceRendererData::length(const CG::Point& pointFrom, const CG::Point& pointTo) { |
| 38 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
return static_cast<float>(CG::length(pointFrom, pointTo)); |
| 39 |
|
|
|
|
} |
| 40 |
|
|
|
|
|
| 41 |
|
|
|
✗ |
CG::Point PatternTraceRendererData::intersectionPoint(const CG::Point& pointFrom, const CG::Point& pointTo) { |
| 42 |
|
|
0/2
✗ Call 0 not invoked.
✗ Call 1 not invoked.
|
✗ |
auto intersection = CG::xIntersection(pointFrom, pointTo); |
| 43 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/7
✗ Call 0 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.
|
✗ |
if (!intersection) intersection = CG::yIntersection(pointFrom, pointTo); |
| 44 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
|
✗ |
return intersection.value(); |
| 45 |
|
|
|
|
} |
| 46 |
|
|
|
|
|
| 47 |
|
|
|
✗ |
void PatternTraceRendererData::pointMoved(const Point* point) { |
| 48 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
const auto positionLine = [&](const int lineIndex, const bool editFrom, const CG::Point& existingPoint) { |
| 49 |
|
|
0/8
✗ 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.
|
✗ |
const auto intersection = intersectionPoint(*point, existingPoint); |
| 50 |
|
|
0/8
✗ 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.
|
✗ |
const int pointIndex = editFrom ? 0 : (lines_[lineIndex].size() - 1); |
| 51 |
|
|
0/8
✗ 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.
|
✗ |
const int existingPointIndex = editFrom ? (lines_[lineIndex].size() - 1) : 0; |
| 52 |
|
|
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 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
|
✗ |
lines_[lineIndex][pointIndex].move(*point); |
| 53 |
|
|
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 13 not invoked.
✗ Call 14 not invoked.
✗ Call 17 not invoked.
✗ Call 20 not invoked.
|
✗ |
lines_[lineIndex][pointIndex].attribute(length(intersection, *point)); |
| 54 |
|
|
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 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
|
✗ |
lines_[lineIndex][existingPointIndex].attribute(length(intersection, existingPoint)); |
| 55 |
|
|
|
✗ |
}; |
| 56 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
const auto positionArrow = [&](const int lineIndex, const CG::Point& pointFrom, const CG::Point& pointTo) { |
| 57 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
auto [baseBegin, baseEnd, leftWing, rightWing] = buildArrow(pointFrom, pointTo); |
| 58 |
|
|
0/19
✗ 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 11 not invoked.
✗ Call 12 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.
|
✗ |
arrows_[lineIndex * 4].move(leftWing); |
| 59 |
|
|
0/19
✗ 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 11 not invoked.
✗ Call 12 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.
|
✗ |
arrows_[lineIndex * 4 + 1].move(baseBegin); |
| 60 |
|
|
0/19
✗ 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 11 not invoked.
✗ Call 12 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.
|
✗ |
arrows_[lineIndex * 4 + 2].move(baseEnd); |
| 61 |
|
|
0/19
✗ 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 11 not invoked.
✗ Call 12 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.
|
✗ |
arrows_[lineIndex * 4 + 3].move(rightWing); |
| 62 |
|
|
|
✗ |
}; |
| 63 |
|
|
0/13
✗ 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.
✗ Call 13 not invoked.
✗ Call 14 not invoked.
|
✗ |
points_[pointIndices_[point]].move(*point); |
| 64 |
|
0/1
? Decision couldn't be analyzed.
|
0/19
✗ 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 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.
|
✗ |
for (const auto& [toPoint, idx]: connectionsMapFrom_[point]) { |
| 65 |
|
|
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 10 not invoked.
✗ Call 11 not invoked.
|
✗ |
positionLine(idx, true, *toPoint); |
| 66 |
|
|
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 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
|
✗ |
positionArrow(idx, *point, *toPoint); |
| 67 |
|
|
|
|
} |
| 68 |
|
0/1
? Decision couldn't be analyzed.
|
0/19
✗ 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 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.
|
✗ |
for (const auto& [fromPoint, idx]: connectionsMapTo_[point]) { |
| 69 |
|
|
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 10 not invoked.
✗ Call 11 not invoked.
|
✗ |
positionLine(idx, false, *fromPoint); |
| 70 |
|
|
0/14
✗ 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 9 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.
|
✗ |
positionArrow(idx, *fromPoint, *point); |
| 71 |
|
|
|
|
} |
| 72 |
|
|
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(); |
| 73 |
|
|
|
✗ |
} |
| 74 |
|
|
|
|
|
| 75 |
|
|
|
✗ |
void PatternTraceRendererData::pointAdded(const Point* point) { |
| 76 |
|
|
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.
|
✗ |
observe(point); |
| 77 |
|
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
✗ Call 4 not invoked.
|
✗ |
points_.emplace_back(*point); |
| 78 |
|
|
0/12
✗ 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.
|
✗ |
pointIndices_.emplace(point, points_.size() - 1); |
| 79 |
|
|
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(); |
| 80 |
|
|
|
✗ |
} |
| 81 |
|
|
|
|
|
| 82 |
|
|
|
✗ |
void PatternTraceRendererData::curveAdded(const Curve* curve) { |
| 83 |
|
|
|
|
static constexpr double DISTANCE = 0.25; |
| 84 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
lines_.emplace_back(); |
| 85 |
|
|
0/2
✗ Call 0 not invoked.
✗ Call 1 not invoked.
|
✗ |
const auto curvePoints = curve->curvePoints(DISTANCE); |
| 86 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/1
✗ Call 0 not invoked.
|
✗ |
for (int i = 0; i < curvePoints.size(); i++) { |
| 87 |
|
|
0/12
✗ 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.
|
✗ |
lines_.back().emplace_back(curvePoints[i], 0); |
| 88 |
|
|
|
|
} |
| 89 |
|
|
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(); |
| 90 |
|
|
0/2
✗ Call 0 not invoked.
✗ Call 1 not invoked.
|
✗ |
} |
| 91 |
|
|
|
|
|
| 92 |
|
|
|
✗ |
void PatternTraceRendererData::transformed(const Transformation& transformation) { |
| 93 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/13
✗ 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.
|
✗ |
for (auto& point: points_) { |
| 94 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
|
✗ |
point.transform(transformation); |
| 95 |
|
|
|
|
} |
| 96 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/13
✗ 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.
|
✗ |
for (auto& line: lines_) { |
| 97 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
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.
|
✗ |
for (auto& point: line) { |
| 98 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
|
✗ |
point.transform(transformation); |
| 99 |
|
|
|
|
} |
| 100 |
|
|
|
|
} |
| 101 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/13
✗ 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.
|
✗ |
for (auto& point: arrows_) { |
| 102 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
|
✗ |
point.transform(transformation); |
| 103 |
|
|
|
|
} |
| 104 |
|
|
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(); |
| 105 |
|
|
|
✗ |
} |
| 106 |
|
|
|
|
|
| 107 |
|
|
|
✗ |
void PatternTraceRendererData::relativePointConnectionAdded(const Point* from, const Point* to) { |
| 108 |
|
|
0/10
✗ 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.
✗ Call 13 not invoked.
|
✗ |
const auto intersection = intersectionPoint(*from, *to); |
| 109 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
lines_.emplace_back(); |
| 110 |
|
|
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 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
|
✗ |
lines_.back().emplace_back(*from, length(intersection, *from)); |
| 111 |
|
|
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 7 not invoked.
✗ Call 8 not invoked.
✗ Call 9 not invoked.
✗ Call 12 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
|
✗ |
lines_.back().emplace_back(*to, length(intersection, *to)); |
| 112 |
|
|
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 7 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 14 not invoked.
|
✗ |
connectionsMapFrom_[from][to] = lines_.size() - 1; |
| 113 |
|
|
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 7 not invoked.
✗ Call 10 not invoked.
✗ Call 11 not invoked.
✗ Call 14 not invoked.
|
✗ |
connectionsMapTo_[to][from] = lines_.size() - 1; |
| 114 |
|
|
|
|
|
| 115 |
|
|
0/9
✗ 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 9 not invoked.
✗ Call 12 not invoked.
|
✗ |
const auto [baseBegin, baseEnd, leftWing, rightWing] = buildArrow(*from, *to); |
| 116 |
|
|
|
|
|
| 117 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
arrows_.emplace_back(leftWing); |
| 118 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
arrows_.emplace_back(baseBegin); |
| 119 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
arrows_.emplace_back(baseEnd); |
| 120 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
arrows_.emplace_back(rightWing); |
| 121 |
|
|
|
|
|
| 122 |
|
|
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(); |
| 123 |
|
|
|
✗ |
} |
| 124 |
|
|
|
|
|
| 125 |
|
|
|
✗ |
void PatternTraceRendererData::relativePointConnectionRemoved(const Point* from, const Point* to) { |
| 126 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
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.
|
✗ |
if (connectionsMapFrom_[from].contains(to)) { |
| 127 |
|
|
0/8
✗ 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 11 not invoked.
|
✗ |
const int lineToRemove = connectionsMapFrom_[from][to]; |
| 128 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
const auto shiftIndicesInMap = [&lineToRemove](std::unordered_map<const Point*, std::unordered_map<const Point*, int>>& connections, |
| 129 |
|
|
|
|
const Point* first, const Point* second) { |
| 130 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
connections[first].erase(second); |
| 131 |
|
0/1
? Decision couldn't be analyzed.
|
0/11
✗ Call 0 not invoked.
✗ Call 1 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.
|
✗ |
for (auto& points: connections | std::ranges::views::values) { |
| 132 |
|
0/1
? Decision couldn't be analyzed.
|
0/11
✗ Call 0 not invoked.
✗ Call 1 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.
|
✗ |
for (auto& index: points | std::ranges::views::values) { |
| 133 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
|
✗ |
if (index > lineToRemove) index--; |
| 134 |
|
|
|
|
} |
| 135 |
|
|
|
|
} |
| 136 |
|
|
|
✗ |
}; |
| 137 |
|
|
0/21
✗ 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 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
✗ Call 20 not invoked.
✗ Call 21 not invoked.
✗ Call 22 not invoked.
|
✗ |
lines_.erase(lines_.begin() + lineToRemove); |
| 138 |
|
|
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.
|
✗ |
const auto it = arrows_.begin() + lineToRemove * 4; |
| 139 |
|
|
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 13 not invoked.
✗ Call 14 not invoked.
✗ Call 15 not invoked.
✗ Call 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
|
✗ |
arrows_.erase(it, it + 4); |
| 140 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
shiftIndicesInMap(connectionsMapFrom_, from, to); |
| 141 |
|
|
0/4
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 3 not invoked.
|
✗ |
shiftIndicesInMap(connectionsMapTo_, to, from); |
| 142 |
|
|
|
|
} |
| 143 |
|
|
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(); |
| 144 |
|
|
|
✗ |
} |
| 145 |
|
|
|
|
|
| 146 |
|
|
|
✗ |
const Point* PatternTraceRendererData::pointAtPosition(const float x, const float y) const { |
| 147 |
|
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& point : pointIndices_ | std::views::keys) { |
| 148 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/21
✗ 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 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 22 not invoked.
✗ Call 23 not invoked.
✗ Call 26 not invoked.
|
✗ |
if (std::sqrt(std::pow(x - point->x(), 2) + std::pow(y - point->y(), 2)) <= POINT_RADIUS) return point; |
| 149 |
|
|
|
|
} |
| 150 |
|
|
|
✗ |
return nullptr; |
| 151 |
|
|
|
|
} |
| 152 |
|
|
|
|
|
| 153 |
|
|
|
✗ |
size_t PatternTraceRendererData::size() { |
| 154 |
|
|
0/8
✗ 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.
|
✗ |
return arrows_.size() + points_.size() + |
| 155 |
|
|
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.
|
✗ |
std::accumulate(lines_.begin(), lines_.end(), 0, |
| 156 |
|
|
|
✗ |
[](size_t sum, const auto& line) { |
| 157 |
|
|
0/2
✗ Call 0 not invoked.
✗ Call 1 not invoked.
|
✗ |
return sum + line.size(); |
| 158 |
|
|
|
✗ |
}); |
| 159 |
|
|
|
|
} |
| 160 |
|
|
|
|
|
| 161 |
|
|
|
✗ |
std::vector<Vertex3f> PatternTraceRendererData::vbo() { |
| 162 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
std::vector<Vertex3f> vbo; |
| 163 |
|
|
0/18
✗ 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 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
|
✗ |
vbo.insert(vbo.end(), points_.begin(), points_.end()); |
| 164 |
|
|
0/18
✗ 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 16 not invoked.
✗ Call 17 not invoked.
✗ Call 18 not invoked.
✗ Call 19 not invoked.
|
✗ |
vbo.insert(vbo.end(), arrows_.begin(), arrows_.end()); |
| 165 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
0/13
✗ 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.
|
✗ |
for (const auto& line: lines_) { |
| 166 |
|
|
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(), line.begin(), line.end()); |
| 167 |
|
|
|
|
} |
| 168 |
|
|
|
✗ |
return vbo; |
| 169 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
} |
| 170 |
|
|
|
|
|
| 171 |
|
|
|
✗ |
Layout PatternTraceRendererData::pointsLayout() const { |
| 172 |
|
|
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 10 not invoked.
✗ Call 11 not invoked.
|
✗ |
return Layout(0, points_.size()); |
| 173 |
|
|
|
|
} |
| 174 |
|
|
|
|
|
| 175 |
|
|
|
✗ |
std::vector<Layout> PatternTraceRendererData::linesLayout() const { |
| 176 |
|
|
0/13
✗ 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.
|
✗ |
size_t offset = points_.size() + arrows_.size(); |
| 177 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
std::vector<Layout> layout {}; |
| 178 |
|
|
0/7
✗ 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.
|
✗ |
layout.reserve(lines_.size()); |
| 179 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
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 10 not invoked.
✗ Call 11 not invoked.
✗ Call 12 not invoked.
✗ Call 13 not invoked.
|
✗ |
for (const auto& line: lines_) { |
| 180 |
|
|
0/7
✗ 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.
|
✗ |
layout.emplace_back(offset, line.size()); |
| 181 |
|
|
0/3
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
|
✗ |
offset += line.size(); |
| 182 |
|
|
|
|
} |
| 183 |
|
|
|
✗ |
return layout; |
| 184 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
} |
| 185 |
|
|
|
|
|
| 186 |
|
|
|
✗ |
std::vector<Layout> PatternTraceRendererData::arrowsLayout() const { |
| 187 |
|
|
0/7
✗ 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.
|
✗ |
size_t offset = points_.size(); |
| 188 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
std::vector<Layout> layout {}; |
| 189 |
|
|
0/7
✗ 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.
|
✗ |
layout.reserve(arrows_.size() / 4); |
| 190 |
|
0/2
✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
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.
|
✗ |
for (int i = 0; i < arrows_.size(); i += 4) { |
| 191 |
|
|
0/5
✗ Call 0 not invoked.
✗ Call 1 not invoked.
✗ Call 2 not invoked.
✗ Call 5 not invoked.
✗ Call 6 not invoked.
|
✗ |
layout.emplace_back(offset, 4); |
| 192 |
|
|
|
✗ |
offset += 4; |
| 193 |
|
|
|
|
} |
| 194 |
|
|
|
✗ |
return layout; |
| 195 |
|
|
0/1
✗ Call 0 not invoked.
|
✗ |
} |
| 196 |
|
|
|
|
|