1/*
2 * Copyright 2014 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 SkTextureCompressor_DEFINED
9#define SkTextureCompressor_DEFINED
10
11#include "SkImageInfo.h"
12
13class SkBitmap;
14class SkData;
15
16namespace SkTextureCompressor {
17    // Various texture compression formats that we support.
18    enum Format {
19        // Alpha only format.
20        kLATC_Format,
21
22        kLast_Format = kLATC_Format
23    };
24    static const int kFormatCnt = kLast_Format + 1;
25
26    // Returns an SkData holding a blob of compressed data that corresponds
27    // to the bitmap. If the bitmap colorType cannot be compressed using the
28    // associated format, then we return NULL. The caller is responsible for
29    // calling unref() on the returned data.
30    SkData* CompressBitmapToFormat(const SkBitmap& bitmap, Format format);
31
32    // Compresses the given src data into dst. The src data is assumed to be
33    // large enough to hold width*height pixels. The dst data is expected to
34    // be large enough to hold the compressed data according to the format.
35    bool CompressBufferToFormat(uint8_t* dst, const uint8_t* src, SkColorType srcColorType,
36                                int width, int height, int rowBytes, Format format);
37}
38
39#endif
40