| Index: src/gpu/GrContext.cpp
|
| diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
|
| index b5c8e3e592b21f1d7667d33434316c92a48f5435..70029418f8a24bcd36693bef172c3c507d5da2d6 100755
|
| --- a/src/gpu/GrContext.cpp
|
| +++ b/src/gpu/GrContext.cpp
|
| @@ -625,6 +625,12 @@ private:
|
| fBatch.fHairline = geometry.fStrokeWidth == 0;
|
|
|
| fGeoData.push_back(geometry);
|
| +
|
| + // setup bounds
|
| + this->setBounds(geometry.fRect);
|
| + SkScalar rad = SkScalarHalf(geometry.fStrokeWidth);
|
| + this->getBounds()->outset(rad, rad);
|
| + geometry.fViewMatrix.mapRect(this->getBounds());
|
| }
|
|
|
| /* create a triangle strip that strokes the specified rect. There are 8
|
| @@ -775,16 +781,12 @@ void GrContext::drawRect(GrRenderTarget* rt,
|
|
|
| SkAutoTUnref<GrBatch> batch(StrokeRectBatch::Create(geometry));
|
|
|
| - SkRect bounds = rect;
|
| - SkScalar rad = SkScalarHalf(width);
|
| - bounds.outset(rad, rad);
|
| - viewMatrix.mapRect(&bounds);
|
| // Depending on sub-pixel coordinates and the particular GPU, we may lose a corner of
|
| // hairline rects. We jam all the vertices to pixel centers to avoid this, but not when MSAA
|
| // is enabled because it can cause ugly artifacts.
|
| pipelineBuilder.setState(GrPipelineBuilder::kSnapVerticesToPixelCenters_Flag,
|
| 0 == width && !rt->isMultisampled());
|
| - target->drawBatch(&pipelineBuilder, batch, &bounds);
|
| + target->drawBatch(&pipelineBuilder, batch);
|
| } else {
|
| // filled BW rect
|
| target->drawSimpleRect(&pipelineBuilder, color, viewMatrix, rect);
|
| @@ -1022,6 +1024,9 @@ private:
|
| fBatch.fVertexCount = vertexCount;
|
| fBatch.fIndexCount = indexCount;
|
| fBatch.fPrimitiveType = primitiveType;
|
| +
|
| + // TODO figure out bounds
|
| + this->setBoundsLargest();
|
| }
|
|
|
| GrPrimitiveType primitiveType() const { return fBatch.fPrimitiveType; }
|
| @@ -1076,6 +1081,8 @@ private:
|
| fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin());
|
| fBatch.fVertexCount += that->vertexCount();
|
| fBatch.fIndexCount += that->indexCount();
|
| +
|
| + this->joinBounds(that->bounds());
|
| return true;
|
| }
|
|
|
| @@ -1126,8 +1133,7 @@ void GrContext::drawVertices(GrRenderTarget* rt,
|
| positions, vertexCount, indices,
|
| indexCount,colors, texCoords));
|
|
|
| - // TODO figure out bounds
|
| - target->drawBatch(&pipelineBuilder, batch, NULL);
|
| + target->drawBatch(&pipelineBuilder, batch);
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|