diff options
author | caryclark <caryclark@google.com> | 2015-04-29 08:28:30 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-29 08:28:30 -0700 |
commit | aec251012542e971100e218bf463adbfb5d21d20 (patch) | |
tree | 16c2e84c2d59d94b75d7d2bc50fec53c0e38a898 /tests/PathOpsTestCommon.cpp | |
parent | 97fdea6c4393cf0102d7eee5790782509fb4f57b (diff) |
minor fixes to cubics code and overall alignment of how bounds and tops are computed for all curve types
All but 17 extended tests work.
A helper function is privately added to SkPath.h to permit a test to modify a given point in a path.
BUG=skia:3588
Review URL: https://codereview.chromium.org/1107353004
Diffstat (limited to 'tests/PathOpsTestCommon.cpp')
-rw-r--r-- | tests/PathOpsTestCommon.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/PathOpsTestCommon.cpp b/tests/PathOpsTestCommon.cpp index d933115132..f6852254c0 100644 --- a/tests/PathOpsTestCommon.cpp +++ b/tests/PathOpsTestCommon.cpp @@ -141,8 +141,20 @@ void CubicToQuads(const SkDCubic& cubic, double precision, SkTArray<SkDQuad, tru double tStart = 0; for (int i1 = 0; i1 <= ts.count(); ++i1) { const double tEnd = i1 < ts.count() ? ts[i1] : 1; + SkDRect bounds; + bounds.setBounds(cubic); SkDCubic part = cubic.subDivide(tStart, tEnd); SkDQuad quad = part.toQuad(); + if (quad[1].fX < bounds.fLeft) { + quad[1].fX = bounds.fLeft; + } else if (quad[1].fX > bounds.fRight) { + quad[1].fX = bounds.fRight; + } + if (quad[1].fY < bounds.fTop) { + quad[1].fY = bounds.fTop; + } else if (quad[1].fY > bounds.fBottom) { + quad[1].fY = bounds.fBottom; + } quads.push_back(quad); tStart = tEnd; } |