| /* | |
| * 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 GrTextureContext_DEFINED | |
| #define GrTextureContext_DEFINED | |
| #include "GrSurfaceContext.h" | |
| #include "../private/GrTextureProxy.h" | |
| class GrContext; | |
| class GrDrawingManager; | |
| class GrSurface; | |
| class GrTextureOpList; | |
| class GrTextureProxy; | |
| struct SkIPoint; | |
| struct SkIRect; | |
| /** | |
| * A helper object to orchestrate commands (currently just copies) for GrSurfaces that are | |
| * GrTextures and not GrRenderTargets. | |
| */ | |
| class SK_API GrTextureContext : public GrSurfaceContext { | |
| public: | |
| ~GrTextureContext() override; | |
| GrSurfaceProxy* asSurfaceProxy() override { return fTextureProxy.get(); } | |
| const GrSurfaceProxy* asSurfaceProxy() const override { return fTextureProxy.get(); } | |
| sk_sp<GrSurfaceProxy> asSurfaceProxyRef() override { return fTextureProxy; } | |
| GrTextureProxy* asTextureProxy() override { return fTextureProxy.get(); } | |
| const GrTextureProxy* asTextureProxy() const override { return fTextureProxy.get(); } | |
| sk_sp<GrTextureProxy> asTextureProxyRef() override { return fTextureProxy; } | |
| GrRenderTargetProxy* asRenderTargetProxy() override; | |
| sk_sp<GrRenderTargetProxy> asRenderTargetProxyRef() override; | |
| protected: | |
| GrTextureContext(GrContext*, GrDrawingManager*, sk_sp<GrTextureProxy>, | |
| sk_sp<SkColorSpace>, GrAuditTrail*, GrSingleOwner*); | |
| SkDEBUGCODE(void validate() const override;) | |
| private: | |
| friend class GrDrawingManager; // for ctor | |
| GrOpList* getOpList() override; | |
| sk_sp<GrTextureProxy> fTextureProxy; | |
| // In MDB-mode the GrOpList can be closed by some other renderTargetContext that has picked | |
| // it up. For this reason, the GrOpList should only ever be accessed via 'getOpList'. | |
| sk_sp<GrTextureOpList> fOpList; | |
| typedef GrSurfaceContext INHERITED; | |
| }; | |
| #endif |