diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-05-04 18:08:27 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-05-04 18:08:27 +0000 |
commit | 0df451d5563e6536af9bd328e31d4b6ed4dbc07c (patch) | |
tree | c4ec8a7eda4ca2334e9b9edd7a635f42ad5439e3 | |
parent | ac7277f4472c75c2c3358705cc300e78550b0472 (diff) | |
download | src-0df451d5563e6536af9bd328e31d4b6ed4dbc07c.tar.gz |
Revert of fix the error that path is inversed for stroke and strokeAndFill styles (https://codereview.chromium.org/183683010/)
R=bsalomon@google.com, reed@google.com, yunchao.he@intel.com
TBR=reed@google.com
NOTRY=True
Reason for revert:
broke unittests
Original issue's description:
> fix the error that path is inversed for stroke and strokeAndFill styles.
>
> However, because hairline stroke + fill = fill (see src/core/SkStrokeRec.cpp), strokeAndFill will be thought as fill style when paint.getStrokeWidth() <= 0, this edge case can be inverse-filled.
>
> BUG=skia:2222
>
> Committed: http://code.google.com/p/skia/source/detail?r=14561
Author: reed@chromium.org
Review URL: https://codereview.chromium.org/269903002
git-svn-id: http://skia.googlecode.com/svn/trunk/src@14562 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r-- | core/SkCanvas.cpp | 2 | ||||
-rw-r--r-- | core/SkDraw.cpp | 7 | ||||
-rw-r--r-- | core/SkStroke.cpp | 10 | ||||
-rw-r--r-- | gpu/GrStencilAndCoverPathRenderer.cpp | 2 |
4 files changed, 6 insertions, 15 deletions
diff --git a/core/SkCanvas.cpp b/core/SkCanvas.cpp index 34559795..6c0fc884 100644 --- a/core/SkCanvas.cpp +++ b/core/SkCanvas.cpp @@ -2076,7 +2076,7 @@ void SkCanvas::drawPath(const SkPath& path, const SkPaint& paint) { const SkRect& r = path.getBounds(); if (r.width() <= 0 && r.height() <= 0) { - if (path.isInverseFillType() && SkPaint::kFill_Style == paint.getStyle()) { + if (path.isInverseFillType()) { this->internalDrawPaint(paint); } return; diff --git a/core/SkDraw.cpp b/core/SkDraw.cpp index ee2e1125..c4f5f74e 100644 --- a/core/SkDraw.cpp +++ b/core/SkDraw.cpp @@ -1119,13 +1119,6 @@ void SkDraw::drawPath(const SkPath& origSrcPath, const SkPaint& origPaint, SkAutoBlitterChoose blitter(*fBitmap, *fMatrix, *paint, drawCoverage); - // make sure the path will not be inverse-stroked. hairlineStroke + fill = fill, - // they can be inverse-filled. - if (devPathPtr->isInverseFillType() && (SkPaint::kStroke_Style == paint->getStyle() || - (SkPaint::kStrokeAndFill_Style == paint->getStyle() && paint->getStrokeWidth() > 0))) { - devPathPtr->toggleInverseFillType(); - } - if (paint->getMaskFilter()) { SkPaint::Style style = doFill ? SkPaint::kFill_Style : SkPaint::kStroke_Style; diff --git a/core/SkStroke.cpp b/core/SkStroke.cpp index 7d8d7077..b138c326 100644 --- a/core/SkStroke.cpp +++ b/core/SkStroke.cpp @@ -562,9 +562,8 @@ void SkStroke::strokePath(const SkPath& src, SkPath* dst) const { SkPath::Direction dir; if (src.isRect(&isClosed, &dir) && isClosed) { this->strokeRect(src.getBounds(), dst, dir); - // our answer should preserve the inverseness of the src, but the - // rect should not be inverse-stroked. - if (src.isInverseFillType() && fWidth < 0) { + // our answer should preserve the inverseness of the src + if (src.isInverseFillType()) { SkASSERT(!dst->isInverseFillType()); dst->toggleInverseFillType(); } @@ -647,9 +646,8 @@ DONE: #endif } - // our answer should preserve the inverseness of the src, but the path - // should not be inverse-stroked. - if (src.isInverseFillType() && fWidth < 0) { + // our answer should preserve the inverseness of the src + if (src.isInverseFillType()) { SkASSERT(!dst->isInverseFillType()); dst->toggleInverseFillType(); } diff --git a/gpu/GrStencilAndCoverPathRenderer.cpp b/gpu/GrStencilAndCoverPathRenderer.cpp index ad6192ae..273c01b8 100644 --- a/gpu/GrStencilAndCoverPathRenderer.cpp +++ b/gpu/GrStencilAndCoverPathRenderer.cpp @@ -71,7 +71,7 @@ bool GrStencilAndCoverPathRenderer::onDrawPath(const SkPath& path, SkAutoTUnref<GrPath> p(fGpu->getContext()->createPath(path, stroke)); - if (path.isInverseFillType() && SkStrokeRec::kFill_Style == stroke.getStyle()) { + if (path.isInverseFillType()) { GR_STATIC_CONST_SAME_STENCIL(kInvertedStencilPass, kZero_StencilOp, kZero_StencilOp, |