Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Salamander, SVG und Clip Path

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Salamander, SVG und Clip Path

    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:
    Code:
    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:
    Code:
    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
    Geändert von BlueJay (13-07-2011 um 06:58 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

  2. #2
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Hi,

    es wäre nett, wenn Kitfox den Fehler beheben würde, kann ja nicht so ein großer Akt sein.

    Hier nochmal die Ecke, wo es bei denen knallt:

    try
    {
    g.getClipBounds(clipBounds);
    }
    catch (Exception e)
    {
    //For some reason, getClipBounds can throw a null pointer exception for
    // some types of Graphics2D
    ignoreClip = true;
    }
    und hier der Clip, der das verursacht (Schildform):

    <clipPath id="clip0"><path d="M0,0 L100,0 L100,65 C100,125 0,125 0,65 Z" /></clipPath>
    Das Ganze Bild soll in ein Image gestopft werden (siehe 1.Posing)

    Entwicklungsumgebung:
    Product Version: NetBeans IDE 6.9.1 (Build 201011082200)
    Java: 1.6.0_23; Java HotSpot(TM) Client VM 19.0-b09
    System: Windows Vista version 6.0 running on x86; Cp1252; de_DE (nb)


    Die Kitfox-Bibliothek ist nun mal zum einfachen Darstellen einiger SVG-Bilder die geeigneteste Bibliothek, und vor allen Dingen vollständig, was man von einem großen Konkurrenten nicht sagen kann.

    Gruß,
    Ulrike
    Eigentlich ganz einfach, wenn man's weiss!

  3. #3
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    na, das mit dem Clip-Path geht bei Inline-SVG mit Chrome und anderen Browsern auch noch in die Hose, wenn ein Clip-Path dazukommt.

    Probieren wir es später mal wieder.

    Gruß,
    Ulrike
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •