From 86c60758e9e4f9e203d7462cb22b2a245a0f51bd Mon Sep 17 00:00:00 2001 From: robertphillips Date: Wed, 2 Mar 2016 08:43:13 -0800 Subject: Begin weaning GrClipMaskManager off of GrDrawTarget (take 2) GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1754563003 Review URL: https://codereview.chromium.org/1754563003 --- src/gpu/GrDrawContextPriv.h | 60 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/gpu/GrDrawContextPriv.h (limited to 'src/gpu/GrDrawContextPriv.h') diff --git a/src/gpu/GrDrawContextPriv.h b/src/gpu/GrDrawContextPriv.h new file mode 100644 index 0000000000..935b631a26 --- /dev/null +++ b/src/gpu/GrDrawContextPriv.h @@ -0,0 +1,60 @@ +/* + * 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 GrStencilSettings; + +/** 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 SkIRect* scissorRect, + const GrStencilSettings&, + SkRegion::Op op, + bool invert, + bool doAA, + const SkMatrix& viewMatrix, + const SkRect&); + + bool drawAndStencilPath(const SkIRect* scissorRect, + const GrStencilSettings&, + SkRegion::Op op, + bool invert, + bool doAA, + const SkMatrix& viewMatrix, + const SkPath&); + + void testingOnly_drawBatch(const GrPipelineBuilder& pipelineBuilder, + GrDrawBatch* batch); + +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 + -- cgit v1.2.3