1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef GrTextureContext_DEFINED 9 #define GrTextureContext_DEFINED 10 11 #include "src/gpu/GrSurfaceContext.h" 12 #include "src/gpu/GrTextureProxy.h" 13 14 class GrContext; 15 class GrDrawingManager; 16 class GrSurface; 17 class GrTextureProxy; 18 struct SkIPoint; 19 struct SkIRect; 20 21 /** 22 * A helper object to orchestrate commands (currently just copies) for GrSurfaces that are 23 * GrTextures and not GrRenderTargets. 24 */ 25 class GrTextureContext : public GrSurfaceContext { 26 public: 27 ~GrTextureContext() override; 28 asSurfaceProxy()29 GrSurfaceProxy* asSurfaceProxy() override { return fTextureProxy.get(); } asSurfaceProxy()30 const GrSurfaceProxy* asSurfaceProxy() const override { return fTextureProxy.get(); } asSurfaceProxyRef()31 sk_sp<GrSurfaceProxy> asSurfaceProxyRef() override { return fTextureProxy; } 32 asTextureProxy()33 GrTextureProxy* asTextureProxy() override { return fTextureProxy.get(); } asTextureProxy()34 const GrTextureProxy* asTextureProxy() const override { return fTextureProxy.get(); } asTextureProxyRef()35 sk_sp<GrTextureProxy> asTextureProxyRef() override { return fTextureProxy; } 36 37 GrRenderTargetProxy* asRenderTargetProxy() override; 38 sk_sp<GrRenderTargetProxy> asRenderTargetProxyRef() override; 39 40 protected: 41 GrTextureContext(GrRecordingContext*, 42 sk_sp<GrTextureProxy>, 43 GrColorType, 44 SkAlphaType, 45 sk_sp<SkColorSpace>); 46 47 SkDEBUGCODE(void validate() const override;) 48 49 private: 50 friend class GrDrawingManager; // for ctor 51 52 sk_sp<GrTextureProxy> fTextureProxy; 53 54 typedef GrSurfaceContext INHERITED; 55 }; 56 57 #endif 58