| /* | |
| * Copyright 2015 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef GrStencilPathOp_DEFINED | |
| #define GrStencilPathOp_DEFINED | |
| #include "GrOp.h" | |
| #include "GrPath.h" | |
| #include "GrPathRendering.h" | |
| #include "GrStencilSettings.h" | |
| class GrOpFlushState; | |
| class GrRecordingContext; | |
| class GrStencilPathOp final : public GrOp { | |
| public: | |
| DEFINE_OP_CLASS_ID | |
| static std::unique_ptr<GrOp> Make(GrRecordingContext* context, | |
| const SkMatrix& viewMatrix, | |
| bool useHWAA, | |
| GrPathRendering::FillType fillType, | |
| bool hasStencilClip, | |
| const GrScissorState& scissor, | |
| const GrPath* path); | |
| const char* name() const override { return "StencilPathOp"; } | |
| #ifdef SK_DEBUG | |
| SkString dumpInfo() const override { | |
| SkString string; | |
| string.printf("Path: 0x%p, AA: %d", fPath.get(), fUseHWAA); | |
| string.append(INHERITED::dumpInfo()); | |
| return string; | |
| } | |
| #endif | |
| private: | |
| friend class GrOpMemoryPool; // for ctor | |
| GrStencilPathOp(const SkMatrix& viewMatrix, | |
| bool useHWAA, | |
| GrPathRendering::FillType fillType, | |
| bool hasStencilClip, | |
| const GrScissorState& scissor, | |
| const GrPath* path) | |
| : INHERITED(ClassID()) | |
| , fViewMatrix(viewMatrix) | |
| , fUseHWAA(useHWAA) | |
| , fFillType(fillType) | |
| , fHasStencilClip(hasStencilClip) | |
| , fScissor(scissor) | |
| , fPath(path) { | |
| this->setBounds(path->getBounds(), HasAABloat::kNo, IsZeroArea::kNo); | |
| } | |
| void onPrepare(GrOpFlushState*) override {} | |
| void onExecute(GrOpFlushState*, const SkRect& chainBounds) override; | |
| SkMatrix fViewMatrix; | |
| bool fUseHWAA; | |
| GrPathRendering::FillType fFillType; | |
| bool fHasStencilClip; | |
| GrScissorState fScissor; | |
| GrPendingIOResource<const GrPath, kRead_GrIOType> fPath; | |
| typedef GrOp INHERITED; | |
| }; | |
| #endif |