Revert 248ff023 & 2cb6cb72

Revert "SkImageEncoder: simplify API"
This reverts commit 248ff02331d7f73ee4b6c5a7eabeae1080c16cd4.
Revert "Fix bug: can't convert nullptr -> bool"
This reverts commit 2cb6cb7218171b357bb5c934f032ba69c7b78401.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5151
NOTRY=true

Change-Id: I5f6414392d6545f74db0b5bb50608d04f053a8ec
Reviewed-on: https://skia-review.googlesource.com/5151
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
diff --git a/tools/colorspaceinfo.cpp b/tools/colorspaceinfo.cpp
index 945c4a5..301f47d 100644
--- a/tools/colorspaceinfo.cpp
+++ b/tools/colorspaceinfo.cpp
@@ -17,8 +17,6 @@
 #include "SkMatrix44.h"
 #include "SkOSFile.h"
 
-#include "sk_tool_utils.h"
-
 __SK_FORCE_IMAGE_DECODER_LINKING;
 
 DEFINE_string(input, "input.png", "A path to the input image or icc profile.");
@@ -221,7 +219,7 @@
     }
 
     // Finally, encode the result to the output file.
-    sk_sp<SkData> out = sk_tool_utils::EncodeImageToData(gamut, SkEncodedImageFormat::kPNG, 100);
+    sk_sp<SkData> out(SkImageEncoder::EncodeData(gamut, SkImageEncoder::kPNG_Type, 100));
     if (!out) {
         SkDebugf("Failed to encode gamut output.\n");
         return -1;
@@ -245,7 +243,7 @@
             SkDebugf("Could not decode input image.\n");
             return -1;
         }
