PathMeasureTest.cpp revision 5e5adfd12cc2cb194db971708cd7f34ff47e10b4
1#include "Test.h"
2#include "SkPathMeasure.h"
3
4static void TestPathMeasure(skiatest::Reporter* reporter) {
5    SkPath  path;
6
7    path.moveTo(0, 0);
8    path.lineTo(SK_Scalar1, 0);
9    path.lineTo(SK_Scalar1, SK_Scalar1);
10    path.lineTo(0, SK_Scalar1);
11
12    SkPathMeasure   meas(path, true);
13    SkScalar        length = meas.getLength();
14    SkASSERT(length == SK_Scalar1*4);
15
16    path.reset();
17    path.moveTo(0, 0);
18    path.lineTo(SK_Scalar1*3, SK_Scalar1*4);
19    meas.setPath(&path, false);
20    length = meas.getLength();
21    REPORTER_ASSERT(reporter, length == SK_Scalar1*5);
22
23    path.reset();
24    path.addCircle(0, 0, SK_Scalar1);
25    meas.setPath(&path, true);
26    length = meas.getLength();
27//    SkDebugf("circle arc-length = %g\n", length);
28
29    for (int i = 0; i < 8; i++) {
30        SkScalar    d = length * i / 8;
31        SkPoint     p;
32        SkVector    v;
33        meas.getPosTan(d, &p, &v);
34#if 0
35        SkDebugf("circle arc-length=%g, pos[%g %g] tan[%g %g]\n",
36                 d, p.fX, p.fY, v.fX, v.fY);
37#endif
38    }
39}
40
41#include "TestClassDef.h"
42DEFINE_TESTCLASS("PathMeasure", PathMeasureTestClass, TestPathMeasure)
43