diff options
author | caryclark@google.com <caryclark@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-06-17 14:10:36 +0000 |
---|---|---|
committer | caryclark@google.com <caryclark@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-06-17 14:10:36 +0000 |
commit | d892bd8ba676d34d4ce4a73ac7aad88e102fad70 (patch) | |
tree | f8b35e6d7582800ef622fc796ef4077163763a05 /tests | |
parent | acb3d88cf84adf367c173a7a33cd3b0c379291dc (diff) |
convert pathops to use SkSTArray where possible.
Replace SkTDArray with SkTArray and use SkSTArray when
the probable array size is known.
In a couple of places (spans, chases) the arrays are
constructed using insert() so SkTArrays can't be used for
now.
Also, add an optimization to cubic subdivide if either end
is zero or one.
BUG=
Review URL: https://codereview.chromium.org/16951017
git-svn-id: http://skia.googlecode.com/svn/trunk@9635 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests')
-rw-r--r-- | tests/PathOpsCubicIntersectionTest.cpp | 4 | ||||
-rw-r--r-- | tests/PathOpsCubicToQuadsTest.cpp | 10 | ||||
-rw-r--r-- | tests/PathOpsTestCommon.cpp | 8 | ||||
-rw-r--r-- | tests/PathOpsTestCommon.h | 4 |
4 files changed, 13 insertions, 13 deletions
diff --git a/tests/PathOpsCubicIntersectionTest.cpp b/tests/PathOpsCubicIntersectionTest.cpp index b0d6bd881b..7f5f4cd040 100644 --- a/tests/PathOpsCubicIntersectionTest.cpp +++ b/tests/PathOpsCubicIntersectionTest.cpp @@ -244,7 +244,7 @@ static void oneOff(skiatest::Reporter* reporter, const SkDCubic& cubic1, const S cubic2[0].fX, cubic2[0].fY, cubic2[1].fX, cubic2[1].fY, cubic2[2].fX, cubic2[2].fY, cubic2[3].fX, cubic2[3].fY); #endif - SkTDArray<SkDQuad> quads1; + SkTArray<SkDQuad, true> quads1; CubicToQuads(cubic1, cubic1.calcPrecision(), quads1); #if ONE_OFF_DEBUG SkDebugf("computed quadratics set 1\n"); @@ -254,7 +254,7 @@ static void oneOff(skiatest::Reporter* reporter, const SkDCubic& cubic1, const S q[1].fX, q[1].fY, q[2].fX, q[2].fY); } #endif - SkTDArray<SkDQuad> quads2; + SkTArray<SkDQuad, true> quads2; CubicToQuads(cubic2, cubic2.calcPrecision(), quads2); #if ONE_OFF_DEBUG SkDebugf("computed quadratics set 2\n"); diff --git a/tests/PathOpsCubicToQuadsTest.cpp b/tests/PathOpsCubicToQuadsTest.cpp index f738e0790d..774fbae67f 100644 --- a/tests/PathOpsCubicToQuadsTest.cpp +++ b/tests/PathOpsCubicToQuadsTest.cpp @@ -18,7 +18,7 @@ static void test(skiatest::Reporter* reporter, const SkDCubic* cubics, const cha for (size_t index = firstTest; index < testCount; ++index) { const SkDCubic& cubic = cubics[index]; double precision = cubic.calcPrecision(); - SkTDArray<SkDQuad> quads; + SkTArray<SkDQuad, true> quads; CubicToQuads(cubic, precision, quads); if (quads.count() != 1 && quads.count() != 2) { SkDebugf("%s [%d] cubic to quadratics failed count=%d\n", name, static_cast<int>(index), @@ -34,7 +34,7 @@ static void test(skiatest::Reporter* reporter, const SkDQuad* quadTests, const c const SkDQuad& quad = quadTests[index]; SkDCubic cubic = quad.toCubic(); double precision = cubic.calcPrecision(); - SkTDArray<SkDQuad> quads; + SkTArray<SkDQuad, true> quads; CubicToQuads(cubic, precision, quads); if (quads.count() != 1 && quads.count() != 2) { SkDebugf("%s [%d] cubic to quadratics failed count=%d\n", name, static_cast<int>(index), @@ -50,7 +50,7 @@ static void testC(skiatest::Reporter* reporter, const SkDCubic* cubics, const ch for (size_t index = firstTest; index < testCount; ++index) { const SkDCubic& cubic = cubics[index]; double precision = cubic.calcPrecision(); - SkTDArray<SkDQuad> quads; + SkTArray<SkDQuad, true> quads; CubicToQuads(cubic, precision, quads); if (!AlmostEqualUlps(cubic[0].fX, quads[0][0].fX) || !AlmostEqualUlps(cubic[0].fY, quads[0][0].fY)) { @@ -72,7 +72,7 @@ static void testC(skiatest::Reporter* reporter, const SkDCubic(* cubics)[2], con for (int idx2 = 0; idx2 < 2; ++idx2) { const SkDCubic& cubic = cubics[index][idx2]; double precision = cubic.calcPrecision(); - SkTDArray<SkDQuad> quads; + SkTArray<SkDQuad, true> quads; CubicToQuads(cubic, precision, quads); if (!AlmostEqualUlps(cubic[0].fX, quads[0][0].fX) || !AlmostEqualUlps(cubic[0].fY, quads[0][0].fY)) { @@ -176,7 +176,7 @@ static void oneOff(skiatest::Reporter* reporter, size_t x) { SkScalar skinflect[2]; int skin = SkFindCubicInflections(skcubic, skinflect); if (false) SkDebugf("%s %d %1.9g\n", __FUNCTION__, skin, skinflect[0]); - SkTDArray<SkDQuad> quads; + SkTArray<SkDQuad, true> quads; double precision = cubic.calcPrecision(); CubicToQuads(cubic, precision, quads); if (false) SkDebugf("%s quads=%d\n", __FUNCTION__, quads.count()); diff --git a/tests/PathOpsTestCommon.cpp b/tests/PathOpsTestCommon.cpp index aab7d6ea25..4356b42414 100644 --- a/tests/PathOpsTestCommon.cpp +++ b/tests/PathOpsTestCommon.cpp @@ -7,12 +7,12 @@ #include "PathOpsTestCommon.h" #include "SkPathOpsCubic.h" -void CubicToQuads(const SkDCubic& cubic, double precision, SkTDArray<SkDQuad>& quads) { - SkTDArray<double> ts; +void CubicToQuads(const SkDCubic& cubic, double precision, SkTArray<SkDQuad, true>& quads) { + SkTArray<double, true> ts; cubic.toQuadraticTs(precision, &ts); if (ts.count() <= 0) { SkDQuad quad = cubic.toQuad(); - *quads.append() = quad; + quads.push_back(quad); return; } double tStart = 0; @@ -20,7 +20,7 @@ void CubicToQuads(const SkDCubic& cubic, double precision, SkTDArray<SkDQuad>& q const double tEnd = i1 < ts.count() ? ts[i1] : 1; SkDCubic part = cubic.subDivide(tStart, tEnd); SkDQuad quad = part.toQuad(); - *quads.append() = quad; + quads.push_back(quad); tStart = tEnd; } } diff --git a/tests/PathOpsTestCommon.h b/tests/PathOpsTestCommon.h index e4ab829577..5072ad67ae 100644 --- a/tests/PathOpsTestCommon.h +++ b/tests/PathOpsTestCommon.h @@ -8,8 +8,8 @@ #define PathOpsTestCommon_DEFINED #include "SkPathOpsQuad.h" -#include "SkTDArray.h" +#include "SkTArray.h" -void CubicToQuads(const SkDCubic& cubic, double precision, SkTDArray<SkDQuad>& quads); +void CubicToQuads(const SkDCubic& cubic, double precision, SkTArray<SkDQuad, true>& quads); #endif |