/* * 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(this)); } #endif