diff options
author | kitfox | 2012-09-29 07:21:33 +0200 |
---|---|---|
committer | kitfox | 2012-09-29 07:21:33 +0200 |
commit | a3164a1079b2caf136b629cd8614fe1a73215469 (patch) | |
tree | e29687407dd57ac73e272b79523fc081bbd77058 /src/main/java/com/kitfox/svg/Use.java | |
parent | Updating JNLP. (diff) | |
download | svg-salamander-core-a3164a1079b2caf136b629cd8614fe1a73215469.tar.gz svg-salamander-core-a3164a1079b2caf136b629cd8614fe1a73215469.tar.xz svg-salamander-core-a3164a1079b2caf136b629cd8614fe1a73215469.zip |
Now avoiding reentering XML parser when USE tags reference other documents.
git-svn-id: https://svn.java.net/svn/svgsalamander~svn/trunk/svg-core@126 7dc7fa77-23fb-e6ad-8e2e-c86bd48ed22b
Diffstat (limited to 'src/main/java/com/kitfox/svg/Use.java')
-rw-r--r-- | src/main/java/com/kitfox/svg/Use.java | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/src/main/java/com/kitfox/svg/Use.java b/src/main/java/com/kitfox/svg/Use.java index 3229482..897fdba 100644 --- a/src/main/java/com/kitfox/svg/Use.java +++ b/src/main/java/com/kitfox/svg/Use.java @@ -45,7 +45,8 @@ public class Use extends ShapeElement { float width = 1f;
float height = 1f;
- SVGElement href = null;
+// SVGElement href = null;
+ URI href = null;
AffineTransform refXform;
@@ -94,18 +95,31 @@ public class Use extends ShapeElement { StyleAttribute sty = new StyleAttribute();
- if (getPres(sty.setName("x"))) x = sty.getFloatValueWithUnits();
+ if (getPres(sty.setName("x")))
+ {
+ x = sty.getFloatValueWithUnits();
+ }
- if (getPres(sty.setName("y"))) y = sty.getFloatValueWithUnits();
+ if (getPres(sty.setName("y")))
+ {
+ y = sty.getFloatValueWithUnits();
+ }
- if (getPres(sty.setName("width"))) width = sty.getFloatValueWithUnits();
+ if (getPres(sty.setName("width")))
+ {
+ width = sty.getFloatValueWithUnits();
+ }
- if (getPres(sty.setName("height"))) height = sty.getFloatValueWithUnits();
+ if (getPres(sty.setName("height")))
+ {
+ height = sty.getFloatValueWithUnits();
+ }
if (getPres(sty.setName("xlink:href")))
{
URI src = sty.getURIValue(getXMLBase());
- href = diagram.getUniverse().getElement(src);
+ href = src;
+// href = diagram.getUniverse().getElement(src);
}
//Determine use offset/scale
@@ -121,9 +135,11 @@ public class Use extends ShapeElement { AffineTransform oldXform = g.getTransform();
g.transform(refXform);
- if (href == null || !(href instanceof RenderableElement)) return;
+ SVGElement ref = diagram.getUniverse().getElement(href);
+
+ if (ref == null || !(ref instanceof RenderableElement)) return;
- RenderableElement rendEle = (RenderableElement)href;
+ RenderableElement rendEle = (RenderableElement)ref;
rendEle.pushParentContext(this);
rendEle.render(g);
rendEle.popParentContext();
@@ -135,9 +151,10 @@ public class Use extends ShapeElement { public Shape getShape()
{
- if (href instanceof ShapeElement)
+ SVGElement ref = diagram.getUniverse().getElement(href);
+ if (ref instanceof ShapeElement)
{
- Shape shape = ((ShapeElement)href).getShape();
+ Shape shape = ((ShapeElement)ref).getShape();
shape = refXform.createTransformedShape(shape);
shape = shapeToParent(shape);
return shape;
@@ -148,9 +165,10 @@ public class Use extends ShapeElement { public Rectangle2D getBoundingBox() throws SVGException
{
- if (href instanceof ShapeElement)
+ SVGElement ref = diagram.getUniverse().getElement(href);
+ if (ref instanceof ShapeElement)
{
- ShapeElement shapeEle = (ShapeElement)href;
+ ShapeElement shapeEle = (ShapeElement)ref;
shapeEle.pushParentContext(this);
Rectangle2D bounds = shapeEle.getBoundingBox();
shapeEle.popParentContext();
@@ -222,10 +240,10 @@ public class Use extends ShapeElement { if (getPres(sty.setName("xlink:href")))
{
URI src = sty.getURIValue(getXMLBase());
- SVGElement newVal = diagram.getUniverse().getElement(src);
- if (newVal != href)
+// SVGElement newVal = diagram.getUniverse().getElement(src);
+ if (!src.equals(href))
{
- href = newVal;
+ href = src;
shapeChange = true;
}
}
|