rewrote GrAlphaThresholdFragmentProcessor in sksl

Bug: skia:
Change-Id: I641b206fc3bc19ac190ad94ee755ab9e1caab9b3
Reviewed-on: https://skia-review.googlesource.com/21341
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLHCodeGenerator.cpp b/src/sksl/SkSLHCodeGenerator.cpp
index 1bfd9b1..ac56f03 100644
--- a/src/sksl/SkSLHCodeGenerator.cpp
+++ b/src/sksl/SkSLHCodeGenerator.cpp
@@ -48,13 +48,15 @@
 
 void HCodeGenerator::writef(const char* s, va_list va) {
     static constexpr int BUFFER_SIZE = 1024;
+    va_list copy;
+    va_copy(copy, va);
     char buffer[BUFFER_SIZE];
     int length = vsnprintf(buffer, BUFFER_SIZE, s, va);
     if (length < BUFFER_SIZE) {
         fOut->write(buffer, length);
     } else {
         std::unique_ptr<char[]> heap(new char[length + 1]);
-        vsprintf(heap.get(), s, va);
+        vsprintf(heap.get(), s, copy);
         fOut->write(heap.get(), length);
     }
 }
@@ -166,7 +168,7 @@
     for (const auto& param : fSectionAndParameterHelper.fParameters) {
         const char* name = param->fName.c_str();
         if (param->fType.kind() == Type::kSampler_Kind) {
-            this->writef("\n    , %s(resourceProvider, std::move(%s))", FieldName(name).c_str(),
+            this->writef("\n    , %s(std::move(%s))", FieldName(name).c_str(),
                          name);
         } else {
             this->writef("\n    , %s(%s)", FieldName(name).c_str(), name);
@@ -196,12 +198,13 @@
 bool HCodeGenerator::generateCode() {
     this->writef(kFragmentProcessorHeader, fFullName.c_str());
     this->writef("#ifndef %s_DEFINED\n"
-                 "#define %s_DEFINED\n"
-                 "#include \"GrFragmentProcessor.h\"\n"
-                 "#include \"GrCoordTransform.h\"\n"
-                 "#include \"effects/GrProxyMove.h\"\n",
-                 fFullName.c_str(), fFullName.c_str());
+                 "#define %s_DEFINED\n",
+                 fFullName.c_str(),
+                 fFullName.c_str());
     this->writeSection(HEADER_SECTION);
+    this->writef("#include \"GrFragmentProcessor.h\"\n"
+                 "#include \"GrCoordTransform.h\"\n"
+                 "#include \"effects/GrProxyMove.h\"\n");
     this->writef("class %s : public GrFragmentProcessor {\n"
                  "public:\n",
                  fFullName.c_str());
@@ -211,7 +214,7 @@
             continue;
         }
         const char* name = param->fName.c_str();
-        this->writef("%s %s() const { return %s; }\n",
+        this->writef("    %s %s() const { return %s; }\n",
                      FieldType(param->fType).c_str(), name, FieldName(name).c_str());
     }
     this->writeMake();
@@ -226,8 +229,9 @@
                  "    GR_DECLARE_FRAGMENT_PROCESSOR_TEST;\n");
     this->writeFields();
     this->writef("    typedef GrFragmentProcessor INHERITED;\n"
-                 "};\n"
-                 "#endif\n");
+                "};\n");
+    this->writeSection(HEADER_END_SECTION);
+    this->writef("#endif\n");
     return 0 == fErrors.errorCount();
 }