aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/svg/model/SkSVGAttributeParser.cpp
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2016-09-13 12:56:11 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-13 12:56:11 -0700
commitcecd617a4297ffdcec632ca7e2ed1e6b61665e04 (patch)
tree48e32288114528e7085bf6aa0190653e7ad0bf99 /experimental/svg/model/SkSVGAttributeParser.cpp
parent649985a530c39afcda23d1f188fa2fc92df3ac56 (diff)
[SVGDom] Linear gradient 'spreadMethod' support
R=stephana@google.com,robertphillips@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2337203002 Review-Url: https://codereview.chromium.org/2337203002
Diffstat (limited to 'experimental/svg/model/SkSVGAttributeParser.cpp')
-rw-r--r--experimental/svg/model/SkSVGAttributeParser.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/experimental/svg/model/SkSVGAttributeParser.cpp b/experimental/svg/model/SkSVGAttributeParser.cpp
index 9d2d6b8136..04b050828a 100644
--- a/experimental/svg/model/SkSVGAttributeParser.cpp
+++ b/experimental/svg/model/SkSVGAttributeParser.cpp
@@ -491,6 +491,29 @@ bool SkSVGAttributeParser::parseLineJoin(SkSVGLineJoin* join) {
return parsedValue && this->parseEOSToken();
}
+// https://www.w3.org/TR/SVG/pservers.html#LinearGradientElementSpreadMethodAttribute
+bool SkSVGAttributeParser::parseSpreadMethod(SkSVGSpreadMethod* spread) {
+ static const struct {
+ SkSVGSpreadMethod::Type fType;
+ const char* fName;
+ } gSpreadInfo[] = {
+ { SkSVGSpreadMethod::Type::kPad , "pad" },
+ { SkSVGSpreadMethod::Type::kReflect, "reflect" },
+ { SkSVGSpreadMethod::Type::kRepeat , "repeat" },
+ };
+
+ bool parsedValue = false;
+ for (size_t i = 0; i < SK_ARRAY_COUNT(gSpreadInfo); ++i) {
+ if (this->parseExpectedStringToken(gSpreadInfo[i].fName)) {
+ *spread = SkSVGSpreadMethod(gSpreadInfo[i].fType);
+ parsedValue = true;
+ break;
+ }
+ }
+
+ return parsedValue && this->parseEOSToken();
+}
+
// https://www.w3.org/TR/SVG/shapes.html#PolygonElementPointsAttribute
bool SkSVGAttributeParser::parsePoints(SkSVGPointsType* points) {
SkTDArray<SkPoint> pts;