Implement clone() for Gradient GrFragmentProcessors

Also removes the hard stop gradient conditional compilation macro.

Change-Id: Idd56b5f3061db063d650a0090406ec192acc0b53
Reviewed-on: https://skia-review.googlesource.com/27661
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/shaders/gradients/SkLinearGradient.cpp b/src/shaders/gradients/SkLinearGradient.cpp
index d127f8d..5ad4075 100644
--- a/src/shaders/gradients/SkLinearGradient.cpp
+++ b/src/shaders/gradients/SkLinearGradient.cpp
@@ -345,12 +345,19 @@
         return processor->isValid() ? std::move(processor) : nullptr;
     }
 
-    ~GrLinearGradient() override {}
-
     const char* name() const override { return "Linear Gradient"; }
 
+    sk_sp<GrFragmentProcessor> clone() const override {
+        return sk_sp<GrFragmentProcessor>(new GrLinearGradient(*this));
+    }
+
 private:
-    GrLinearGradient(const CreateArgs& args) : INHERITED(args, args.fShader->colorsAreOpaque()) {
+    explicit GrLinearGradient(const CreateArgs& args)
+            : INHERITED(args, args.fShader->colorsAreOpaque()) {
+        this->initClassID<GrLinearGradient>();
+    }
+
+    explicit GrLinearGradient(const GrLinearGradient& that) : INHERITED(that) {
         this->initClassID<GrLinearGradient>();
     }
 
@@ -370,8 +377,6 @@
 public:
     GLSLLinearProcessor(const GrProcessor&) {}
 
-    ~GLSLLinearProcessor() override {}
-
     virtual void emitCode(EmitArgs&) override;
 
     static void GenKey(const GrProcessor& processor, const GrShaderCaps&, GrProcessorKeyBuilder* b) {