Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Unified Diff: src/gpu/GrOvalRenderer.cpp

Issue 1090453003: Return correctly mapped bounds from GrOvalRenderer. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrOvalRenderer.cpp
diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp
index f33944fa7b11558c90cf8350cd8e45132c1b8d43..90e5ab0be106b5d459c83e6ec475cbbcd48cfc65 100644
--- a/src/gpu/GrOvalRenderer.cpp
+++ b/src/gpu/GrOvalRenderer.cpp
@@ -692,7 +692,7 @@ public:
SkScalar fInnerRadius;
SkScalar fOuterRadius;
bool fStroke;
- SkRect fDevBounds;
+ SkRect fBounds;
};
static GrBatch* Create(const Geometry& geometry) {
@@ -775,7 +775,7 @@ public:
SkScalar innerRadius = args.fInnerRadius;
SkScalar outerRadius = args.fOuterRadius;
- const SkRect& bounds = args.fDevBounds;
+ const SkRect& bounds = args.fBounds;
// The inner radius in the vertex data must be specified in normalized space.
innerRadius = innerRadius / outerRadius;
@@ -930,7 +930,9 @@ void GrOvalRenderer::drawCircle(GrDrawTarget* target,
geometry.fInnerRadius = innerRadius;
geometry.fOuterRadius = outerRadius;
geometry.fStroke = isStrokeOnly && innerRadius > 0;
- geometry.fDevBounds = bounds;
+ geometry.fBounds = bounds;
+
+ viewMatrix.mapRect(&bounds);
SkAutoTUnref<GrBatch> batch(CircleBatch::Create(geometry));
target->drawBatch(pipelineBuilder, batch, &bounds);
@@ -948,7 +950,7 @@ public:
SkScalar fInnerXRadius;
SkScalar fInnerYRadius;
bool fStroke;
- SkRect fDevBounds;
+ SkRect fBounds;
};
static GrBatch* Create(const Geometry& geometry) {
@@ -1036,7 +1038,7 @@ public:
SkScalar xInnerRadRecip = SkScalarInvert(args.fInnerXRadius);
SkScalar yInnerRadRecip = SkScalarInvert(args.fInnerYRadius);
- const SkRect& bounds = args.fDevBounds;
+ const SkRect& bounds = args.fBounds;
// The inner radius in the vertex data must be specified in normalized space.
verts[0].fPos = SkPoint::Make(bounds.fLeft, bounds.fTop);
@@ -1227,7 +1229,9 @@ bool GrOvalRenderer::drawEllipse(GrDrawTarget* target,
geometry.fInnerXRadius = innerXRadius;
geometry.fInnerYRadius = innerYRadius;
geometry.fStroke = isStrokeOnly && innerXRadius > 0 && innerYRadius > 0;
- geometry.fDevBounds = bounds;
+ geometry.fBounds = bounds;
+
+ viewMatrix.mapRect(&bounds);
SkAutoTUnref<GrBatch> batch(EllipseBatch::Create(geometry));
target->drawBatch(pipelineBuilder, batch, &bounds);
@@ -1249,7 +1253,7 @@ public:
SkScalar fGeoDx;
SkScalar fGeoDy;
DIEllipseEdgeEffect::Mode fMode;
- SkRect fDevBounds;
+ SkRect fBounds;
};
static GrBatch* Create(const Geometry& geometry) {
@@ -1326,7 +1330,7 @@ public:
SkScalar xRadius = args.fXRadius;
SkScalar yRadius = args.fYRadius;
- const SkRect& bounds = args.fDevBounds;
+ const SkRect& bounds = args.fBounds;
// This adjusts the "radius" to include the half-pixel border
SkScalar offsetDx = SkScalarDiv(args.fGeoDx, xRadius);
@@ -1508,7 +1512,9 @@ bool GrOvalRenderer::drawDIEllipse(GrDrawTarget* target,
geometry.fGeoDx = geoDx;
geometry.fGeoDy = geoDy;
geometry.fMode = mode;
- geometry.fDevBounds = bounds;
+ geometry.fBounds = bounds;
+
+ viewMatrix.mapRect(&bounds);
SkAutoTUnref<GrBatch> batch(DIEllipseBatch::Create(geometry));
target->drawBatch(pipelineBuilder, batch, &bounds);
@@ -1636,7 +1642,7 @@ public:
SkScalar fInnerRadius;
SkScalar fOuterRadius;
bool fStroke;
- SkRect fDevBounds;
+ SkRect fBounds;
};
static GrBatch* Create(const Geometry& geometry, const GrIndexBuffer* indexBuffer) {
@@ -1719,7 +1725,7 @@ public:
SkScalar outerRadius = args.fOuterRadius;
- const SkRect& bounds = args.fDevBounds;
+ const SkRect& bounds = args.fBounds;
SkScalar yCoords[4] = {
bounds.fTop,
@@ -1845,7 +1851,7 @@ public:
SkScalar fInnerXRadius;
SkScalar fInnerYRadius;
bool fStroke;
- SkRect fDevBounds;
+ SkRect fBounds;
};
static GrBatch* Create(const Geometry& geometry, const GrIndexBuffer* indexBuffer) {
@@ -1936,7 +1942,7 @@ public:
SkScalar xOuterRadius = args.fXRadius + SK_ScalarHalf;
SkScalar yOuterRadius = args.fYRadius + SK_ScalarHalf;
- const SkRect& bounds = args.fDevBounds;
+ const SkRect& bounds = args.fBounds;
SkScalar yCoords[4] = {
bounds.fTop,
@@ -2168,7 +2174,9 @@ bool GrOvalRenderer::drawRRect(GrDrawTarget* target,
geometry.fInnerRadius = innerRadius;
geometry.fOuterRadius = outerRadius;
geometry.fStroke = isStrokeOnly;
- geometry.fDevBounds = bounds;
+ geometry.fBounds = bounds;
+
+ viewMatrix.mapRect(&bounds);
SkAutoTUnref<GrBatch> batch(RRectCircleRendererBatch::Create(geometry, indexBuffer));
target->drawBatch(pipelineBuilder, batch, &bounds);
@@ -2220,7 +2228,9 @@ bool GrOvalRenderer::drawRRect(GrDrawTarget* target,
geometry.fInnerXRadius = innerXRadius;
geometry.fInnerYRadius = innerYRadius;
geometry.fStroke = isStrokeOnly;
- geometry.fDevBounds = bounds;
+ geometry.fBounds = bounds;
+
+ viewMatrix.mapRect(&bounds);
SkAutoTUnref<GrBatch> batch(RRectEllipseRendererBatch::Create(geometry, indexBuffer));
target->drawBatch(pipelineBuilder, batch, &bounds);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698