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