1 #include "Test.h"
2 #include "SkPathMeasure.h"
3
TestPathMeasure(skiatest::Reporter * reporter)4 static 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"
42 DEFINE_TESTCLASS("PathMeasure", PathMeasureTestClass, TestPathMeasure)
43