1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2019 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef GrImageContextPriv_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define GrImageContextPriv_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/gpu/ganesh/GrImageContext.h" 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrContextThreadSafeProxy.h" 14*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/GrBaseContextPriv.h" 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker /** Class that exposes methods on GrImageContext that are only intended for use internal to Skia. 17*c8dee2aaSAndroid Build Coastguard Worker This class is purely a privileged window into GrImageContext. It should never have 18*c8dee2aaSAndroid Build Coastguard Worker additional data members or virtual methods. */ 19*c8dee2aaSAndroid Build Coastguard Worker class GrImageContextPriv : public GrBaseContextPriv { 20*c8dee2aaSAndroid Build Coastguard Worker public: context()21*c8dee2aaSAndroid Build Coastguard Worker GrImageContext* context() { return static_cast<GrImageContext*>(fContext); } context()22*c8dee2aaSAndroid Build Coastguard Worker const GrImageContext* context() const { return static_cast<const GrImageContext*>(fContext); } 23*c8dee2aaSAndroid Build Coastguard Worker abandoned()24*c8dee2aaSAndroid Build Coastguard Worker bool abandoned() { return this->context()->abandoned(); } 25*c8dee2aaSAndroid Build Coastguard Worker MakeForPromiseImage(sk_sp<GrContextThreadSafeProxy> tsp)26*c8dee2aaSAndroid Build Coastguard Worker static sk_sp<GrImageContext> MakeForPromiseImage(sk_sp<GrContextThreadSafeProxy> tsp) { 27*c8dee2aaSAndroid Build Coastguard Worker return GrImageContext::MakeForPromiseImage(std::move(tsp)); 28*c8dee2aaSAndroid Build Coastguard Worker } 29*c8dee2aaSAndroid Build Coastguard Worker 30*c8dee2aaSAndroid Build Coastguard Worker /** This is only useful for debug purposes */ SkDEBUGCODE(skgpu::SingleOwner * singleOwner ()const{ return this->context()->singleOwner(); } )31*c8dee2aaSAndroid Build Coastguard Worker SkDEBUGCODE(skgpu::SingleOwner* singleOwner() const { return this->context()->singleOwner(); } ) 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Worker protected: 34*c8dee2aaSAndroid Build Coastguard Worker explicit GrImageContextPriv(GrImageContext* iContext) : GrBaseContextPriv(iContext) {} 35*c8dee2aaSAndroid Build Coastguard Worker 36*c8dee2aaSAndroid Build Coastguard Worker private: 37*c8dee2aaSAndroid Build Coastguard Worker GrImageContextPriv(const GrImageContextPriv&) = delete; 38*c8dee2aaSAndroid Build Coastguard Worker GrImageContextPriv& operator=(const GrImageContextPriv&) = delete; 39*c8dee2aaSAndroid Build Coastguard Worker 40*c8dee2aaSAndroid Build Coastguard Worker // No taking addresses of this type. 41*c8dee2aaSAndroid Build Coastguard Worker const GrImageContextPriv* operator&() const; 42*c8dee2aaSAndroid Build Coastguard Worker GrImageContextPriv* operator&(); 43*c8dee2aaSAndroid Build Coastguard Worker 44*c8dee2aaSAndroid Build Coastguard Worker friend class GrImageContext; // to construct/copy this type. 45*c8dee2aaSAndroid Build Coastguard Worker 46*c8dee2aaSAndroid Build Coastguard Worker using INHERITED = GrBaseContextPriv; 47*c8dee2aaSAndroid Build Coastguard Worker }; 48*c8dee2aaSAndroid Build Coastguard Worker priv()49*c8dee2aaSAndroid Build Coastguard Workerinline GrImageContextPriv GrImageContext::priv() { return GrImageContextPriv(this); } 50*c8dee2aaSAndroid Build Coastguard Worker priv()51*c8dee2aaSAndroid Build Coastguard Workerinline const GrImageContextPriv GrImageContext::priv () const { // NOLINT(readability-const-return-type) 52*c8dee2aaSAndroid Build Coastguard Worker return GrImageContextPriv(const_cast<GrImageContext*>(this)); 53*c8dee2aaSAndroid Build Coastguard Worker } 54*c8dee2aaSAndroid Build Coastguard Worker 55*c8dee2aaSAndroid Build Coastguard Worker #endif 56