Chromium Code Reviews| Index: src/gpu/batches/GrRectBatchFactory.cpp |
| diff --git a/src/gpu/batches/GrRectBatchFactory.cpp b/src/gpu/batches/GrRectBatchFactory.cpp |
| index eed18ad419637e788065495cf2729ae748fb6fa1..830dd6aa4cbbbbde1b76b638e4bcecc096475bc1 100644 |
| --- a/src/gpu/batches/GrRectBatchFactory.cpp |
| +++ b/src/gpu/batches/GrRectBatchFactory.cpp |
| @@ -33,13 +33,6 @@ GrDrawBatch* CreateAAStroke(GrColor color, |
| const SkScalar rx = SkScalarMul(dx, SK_ScalarHalf); |
| const SkScalar ry = SkScalarMul(dy, SK_ScalarHalf); |
| - SkScalar spare; |
| - { |
| - SkScalar w = devRect.width() - dx; |
| - SkScalar h = devRect.height() - dy; |
| - spare = SkTMin(w, h); |
| - } |
| - |
| SkRect devOutside(devRect); |
| devOutside.outset(rx, ry); |
| @@ -51,13 +44,25 @@ GrDrawBatch* CreateAAStroke(GrColor color, |
| miterStroke = false; |
| } |
| - if (spare <= 0 && miterStroke) { |
| - return CreateAAFill(color, viewMatrix, devOutside, devOutside); |
| - } |
| - |
| SkRect devInside(devRect); |
| devInside.inset(rx, ry); |
| + // If we have a degenerate stroking rect(ie the stroke is larger than inner rect) then we |
| + // make a degenerate inside rect to avoid double hitting. We will also jam all of the points |
| + // together when we render these rects. |
| + SkScalar spare; |
| + { |
| + SkScalar w = devRect.width() - dx; |
| + SkScalar h = devRect.height() - dy; |
| + spare = SkTMin(w, h); |
| + } |
| + |
| + bool degenerate = spare <= 0; |
| + if (degenerate) { |
| + devInside.fLeft = devInside.fRight = devRect.centerX(); |
| + devInside.fTop = devInside.fBottom = devRect.centerY(); |
| + } |
| + |
| SkRect devOutsideAssist(devRect); |
| // For bevel-stroke, use 2 SkRect instances(devOutside and devOutsideAssist) |
| @@ -69,7 +74,7 @@ GrDrawBatch* CreateAAStroke(GrColor color, |
| } |
| return GrAAStrokeRectBatch::Create(color, viewMatrix, devOutside, devOutsideAssist, devInside, |
| - miterStroke); |
| + miterStroke, degenerate); |
| } |
| GrDrawBatch* CreateAAFillNestedRects(GrColor color, |
| @@ -82,11 +87,8 @@ GrDrawBatch* CreateAAFillNestedRects(GrColor color, |
| viewMatrix.mapRect(&devOutside, rects[0]); |
| viewMatrix.mapRect(&devInside, rects[1]); |
|
robertphillips
2015/09/21 19:57:39
false -> devInside.isEmpty() ?
|
| - if (devInside.isEmpty()) { |
| - return CreateAAFill(color, viewMatrix, devOutside, devOutside); |
| - } |
| - |
| - return GrAAStrokeRectBatch::Create(color, viewMatrix, devOutside, devOutside, devInside, true); |
| + return GrAAStrokeRectBatch::Create(color, viewMatrix, devOutside, devOutside, devInside, true, |
| + false); |
| } |
| }; |