diff options
Diffstat (limited to 'svgio/source/svgreader/svgstyleattributes.cxx')
-rw-r--r-- | svgio/source/svgreader/svgstyleattributes.cxx | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/svgio/source/svgreader/svgstyleattributes.cxx b/svgio/source/svgreader/svgstyleattributes.cxx index 2d5bc8548495..201ec68422a3 100644 --- a/svgio/source/svgreader/svgstyleattributes.cxx +++ b/svgio/source/svgreader/svgstyleattributes.cxx @@ -676,13 +676,27 @@ namespace svgio // todo: Handle getStrokeDashOffset() + // convert svg:stroke-miterlimit to LineAttrute:mfMiterMinimumAngle + // The default needs to be set explicitely, because svg default <> Draw default + double fMiterMinimumAngle; + if (getStrokeMiterLimit().isSet()) + { + fMiterMinimumAngle = 2.0 * asin(1.0/getStrokeMiterLimit().getNumber()); + } + else + { + fMiterMinimumAngle = 2.0 * asin(0.25); // 1.0/default 4.0 + } + // prepare line attribute drawinglayer::primitive2d::Primitive2DReference aNewLinePrimitive; + const drawinglayer::attribute::LineAttribute aLineAttribute( pStroke ? *pStroke : basegfx::BColor(0.0, 0.0, 0.0), fStrokeWidth, aB2DLineJoin, - aLineCap); + aLineCap, + fMiterMinimumAngle); if(aDashArray.empty()) { @@ -1411,9 +1425,9 @@ namespace svgio if(readSingleNumber(aContent, aNum)) { - if(aNum.isPositive()) - { - setStrokeMiterLimit(aNum); + if(basegfx::fTools::moreOrEqual(aNum.getNumber(), 1.0)) + { //readSingleNumber sets Unit_px as default, if unit is missing. Correct it here. + setStrokeMiterLimit(SvgNumber(aNum.getNumber(), Unit_none)); } } break; @@ -2297,7 +2311,7 @@ namespace svgio } // default is 4 - return SvgNumber(4.0); + return SvgNumber(4.0, Unit_none); } SvgNumber SvgStyleAttributes::getStrokeOpacity() const |