Reland "Split building encoding from decoding"

This reverts commit 9d4b788807fcca010399c0987aed41b3af5d938f.
Copyright issue has been fixed in
https://skia-review.googlesource.com/c/skia/+/275998.

Original description:
Bug: skia:9756

In CanvasKit, a large part of the binary is for encoding. Clients
would be happier with a smaller binary and no webp/jpeg encoding. Make
this an option by splitting up the GN arguments.

Split SK_HAS_WEBP_LIBRARY into SK_CODEC_DECODES_WEBP (to match the
existing SK_CODEC_DECODES_RAW) and SK_ENCODE_WEBP. Same for JPEG and
PNG.

Update CanvasKit compile script to disable webp and jpeg encoding.
Update debugger compile script to disable all encoding.

Change IsPng signature to match other SkCodecs.

TBR=djsollen@google.com

Change-Id: Ic847bae0154e0a2922100b3f2ee14a077ee5635a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/276007
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index e94b745..28edea5 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -661,9 +661,23 @@
   ]
 }
 
-optional("jpeg") {
-  enabled = skia_use_libjpeg_turbo
-  public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
+optional("jpeg_decode") {
+  enabled = skia_use_libjpeg_turbo_decode
+  public_defines = [ "SK_CODEC_DECODES_JPEG" ]
+
+  deps = [
+    "//third_party/libjpeg-turbo:libjpeg",
+  ]
+  sources = [
+    "src/codec/SkJpegCodec.cpp",
+    "src/codec/SkJpegDecoderMgr.cpp",
+    "src/codec/SkJpegUtility.cpp",
+  ]
+}
+
+optional("jpeg_encode") {
+  enabled = skia_use_libjpeg_turbo_encode
+  public_defines = [ "SK_ENCODE_JPEG" ]
 
   deps = [
     "//third_party/libjpeg-turbo:libjpeg",
@@ -672,9 +686,6 @@
     "include/encode/SkJpegEncoder.h",
   ]
   sources = [
-    "src/codec/SkJpegCodec.cpp",
-    "src/codec/SkJpegDecoderMgr.cpp",
-    "src/codec/SkJpegUtility.cpp",
     "src/images/SkJPEGWriteUtility.cpp",
     "src/images/SkJpegEncoder.cpp",
   ]
@@ -687,8 +698,11 @@
   deps = [
     "//third_party/zlib",
   ]
-  if (skia_use_libjpeg_turbo) {
-    deps += [ ":jpeg" ]
+  if (skia_use_libjpeg_turbo_decode) {
+    deps += [ ":jpeg_decode" ]
+  }
+  if (skia_use_libjpeg_turbo_encode) {
+    deps += [ ":jpeg_encode" ]
   }
   sources = skia_pdf_sources
   sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
@@ -701,9 +715,9 @@
   }
 }
 
-optional("png") {
-  enabled = skia_use_libpng
-  public_defines = [ "SK_HAS_PNG_LIBRARY" ]
+optional("png_decode") {
+  enabled = skia_use_libpng_decode
+  public_defines = [ "SK_CODEC_DECODES_PNG" ]
 
   deps = [
     "//third_party/libpng",
@@ -711,12 +725,23 @@
   sources = [
     "src/codec/SkIcoCodec.cpp",
     "src/codec/SkPngCodec.cpp",
+  ]
+}
+
+optional("png_encode") {
+  enabled = skia_use_libpng_encode
+  public_defines = [ "SK_ENCODE_PNG" ]
+
+  deps = [
+    "//third_party/libpng",
+  ]
+  sources = [
     "src/images/SkPngEncoder.cpp",
   ]
 }
 
 optional("raw") {
-  enabled = skia_use_dng_sdk && skia_use_libjpeg_turbo && skia_use_piex
+  enabled = skia_use_dng_sdk && skia_use_libjpeg_turbo_decode && skia_use_piex
   public_defines = [ "SK_CODEC_DECODES_RAW" ]
 
   deps = [
@@ -763,15 +788,26 @@
   ]
 }
 
-optional("webp") {
-  enabled = skia_use_libwebp
-  public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
+optional("webp_decode") {
+  enabled = skia_use_libwebp_decode
+  public_defines = [ "SK_CODEC_DECODES_WEBP" ]
 
   deps = [
     "//third_party/libwebp",
   ]
   sources = [
     "src/codec/SkWebpCodec.cpp",
+  ]
+}
+
+optional("webp_encode") {
+  enabled = skia_use_libwebp_encode
+  public_defines = [ "SK_ENCODE_WEBP" ]
+
+  deps = [
+    "//third_party/libwebp",
+  ]
+  sources = [
     "src/images/SkWebpEncoder.cpp",
   ]
 }
@@ -868,9 +904,11 @@
     ":gif",
     ":heif",
     ":hsw",
-    ":jpeg",
+    ":jpeg_decode",
+    ":jpeg_encode",
     ":none",
-    ":png",
+    ":png_decode",
+    ":png_encode",
     ":raw",
     ":sksl_interpreter",
     ":skvm_jit",
@@ -878,7 +916,8 @@
     ":sse41",
     ":sse42",
     ":ssse3",
-    ":webp",
+    ":webp_decode",
+    ":webp_encode",
     ":wuffs",
     ":xml",
   ]