[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&,