summaryrefslogtreecommitdiff
path: root/svgio
diff options
context:
space:
mode:
authorArmin Le Grand <alg@apache.org>2012-10-30 14:05:53 +0000
committerXisco Fauli <anistenis@gmail.com>2013-04-14 17:52:33 +0200
commitbc589d57f083279b6d619904b937fae706ece493 (patch)
tree85bfcfb91e6fb2be16c81276cca705005bd7bef1 /svgio
parentf75ca1fdad1094fbea4bb6cb0e3cc9458700c470 (diff)
#121221# added boolean state to remember when the StrokeDasharray was set to empty by purpose
Diffstat (limited to 'svgio')
-rw-r--r--svgio/inc/svgio/svgreader/svgstyleattributes.hxx7
-rw-r--r--svgio/source/svgreader/svgstyleattributes.cxx19
2 files changed, 24 insertions, 2 deletions
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();