From 2b0b4ddc8bd8fdd4cd689300620fe4621d7533b7 Mon Sep 17 00:00:00 2001 From: Xisco Fauli Date: Thu, 3 Aug 2023 19:44:03 +0200 Subject: svgio: Simplify code Change-Id: Ibd28973fee006f3853fde64c519dd0cd8c1573ba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155322 Tested-by: Jenkins Reviewed-by: Xisco Fauli --- svgio/source/svgreader/svgdocumenthandler.cxx | 90 +++------------------------ 1 file changed, 9 insertions(+), 81 deletions(-) (limited to 'svgio') 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(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(mpTarget)); } - if(pSvgTitleDescNode && mpTarget) + mpTarget = const_cast< SvgNode* >(mpTarget->getParent()); + + if(pSvgTitleDescNode) { const OUString& aText(pSvgTitleDescNode->getText()); -- cgit