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 "CurveIntersection.h" 8#include "Intersection_Tests.h" 9#include "QuadraticIntersection_TestData.h" 10 11static const Quadratic testSet[] = { 12 // data for oneOffTest 13 {{8.0000000000000071, 8.0000000000000071}, 14 {8.7289570079366854, 8.7289570079366889}, 15 {9.3914917259458743, 9.0593802763083691}}, 16 {{8.0000000000000142, 8.0000000000000142}, 17 {8.1250000000000107, 8.1250000000000071}, 18 {8.2500000000000071, 8.2187500000000053}}, 19 // data for oneAtEndTest 20 {{0.91292418204644155, 0.41931201426549197}, 21 {0.70491388044579517, 0.64754305977710236}, 22 {0, 1 }}, 23 {{0.21875, 0.765625 }, 24 {0.125, 0.875 }, 25 {0, 1 }} 26}; 27 28static void oneAtEndTest() { 29 const Quadratic& quad1 = testSet[2]; 30 const Quadratic& quad2 = testSet[3]; 31 double minT = 0; 32 double maxT = 1; 33 bezier_clip(quad1, quad2, minT, maxT); 34} 35 36 37static void oneOffTest() { 38 const Quadratic& quad1 = testSet[0]; 39 const Quadratic& quad2 = testSet[1]; 40 double minT = 0; 41 double maxT = 1; 42 bezier_clip(quad1, quad2, minT, maxT); 43} 44 45static void standardTestCases() { 46 for (size_t index = 0; index < quadraticTests_count; ++index) { 47 const Quadratic& quad1 = quadraticTests[index][0]; 48 const Quadratic& quad2 = quadraticTests[index][1]; 49 Quadratic reduce1, reduce2; 50 int order1 = reduceOrder(quad1, reduce1, kReduceOrder_TreatAsFill); 51 int order2 = reduceOrder(quad2, reduce2, kReduceOrder_TreatAsFill); 52 if (order1 < 3) { 53 SkDebugf("%s [%d] quad1 order=%d\n", __FUNCTION__, (int)index, order1); 54 } 55 if (order2 < 3) { 56 SkDebugf("%s [%d] quad2 order=%d\n", __FUNCTION__, (int)index, order2); 57 } 58 if (order1 == 3 && order2 == 3) { 59 double minT = 0; 60 double maxT = 1; 61 bezier_clip(reduce1, reduce2, minT, maxT); 62 } 63 } 64} 65 66void QuadraticBezierClip_Test() { 67 oneAtEndTest(); 68 oneOffTest(); 69 standardTestCases(); 70} 71