diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-11-07 16:34:53 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-11-07 16:34:53 +0000 |
commit | eacc48978e5467ade489149f3f7bece308f40e2c (patch) | |
tree | 57dfb703e0eafe7fe38ffd3179b85d4e2e13b152 /src/gpu/GrOvalRenderer.cpp | |
parent | 126f7f5244502c0cbf1e5fec1d2ad7a0f2eb6c34 (diff) |
Fix for thin filled and hairline roundrects.
The roundrect renderer was dropping into the
ConvexPathRenderer when it didn't need to -- if a stroke is
just on the edge of being acceptable it will now use the
roundrect renderer.
BUG=Skia:1802
R=robertphillips@google.com
Author: jvanverth@google.com
Review URL: https://codereview.chromium.org/59903005
git-svn-id: http://skia.googlecode.com/svn/trunk@12168 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/gpu/GrOvalRenderer.cpp')
-rw-r--r-- | src/gpu/GrOvalRenderer.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp index 27bd74a88a..aeeb85d2e1 100644 --- a/src/gpu/GrOvalRenderer.cpp +++ b/src/gpu/GrOvalRenderer.cpp @@ -909,7 +909,7 @@ bool GrOvalRenderer::drawSimpleRRect(GrDrawTarget* target, GrContext* context, b // if hairline stroke is greater than radius, we don't handle that right now SkStrokeRec::Style style = stroke.getStyle(); if (SkStrokeRec::kHairline_Style == style && - (SK_ScalarHalf >= xRadius || SK_ScalarHalf >= yRadius)) { + (SK_ScalarHalf > xRadius || SK_ScalarHalf > yRadius)) { return false; } @@ -920,7 +920,7 @@ bool GrOvalRenderer::drawSimpleRRect(GrDrawTarget* target, GrContext* context, b scaledStroke.fY = SkScalarAbs(strokeWidth*(vm[SkMatrix::kMSkewX] + vm[SkMatrix::kMScaleY])); // if half of strokewidth is greater than radius, we don't handle that right now - if (SK_ScalarHalf*scaledStroke.fX >= xRadius || SK_ScalarHalf*scaledStroke.fY >= yRadius) { + if (SK_ScalarHalf*scaledStroke.fX > xRadius || SK_ScalarHalf*scaledStroke.fY > yRadius) { return false; } @@ -968,7 +968,7 @@ bool GrOvalRenderer::drawSimpleRRect(GrDrawTarget* target, GrContext* context, b bounds.outset(halfWidth, halfWidth); } - isStroked = (isStroked && innerRadius > 0); + isStroked = (isStroked && innerRadius >= 0); GrEffectRef* effect = CircleEdgeEffect::Create(isStroked); static const int kCircleEdgeAttrIndex = 1; @@ -1064,7 +1064,7 @@ bool GrOvalRenderer::drawSimpleRRect(GrDrawTarget* target, GrContext* context, b bounds.outset(scaledStroke.fX, scaledStroke.fY); } - isStroked = (isStroked && innerXRadius > 0 && innerYRadius > 0); + isStroked = (isStroked && innerXRadius >= 0 && innerYRadius >= 0); GrDrawTarget::AutoReleaseGeometry geo(target, 16, 0); if (!geo.succeeded()) { |