diff options
author | Ben Wagner <benjaminwagner@google.com> | 2017-10-09 12:29:42 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-09 16:48:04 +0000 |
commit | b6abb9b4e088abee8b8dfcce9c9f7eb759518198 (patch) | |
tree | 0e58348b825658e36b4e60e3f782bf8c1b6d11b6 /src/core/SkScan_Path.cpp | |
parent | 72818018494372b8692203b77aedfa6b8a87e3bc (diff) |
Revert "Fix a couple float-cast-overflow in SkScan*."
This reverts commit 3cd0bef0fd9d062bbcc313c329b4f31925e8ded7.
Reason for revert: https://bugs.chromium.org/p/skia/issues/detail?id=7143
Original change's description:
> Fix a couple float-cast-overflow in SkScan*.
>
> Bug: skia:5060
> Change-Id: I60a48993c77631aaad9354bb86b13204dc618bf4
> Reviewed-on: https://skia-review.googlesource.com/47422
> Commit-Queue: Ben Wagner <benjaminwagner@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
TBR=benjaminwagner@google.com,reed@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: skia:7143
Change-Id: I0f19720a7d8344789a375bbb6b9e28bf4f4e55ae
Reviewed-on: https://skia-review.googlesource.com/57240
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Diffstat (limited to 'src/core/SkScan_Path.cpp')
-rw-r--r-- | src/core/SkScan_Path.cpp | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/src/core/SkScan_Path.cpp b/src/core/SkScan_Path.cpp index a8a43212c7..8af0ea6b86 100644 --- a/src/core/SkScan_Path.cpp +++ b/src/core/SkScan_Path.cpp @@ -503,7 +503,7 @@ void sk_blit_below(SkBlitter* blitter, const SkIRect& ir, const SkRegion& clip) * is outside of the clip. */ SkScanClipper::SkScanClipper(SkBlitter* blitter, const SkRegion* clip, - const SkIRect& ir, bool skipRejectTest, bool irPreClipped) { + const SkIRect& ir, bool skipRejectTest) { fBlitter = nullptr; // null means blit nothing fClipRect = nullptr; @@ -514,7 +514,7 @@ SkScanClipper::SkScanClipper(SkBlitter* blitter, const SkRegion* clip, } if (clip->isRect()) { - if (!irPreClipped && fClipRect->contains(ir)) { + if (fClipRect->contains(ir)) { #ifdef SK_DEBUG fRectClipCheckBlitter.init(blitter, *fClipRect); blitter = &fRectClipCheckBlitter; @@ -522,8 +522,7 @@ SkScanClipper::SkScanClipper(SkBlitter* blitter, const SkRegion* clip, fClipRect = nullptr; } else { // only need a wrapper blitter if we're horizontally clipped - if (irPreClipped || - fClipRect->fLeft > ir.fLeft || fClipRect->fRight < ir.fRight) { + if (fClipRect->fLeft > ir.fLeft || fClipRect->fRight < ir.fRight) { fRectBlitter.init(blitter, *fClipRect); blitter = &fRectBlitter; } else { @@ -640,21 +639,12 @@ void SkScan::FillPath(const SkPath& path, const SkRegion& origClip, } // don't reference "origClip" any more, just use clipPtr - - SkRect bounds = path.getBounds(); - bool irPreClipped = false; - if (!SkRect::MakeLargestS32().contains(bounds)) { - if (!bounds.intersect(SkRect::MakeLargestS32())) { - bounds.setEmpty(); - } - irPreClipped = true; - } SkIRect ir; // We deliberately call round_asymmetric_to_int() instead of round(), since we can't afford // to generate a bounds that is tighter than the corresponding SkEdges. The edge code basically // converts the floats to fixed, and then "rounds". If we called round() instead of // round_asymmetric_to_int() here, we could generate the wrong ir for values like 0.4999997. - round_asymmetric_to_int(bounds, &ir); + round_asymmetric_to_int(path.getBounds(), &ir); if (ir.isEmpty()) { if (path.isInverseFillType()) { blitter->blitRegion(*clipPtr); @@ -662,7 +652,7 @@ void SkScan::FillPath(const SkPath& path, const SkRegion& origClip, return; } - SkScanClipper clipper(blitter, clipPtr, ir, path.isInverseFillType(), irPreClipped); + SkScanClipper clipper(blitter, clipPtr, ir, path.isInverseFillType()); blitter = clipper.getBlitter(); if (blitter) { |