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/SkRadialGradient.cpp b/src/shaders/gradients/SkRadialGradient.cpp
index c2ca2fa..a8e48db 100644
--- a/src/shaders/gradients/SkRadialGradient.cpp
+++ b/src/shaders/gradients/SkRadialGradient.cpp
@@ -234,12 +234,19 @@
         return processor->isValid() ? std::move(processor) : nullptr;
     }
 
-    ~GrRadialGradient() override {}
-
     const char* name() const override { return "Radial Gradient"; }
 
+    sk_sp<GrFragmentProcessor> clone() const override {
+        return sk_sp<GrFragmentProcessor>(new GrRadialGradient(*this));
+    }
+
 private:
-    GrRadialGradient(const CreateArgs& args) : INHERITED(args, args.fShader->colorsAreOpaque()) {
+    explicit GrRadialGradient(const CreateArgs& args)
+            : INHERITED(args, args.fShader->colorsAreOpaque()) {
+        this->initClassID<GrRadialGradient>();
+    }
+
+    explicit GrRadialGradient(const GrRadialGradient& that) : INHERITED(that) {
         this->initClassID<GrRadialGradient>();
     }
 
@@ -258,7 +265,6 @@
 class GrRadialGradient::GLSLRadialProcessor : public GrGradientEffect::GLSLProcessor {
 public:
     GLSLRadialProcessor(const GrProcessor&) {}
-    ~GLSLRadialProcessor() override {}
 
     virtual void emitCode(EmitArgs&) override;