diff options
author | fmalita <fmalita@chromium.org> | 2016-08-03 10:21:11 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-03 10:21:11 -0700 |
commit | bffc2566872f99d378a1113d0a49ec9ee0d60b7a (patch) | |
tree | 3a7fab8b6206e99201b1ea817c95454f340260c8 /experimental/svg/model/SkSVGRenderContext.h | |
parent | 9e3d3d8b363edcdd81a13b2be046152c6bb839cd (diff) |
[SVGDom] Initial SVGLength support
Mostly plumb new length types, but also introduce a stateful parser,
rect shape and named color support.
R=reed@google.com,robertphillips@google.com,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2202053002
Review-Url: https://codereview.chromium.org/2202053002
Diffstat (limited to 'experimental/svg/model/SkSVGRenderContext.h')
-rw-r--r-- | experimental/svg/model/SkSVGRenderContext.h | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/experimental/svg/model/SkSVGRenderContext.h b/experimental/svg/model/SkSVGRenderContext.h index 8ebaf12f0c..50a6d59e5e 100644 --- a/experimental/svg/model/SkSVGRenderContext.h +++ b/experimental/svg/model/SkSVGRenderContext.h @@ -8,17 +8,39 @@ #ifndef SkSVGRenderContext_DEFINED #define SkSVGRenderContext_DEFINED +#include "SkSize.h" #include "SkPaint.h" #include "SkTLazy.h" class SkPaint; +class SkSVGLength; + +class SkSVGLengthContext { +public: + SkSVGLengthContext(const SkSize& viewport) : fViewport(viewport) {} + + enum class LengthType { + kHorizontal, + kVertical, + kOther, + }; + + void setViewPort(const SkSize& viewport) { fViewport = viewport; } + + SkScalar resolve(const SkSVGLength&, LengthType) const; + +private: + SkSize fViewport; +}; class SkSVGRenderContext { public: - SkSVGRenderContext(); + explicit SkSVGRenderContext(const SkSize& initialViewport); SkSVGRenderContext(const SkSVGRenderContext&) = default; SkSVGRenderContext& operator=(const SkSVGRenderContext&); + const SkSVGLengthContext& lengthContext() const { return fLengthContext; } + const SkPaint* fillPaint() const { return fFill.getMaybeNull(); } const SkPaint* strokePaint() const { return fStroke.getMaybeNull(); } @@ -29,8 +51,9 @@ private: SkPaint& ensureFill(); SkPaint& ensureStroke(); - SkTLazy<SkPaint> fFill; - SkTLazy<SkPaint> fStroke; + SkSVGLengthContext fLengthContext; + SkTLazy<SkPaint> fFill; + SkTLazy<SkPaint> fStroke; }; #endif // SkSVGRenderContext_DEFINED |