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 "PathOpsTestCommon.h"
8#include "SkPath.h"
9#include "SkPathOpsQuad.h"
10#include "SkRRect.h"
11#include "Test.h"
12
13static const SkDQuad tests[] = {
14    {{{1, 1}, {2, 1}, {0, 2}}},
15    {{{0, 0}, {1, 1}, {3, 1}}},
16    {{{2, 0}, {1, 1}, {2, 2}}},
17    {{{4, 0}, {0, 1}, {4, 2}}},
18    {{{0, 0}, {0, 1}, {1, 1}}},
19};
20
21static const SkDPoint inPoint[]= {
22    {1,   1.2},
23    {1,   0.8},
24    {1.8, 1},
25    {1.5, 1},
26    {0.4999, 0.5},  // was 0.5, 0.5; points on the hull are considered outside
27};
28
29static const SkDPoint outPoint[]= {
30    {1,   1.6},
31    {1,   1.5},
32    {2.2, 1},
33    {1.5, 1.5},
34    {1.1, 0.5},
35};
36
37static const size_t tests_count = SK_ARRAY_COUNT(tests);
38
39DEF_TEST(PathOpsDQuad, reporter) {
40    for (size_t index = 0; index < tests_count; ++index) {
41        const SkDQuad& quad = tests[index];
42        SkASSERT(ValidQuad(quad));
43        bool result = quad.pointInHull(inPoint[index]);
44        if (!result) {
45            SkDebugf("%s [%d] expected in hull\n", __FUNCTION__, index);
46            REPORTER_ASSERT(reporter, 0);
47        }
48        result = quad.pointInHull(outPoint[index]);
49        if (result) {
50            SkDebugf("%s [%d] expected outside hull\n", __FUNCTION__, index);
51            REPORTER_ASSERT(reporter, 0);
52        }
53    }
54}
55
56DEF_TEST(PathOpsRRect, reporter) {
57    SkPath path;
58    SkRRect rRect;
59    SkRect rect = {135, 143, 250, 177};
60    SkVector radii[4] = {{8, 8}, {8, 8}, {0, 0}, {0, 0}};
61    rRect.setRectRadii(rect, radii);
62    path.addRRect(rRect);
63}
64