| /* |
| * Copyright 2016 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrDrawContextPriv_DEFINED |
| #define GrDrawContextPriv_DEFINED |
| |
| #include "GrDrawContext.h" |
| |
| class GrFixedClip; |
| struct GrUserStencilSettings; |
| |
| /** Class that adds methods to GrDrawContext that are only intended for use internal to Skia. |
| This class is purely a privileged window into GrDrawContext. It should never have additional |
| data members or virtual methods. */ |
| class GrDrawContextPriv { |
| public: |
| bool drawAndStencilRect(const GrFixedClip&, |
| const GrUserStencilSettings*, |
| SkRegion::Op op, |
| bool invert, |
| bool doAA, |
| const SkMatrix& viewMatrix, |
| const SkRect&); |
| |
| bool drawAndStencilPath(const GrFixedClip&, |
| const GrUserStencilSettings*, |
| SkRegion::Op op, |
| bool invert, |
| bool doAA, |
| const SkMatrix& viewMatrix, |
| const SkPath&); |
| |
| void testingOnly_drawBatch(const GrPipelineBuilder& pipelineBuilder, |
| GrDrawBatch* batch, |
| const GrClip* = nullptr); |
| |
| private: |
| explicit GrDrawContextPriv(GrDrawContext* drawContext) : fDrawContext(drawContext) {} |
| GrDrawContextPriv(const GrRenderTargetPriv&) {} // unimpl |
| GrDrawContextPriv& operator=(const GrRenderTargetPriv&); // unimpl |
| |
| // No taking addresses of this type. |
| const GrDrawContextPriv* operator&() const; |
| GrDrawContextPriv* operator&(); |
| |
| GrDrawContext* fDrawContext; |
| |
| friend class GrDrawContext; // to construct/copy this type. |
| }; |
| |
| inline GrDrawContextPriv GrDrawContext::drawContextPriv() { return GrDrawContextPriv(this); } |
| |
| inline const GrDrawContextPriv GrDrawContext::drawContextPriv () const { |
| return GrDrawContextPriv(const_cast<GrDrawContext*>(this)); |
| } |
| |
| #endif |