diff options
author | Xisco Fauli <xiscofauli@libreoffice.org> | 2023-08-03 19:44:03 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2023-08-03 23:16:41 +0200 |
commit | 2b0b4ddc8bd8fdd4cd689300620fe4621d7533b7 (patch) | |
tree | 6ac918bd439149f6cc8c68a24667633079430617 /svgio/source | |
parent | 2f17ce9ac89c1ad380bde39036000a1979f567bb (diff) |
svgio: Simplify code
Change-Id: Ibd28973fee006f3853fde64c519dd0cd8c1573ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155322
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'svgio/source')
-rw-r--r-- | svgio/source/svgreader/svgdocumenthandler.cxx | 90 |
1 files changed, 9 insertions, 81 deletions
diff --git a/svgio/source/svgreader/svgdocumenthandler.cxx b/svgio/source/svgreader/svgdocumenthandler.cxx index 6bb27cd2a52d..33746ad4ac2d 100644 --- a/svgio/source/svgreader/svgdocumenthandler.cxx +++ b/svgio/source/svgreader/svgdocumenthandler.cxx @@ -543,95 +543,23 @@ namespace if(aName.isEmpty()) return; + if(!mpTarget) + return; + const SVGToken aSVGToken(StrToSVGToken(aName, false)); SvgNode* pTextNode(SVGToken::Text == aSVGToken ? mpTarget : nullptr); SvgStyleNode* pCssStyle(SVGToken::Style == aSVGToken ? static_cast< SvgStyleNode* >(mpTarget) : nullptr); SvgTitleDescNode* pSvgTitleDescNode(SVGToken::Title == aSVGToken || SVGToken::Desc == aSVGToken ? static_cast< SvgTitleDescNode* >(mpTarget) : nullptr); - switch (aSVGToken) + if(!mpTarget->getParent()) { - /// valid tokens for which a new one was created - - /// structural elements - case SVGToken::Defs: - case SVGToken::G: - case SVGToken::Svg: - case SVGToken::Symbol: - case SVGToken::Use: - case SVGToken::A: - - /// shape elements - case SVGToken::Circle: - case SVGToken::Ellipse: - case SVGToken::Line: - case SVGToken::Path: - case SVGToken::Polygon: - case SVGToken::Polyline: - case SVGToken::Rect: - case SVGToken::Image: - - /// title and description - case SVGToken::Title: - case SVGToken::Desc: - - /// gradients - case SVGToken::LinearGradient: - case SVGToken::RadialGradient: - - /// gradient stops - case SVGToken::Stop: - - /// text - case SVGToken::Text: - case SVGToken::Tspan: - case SVGToken::TextPath: - case SVGToken::Tref: - - /// styles (as stylesheets) - case SVGToken::Style: - - /// structural elements clip-path and mask - case SVGToken::ClipPathNode: - case SVGToken::Mask: - - /// structural elements for filters - case SVGToken::FeColorMatrix: - case SVGToken::FeDropShadow: - case SVGToken::FeFlood: - case SVGToken::FeImage: - case SVGToken::FeGaussianBlur: - case SVGToken::FeOffset: - case SVGToken::Filter: - - /// structural element marker - case SVGToken::Marker: - - /// structural element pattern - case SVGToken::Pattern: - - default: - - /// content handling after parsing - { - if(mpTarget) - { - if(!mpTarget->getParent()) - { - // last element closing, save this tree - maDocument.appendNode(std::unique_ptr<SvgNode>(mpTarget)); - } - - mpTarget = const_cast< SvgNode* >(mpTarget->getParent()); - } - else - { - OSL_ENSURE(false, "Closing token, but no context (!)"); - } - break; - } + // last element closing, save this tree + maDocument.appendNode(std::unique_ptr<SvgNode>(mpTarget)); } - if(pSvgTitleDescNode && mpTarget) + mpTarget = const_cast< SvgNode* >(mpTarget->getParent()); + + if(pSvgTitleDescNode) { const OUString& aText(pSvgTitleDescNode->getText()); |