diff options
Diffstat (limited to 'chromium/third_party/skia/gm/beziereffects.cpp')
-rw-r--r-- | chromium/third_party/skia/gm/beziereffects.cpp | 149 |
1 files changed, 68 insertions, 81 deletions
diff --git a/chromium/third_party/skia/gm/beziereffects.cpp b/chromium/third_party/skia/gm/beziereffects.cpp index e61e0f39c59..327f8067cd4 100644 --- a/chromium/third_party/skia/gm/beziereffects.cpp +++ b/chromium/third_party/skia/gm/beziereffects.cpp @@ -78,11 +78,10 @@ public: } protected: - BezierTestOp(GrClipEdgeType et, const SkRect& rect, const SkPMColor4f& color, int32_t classID) + BezierTestOp(const SkRect& rect, const SkPMColor4f& color, int32_t classID) : INHERITED(classID) , fRect(rect) , fColor(color) - , fEdgeType(et) , fProcessorSet(SkBlendMode::kSrc) { this->setBounds(rect, HasAABloat::kYes, IsHairline::kNo); } @@ -125,8 +124,6 @@ protected: flushState->drawMesh(*fMesh); } - GrClipEdgeType edgeType() const { return fEdgeType; } - const SkRect& rect() const { return fRect; } const SkPMColor4f& color() const { return fColor; } @@ -136,7 +133,6 @@ protected: private: SkRect fRect; SkPMColor4f fColor; - GrClipEdgeType fEdgeType; GrProcessorSet fProcessorSet; GrProgramInfo* fProgramInfo = nullptr; @@ -153,21 +149,20 @@ public: const char* name() const final { return "BezierConicTestOp"; } static std::unique_ptr<GrDrawOp> Make(GrRecordingContext* context, - GrClipEdgeType et, const SkRect& rect, const SkPMColor4f& color, const SkMatrix& klm) { GrOpMemoryPool* pool = context->priv().opMemoryPool(); - return pool->allocate<BezierConicTestOp>(et, rect, color, klm); + return pool->allocate<BezierConicTestOp>(rect, color, klm); } private: friend class ::GrOpMemoryPool; // for ctor - BezierConicTestOp(GrClipEdgeType et, const SkRect& rect, - const SkPMColor4f& color, const SkMatrix& klm) - : INHERITED(et, rect, color, ClassID()), fKLM(klm) {} + BezierConicTestOp(const SkRect& rect, const SkPMColor4f& color, const SkMatrix& klm) + : INHERITED(rect, color, ClassID()) + , fKLM(klm) {} struct Vertex { SkPoint fPosition; @@ -175,8 +170,8 @@ private: }; GrGeometryProcessor* makeGP(const GrCaps& caps, SkArenaAlloc* arena) final { - auto tmp = GrConicEffect::Make(arena, this->color(), SkMatrix::I(), this->edgeType(), - caps, SkMatrix::I(), false); + auto tmp = GrConicEffect::Make(arena, this->color(), SkMatrix::I(), caps, SkMatrix::I(), + false); if (!tmp) { return nullptr; } @@ -228,7 +223,7 @@ protected: } SkISize onISize() override { - return SkISize::Make(kGrClipEdgeTypeCnt*kCellWidth, kNumConics*kCellHeight); + return SkISize::Make(kCellWidth, kNumConics*kCellHeight); } void onDraw(GrContext* context, GrRenderTargetContext* renderTargetContext, @@ -270,43 +265,39 @@ protected: for (int row = 0; row < kNumConics; ++row) { - for(int col = 0; col < kGrClipEdgeTypeCnt; ++col) { - GrClipEdgeType et = (GrClipEdgeType) col; + SkScalar x = 0; + SkScalar y = row * h; + SkPoint controlPts[] = { + {x + baseControlPts[row][0].fX, y + baseControlPts[row][0].fY}, + {x + baseControlPts[row][1].fX, y + baseControlPts[row][1].fY}, + {x + baseControlPts[row][2].fX, y + baseControlPts[row][2].fY} + }; + + for (int i = 0; i < 3; ++i) { + canvas->drawCircle(controlPts[i], 6.f, ctrlPtPaint); + } - SkScalar x = col * w; - SkScalar y = row * h; - SkPoint controlPts[] = { - {x + baseControlPts[row][0].fX, y + baseControlPts[row][0].fY}, - {x + baseControlPts[row][1].fX, y + baseControlPts[row][1].fY}, - {x + baseControlPts[row][2].fX, y + baseControlPts[row][2].fY} - }; + canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, controlPts, polyPaint); + SkConic dst[4]; + SkMatrix klm; + int cnt = ChopConic(controlPts, dst, weights[row]); + GrPathUtils::getConicKLM(controlPts, weights[row], &klm); + + for (int c = 0; c < cnt; ++c) { + SkPoint* pts = dst[c].fPts; for (int i = 0; i < 3; ++i) { - canvas->drawCircle(controlPts[i], 6.f, ctrlPtPaint); + canvas->drawCircle(pts[i], 3.f, choppedPtPaint); } - canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, controlPts, polyPaint); - - SkConic dst[4]; - SkMatrix klm; - int cnt = ChopConic(controlPts, dst, weights[row]); - GrPathUtils::getConicKLM(controlPts, weights[row], &klm); + SkRect bounds; + bounds.setBounds(pts, 3); - for (int c = 0; c < cnt; ++c) { - SkPoint* pts = dst[c].fPts; - for (int i = 0; i < 3; ++i) { - canvas->drawCircle(pts[i], 3.f, choppedPtPaint); - } + canvas->drawRect(bounds, boundsPaint); - SkRect bounds; - bounds.setBounds(pts, 3); - - canvas->drawRect(bounds, boundsPaint); - - std::unique_ptr<GrDrawOp> op = BezierConicTestOp::Make(context, et, bounds, - kOpaqueBlack, klm); - renderTargetContext->priv().testingOnly_addDrawOp(std::move(op)); - } + std::unique_ptr<GrDrawOp> op = BezierConicTestOp::Make(context, bounds, + kOpaqueBlack, klm); + renderTargetContext->priv().testingOnly_addDrawOp(std::move(op)); } } } @@ -363,21 +354,21 @@ public: const char* name() const override { return "BezierQuadTestOp"; } static std::unique_ptr<GrDrawOp> Make(GrRecordingContext* context, - GrClipEdgeType et, const SkRect& rect, const SkPMColor4f& color, const GrPathUtils::QuadUVMatrix& devToUV) { GrOpMemoryPool* pool = context->priv().opMemoryPool(); - return pool->allocate<BezierQuadTestOp>(et, rect, color, devToUV); + return pool->allocate<BezierQuadTestOp>(rect, color, devToUV); } private: friend class ::GrOpMemoryPool; // for ctor - BezierQuadTestOp(GrClipEdgeType et, const SkRect& rect, - const SkPMColor4f& color, const GrPathUtils::QuadUVMatrix& devToUV) - : INHERITED(et, rect, color, ClassID()), fDevToUV(devToUV) {} + BezierQuadTestOp(const SkRect& rect, const SkPMColor4f& color, + const GrPathUtils::QuadUVMatrix& devToUV) + : INHERITED(rect, color, ClassID()) + , fDevToUV(devToUV) {} struct Vertex { SkPoint fPosition; @@ -385,8 +376,8 @@ private: }; GrGeometryProcessor* makeGP(const GrCaps& caps, SkArenaAlloc* arena) final { - auto tmp = GrQuadEffect::Make(arena, this->color(), SkMatrix::I(), this->edgeType(), - caps, SkMatrix::I(), false); + auto tmp = GrQuadEffect::Make(arena, this->color(), SkMatrix::I(), caps, SkMatrix::I(), + false); if (!tmp) { return nullptr; } @@ -434,7 +425,7 @@ protected: } SkISize onISize() override { - return SkISize::Make(kGrClipEdgeTypeCnt*kCellWidth, kNumQuads*kCellHeight); + return SkISize::Make(kCellWidth, kNumQuads*kCellHeight); } void onDraw(GrContext* context, GrRenderTargetContext* renderTargetContext, @@ -468,44 +459,40 @@ protected: boundsPaint.setStyle(SkPaint::kStroke_Style); for (int row = 0; row < kNumQuads; ++row) { - for(int col = 0; col < kGrClipEdgeTypeCnt; ++col) { - GrClipEdgeType et = (GrClipEdgeType) col; - - SkScalar x = col * w; - SkScalar y = row * h; - SkPoint controlPts[] = { - {x + baseControlPts[row][0].fX, y + baseControlPts[row][0].fY}, - {x + baseControlPts[row][1].fX, y + baseControlPts[row][1].fY}, - {x + baseControlPts[row][2].fX, y + baseControlPts[row][2].fY} - }; - - for (int i = 0; i < 3; ++i) { - canvas->drawCircle(controlPts[i], 6.f, ctrlPtPaint); - } + SkScalar x = 0; + SkScalar y = row * h; + SkPoint controlPts[] = { + {x + baseControlPts[row][0].fX, y + baseControlPts[row][0].fY}, + {x + baseControlPts[row][1].fX, y + baseControlPts[row][1].fY}, + {x + baseControlPts[row][2].fX, y + baseControlPts[row][2].fY} + }; + + for (int i = 0; i < 3; ++i) { + canvas->drawCircle(controlPts[i], 6.f, ctrlPtPaint); + } - canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, controlPts, polyPaint); + canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, controlPts, polyPaint); - SkPoint chopped[5]; - int cnt = SkChopQuadAtMaxCurvature(controlPts, chopped); + SkPoint chopped[5]; + int cnt = SkChopQuadAtMaxCurvature(controlPts, chopped); - for (int c = 0; c < cnt; ++c) { - SkPoint* pts = chopped + 2 * c; + for (int c = 0; c < cnt; ++c) { + SkPoint* pts = chopped + 2 * c; - for (int i = 0; i < 3; ++i) { - canvas->drawCircle(pts[i], 3.f, choppedPtPaint); - } + for (int i = 0; i < 3; ++i) { + canvas->drawCircle(pts[i], 3.f, choppedPtPaint); + } - SkRect bounds; - bounds.setBounds(pts, 3); + SkRect bounds; + bounds.setBounds(pts, 3); - canvas->drawRect(bounds, boundsPaint); + canvas->drawRect(bounds, boundsPaint); - GrPathUtils::QuadUVMatrix DevToUV(pts); + GrPathUtils::QuadUVMatrix DevToUV(pts); - std::unique_ptr<GrDrawOp> op = BezierQuadTestOp::Make(context, et, bounds, - kOpaqueBlack, DevToUV); - renderTargetContext->priv().testingOnly_addDrawOp(std::move(op)); - } + std::unique_ptr<GrDrawOp> op = BezierQuadTestOp::Make(context, bounds, + kOpaqueBlack, DevToUV); + renderTargetContext->priv().testingOnly_addDrawOp(std::move(op)); } } } |