16bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon/* 26bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon * Copyright 2015 Google Inc. 36bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon * 46bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon * Use of this source code is governed by a BSD-style license that can be 56bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon * found in the LICENSE file. 66bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon */ 76bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 86bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon#ifndef GrRenderTargetPriv_DEFINED 96bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon#define GrRenderTargetPriv_DEFINED 106bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 116bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon#include "GrRenderTarget.h" 126bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 136bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon/** Class that adds methods to GrRenderTarget that are only intended for use internal to Skia. 146bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon This class is purely a privileged window into GrRenderTarget. It should never have additional 156bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon data members or virtual methods. */ 166bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomonclass GrRenderTargetPriv { 176bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomonpublic: 186bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon /** 198dc7c3a839b38b73af34cc2674a06f49eb1ce527egdaniel * GrStencilAttachment is not part of the public API. 206bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon */ 218dc7c3a839b38b73af34cc2674a06f49eb1ce527egdaniel GrStencilAttachment* getStencilAttachment() const { return fRenderTarget->fStencilAttachment; } 226bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 236bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon /** 242880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * Attaches the GrStencilAttachment onto the render target. If stencil is a nullptr then the 252880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * currently attached GrStencilAttachment will be removed if one was previously attached. This 262880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * function returns false if there were any failure in attaching the GrStencilAttachment. 276bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon */ 282880df2609eba09b555ca37be04b6ad89290c765Tom Hudson bool attachStencilAttachment(GrStencilAttachment* stencil); 296bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 306bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomonprivate: 316bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon explicit GrRenderTargetPriv(GrRenderTarget* renderTarget) : fRenderTarget(renderTarget) {} 326bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon GrRenderTargetPriv(const GrRenderTargetPriv&) {} // unimpl 336bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon GrRenderTargetPriv& operator=(const GrRenderTargetPriv&); // unimpl 346bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 356bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon // No taking addresses of this type. 366bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon const GrRenderTargetPriv* operator&() const; 376bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon GrRenderTargetPriv* operator&(); 386bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 396bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon GrRenderTarget* fRenderTarget; 406bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 416bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon friend class GrRenderTarget; // to construct/copy this type. 426bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon}; 436bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 446bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomoninline GrRenderTargetPriv GrRenderTarget::renderTargetPriv() { return GrRenderTargetPriv(this); } 456bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 466bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomoninline const GrRenderTargetPriv GrRenderTarget::renderTargetPriv () const { 476bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon return GrRenderTargetPriv(const_cast<GrRenderTarget*>(this)); 486bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon} 496bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon 506bc1b5fab8554a9cb643277b4867965dd4535cd6bsalomon#endif 51