GCC Code Coverage Report


ernie/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
44 / 44
100.0%
Branches:
122 / 234
52.1%
Functions:
21 / 21
100.0%

scene/schema/geom.cpp
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 /// @file geom.cpp
3 /// @brief UsdGeom's registry entries and the implicit shapes' extents, as UsdGeom computes them.
4 #include "ernie/scene/schema/geom.h"
5
6 namespace ernie {
7 namespace {
8
9 /// @return The axis index (0, 1, 2) of an `axis` token.
10 4 int AxisIndex(const ExtentRows& rows, Token axis) {
11 4 return rows.Text(axis).front() - 'X';
12 }
13
14 13 auto CubeHalves(const ExtentRows& rows) {
15 13 return [size = rows.Column<double>(Cube::kSize)](std::uint32_t row) {
16 13 return glm::dvec3(0.5 * size[row]);
17 13 };
18 }
19
20 185 auto SphereHalves(const ExtentRows& rows) {
21 185 return [radius = rows.Column<double>(Sphere::kRadius)](std::uint32_t row) {
22 12764 return glm::dvec3(radius[row]);
23 185 };
24 }
25
26 /// Cylinders, cones and capsules: a radius about the axis; capsules' caps add it along the axis.
27 3 template <bool kCapped> auto RoundHalves(const ExtentRows& rows) {
28 3 return [&rows, radius = rows.Column<double>(Cylinder::kRadius),
29 3 height = rows.Column<double>(Cylinder::kHeight),
30 3 axis = rows.Column<Token>(Cylinder::kAxis)](std::uint32_t row) {
31 glm::dvec3 half(radius[row]);
32 half[AxisIndex(rows, axis[row])] = 0.5 * height[row] + (kCapped ? radius[row] : 0.0);
33 return half;
34 3 };
35 }
36
37 1 auto PlaneHalves(const ExtentRows& rows) {
38 2 return [&rows, width = rows.Column<double>(Plane::kWidth),
39 1 length = rows.Column<double>(Plane::kLength),
40 1 axis = rows.Column<Token>(Plane::kAxis)](std::uint32_t row) {
41 1 const int normal = AxisIndex(rows, axis[row]);
42 // Width lies along x, or z for an X normal; length along y, or z for a Y normal.
43 1 glm::dvec3 half(0.0);
44
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
1 half[normal == 0 ? 2 : 0] = 0.5 * width[row];
45
1/2
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
2 half[normal == 1 ? 2 : 1] = 0.5 * length[row];
46 1 return half;
47 1 };
48 }
49
50 } // namespace
51
52
10/20
✓ Branch 0 taken 148 times.
✓ Branch 1 taken 1011 times.
✓ Branch 3 taken 148 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 148 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 148 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 148 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 148 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 148 times.
✓ Branch 23 taken 444 times.
✓ Branch 24 taken 148 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
2047 ERNIE_DEFINE_SCHEMA(Imageable, Abstract, kInheritExtent, ERNIE_IMAGEABLE_ATTRIBUTES)
53
9/16
✓ Branch 0 taken 147 times.
✓ Branch 1 taken 4475 times.
✓ Branch 3 taken 147 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 147 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 147 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 147 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 147 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 147 times.
✓ Branch 20 taken 147 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
4916 ERNIE_DEFINE_SCHEMA(Xformable, Abstract, kInheritExtent, ERNIE_XFORMABLE_ATTRIBUTES,
54 .openNamespaces = {tokens::kXformOpPrefix})
55
8/14
✓ Branch 0 taken 147 times.
✓ Branch 1 taken 438 times.
✓ Branch 3 taken 147 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 147 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 147 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 147 times.
✓ Branch 16 taken 147 times.
✓ Branch 17 taken 147 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
879 ERNIE_DEFINE_SCHEMA(Boundable, Abstract, kInheritExtent, ERNIE_BOUNDABLE_ATTRIBUTES)
56
10/20
✓ Branch 0 taken 147 times.
✓ Branch 1 taken 1463 times.
✓ Branch 3 taken 147 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 147 times.
✗ Branch 7 not taken.
✓ Branch 12 taken 147 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 147 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 147 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 147 times.
✗ Branch 22 not taken.
✓ Branch 25 taken 588 times.
✓ Branch 26 taken 147 times.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
2786 ERNIE_DEFINE_SCHEMA(Gprim, Abstract, kInheritExtent, ERNIE_GPRIM_ATTRIBUTES,
57 .openNamespaces = {tokens::kPrimvarsPrefix})
58 // Grouping prims are where custom data lives, so they take attributes of any name.
59
5/8
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 62 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
208 ERNIE_DEFINE_SCHEMA(Xform, Concrete, kDescendantsExtent, ERNIE_NO_ATTRIBUTES,
60 .openNamespaces = {"*"})
61
4/8
✓ Branch 0 taken 146 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
146 ERNIE_DEFINE_SCHEMA(Scope, Concrete, kDescendantsExtent, ERNIE_NO_ATTRIBUTES,
62 .openNamespaces = {"*"})
63
19/38
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
✓ Branch 14 taken 146 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 146 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 146 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 146 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 146 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 146 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 146 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 146 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 146 times.
✗ Branch 39 not taken.
✓ Branch 41 taken 146 times.
✗ Branch 42 not taken.
✓ Branch 44 taken 146 times.
✗ Branch 45 not taken.
✗ Branch 47 not taken.
✓ Branch 48 taken 146 times.
✓ Branch 51 taken 1752 times.
✓ Branch 52 taken 146 times.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
3652 ERNIE_DEFINE_SCHEMA(GeomModelAPI, SingleApply, kInheritExtent, ERNIE_MODEL_API_ATTRIBUTES)
64
9/18
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 146 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 146 times.
✓ Branch 20 taken 438 times.
✓ Branch 21 taken 146 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
1024 ERNIE_DEFINE_SCHEMA(GeomSubset, Concrete, kNoExtent, ERNIE_SUBSET_ATTRIBUTES)
65
7/12
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 138 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 146 times.
✓ Branch 14 taken 146 times.
✓ Branch 15 taken 146 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
576 ERNIE_DEFINE_SCHEMA(Cube, Concrete, ComputedExtent(CentredExtent<CubeHalves>),
66 ERNIE_CUBE_ATTRIBUTES)
67
7/12
✓ Branch 0 taken 147 times.
✓ Branch 1 taken 2064 times.
✓ Branch 3 taken 147 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 147 times.
✗ Branch 7 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 147 times.
✓ Branch 14 taken 147 times.
✓ Branch 15 taken 147 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2505 ERNIE_DEFINE_SCHEMA(Sphere, Concrete, ComputedExtent(CentredExtent<SphereHalves>),
68 ERNIE_SPHERE_ATTRIBUTES)
69
8/16
✓ Branch 0 taken 147 times.
✓ Branch 1 taken 125 times.
✓ Branch 3 taken 147 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 147 times.
✗ Branch 7 not taken.
✓ Branch 11 taken 147 times.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 147 times.
✓ Branch 18 taken 441 times.
✓ Branch 19 taken 147 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
860 ERNIE_DEFINE_SCHEMA(Cylinder, Concrete, ComputedExtent(CentredExtent<RoundHalves<false>>),
70 ERNIE_CYLINDER_ATTRIBUTES)
71
8/16
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 119 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 11 taken 146 times.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 146 times.
✓ Branch 18 taken 438 times.
✓ Branch 19 taken 146 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
1141 ERNIE_DEFINE_SCHEMA(Cone, Concrete, ComputedExtent(CentredExtent<RoundHalves<false>>),
72 ERNIE_CYLINDER_ATTRIBUTES)
73
8/16
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 119 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 11 taken 146 times.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 146 times.
✓ Branch 18 taken 438 times.
✓ Branch 19 taken 146 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
1141 ERNIE_DEFINE_SCHEMA(Capsule, Concrete, ComputedExtent(CentredExtent<RoundHalves<true>>),
74 ERNIE_CAPSULE_ATTRIBUTES)
75
8/16
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 119 times.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 146 times.
✗ Branch 7 not taken.
✓ Branch 11 taken 146 times.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 146 times.
✓ Branch 18 taken 438 times.
✓ Branch 19 taken 146 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
1141 ERNIE_DEFINE_SCHEMA(Plane, Concrete, ComputedExtent(CentredExtent<PlaneHalves>),
76 ERNIE_PLANE_ATTRIBUTES)
77
78 } // namespace ernie
79