/* * 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/SkImage.h" #include "include/core/SkRefCnt.h" #include "include/core/SkSize.h" #include "include/private/SkTArray.h" class SkBitmap; class SkData; static constexpr bool SkCompressionTypeIsOpaque(SkImage::CompressionType compression) { switch (compression) { case SkImage::CompressionType::kNone: return true; case SkImage::CompressionType::kETC2_RGB8_UNORM: return true; case SkImage::CompressionType::kBC1_RGB8_UNORM: return true; case SkImage::CompressionType::kBC1_RGBA8_UNORM: return false; case SkImage::CompressionType::kASTC_RGBA8_4x4: return false; case SkImage::CompressionType::kASTC_RGBA8_6x6: return false; case SkImage::CompressionType::kASTC_RGBA8_8x8: return false; } SkUNREACHABLE; } size_t SkCompressedDataSize(SkImage::CompressionType, SkISize baseDimensions, SkTArray* individualMipOffsets, bool mipMapped); size_t SkCompressedBlockSize(SkImage::CompressionType type); /** * Returns the data size for the given SkImage::CompressionType */ size_t SkCompressedFormatDataSize(SkImage::CompressionType compressionType, SkISize dimensions, bool mipMapped); /* * This method will decompress the bottommost level in 'data' into 'dst'. */ bool SkDecompress(sk_sp data, SkISize dimensions, SkImage::CompressionType compressionType, SkBitmap* dst); #endif