19166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com/* 29166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com * Copyright 2012 Google Inc. 39166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com * 49166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com * Use of this source code is governed by a BSD-style license that can be 59166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com * found in the LICENSE file. 69166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com */ 79166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 89166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com#include "PathOpsQuadIntersectionTestData.h" 99166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 109166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comconst SkDQuad quadraticPoints[] = { 119166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, {1, 0}, {0, 0}}}, 129166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, {0, 1}, {0, 0}}}, 139166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, {1, 1}, {0, 0}}}, 149166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {2, 2}, {1, 1}}}, 159166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com}; 169166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 17ad65a3e5fb1f94699f183551b828efbcc6a133cecaryclark@google.comconst size_t quadraticPoints_count = SK_ARRAY_COUNT(quadraticPoints); 189166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 199166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comconst SkDQuad quadraticLines[] = { 209166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, {0, 0}, {1, 0}}}, 219166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 0}, {0, 0}, {0, 0}}}, 229166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 0}, {2, 0}, {3, 0}}}, 239166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, {0, 0}, {0, 1}}}, 249166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 1}, {0, 0}, {0, 0}}}, 259166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 1}, {0, 2}, {0, 3}}}, 269166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, {0, 0}, {1, 1}}}, 279166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {0, 0}, {0, 0}}}, 289166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {2, 2}, {3, 3}}}, 299166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {3, 3}, {3, 3}}}, 309166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {1, 1}, {2, 2}}}, 319166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {1, 1}, {3, 3}}}, 329166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {2, 2}, {4, 4}}}, // no coincident 339166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {3, 3}, {4, 4}}}, 349166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {3, 3}, {2, 2}}}, 359166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {4, 4}, {2, 2}}}, 369166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {4, 4}, {3, 3}}}, 379166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {1, 1}, {3, 3}}}, 389166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {1, 1}, {4, 4}}}, 399166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {3, 3}, {1, 1}}}, 409166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {3, 3}, {4, 4}}}, 419166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {4, 4}, {1, 1}}}, 429166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {4, 4}, {3, 3}}}, 439166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com}; 449166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 45ad65a3e5fb1f94699f183551b828efbcc6a133cecaryclark@google.comconst size_t quadraticLines_count = SK_ARRAY_COUNT(quadraticLines); 469166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 479166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comstatic const double F = FLT_EPSILON * 3; 489166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comstatic const double H = FLT_EPSILON * 4; 499166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comstatic const double J = FLT_EPSILON * 5; 509166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comstatic const double K = FLT_EPSILON * 8; // INVESTIGATE: why are larger multiples necessary? 519166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 529166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comconst SkDQuad quadraticModEpsilonLines[] = { 539166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, F}, {0, 0}, {1, 0}}}, 549166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, {1, 0}, {0, F}}}, 559166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 0}, {0, F}, {0, 0}}}, 569166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, H}, {2, 0}, {3, 0}}}, 577eaa53d8f7e48fd17d02b5e3bd91f90e9c1899efcaryclark@google.com// {{{F, 0}, {0, 0}, {0, 1}}}, // INVESTIGATE: even substituting K for F, quad is still linear. 587eaa53d8f7e48fd17d02b5e3bd91f90e9c1899efcaryclark@google.com// {{{0, 0}, {0, 1}, {F, 0}}}, 597eaa53d8f7e48fd17d02b5e3bd91f90e9c1899efcaryclark@google.com// {{{0, 1}, {F, 0}, {0, 0}}}, 607eaa53d8f7e48fd17d02b5e3bd91f90e9c1899efcaryclark@google.com// {{{H, 1}, {0, 2}, {0, 3}}}, 619166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, F}, {0, 0}, {1, 1}}}, 629166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, {1, 1}, {F, 0}}}, 639166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {F, 0}, {0, 0}}}, 649166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1+J}, {2, 2}, {3, 3}}}, 659166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {3, 3}, {3+F, 3}}}, 669166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {1+F, 1}, {2, 2}}}, 679166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {2, 2}, {1, 1+F}}}, 689166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {1, 1+F}, {3, 3}}}, 699166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1+H, 1}, {2, 2}, {4, 4}}}, // no coincident 709166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1+K}, {3, 3}, {4, 4}}}, 719166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {3+F, 3}, {2, 2}}}, 729166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {4, 4+F}, {2, 2}}}, 739166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 1}, {4, 4}, {3+F, 3}}}, 749166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {1, 1}, {3, 3+F}}}, 759166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2+F, 2}, {1, 1}, {4, 4}}}, 769166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2+F}, {3, 3}, {1, 1}}}, 779166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {3+F, 3}, {4, 4}}}, 789166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {4, 4+F}, {1, 1}}}, 799166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{2, 2}, {4, 4}, {3+F, 3}}}, 809166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com}; 819166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 829166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comconst size_t quadraticModEpsilonLines_count = 83ad65a3e5fb1f94699f183551b828efbcc6a133cecaryclark@google.com SK_ARRAY_COUNT(quadraticModEpsilonLines); 849166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 859166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.comconst SkDQuad quadraticTests[][2] = { 869166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com { // one intersection 879166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 0}, 889166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {0, 1}, 899166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {1, 1}}}, 909166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 1}, 919166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {0, 0}, 929166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {1, 0}}} 939166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com }, 949166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com { // four intersections 959166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{1, 0}, 969166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {2, 6}, 979166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {3, 0}}}, 989166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {{{0, 1}, 999166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {6, 2}, 1009166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com {0, 3}}} 1019166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com } 1029166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com}; 1039166dcb3a0e8784bea83d76ae01aa338c049ae05caryclark@google.com 104ad65a3e5fb1f94699f183551b828efbcc6a133cecaryclark@google.comconst size_t quadraticTests_count = SK_ARRAY_COUNT(quadraticTests); 105