diff options
Diffstat (limited to 'experimental/svg/model/SkSVGSVG.cpp')
-rw-r--r-- | experimental/svg/model/SkSVGSVG.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/experimental/svg/model/SkSVGSVG.cpp b/experimental/svg/model/SkSVGSVG.cpp index 13f18043c0..592992760a 100644 --- a/experimental/svg/model/SkSVGSVG.cpp +++ b/experimental/svg/model/SkSVGSVG.cpp @@ -95,3 +95,15 @@ void SkSVGSVG::onSetAttribute(SkSVGAttribute attr, const SkSVGValue& v) { this->INHERITED::onSetAttribute(attr, v); } } + +// https://www.w3.org/TR/SVG/coords.html#IntrinsicSizing +SkSize SkSVGSVG::intrinsicSize(const SkSVGLengthContext& lctx) const { + // Percentage values do not provide an intrinsic size. + if (fWidth.unit() == SkSVGLength::Unit::kPercentage || + fHeight.unit() == SkSVGLength::Unit::kPercentage) { + return SkSize::Make(0, 0); + } + + return SkSize::Make(lctx.resolve(fWidth, SkSVGLengthContext::LengthType::kHorizontal), + lctx.resolve(fHeight, SkSVGLengthContext::LengthType::kVertical)); +} |