diff options
author | Florin Malita <fmalita@chromium.org> | 2016-12-08 09:26:47 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-12-08 15:00:18 +0000 |
commit | ce8840e3842f3a702c5d7bf440ff730bdfaf8e70 (patch) | |
tree | 0a94cdeb3d2d8632644490b70fdb0c40d185b8ec /experimental/svg/model/SkSVGRect.cpp | |
parent | c5a8366d9922902cffbd351fdd15755dd2ac99bf (diff) |
[SVGDom] ClipPath support
* clip-path attribute handling
* clipPath container element
* asPath() SkSVGNode virtual for capturing subtree geometry
R=robertphillips@google.com,stephana@google.com
Change-Id: I9597534fe3047b631da6309eafac055dff5696e9
Reviewed-on: https://skia-review.googlesource.com/5650
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'experimental/svg/model/SkSVGRect.cpp')
-rw-r--r-- | experimental/svg/model/SkSVGRect.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/experimental/svg/model/SkSVGRect.cpp b/experimental/svg/model/SkSVGRect.cpp index 1afd9957c6..fe68d62297 100644 --- a/experimental/svg/model/SkSVGRect.cpp +++ b/experimental/svg/model/SkSVGRect.cpp @@ -74,15 +74,24 @@ void SkSVGRect::onSetAttribute(SkSVGAttribute attr, const SkSVGValue& v) { } } -void SkSVGRect::onDraw(SkCanvas* canvas, const SkSVGLengthContext& lctx, - const SkPaint& paint, SkPath::FillType) const { +SkRRect SkSVGRect::resolve(const SkSVGLengthContext& lctx) const { const SkRect rect = lctx.resolveRect(fX, fY, fWidth, fHeight); const SkScalar rx = lctx.resolve(fRx, SkSVGLengthContext::LengthType::kHorizontal); const SkScalar ry = lctx.resolve(fRy, SkSVGLengthContext::LengthType::kVertical); - if (rx || ry) { - canvas->drawRRect(SkRRect::MakeRectXY(rect, rx, ry), paint); - } else { - canvas->drawRect(rect, paint); - } + return SkRRect::MakeRectXY(rect, rx ,ry); +} + +void SkSVGRect::onDraw(SkCanvas* canvas, const SkSVGLengthContext& lctx, + const SkPaint& paint, SkPath::FillType) const { + canvas->drawRRect(this->resolve(lctx), paint); +} + +SkPath SkSVGRect::onAsPath(const SkSVGRenderContext& ctx) const { + SkPath path; + path.addRRect(this->resolve(ctx.lengthContext())); + + this->mapToParent(&path); + + return path; } |