Initial KTX file decoder

R=bsalomon@google.com, robertphillips@google.com, halcanary@google.com, reed@google.com

Author: krajcevski@google.com

Review URL: https://codereview.chromium.org/302333002
diff --git a/gm/etc1bitmap.cpp b/gm/etc1bitmap.cpp
index f61b514..ec71d8d 100644
--- a/gm/etc1bitmap.cpp
+++ b/gm/etc1bitmap.cpp
@@ -15,7 +15,7 @@
 namespace skiagm {
 
 /**
- *  Test decoding an image from a PKM file and then
+ *  Test decoding an image from a PKM or KTX file and then
  *  from compressed ETC1 data.
  */
 class ETC1BitmapGM : public GM {
@@ -25,18 +25,22 @@
 
 protected:
     virtual SkString onShortName() SK_OVERRIDE {
-        return SkString("etc1bitmap");
+        SkString str = SkString("etc1bitmap_");
+        str.append(this->fileExtension());
+        return str;
     }
 
     virtual SkISize onISize() SK_OVERRIDE {
-        return make_isize(512, 512);
+        return make_isize(128, 128);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    virtual SkString fileExtension() const = 0;
 
+    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkBitmap bm;
         SkString filename = SkOSPath::SkPathJoin(
-                INHERITED::gResourcePath.c_str(), "mandrill_512.pkm");
+                INHERITED::gResourcePath.c_str(), "mandrill_128.");
+        filename.append(this->fileExtension());
 
         SkAutoTUnref<SkData> fileData(SkData::NewFromFileName(filename.c_str()));
         if (NULL == fileData) {
@@ -58,8 +62,37 @@
     typedef GM INHERITED;
 };
 
+// This class specializes ETC1BitmapGM to load the mandrill_128.pkm file.
+class ETC1Bitmap_PKM_GM : public ETC1BitmapGM {
+public:
+    ETC1Bitmap_PKM_GM() : ETC1BitmapGM() { }
+    virtual ~ETC1Bitmap_PKM_GM() { }
+
+protected:
+
+    virtual SkString fileExtension() const SK_OVERRIDE { return SkString("pkm"); }
+
+private:
+    typedef ETC1BitmapGM INHERITED;
+};
+
+// This class specializes ETC1BitmapGM to load the mandrill_128.ktx file.
+class ETC1Bitmap_KTX_GM : public ETC1BitmapGM {
+public:
+    ETC1Bitmap_KTX_GM() : ETC1BitmapGM() { }
+    virtual ~ETC1Bitmap_KTX_GM() { }
+
+protected:
+
+    virtual SkString fileExtension() const SK_OVERRIDE { return SkString("ktx"); }
+
+private:
+    typedef ETC1BitmapGM INHERITED;
+};
+
 }  // namespace skiagm
 
 //////////////////////////////////////////////////////////////////////////////
 
-DEF_GM( return SkNEW(skiagm::ETC1BitmapGM); )
+DEF_GM( return SkNEW(skiagm::ETC1Bitmap_PKM_GM); )
+DEF_GM( return SkNEW(skiagm::ETC1Bitmap_KTX_GM); )