| /* |
| * Copyright 2020 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkCompressedDataUtils_DEFINED |
| #define SkCompressedDataUtils_DEFINED |
| |
| #include "include/core/SkRefCnt.h" |
| #include "include/core/SkTextureCompressionType.h" |
| #include "include/private/base/SkAssert.h" |
| #include "include/private/base/SkTArray.h" |
| |
| #include <cstddef> |
| |
| class SkBitmap; |
| class SkData; |
| struct SkISize; |
| |
| static constexpr bool SkTextureCompressionTypeIsOpaque(SkTextureCompressionType compression) { |
| switch (compression) { |
| case SkTextureCompressionType::kNone: return true; |
| case SkTextureCompressionType::kETC2_RGB8_UNORM: return true; |
| case SkTextureCompressionType::kBC1_RGB8_UNORM: return true; |
| case SkTextureCompressionType::kBC1_RGBA8_UNORM: return false; |
| } |
| |
| SkUNREACHABLE; |
| } |
| |
| size_t SkCompressedDataSize(SkTextureCompressionType, SkISize baseDimensions, |
| skia_private::TArray<size_t>* individualMipOffsets, bool mipmapped); |
| size_t SkCompressedBlockSize(SkTextureCompressionType type); |
| |
| /** |
| * Returns the data size for the given SkTextureCompressionType |
| */ |
| size_t SkCompressedFormatDataSize(SkTextureCompressionType compressionType, |
| SkISize dimensions, bool mipmapped); |
| |
| /* |
| * This method will decompress the bottommost level in 'data' into 'dst'. |
| */ |
| bool SkDecompress(sk_sp<SkData> data, |
| SkISize dimensions, |
| SkTextureCompressionType compressionType, |
| SkBitmap* dst); |
| |
| #endif |