aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkScan_Path.cpp
diff options
context:
space:
mode:
authorGravatar Ben Wagner <benjaminwagner@google.com>2017-10-09 12:29:42 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-10-09 16:48:04 +0000
commitb6abb9b4e088abee8b8dfcce9c9f7eb759518198 (patch)
tree0e58348b825658e36b4e60e3f782bf8c1b6d11b6 /src/core/SkScan_Path.cpp
parent72818018494372b8692203b77aedfa6b8a87e3bc (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.cpp20
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) {