Add support for all compressed formats in KTX file format

R=robertphillips@google.com

Author: krajcevski@google.com

Review URL: https://codereview.chromium.org/440783004
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index 5c0464d..0a45100 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -11,6 +11,7 @@
 #include "SkData.h"
 #include "SkMessageBus.h"
 #include "SkPixelRef.h"
+#include "SkTextureCompressor.h"
 #include "GrResourceCache.h"
 #include "GrGpu.h"
 #include "effects/GrDitherEffect.h"
@@ -165,7 +166,7 @@
         SkKTXFile ktx(data);
 
         // Is it actually an ETC1 texture?
-        if (!ktx.isETC1()) {
+        if (!ktx.isCompressedFormat(SkTextureCompressor::kETC1_Format)) {
             return NULL;
         }
 
diff --git a/src/images/SkImageDecoder_ktx.cpp b/src/images/SkImageDecoder_ktx.cpp
index 058ab72..c06450c 100644
--- a/src/images/SkImageDecoder_ktx.cpp
+++ b/src/images/SkImageDecoder_ktx.cpp
@@ -105,7 +105,7 @@
     // Lock the pixels, since we're about to write to them...
     SkAutoLockPixels alp(*bm);
 
-    if (ktxFile.isETC1()) {
+    if (ktxFile.isCompressedFormat(SkTextureCompressor::kETC1_Format)) {
         if (!sampler.begin(bm, SkScaledBitmapSampler::kRGB, *this)) {
             return false;
         }
@@ -113,11 +113,12 @@
         // ETC1 Data is encoded as RGB pixels, so we should extract it as such
         int nPixels = width * height;
         SkAutoMalloc outRGBData(nPixels * 3);
-        etc1_byte *outRGBDataPtr = reinterpret_cast<etc1_byte *>(outRGBData.get());
+        uint8_t *outRGBDataPtr = reinterpret_cast<uint8_t *>(outRGBData.get());
 
         // Decode ETC1
-        const etc1_byte *buf = reinterpret_cast<const etc1_byte *>(ktxFile.pixelData());
-        if (etc1_decode_image(buf, outRGBDataPtr, width, height, 3, width*3)) {
+        const uint8_t *buf = reinterpret_cast<const uint8_t *>(ktxFile.pixelData());
+        if (!SkTextureCompressor::DecompressBufferFromFormat(
+                outRGBDataPtr, width*3, buf, width, height, SkTextureCompressor::kETC1_Format)) {
             return false;
         }
 
diff --git a/src/utils/SkTextureCompressor.h b/src/utils/SkTextureCompressor.h
index 4254ae7..e44e7b3 100644
--- a/src/utils/SkTextureCompressor.h
+++ b/src/utils/SkTextureCompressor.h
@@ -9,9 +9,9 @@
 #define SkTextureCompressor_DEFINED
 
 #include "SkImageInfo.h"
-#include "SkBlitter.h"
 
 class SkBitmap;
+class SkBlitter;
 class SkData;
 
 namespace SkTextureCompressor {