| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* | 
|  | 2  * Copyright 2012 Google Inc. | 
|  | 3  * | 
|  | 4  * Use of this source code is governed by a BSD-style license that can be | 
|  | 5  * found in the LICENSE file. | 
|  | 6  */ | 
|  | 7 #include "SkDQuadImplicit.h" | 
|  | 8 #include "SkPathOpsQuad.h" | 
|  | 9 #include "Test.h" | 
|  | 10 | 
|  | 11 static bool point_on_parameterized_curve(const SkDQuad& quad, const SkDPoint& po
    int) { | 
|  | 12     SkDQuadImplicit q(quad); | 
|  | 13     double  xx = q.x2() * point.fX * point.fX; | 
|  | 14     double  xy = q.xy() * point.fX * point.fY; | 
|  | 15     double  yy = q.y2() * point.fY * point.fY; | 
|  | 16     double   x = q.x() * point.fX; | 
|  | 17     double   y = q.y() * point.fY; | 
|  | 18     double   c = q.c(); | 
|  | 19     double sum = xx + xy + yy + x + y + c; | 
|  | 20     return approximately_zero(sum); | 
|  | 21 } | 
|  | 22 | 
|  | 23 static const SkDQuad quadratics[] = { | 
|  | 24     {{{0, 0}, {1, 0}, {1, 1}}}, | 
|  | 25 }; | 
|  | 26 | 
|  | 27 static const size_t quadratics_count = sizeof(quadratics) / sizeof(quadratics[0]
    ); | 
|  | 28 | 
|  | 29 static void TestQuadraticCoincidence(skiatest::Reporter* reporter) { | 
|  | 30     // split large quadratic | 
|  | 31     // compare original, parts, to see if the are coincident | 
|  | 32     for (size_t index = 0; index < quadratics_count; ++index) { | 
|  | 33         const SkDQuad& test = quadratics[index]; | 
|  | 34         SkDQuadPair split = test.chopAt(0.5); | 
|  | 35         SkDQuad midThird = test.subDivide(1.0/3, 2.0/3); | 
|  | 36         const SkDQuad* quads[] = { | 
|  | 37             &test, &midThird, &split.first(), &split.second() | 
|  | 38         }; | 
|  | 39         size_t quadsCount = sizeof(quads) / sizeof(quads[0]); | 
|  | 40         for (size_t one = 0; one < quadsCount; ++one) { | 
|  | 41             for (size_t two = 0; two < quadsCount; ++two) { | 
|  | 42                 for (size_t inner = 0; inner < 3; inner += 2) { | 
|  | 43                      REPORTER_ASSERT(reporter, point_on_parameterized_curve(*qua
    ds[one], | 
|  | 44                             (*quads[two])[inner])); | 
|  | 45                 } | 
|  | 46                 REPORTER_ASSERT(reporter, SkDQuadImplicit::Match(*quads[one], *q
    uads[two])); | 
|  | 47             } | 
|  | 48         } | 
|  | 49     } | 
|  | 50 } | 
|  | 51 | 
|  | 52 #include "TestClassDef.h" | 
|  | 53 DEFINE_TESTCLASS("PathOpsQuadImplicit", QuadImplicitTestClass, TestQuadraticCoin
    cidence) | 
| OLD | NEW | 
|---|