-        out = sk_tool_utils::EncodeImageToData(bitmap, SkEncodedImageFormat::kPNG, 100);
+        out.reset(SkImageEncoder::EncodeData(bitmap, SkImageEncoder::kPNG_Type, 100));
         if (!out) {
             SkDebugf("Failed to encode uncorrected image.\n");
             return -1;
diff --git a/tools/get_images_from_skps.cpp b/tools/get_images_from_skps.cpp
index d3a2343..6cd3512 100644
--- a/tools/get_images_from_skps.cpp
+++ b/tools/get_images_from_skps.cpp
@@ -65,14 +65,14 @@
         }
         SkString ext;
         switch (codec->getEncodedFormat()) {
-            case SkEncodedImageFormat::kBMP:  ext =  "bmp"; break;
-            case SkEncodedImageFormat::kGIF:  ext =  "gif"; break;
-            case SkEncodedImageFormat::kICO:  ext =  "ico"; break;
-            case SkEncodedImageFormat::kJPEG: ext =  "jpg"; break;
-            case SkEncodedImageFormat::kPNG:  ext =  "png"; break;
-            case SkEncodedImageFormat::kDNG:  ext =  "dng"; break;
-            case SkEncodedImageFormat::kWBMP: ext = "wbmp"; break;
-            case SkEncodedImageFormat::kWEBP: ext = "webp"; break;
+            case SkEncodedFormat::kBMP_SkEncodedFormat:  ext =  "bmp"; break;
+            case SkEncodedFormat::kGIF_SkEncodedFormat:  ext =  "gif"; break;
+            case SkEncodedFormat::kICO_SkEncodedFormat:  ext =  "ico"; break;
+            case SkEncodedFormat::kJPEG_SkEncodedFormat: ext =  "jpg"; break;
+            case SkEncodedFormat::kPNG_SkEncodedFormat:  ext =  "png"; break;
+            case SkEncodedFormat::kDNG_SkEncodedFormat:  ext =  "dng"; break;
+            case SkEncodedFormat::kWBMP_SkEncodedFormat: ext = "wbmp"; break;
+            case SkEncodedFormat::kWEBP_SkEncodedFormat: ext = "webp"; break;
             default:
                 // This should be unreachable because we cannot create a codec if we do not know
                 // the image type.
diff --git a/tools/imgblur.cpp b/tools/imgblur.cpp
index 28d8447..3a0ae00 100644
--- a/tools/imgblur.cpp
+++ b/tools/imgblur.cpp
@@ -66,7 +66,7 @@
 
     SkBitmap dst = sk_tool_utils::slow_blur(src, (float) FLAGS_sigma);
 
-    if (!sk_tool_utils::EncodeImageToFile(FLAGS_out[0], dst, SkEncodedImageFormat::kPNG, 100)) {
+    if (!SkImageEncoder::EncodeFile(FLAGS_out[0], dst, SkImageEncoder::kPNG_Type, 100)) {
         if (!FLAGS_quiet) {
             SkDebugf("Couldn't write to file: %s\n", FLAGS_out[0]);
         }
diff --git a/tools/picture_utils.cpp b/tools/picture_utils.cpp
index 84925b4..43ca2f0 100644
--- a/tools/picture_utils.cpp
+++ b/tools/picture_utils.cpp
@@ -17,8 +17,6 @@
 #include "SkStream.h"
 #include "SkString.h"
 
-#include "sk_tool_utils.h"
-
 namespace sk_tools {
     void force_all_opaque(const SkBitmap& bitmap) {
         SkASSERT(kN32_SkColorType == bitmap.colorType());
@@ -65,7 +63,7 @@
             partialPath.set(dirPath);
         }
         SkString fullPath = SkOSPath::Join(partialPath.c_str(), baseName.c_str());
-        if (sk_tool_utils::EncodeImageToFile(fullPath.c_str(), bm, SkEncodedImageFormat::kPNG, 100)) {
+        if (SkImageEncoder::EncodeFile(fullPath.c_str(), bm, SkImageEncoder::kPNG_Type, 100)) {
             return true;
         } else {
             SkDebugf("Failed to write the bitmap to %s.\n", fullPath.c_str());
diff --git a/tools/sk_tool_utils.h b/tools/sk_tool_utils.h
index 526f0ef..c6abbcf 100644
--- a/tools/sk_tool_utils.h
+++ b/tools/sk_tool_utils.h
@@ -225,31 +225,6 @@
         SkTDArray<TopoTestNode*> fDependencies;
     };
 
-    template <typename T>
-    inline bool EncodeImageToFile(const char* path, const T& src, SkEncodedImageFormat f, int q) {
-        SkFILEWStream file(path);
-        return file.isValid() && SkEncodeImage(&file, src, f, q);
-    }
-
-    template <typename T>
-    inline sk_sp<SkData> EncodeImageToData(const T& src, SkEncodedImageFormat f, int q) {
-        SkDynamicMemoryWStream buf;
-        return SkEncodeImage(&buf, src , f, q) ? buf.detachAsData() : nullptr;
-    }
-
-    /**
-     * Uses SkEncodeImage to serialize images that are not already
-     * encoded as SkEncodedImageFormat::kPNG images.
-     */
-    inline sk_sp<SkPixelSerializer> MakePixelSerializer() {
-        struct EncodeImagePixelSerializer final : SkPixelSerializer {
-            bool onUseEncodedData(const void*, size_t) override { return true; }
-            SkData* onEncode(const SkPixmap& pmap) override {
-                return EncodeImageToData(pmap, SkEncodedImageFormat::kPNG, 100).release();
-            }
-        };
-        return sk_make_sp<EncodeImagePixelSerializer>();
-    }
 }  // namespace sk_tool_utils
 
 #endif  // sk_tool_utils_DEFINED
diff --git a/tools/skdiff/skdiff_utils.cpp b/tools/skdiff/skdiff_utils.cpp
index f8eed90..f788ec8 100644
--- a/tools/skdiff/skdiff_utils.cpp
+++ b/tools/skdiff/skdiff_utils.cpp
@@ -6,7 +6,6 @@
  */
 #include "skdiff.h"
 #include "skdiff_utils.h"
-#include "sk_tool_utils.h"
 #include "SkBitmap.h"
 #include "SkCodec.h"
 #include "SkData.h"
@@ -83,8 +82,8 @@
     SkBitmap copy;
     bitmap.copyTo(&copy, kN32_SkColorType);
     force_all_opaque(copy);
-    return sk_tool_utils::EncodeImageToFile(path.c_str(), copy,
-                                      SkEncodedImageFormat::kPNG, 100);
+    return SkImageEncoder::EncodeFile(path.c_str(), copy,
+                                      SkImageEncoder::kPNG_Type, 100);
 }
 
 /// Return a copy of the "input" string, within which we have replaced all instances
diff --git a/tools/skiaserve/Request.cpp b/tools/skiaserve/Request.cpp
index 2064a46..c1b3b25 100644
--- a/tools/skiaserve/Request.cpp
+++ b/tools/skiaserve/Request.cpp
@@ -11,7 +11,6 @@
 #include "SkPixelSerializer.h"
 #include "SkPM4fPriv.h"
 #include "picture_utils.h"
-#include "sk_tool_utils.h"
 
 using namespace sk_gpu_test;
 
@@ -118,7 +117,7 @@
 
     SkDynamicMemoryWStream outStream;
 
-    sk_sp<SkPixelSerializer> serializer = sk_tool_utils::MakePixelSerializer();
+    sk_sp<SkPixelSerializer> serializer(SkImageEncoder::CreatePixelSerializer());
     picture->serialize(&outStream, serializer.get());
 
     return outStream.detachAsData();