summaryrefslogtreecommitdiff
path: root/svgio
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2023-08-03 19:44:03 +0200
committerXisco Fauli <xiscofauli@libreoffice.org>2023-08-03 23:16:41 +0200
commit2b0b4ddc8bd8fdd4cd689300620fe4621d7533b7 (patch)
tree6ac918bd439149f6cc8c68a24667633079430617 /svgio
parent2f17ce9ac89c1ad380bde39036000a1979f567bb (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')
-rw-r--r--svgio/source/svgreader/svgdocumenthandler.cxx90
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());