1 /* 2 * Copyright 2017 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 SkPromiseImageTexture_DEFINED 9 #define SkPromiseImageTexture_DEFINED 10 11 #include "include/core/SkTypes.h" 12 13 #if SK_SUPPORT_GPU 14 #include "include/core/SkRefCnt.h" 15 #include "include/gpu/GrBackendSurface.h" 16 /** 17 * This type is used to fulfill textures for PromiseImages. Once an instance is returned from a 18 * PromiseImageTextureFulfillProc the GrBackendTexture it wraps must remain valid until the 19 * corresponding PromiseImageTextureReleaseProc is called. 20 */ 21 class SK_API SkPromiseImageTexture : public SkNVRefCnt<SkPromiseImageTexture> { 22 public: 23 SkPromiseImageTexture() = delete; 24 SkPromiseImageTexture(const SkPromiseImageTexture&) = delete; 25 SkPromiseImageTexture(SkPromiseImageTexture&&) = delete; 26 ~SkPromiseImageTexture(); 27 SkPromiseImageTexture& operator=(const SkPromiseImageTexture&) = delete; 28 SkPromiseImageTexture& operator=(SkPromiseImageTexture&&) = delete; 29 Make(const GrBackendTexture & backendTexture)30 static sk_sp<SkPromiseImageTexture> Make(const GrBackendTexture& backendTexture) { 31 if (!backendTexture.isValid()) { 32 return nullptr; 33 } 34 return sk_sp<SkPromiseImageTexture>(new SkPromiseImageTexture(backendTexture)); 35 } 36 backendTexture()37 GrBackendTexture backendTexture() const { return fBackendTexture; } 38 39 private: 40 explicit SkPromiseImageTexture(const GrBackendTexture& backendTexture); 41 42 GrBackendTexture fBackendTexture; 43 }; 44 #endif // SK_SUPPORT_GPU 45 46 #endif // SkPromiseImageTexture_DEFINED 47