Implement dual interval gradients

Adds a new colorizer implementation that supports gradients with two
interpolation intervals. The two intervals can share a middle color
to represent the usual 3-color gradient, or can have different colors
to represent a hard stop at an arbitrary point.

Bug: skia:
Change-Id: I8c73705e83b99e28ad5c834230ced4e3b7b9d1c4
Reviewed-on: https://skia-review.googlesource.com/150700
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/gn/gpu.gni b/gn/gpu.gni
index 1ce633b..ffb5255 100644
--- a/gn/gpu.gni
+++ b/gn/gpu.gni
@@ -401,6 +401,8 @@
   "$_src/gpu/effects/GrYUVtoRGBEffect.h",
 
   # gradients
+  "$_src/gpu/gradients/GrDualIntervalGradientColorizer.cpp",
+  "$_src/gpu/gradients/GrDualIntervalGradientColorizer.h",
   "$_src/gpu/gradients/GrSingleIntervalGradientColorizer.cpp",
   "$_src/gpu/gradients/GrSingleIntervalGradientColorizer.h",
   "$_src/gpu/gradients/GrLinearGradientLayout.cpp",