BlueJay
11-07-2011, 18:04
Hallo Leute,
nachdem ich nun endlich mit Salamander SVG-Zeichenketten als Bild darstellen lassen kann, kommt schon die nächste Frage:
Ist bei einem SVG ein Clip-Path angegeben, gibt es einen Absturz in der Salamander-Bibiothek, ausgelöst von SVGDiagramm.render().
Im Testprogramm von Salamander selbst kommt es bei diesem SVG zu seltsamen Bildfehlern.
Die Browser können es korrekt darstellen, also liegt im XML-Teil wohl kein Fehler vor.
Die Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.geom.Area.<init>(Area.java:108)
at com.kitfox.svg.RenderableElement.beginLayer(Render ableElement.java:144)
at com.kitfox.svg.Group.render(Group.java:163)
at com.kitfox.svg.Use.render(Use.java:128)
at com.kitfox.svg.Group.render(Group.java:196)
at com.kitfox.svg.SVGRoot.render(SVGRoot.java:290)
at com.kitfox.svg.SVGDiagram.render(SVGDiagram.java:9 4)
at svgmahjongg.svgpanel.set_size(svgpanel.java:149)
Laden des SVG, es sollte danach im SVGUniverse svgu zur Verfügung stehen:
StringReader reader = new StringReader(svgstring);
dia[id]=svgu.getDiagram(svgu.loadSVG(reader,"tile"+id));
uri[id]=dia[id].getXMLBase(); // zu Testzwecken
reader.close();
Darstellen als Image:
bild[i] = new BufferedImage(wbreite, whoehe, BufferedImage.TYPE_INT_ARGB);
bg2[i]=(Graphics2D) bild[i].getGraphics();
bg2[i].setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
dia[i].setIgnoringClipHeuristic(true); // Hier der Grund für den Crash?
dia[i].setDeviceViewport(new Rectangle(0,0,breite,hoehe));
dia[i].render(bg2[i]); // <-- hier knallt's bei Anwendung eines clipPath
Hat jemand eine Idee, wie ich das trotzdem dargestellt bekomme?
Der Clip-Path ist zur Zeit ein geschlossener Path mit einem Bogen drin.
Gruß,
Ulrike
nachdem ich nun endlich mit Salamander SVG-Zeichenketten als Bild darstellen lassen kann, kommt schon die nächste Frage:
Ist bei einem SVG ein Clip-Path angegeben, gibt es einen Absturz in der Salamander-Bibiothek, ausgelöst von SVGDiagramm.render().
Im Testprogramm von Salamander selbst kommt es bei diesem SVG zu seltsamen Bildfehlern.
Die Browser können es korrekt darstellen, also liegt im XML-Teil wohl kein Fehler vor.
Die Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.geom.Area.<init>(Area.java:108)
at com.kitfox.svg.RenderableElement.beginLayer(Render ableElement.java:144)
at com.kitfox.svg.Group.render(Group.java:163)
at com.kitfox.svg.Use.render(Use.java:128)
at com.kitfox.svg.Group.render(Group.java:196)
at com.kitfox.svg.SVGRoot.render(SVGRoot.java:290)
at com.kitfox.svg.SVGDiagram.render(SVGDiagram.java:9 4)
at svgmahjongg.svgpanel.set_size(svgpanel.java:149)
Laden des SVG, es sollte danach im SVGUniverse svgu zur Verfügung stehen:
StringReader reader = new StringReader(svgstring);
dia[id]=svgu.getDiagram(svgu.loadSVG(reader,"tile"+id));
uri[id]=dia[id].getXMLBase(); // zu Testzwecken
reader.close();
Darstellen als Image:
bild[i] = new BufferedImage(wbreite, whoehe, BufferedImage.TYPE_INT_ARGB);
bg2[i]=(Graphics2D) bild[i].getGraphics();
bg2[i].setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
dia[i].setIgnoringClipHeuristic(true); // Hier der Grund für den Crash?
dia[i].setDeviceViewport(new Rectangle(0,0,breite,hoehe));
dia[i].render(bg2[i]); // <-- hier knallt's bei Anwendung eines clipPath
Hat jemand eine Idee, wie ich das trotzdem dargestellt bekomme?
Der Clip-Path ist zur Zeit ein geschlossener Path mit einem Bogen drin.
Gruß,
Ulrike