|  | /* | 
|  | * 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 GrStencilPathOp final : public GrOp { | 
|  | public: | 
|  | DEFINE_OP_CLASS_ID | 
|  |  | 
|  | static std::unique_ptr<GrOp> Make(const SkMatrix& viewMatrix, | 
|  | bool useHWAA, | 
|  | GrPathRendering::FillType fillType, | 
|  | bool hasStencilClip, | 
|  | const GrScissorState& scissor, | 
|  | const GrPath* path) { | 
|  |  | 
|  | return std::unique_ptr<GrOp>(new GrStencilPathOp(viewMatrix, useHWAA, fillType, | 
|  | hasStencilClip, scissor, path)); | 
|  | } | 
|  |  | 
|  | const char* name() const override { return "StencilPathOp"; } | 
|  |  | 
|  | SkString dumpInfo() const override { | 
|  | SkString string; | 
|  | string.printf("Path: 0x%p, AA: %d", fPath.get(), fUseHWAA); | 
|  | string.append(INHERITED::dumpInfo()); | 
|  | return string; | 
|  | } | 
|  |  | 
|  | private: | 
|  | 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); | 
|  | } | 
|  |  | 
|  | bool onCombineIfPossible(GrOp* t, const GrCaps& caps) override { return false; } | 
|  |  | 
|  | void onPrepare(GrOpFlushState*) override {} | 
|  |  | 
|  | void onExecute(GrOpFlushState* state) override; | 
|  |  | 
|  | SkMatrix                                          fViewMatrix; | 
|  | bool                                              fUseHWAA; | 
|  | GrPathRendering::FillType                         fFillType; | 
|  | bool                                              fHasStencilClip; | 
|  | GrScissorState                                    fScissor; | 
|  | GrPendingIOResource<const GrPath, kRead_GrIOType> fPath; | 
|  |  | 
|  | typedef GrOp INHERITED; | 
|  | }; | 
|  |  | 
|  | #endif |