aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/beziereffects.cpp
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-03-06 12:02:34 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-06 18:16:28 +0000
commit9e50f7b11e9a9d3dc23c924bbb0f0b85c6f1d6cb (patch)
tree0bf1604c5ee4980a08eb0fd8b2b0b33d1be4814e /gm/beziereffects.cpp
parent488f0d674811ae038d34ece9d59c2824ebd4df8f (diff)
Store clipped bounds on GrOp rather than in parallel in GrRenderTargetOpList.
When the op is recorded we update its bounds to incorporate both clipping and aa bloat. Change-Id: Ia205e058ebeda5fcdb2cd5e9b8a30a4972672b14 Reviewed-on: https://skia-review.googlesource.com/9233 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'gm/beziereffects.cpp')
-rw-r--r--gm/beziereffects.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index 661e7709d3..d2d4aa9dff 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -34,16 +34,16 @@ public:
const char* name() const override { return "BezierCubicOrConicTestOp"; }
- static std::unique_ptr<GrDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds,
+ static std::unique_ptr<GrDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& rect,
GrColor color, const SkScalar klmEqs[9], SkScalar sign) {
return std::unique_ptr<GrDrawOp>(
- new BezierCubicOrConicTestOp(gp, bounds, color, klmEqs, sign));
+ new BezierCubicOrConicTestOp(gp, rect, color, klmEqs, sign));
}
private:
- BezierCubicOrConicTestOp(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds, GrColor color,
+ BezierCubicOrConicTestOp(sk_sp<GrGeometryProcessor> gp, const SkRect& rect, GrColor color,
const SkScalar klmEqs[9], SkScalar sign)
- : INHERITED(ClassID(), bounds, color), fGeometryProcessor(std::move(gp)) {
+ : INHERITED(ClassID(), rect, color), fRect(rect), fGeometryProcessor(std::move(gp)) {
for (int i = 0; i < 9; i++) {
fKlmEqs[i] = klmEqs[i];
}
@@ -62,8 +62,7 @@ private:
if (!verts) {
return;
}
- const SkRect& bounds = this->bounds();
- verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom,
+ verts[0].fPosition.setRectFan(fRect.fLeft, fRect.fTop, fRect.fRight, fRect.fBottom,
sizeof(Vertex));
for (int v = 0; v < 4; ++v) {
verts[v].fKLM[0] = eval_line(verts[v].fPosition, fKlmEqs + 0, fSign);
@@ -73,8 +72,9 @@ private:
helper.recordDraw(target, fGeometryProcessor.get());
}
- SkScalar fKlmEqs[9];
- SkScalar fSign;
+ SkScalar fKlmEqs[9];
+ SkScalar fSign;
+ SkRect fRect;
sk_sp<GrGeometryProcessor> fGeometryProcessor;
static constexpr int kVertsPerCubic = 4;
@@ -394,16 +394,17 @@ public:
DEFINE_OP_CLASS_ID
const char* name() const override { return "BezierQuadTestOp"; }
- static std::unique_ptr<GrDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds,
+ static std::unique_ptr<GrDrawOp> Make(sk_sp<GrGeometryProcessor> gp, const SkRect& rect,
GrColor color, const GrPathUtils::QuadUVMatrix& devToUV) {
- return std::unique_ptr<GrDrawOp>(new BezierQuadTestOp(gp, bounds, color, devToUV));
+ return std::unique_ptr<GrDrawOp>(new BezierQuadTestOp(gp, rect, color, devToUV));
}
private:
- BezierQuadTestOp(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds, GrColor color,
+ BezierQuadTestOp(sk_sp<GrGeometryProcessor> gp, const SkRect& rect, GrColor color,
const GrPathUtils::QuadUVMatrix& devToUV)
- : INHERITED(ClassID(), bounds, color)
+ : INHERITED(ClassID(), rect, color)
, fDevToUV(devToUV)
+ , fRect(rect)
, fGeometryProcessor(std::move(gp)) {}
struct Vertex {
@@ -419,14 +420,14 @@ private:
if (!verts) {
return;
}
- const SkRect& bounds = this->bounds();
- verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom,
+ verts[0].fPosition.setRectFan(fRect.fLeft, fRect.fTop, fRect.fRight, fRect.fBottom,
sizeof(Vertex));
fDevToUV.apply<4, sizeof(Vertex), sizeof(SkPoint)>(verts);
helper.recordDraw(target, fGeometryProcessor.get());
}
- GrPathUtils::QuadUVMatrix fDevToUV;
+ GrPathUtils::QuadUVMatrix fDevToUV;
+ SkRect fRect;
sk_sp<GrGeometryProcessor> fGeometryProcessor;
static constexpr int kVertsPerCubic = 4;