From 2ef04997c94ff3f104a76fb4bb70221b30c8ed60 Mon Sep 17 00:00:00 2001 From: kitfox Date: Mon, 16 Jan 2012 11:47:46 +0000 Subject: MarkerElement now respects markerUnits attribute. git-svn-id: https://svn.java.net/svn/svgsalamander~svn/trunk/svg-core@106 7dc7fa77-23fb-e6ad-8e2e-c86bd48ed22b --- src/main/java/com/kitfox/svg/Marker.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/kitfox/svg/Marker.java') diff --git a/src/main/java/com/kitfox/svg/Marker.java b/src/main/java/com/kitfox/svg/Marker.java index 42e3ce8..6909f68 100644 --- a/src/main/java/com/kitfox/svg/Marker.java +++ b/src/main/java/com/kitfox/svg/Marker.java @@ -29,6 +29,7 @@ public class Marker extends Group float markerWidth = 3; float markerHeight = 3; float orient = Float.NaN; + boolean markerUnitsStrokeWidth = true; //if set to false 'userSpaceOnUse' is assumed protected void build() throws SVGException { @@ -64,6 +65,15 @@ public class Marker extends Group viewBox = new Rectangle(0, 0, 1, 1); } + if (getPres(sty.setName("markerUnits"))) + { + String markerUnits = sty.getStringValue(); + if (markerUnits != null && markerUnits.equals("userSpaceOnUse")) + { + markerUnitsStrokeWidth = false; + } + } + //Transform pattern onto unit square viewXform = new AffineTransform(); viewXform.scale(1.0 / viewBox.getWidth(), 1.0 / viewBox.getHeight()); @@ -103,7 +113,11 @@ public class Marker extends Group AffineTransform cacheXform = g.getTransform(); g.translate(pos.x, pos.y); - g.scale(strokeWidth, strokeWidth); + if (markerUnitsStrokeWidth) + { + g.scale(strokeWidth, strokeWidth); + } + g.rotate(Math.atan2(pos.dy, pos.dx)); g.transform(markerXform); -- cgit v1.2.3-55-g7522