| 220 | } |
| 221 | |
| 222 | __noinline void init_crackfix(const CatmullClarkPatch& patch, |
| 223 | const BezierCurve* border0, |
| 224 | const BezierCurve* border1, |
| 225 | const BezierCurve* border2, |
| 226 | const BezierCurve* border3) |
| 227 | { |
| 228 | assert( patch.ring[0].hasValidPositions() ); |
| 229 | assert( patch.ring[1].hasValidPositions() ); |
| 230 | assert( patch.ring[2].hasValidPositions() ); |
| 231 | assert( patch.ring[3].hasValidPositions() ); |
| 232 | |
| 233 | p0() = initCornerVertex(patch,0); |
| 234 | p1() = initCornerVertex(patch,1); |
| 235 | p2() = initCornerVertex(patch,2); |
| 236 | p3() = initCornerVertex(patch,3); |
| 237 | |
| 238 | e0_p() = initPositiveEdgeVertex(patch,0, p0()); |
| 239 | e1_p() = initPositiveEdgeVertex(patch,1, p1()); |
| 240 | e2_p() = initPositiveEdgeVertex(patch,2, p2()); |
| 241 | e3_p() = initPositiveEdgeVertex(patch,3, p3()); |
| 242 | |
| 243 | e0_m() = initNegativeEdgeVertex(patch,0, p0()); |
| 244 | e1_m() = initNegativeEdgeVertex(patch,1, p1()); |
| 245 | e2_m() = initNegativeEdgeVertex(patch,2, p2()); |
| 246 | e3_m() = initNegativeEdgeVertex(patch,3, p3()); |
| 247 | |
| 248 | if (unlikely(border0 != nullptr)) |
| 249 | { |
| 250 | p0() = border0->v0; |
| 251 | e0_p() = border0->v1; |
| 252 | e1_m() = border0->v2; |
| 253 | p1() = border0->v3; |
| 254 | } |
| 255 | |
| 256 | if (unlikely(border1 != nullptr)) |
| 257 | { |
| 258 | p1() = border1->v0; |
| 259 | e1_p() = border1->v1; |
| 260 | e2_m() = border1->v2; |
| 261 | p2() = border1->v3; |
| 262 | } |
| 263 | |
| 264 | if (unlikely(border2 != nullptr)) |
| 265 | { |
| 266 | p2() = border2->v0; |
| 267 | e2_p() = border2->v1; |
| 268 | e3_m() = border2->v2; |
| 269 | p3() = border2->v3; |
| 270 | } |
| 271 | |
| 272 | if (unlikely(border3 != nullptr)) |
| 273 | { |
| 274 | p3() = border3->v0; |
| 275 | e3_p() = border3->v1; |
| 276 | e0_m() = border3->v2; |
| 277 | p0() = border3->v3; |
| 278 | } |
| 279 |
no test coverage detected