// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "impeller/toolkit/interop/texture.h" namespace impeller::interop { Texture::Texture(const Context& context, const TextureDescriptor& descriptor) { if (!context.IsValid()) { return; } auto texture = context.GetContext()->GetResourceAllocator()->CreateTexture(descriptor); if (!texture || !texture->IsValid()) { return; } backend_ = context.GetContext()->GetBackendType(); texture_ = std::move(texture); } Texture::Texture(impeller::Context::BackendType backend, std::shared_ptr texture) : backend_(backend), texture_(std::move(texture)) {} Texture::~Texture() = default; bool Texture::IsValid() const { return !!texture_; } bool Texture::SetContents(const uint8_t* contents, uint64_t length) { if (!IsValid()) { return false; } return texture_->SetContents(contents, length); } bool Texture::SetContents(std::shared_ptr contents) { if (!IsValid()) { return false; } return texture_->SetContents(std::move(contents)); } sk_sp Texture::MakeImage() const { return DlImageImpeller::Make(texture_); } impeller::Context::BackendType Texture::GetBackendType() const { return backend_; } const std::shared_ptr& Texture::GetTexture() const { return texture_; } } // namespace impeller::interop