Revert "Revert "Add support for writing icc profiles to the jpeg encoder""

This reverts commit dda14b9b7ac13dba9214f484fc6270b3ccf4b68b.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Revert "Add support for writing icc profiles to the jpeg encoder"
> 
> This reverts commit 4ef01482025e2e629e35458aa214436d3b4138e8.
> 
> Reason for revert: This breaks the android autoroller.
> 
> Original change's description:
> > Add support for writing icc profiles to the jpeg encoder
> > 
> > Also, share the impl for skjpeg_error_mgr between the
> > jpeg decoder and encoder.  They are already identical
> > anyway.
> > 
> > BUG=skia:
> > 
> > Change-Id: I4d67f28126388fef3057d62b6e0b203e21ed4afb
> > Reviewed-on: https://skia-review.googlesource.com/10011
> > Reviewed-by: Leon Scroggins <scroggo@google.com>
> > Commit-Queue: Matt Sarett <msarett@google.com>
> > 
> 
> TBR=msarett@google.com,scroggo@google.com,reviews@skia.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=skia:
> 
> Change-Id: Idbb9918370e8384e39d6b7d1c3bcd9545ce4cfd1
> Reviewed-on: https://skia-review.googlesource.com/10017
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Commit-Queue: Derek Sollenberger <djsollen@google.com>
> 

TBR=djsollen@google.com,msarett@google.com,scroggo@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Change-Id: I9c1df3f497a9187ac017e464976fd8f0333bad0e
Reviewed-on: https://skia-review.googlesource.com/10030
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
diff --git a/src/images/SkPNGImageEncoder.cpp b/src/images/SkPNGImageEncoder.cpp
index 2eac91d..e28ae12 100644
--- a/src/images/SkPNGImageEncoder.cpp
+++ b/src/images/SkPNGImageEncoder.cpp
@@ -12,14 +12,13 @@
 #include "SkColor.h"
 #include "SkColorPriv.h"
 #include "SkDither.h"
-#include "SkICC.h"
+#include "SkImageEncoderFns.h"
 #include "SkMath.h"
 #include "SkStream.h"
 #include "SkString.h"
 #include "SkTemplates.h"
 #include "SkUnPreMultiply.h"
 #include "SkUtils.h"
-#include "transform_scanline.h"
 
 #include "png.h"
 
@@ -40,9 +39,7 @@
     }
 }
 
-static void set_icc(png_structp png_ptr, png_infop info_ptr, const SkColorSpaceTransferFn& fn,
-                    const SkMatrix44& toXYZD50) {
-    sk_sp<SkData> icc = SkICC::WriteToICC(fn, toXYZD50);
+static void set_icc(png_structp png_ptr, png_infop info_ptr, sk_sp<SkData> icc) {
 #if PNG_LIBPNG_VER_MAJOR > 1 || (PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 5)
     const char* name = "Skia";
     png_const_bytep iccPtr = icc->bytes();
@@ -351,17 +348,14 @@
     }
 
     if (pixmap.colorSpace()) {
-        SkColorSpaceTransferFn fn;
-        SkMatrix44 toXYZD50(SkMatrix44::kUninitialized_Constructor);
         if (pixmap.colorSpace()->isSRGB()) {
             png_set_sRGB(png_ptr, info_ptr, PNG_sRGB_INTENT_PERCEPTUAL);
-        } else if (pixmap.colorSpace()->isNumericalTransferFn(&fn) &&
-                   pixmap.colorSpace()->toXYZD50(&toXYZD50))
-        {
-            set_icc(png_ptr, info_ptr, fn, toXYZD50);
+        } else {
+            sk_sp<SkData> icc = icc_from_color_space(*pixmap.colorSpace());
+            if (icc) {
+                set_icc(png_ptr, info_ptr, std::move(icc));
+            }
         }
-
-        // TODO: Should we support writing ICC profiles for additional color spaces?
     }
 
     png_set_sBIT(png_ptr, info_ptr, &sig_bit);