1ae614409e4cff083c070face78cc349153d0b932krajcevski/* 2ae614409e4cff083c070face78cc349153d0b932krajcevski * Copyright 2014 Google Inc. 3ae614409e4cff083c070face78cc349153d0b932krajcevski * 4ae614409e4cff083c070face78cc349153d0b932krajcevski * Use of this source code is governed by a BSD-style license that can be 5ae614409e4cff083c070face78cc349153d0b932krajcevski * found in the LICENSE file. 6ae614409e4cff083c070face78cc349153d0b932krajcevski */ 7ae614409e4cff083c070face78cc349153d0b932krajcevski 8ae614409e4cff083c070face78cc349153d0b932krajcevski#ifndef SkTextureCompressor_DEFINED 9ae614409e4cff083c070face78cc349153d0b932krajcevski#define SkTextureCompressor_DEFINED 10ae614409e4cff083c070face78cc349153d0b932krajcevski 11eecc35f988662f4fa82693ad36e908d637a7d3c1krajcevski#include "SkImageInfo.h" 12eecc35f988662f4fa82693ad36e908d637a7d3c1krajcevski 13ae614409e4cff083c070face78cc349153d0b932krajcevskiclass SkBitmap; 14ae614409e4cff083c070face78cc349153d0b932krajcevskiclass SkData; 15ae614409e4cff083c070face78cc349153d0b932krajcevski 16ae614409e4cff083c070face78cc349153d0b932krajcevskinamespace SkTextureCompressor { 17ae614409e4cff083c070face78cc349153d0b932krajcevski // Various texture compression formats that we support. 18ae614409e4cff083c070face78cc349153d0b932krajcevski enum Format { 19ae614409e4cff083c070face78cc349153d0b932krajcevski // Alpha only format. 20ae614409e4cff083c070face78cc349153d0b932krajcevski kLATC_Format, 21ae614409e4cff083c070face78cc349153d0b932krajcevski 22ae614409e4cff083c070face78cc349153d0b932krajcevski kLast_Format = kLATC_Format 23ae614409e4cff083c070face78cc349153d0b932krajcevski }; 24ae614409e4cff083c070face78cc349153d0b932krajcevski static const int kFormatCnt = kLast_Format + 1; 25ae614409e4cff083c070face78cc349153d0b932krajcevski 26ae614409e4cff083c070face78cc349153d0b932krajcevski // Returns an SkData holding a blob of compressed data that corresponds 27ae614409e4cff083c070face78cc349153d0b932krajcevski // to the bitmap. If the bitmap colorType cannot be compressed using the 28ae614409e4cff083c070face78cc349153d0b932krajcevski // associated format, then we return NULL. The caller is responsible for 29ae614409e4cff083c070face78cc349153d0b932krajcevski // calling unref() on the returned data. 30ae614409e4cff083c070face78cc349153d0b932krajcevski SkData* CompressBitmapToFormat(const SkBitmap& bitmap, Format format); 31eecc35f988662f4fa82693ad36e908d637a7d3c1krajcevski 32eecc35f988662f4fa82693ad36e908d637a7d3c1krajcevski // Compresses the given src data into dst. The src data is assumed to be 33eecc35f988662f4fa82693ad36e908d637a7d3c1krajcevski // large enough to hold width*height pixels. The dst data is expected to 34eecc35f988662f4fa82693ad36e908d637a7d3c1krajcevski // be large enough to hold the compressed data according to the format. 35eecc35f988662f4fa82693ad36e908d637a7d3c1krajcevski bool CompressBufferToFormat(uint8_t* dst, const uint8_t* src, SkColorType srcColorType, 36eecc35f988662f4fa82693ad36e908d637a7d3c1krajcevski int width, int height, int rowBytes, Format format); 37ae614409e4cff083c070face78cc349153d0b932krajcevski} 38ae614409e4cff083c070face78cc349153d0b932krajcevski 39ae614409e4cff083c070face78cc349153d0b932krajcevski#endif 40