From bc589d57f083279b6d619904b937fae706ece493 Mon Sep 17 00:00:00 2001 From: Armin Le Grand Date: Tue, 30 Oct 2012 14:05:53 +0000 Subject: #121221# added boolean state to remember when the StrokeDasharray was set to empty by purpose --- svgio/inc/svgio/svgreader/svgstyleattributes.hxx | 7 +++++++ svgio/source/svgreader/svgstyleattributes.cxx | 19 +++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'svgio') diff --git a/svgio/inc/svgio/svgreader/svgstyleattributes.hxx b/svgio/inc/svgio/svgreader/svgstyleattributes.hxx index e8c39d7c5943..4e0c1acd613d 100644 --- a/svgio/inc/svgio/svgreader/svgstyleattributes.hxx +++ b/svgio/inc/svgio/svgreader/svgstyleattributes.hxx @@ -203,6 +203,9 @@ namespace svgio // vaules for fill, stroke, strokeWidth and others bool mbIsClipPathContent : 1; + // #121221# Defines if evtl. an empty array *is* set + bool mbStrokeDasharraySet : 1; + /// internal helpers void add_fillGradient( const basegfx::B2DPolyPolygon& rPath, @@ -319,6 +322,10 @@ namespace svgio const SvgNumberVector& getStrokeDasharray() const; void setStrokeDasharray(const SvgNumberVector& rStrokeDasharray = SvgNumberVector()) { maStrokeDasharray = rStrokeDasharray; } + /// #121221# StrokeDasharray needs a set state, it *may* be set to empty by purpose + bool getStrokeDasharraySet() const { return mbStrokeDasharraySet; } + void setStrokeDasharraySet(bool bNew) { mbStrokeDasharraySet = bNew; } + /// StrokeDashOffset content const SvgNumber getStrokeDashOffset() const; void setStrokeDashOffset(const SvgNumber& rStrokeDashOffset = SvgNumber()) { maStrokeDashOffset = rStrokeDashOffset; } diff --git a/svgio/source/svgreader/svgstyleattributes.cxx b/svgio/source/svgreader/svgstyleattributes.cxx index aa672a61a35a..0787490c2e06 100644 --- a/svgio/source/svgreader/svgstyleattributes.cxx +++ b/svgio/source/svgreader/svgstyleattributes.cxx @@ -1156,7 +1156,8 @@ namespace svgio mpMarkerEndXLink(0), maFillRule(FillRule_notset), maClipRule(FillRule_nonzero), - mbIsClipPathContent(SVGTokenClipPathNode == mrOwner.getType()) + mbIsClipPathContent(SVGTokenClipPathNode == mrOwner.getType()), + mbStrokeDasharraySet(false) { if(!mbIsClipPathContent) { @@ -1263,9 +1264,18 @@ namespace svgio { if(aContent.getLength()) { + static rtl::OUString aStrNone(rtl::OUString::createFromAscii("none")); SvgNumberVector aVector; - if(readSvgNumberVector(aContent, aVector)) + if(aContent.match(aStrNone)) + { + // #121221# The special value 'none' needs to be handled + // in the sense that *when* it is set, the parent shall not + // be used. Before this was only dependent on the array being + // empty + setStrokeDasharraySet(true); + } + else if(readSvgNumberVector(aContent, aVector)) { setStrokeDasharray(aVector); } @@ -2020,6 +2030,11 @@ namespace svgio { return maStrokeDasharray; } + else if(getStrokeDasharraySet()) + { + // #121221# is set to empty *by purpose*, do not visit parent styles + return maStrokeDasharray; + } const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle(); -- cgit