[graphite] Convert key helpers from being namespaces to classes

Bug: skia:12701
Change-Id: I17ff95cd7f7fc518158e951d24c109fc5d4d003d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/548417
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/core/SkKeyHelpers.cpp b/src/core/SkKeyHelpers.cpp
index e9c11b4..4d21314 100644
--- a/src/core/SkKeyHelpers.cpp
+++ b/src/core/SkKeyHelpers.cpp
@@ -28,11 +28,11 @@
 constexpr SkPMColor4f kErrorColor = { 1, 0, 0, 1 };
 
 //--------------------------------------------------------------------------------------------------
-namespace SolidColorShaderBlock {
+
+#ifdef SK_GRAPHITE_ENABLED
 
 namespace {
 
-#ifdef SK_GRAPHITE_ENABLED
 void add_solid_uniform_data(const SkShaderCodeDictionary* dict,
                             const SkPMColor4f& premulColor,
                             SkPipelineDataGatherer* gatherer) {
@@ -41,14 +41,15 @@
 
     gatherer->addFlags(dict->getSnippetRequirementFlags(SkBuiltInCodeSnippetID::kSolidColorShader));
 }
-#endif // SK_GRAPHITE_ENABLED
 
 } // anonymous namespace
 
-void BeginBlock(const SkKeyContext& keyContext,
-                SkPaintParamsKeyBuilder* builder,
-                SkPipelineDataGatherer* gatherer,
-                const SkPMColor4f& premulColor) {
+#endif // SK_GRAPHITE_ENABLED
+
+void SolidColorShaderBlock::BeginBlock(const SkKeyContext& keyContext,
+                                       SkPaintParamsKeyBuilder* builder,
+                                       SkPipelineDataGatherer* gatherer,
+                                       const SkPMColor4f& premulColor) {
 
 #ifdef SK_GRAPHITE_ENABLED
     if (builder->backend() == SkBackend::kGraphite) {
@@ -69,17 +70,15 @@
 
 }
 
-} // namespace SolidColorShaderBlock
-
 //--------------------------------------------------------------------------------------------------
-namespace GradientShaderBlocks {
+
+#ifdef SK_GRAPHITE_ENABLED
 
 namespace {
 
-#ifdef SK_GRAPHITE_ENABLED
 void add_linear_gradient_uniform_data(const SkShaderCodeDictionary* dict,
                                       SkBuiltInCodeSnippetID codeSnippetID,
-                                      const GradientData& gradData,
+                                      const GradientShaderBlocks::GradientData& gradData,
                                       SkPipelineDataGatherer* gatherer) {
     VALIDATE_UNIFORMS(gatherer, dict, codeSnippetID)
     int stops = codeSnippetID == SkBuiltInCodeSnippetID::kLinearGradientShader4 ? 4 : 8;
@@ -105,7 +104,7 @@
 
 void add_radial_gradient_uniform_data(const SkShaderCodeDictionary* dict,
                                       SkBuiltInCodeSnippetID codeSnippetID,
-                                      const GradientData& gradData,
+                                      const GradientShaderBlocks::GradientData& gradData,
                                       SkPipelineDataGatherer* gatherer) {
     VALIDATE_UNIFORMS(gatherer, dict, codeSnippetID)
     int stops = codeSnippetID == SkBuiltInCodeSnippetID::kRadialGradientShader4 ? 4 : 8;
@@ -128,7 +127,7 @@
 
 void add_sweep_gradient_uniform_data(const SkShaderCodeDictionary* dict,
                                      SkBuiltInCodeSnippetID codeSnippetID,
-                                     const GradientData& gradData,
+                                     const GradientShaderBlocks::GradientData& gradData,
                                      SkPipelineDataGatherer* gatherer) {
     VALIDATE_UNIFORMS(gatherer, dict, codeSnippetID)
     int stops = codeSnippetID == SkBuiltInCodeSnippetID::kSweepGradientShader4 ? 4 : 8;
@@ -155,7 +154,7 @@
 
 void add_conical_gradient_uniform_data(const SkShaderCodeDictionary* dict,
                                        SkBuiltInCodeSnippetID codeSnippetID,
-                                       const GradientData& gradData,
+                                       const GradientShaderBlocks::GradientData& gradData,
                                        SkPipelineDataGatherer* gatherer) {
     VALIDATE_UNIFORMS(gatherer, dict, codeSnippetID)
     int stops = codeSnippetID == SkBuiltInCodeSnippetID::kConicalGradientShader4 ? 4 : 8;
@@ -179,12 +178,12 @@
     gatherer->addFlags(dict->getSnippetRequirementFlags(codeSnippetID));
 };
 
-#endif // SK_GRAPHITE_ENABLED
-
 } // anonymous namespace
 
-GradientData::GradientData(SkShader::GradientType type,
-                           int numStops)
+#endif // SK_GRAPHITE_ENABLED
+
+GradientShaderBlocks::GradientData::GradientData(SkShader::GradientType type,
+                                                 int numStops)
         : fType(type)
         , fPoints{{0.0f, 0.0f}, {0.0f, 0.0f}}
         , fRadii{0.0f, 0.0f}
@@ -196,15 +195,15 @@
     sk_bzero(fOffsets, sizeof(fOffsets));
 }
 
-GradientData::GradientData(SkShader::GradientType type,
-                           SkM44 localMatrix,
-                           SkPoint point0, SkPoint point1,
-                           float radius0, float radius1,
-                           float bias, float scale,
-                           SkTileMode tm,
-                           int numStops,
-                           SkColor4f* color4fs,
-                           float* offsets)
+GradientShaderBlocks::GradientData::GradientData(SkShader::GradientType type,
+                                                 const SkM44& localMatrix,
+                                                 SkPoint point0, SkPoint point1,
+                                                 float radius0, float radius1,
+                                                 float bias, float scale,
+                                                 SkTileMode tm,
+                                                 int numStops,
+                                                 SkColor4f* color4fs,
+                                                 float* offsets)
         : fType(type)
         , fLocalMatrix(localMatrix)
         , fBias(bias)
@@ -234,10 +233,10 @@
     }
 }
 
-void BeginBlock(const SkKeyContext& keyContext,
-                SkPaintParamsKeyBuilder *builder,
-                SkPipelineDataGatherer* gatherer,
-                const GradientData& gradData) {
+void GradientShaderBlocks::BeginBlock(const SkKeyContext& keyContext,
+                                      SkPaintParamsKeyBuilder *builder,
+                                      SkPipelineDataGatherer* gatherer,
+                                      const GradientData& gradData) {
 
 #ifdef SK_GRAPHITE_ENABLED
     if (builder->backend() == SkBackend::kGraphite) {
@@ -294,15 +293,12 @@
     }
 }
 
-} // namespace GradientShaderBlocks
-
 //--------------------------------------------------------------------------------------------------
-namespace LocalMatrixShaderBlock {
-
-namespace {
 
 #ifdef SK_GRAPHITE_ENABLED
 
+namespace {
+
 void add_localmatrixshader_uniform_data(const SkShaderCodeDictionary* dict,
                                         const SkM44& localMatrix,
                                         SkPipelineDataGatherer* gatherer) {
@@ -320,14 +316,14 @@
             dict->getSnippetRequirementFlags(SkBuiltInCodeSnippetID::kLocalMatrixShader));
 }
 
-#endif // SK_GRAPHITE_ENABLED
-
 } // anonymous namespace
 
-void BeginBlock(const SkKeyContext& keyContext,
-                SkPaintParamsKeyBuilder* builder,
-                SkPipelineDataGatherer* gatherer,
-                const LMShaderData& lmShaderData) {
+#endif // SK_GRAPHITE_ENABLED
+
+void LocalMatrixShaderBlock::BeginBlock(const SkKeyContext& keyContext,
+                                        SkPaintParamsKeyBuilder* builder,
+                                        SkPipelineDataGatherer* gatherer,
+                                        const LMShaderData& lmShaderData) {
 
 #ifdef SK_GRAPHITE_ENABLED
     if (builder->backend() == SkBackend::kGraphite) {
@@ -350,17 +346,14 @@
     }
 }
 
-} // namespace LocalMatrixShaderBlock
-
 //--------------------------------------------------------------------------------------------------
-namespace ImageShaderBlock {
-
-namespace {
 
 #ifdef SK_GRAPHITE_ENABLED
 
+namespace {
+
 void add_image_uniform_data(const SkShaderCodeDictionary* dict,
-                            const ImageData& imgData,
+                            const ImageShaderBlock::ImageData& imgData,
                             SkPipelineDataGatherer* gatherer) {
     VALIDATE_UNIFORMS(gatherer, dict, SkBuiltInCodeSnippetID::kImageShader)
 
@@ -380,25 +373,25 @@
     gatherer->addFlags(dict->getSnippetRequirementFlags(SkBuiltInCodeSnippetID::kImageShader));
 }
 
-#endif // SK_GRAPHITE_ENABLED
-
 } // anonymous namespace
 
-ImageData::ImageData(const SkSamplingOptions& sampling,
-                     SkTileMode tileModeX,
-                     SkTileMode tileModeY,
-                     SkRect subset,
-                     const SkMatrix& localMatrix)
+#endif // SK_GRAPHITE_ENABLED
+
+ImageShaderBlock::ImageData::ImageData(const SkSamplingOptions& sampling,
+                                       SkTileMode tileModeX,
+                                       SkTileMode tileModeY,
+                                       SkRect subset,
+                                       const SkMatrix& localMatrix)
     : fSampling(sampling)
     , fTileModes{tileModeX, tileModeY}
     , fSubset(subset)
     , fLocalMatrix(localMatrix) {
 }
 
-void BeginBlock(const SkKeyContext& keyContext,
-                SkPaintParamsKeyBuilder* builder,
-                SkPipelineDataGatherer* gatherer,
-                const ImageData& imgData) {
+void ImageShaderBlock::BeginBlock(const SkKeyContext& keyContext,
+                                  SkPaintParamsKeyBuilder* builder,
+                                  SkPipelineDataGatherer* gatherer,
+                                  const ImageData& imgData) {
 
 #ifdef SK_GRAPHITE_ENABLED
     if (builder->backend() == SkBackend::kGraphite) {
@@ -432,15 +425,12 @@
     }
 }
 
-} // namespace ImageShaderBlock
-
 //--------------------------------------------------------------------------------------------------
-namespace BlendShaderBlock {
-
-namespace {
 
 #ifdef SK_GRAPHITE_ENABLED
 
+namespace {
+
 void add_blendshader_uniform_data(const SkShaderCodeDictionary* dict,
                                   SkBlendMode bm,
                                   SkPipelineDataGatherer* gatherer) {
@@ -453,14 +443,14 @@
     gatherer->addFlags(dict->getSnippetRequirementFlags(SkBuiltInCodeSnippetID::kBlendShader));
 }
 
-#endif // SK_GRAPHITE_ENABLED
-
 } // anonymous namespace
 
-void BeginBlock(const SkKeyContext& keyContext,
-                SkPaintParamsKeyBuilder *builder,
-                SkPipelineDataGatherer* gatherer,
-                const BlendShaderData& blendData) {
+#endif // SK_GRAPHITE_ENABLED
+
+void BlendShaderBlock::BeginBlock(const SkKeyContext& keyContext,
+                                  SkPaintParamsKeyBuilder *builder,
+                                  SkPipelineDataGatherer* gatherer,
+                                  const BlendShaderData& blendData) {
 
 #ifdef SK_GRAPHITE_ENABLED
     if (builder->backend() == SkBackend::kGraphite) {
@@ -482,8 +472,6 @@
     }
 }
 
-} // namespace BlendShaderBlock
-
 //--------------------------------------------------------------------------------------------------
 #ifdef SK_GRAPHITE_ENABLED
 namespace {
@@ -525,15 +513,6 @@
     return gBlendTable[(int) SkBlendMode::kSrc];
 }
 
-} // anonymous namespace
-#endif // SK_GRAPHITE_ENABLED
-
-namespace BlendModeBlock {
-
-#ifdef SK_GRAPHITE_ENABLED
-
-namespace {
-
 void add_shaderbasedblender_uniform_data(const SkShaderCodeDictionary* dict,
                                          SkBlendMode bm,
                                          SkPipelineDataGatherer* gatherer) {
@@ -551,10 +530,10 @@
 
 #endif // SK_GRAPHITE_ENABLED
 
-void BeginBlock(const SkKeyContext& keyContext,
-                SkPaintParamsKeyBuilder *builder,
-                SkPipelineDataGatherer* gatherer,
-                SkBlendMode bm) {
+void BlendModeBlock::BeginBlock(const SkKeyContext& keyContext,
+                                SkPaintParamsKeyBuilder *builder,
+                                SkPipelineDataGatherer* gatherer,
+                                SkBlendMode bm) {
 
 #ifdef SK_GRAPHITE_ENABLED
     if (builder->backend() == SkBackend::kGraphite) {
@@ -584,8 +563,6 @@
     }
 }
 
-} // namespace BlendModeBlock
-
 //--------------------------------------------------------------------------------------------------
 // TODO: we need to feed the number of stops in the gradients into this method from the
 // combination code
diff --git a/src/core/SkKeyHelpers.h b/src/core/SkKeyHelpers.h
index 793eb66..2e12730 100644
--- a/src/core/SkKeyHelpers.h
+++ b/src/core/SkKeyHelpers.h
@@ -30,16 +30,16 @@
 
 // The KeyHelpers can be used to manually construct an SkPaintParamsKey
 
-namespace SolidColorShaderBlock {
+struct SolidColorShaderBlock {
 
-    void BeginBlock(const SkKeyContext&,
-                    SkPaintParamsKeyBuilder*,
-                    SkPipelineDataGatherer*,
-                    const SkPMColor4f&);
+    static void BeginBlock(const SkKeyContext&,
+                           SkPaintParamsKeyBuilder*,
+                           SkPipelineDataGatherer*,
+                           const SkPMColor4f&);
 
-} // namespace SolidColorShaderBlock
+};
 
-namespace GradientShaderBlocks {
+struct GradientShaderBlocks {
 
     struct GradientData {
         // TODO: For the sprint we only support 8 stops in the gradients
@@ -53,7 +53,7 @@
         // This ctor is used when extracting information from PaintParams. It must provide
         // enough data to generate the uniform data the selected code snippet will require.
         GradientData(SkShader::GradientType,
-                     SkM44 localMatrix,
+                     const SkM44& localMatrix,
                      SkPoint point0, SkPoint point1,
                      float radius0, float radius1,
                      float bias, float scale,
@@ -94,14 +94,14 @@
         float                  fOffsets[kMaxStops];
     };
 
-    void BeginBlock(const SkKeyContext&,
-                    SkPaintParamsKeyBuilder*,
-                    SkPipelineDataGatherer*,
-                    const GradientData&);
+    static void BeginBlock(const SkKeyContext&,
+                           SkPaintParamsKeyBuilder*,
+                           SkPipelineDataGatherer*,
+                           const GradientData&);
 
-} // namespace GradientShaderBlocks
+};
 
-namespace LocalMatrixShaderBlock {
+struct LocalMatrixShaderBlock {
 
     struct LMShaderData {
         LMShaderData(const SkMatrix& localMatrix)
@@ -111,14 +111,14 @@
         const SkM44 fLocalMatrix;
     };
 
-    void BeginBlock(const SkKeyContext&,
-                    SkPaintParamsKeyBuilder*,
-                    SkPipelineDataGatherer*,
-                    const LMShaderData&);
+    static void BeginBlock(const SkKeyContext&,
+                           SkPaintParamsKeyBuilder*,
+                           SkPipelineDataGatherer*,
+                           const LMShaderData&);
 
-} // namespace LocalMatrixShaderBlock
+};
 
-namespace ImageShaderBlock {
+struct ImageShaderBlock {
 
     struct ImageData {
         ImageData(const SkSamplingOptions& sampling,
@@ -140,35 +140,33 @@
 #endif
     };
 
-    void BeginBlock(const SkKeyContext&,
-                    SkPaintParamsKeyBuilder*,
-                    SkPipelineDataGatherer*,
-                    const ImageData&);
+    static void BeginBlock(const SkKeyContext&,
+                           SkPaintParamsKeyBuilder*,
+                           SkPipelineDataGatherer*,
+                           const ImageData&);
 
-} // namespace ImageShaderBlock
+};
 
-namespace BlendShaderBlock {
-
+struct BlendShaderBlock {
     struct BlendShaderData {
         // TODO: add support for blenders
         SkBlendMode fBM;
     };
 
-    void BeginBlock(const SkKeyContext&,
-                    SkPaintParamsKeyBuilder*,
-                    SkPipelineDataGatherer*,
-                    const BlendShaderData&);
+    static void BeginBlock(const SkKeyContext&,
+                           SkPaintParamsKeyBuilder*,
+                           SkPipelineDataGatherer*,
+                           const BlendShaderData&);
 
-} // namespace BlendShaderBlock
+};
 
-namespace BlendModeBlock {
+struct BlendModeBlock {
+    static void BeginBlock(const SkKeyContext&,
+                           SkPaintParamsKeyBuilder*,
+                           SkPipelineDataGatherer*,
+                           SkBlendMode);
 
-    void BeginBlock(const SkKeyContext&,
-                    SkPaintParamsKeyBuilder*,
-                    SkPipelineDataGatherer*,
-                    SkBlendMode);
-
-} // namespace BlendModeBlock
+};
 
 // Bridge between the combinations system and the SkPaintParamsKey
 SkUniquePaintParamsID CreateKey(const SkKeyContext&,