Index: src/gpu/batches/GrNonAAStrokeRectBatch.cpp |
diff --git a/src/gpu/batches/GrNonAAStrokeRectBatch.cpp b/src/gpu/batches/GrNonAAStrokeRectBatch.cpp |
index 299d995fc70251347b605f49fc2928018d6c3829..f443b32f19f8d2313b895a7e732357995541c547 100644 |
--- a/src/gpu/batches/GrNonAAStrokeRectBatch.cpp |
+++ b/src/gpu/batches/GrNonAAStrokeRectBatch.cpp |
@@ -72,24 +72,25 @@ public: |
batch->fRect.sort(); |
batch->fStrokeWidth = stroke.getWidth(); |
- batch->fBounds = batch->fRect; |
SkScalar rad = SkScalarHalf(batch->fStrokeWidth); |
- batch->fBounds.outset(rad, rad); |
- batch->fViewMatrix.mapRect(&batch->fBounds); |
+ SkRect bounds = rect; |
+ bounds.outset(rad, rad); |
// If our caller snaps to pixel centers then we have to round out the bounds |
if (snapToPixelCenters) { |
+ viewMatrix.mapRect(&bounds); |
// We want to be consistent with how we snap non-aa lines. To match what we do in |
// GrGLSLVertexShaderBuilder, we first floor all the vertex values and then add half a |
// pixel to force us to pixel centers. |
- batch->fBounds.set(SkScalarFloorToScalar(batch->fBounds.fLeft), |
- SkScalarFloorToScalar(batch->fBounds.fTop), |
- SkScalarFloorToScalar(batch->fBounds.fRight), |
- SkScalarFloorToScalar(batch->fBounds.fBottom)); |
- batch->fBounds.offset(0.5f, 0.5f); |
- |
- // Round out the bounds to integer values |
- batch->fBounds.roundOut(); |
+ bounds.set(SkScalarFloorToScalar(bounds.fLeft), |
+ SkScalarFloorToScalar(bounds.fTop), |
+ SkScalarFloorToScalar(bounds.fRight), |
+ SkScalarFloorToScalar(bounds.fBottom)); |
+ bounds.offset(0.5f, 0.5f); |
+ batch->setBounds(bounds, HasAABloat::kNo, IsZeroArea::kNo); |
+ } else { |
+ batch->setTransformedBounds(bounds, batch->fViewMatrix, HasAABloat ::kNo, |
+ IsZeroArea::kNo); |
} |
return batch; |
} |