From 091a1e0179cb264cc2cab6e3b11ea31045c8536d Mon Sep 17 00:00:00 2001 From: kitfox Date: Tue, 29 May 2007 23:33:23 +0000 Subject: Restoring SVG Salamander to it's original code base, and updating build scripts. git-svn-id: https://svn.java.net/svn/svgsalamander~svn/trunk/svg-core@36 7dc7fa77-23fb-e6ad-8e2e-c86bd48ed22b --- .../java/com/kitfox/svg/app/beans/SVGPanel.java | 243 +++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 src/main/java/com/kitfox/svg/app/beans/SVGPanel.java (limited to 'src/main/java/com/kitfox/svg/app/beans/SVGPanel.java') diff --git a/src/main/java/com/kitfox/svg/app/beans/SVGPanel.java b/src/main/java/com/kitfox/svg/app/beans/SVGPanel.java new file mode 100644 index 0000000..396bd9b --- /dev/null +++ b/src/main/java/com/kitfox/svg/app/beans/SVGPanel.java @@ -0,0 +1,243 @@ +/* + * SVGIcon.java + * + * Created on April 21, 2005, 10:43 AM + */ + +package com.kitfox.svg.app.beans; + +import javax.swing.*; +import java.awt.*; +import java.awt.geom.*; +import java.net.*; +import java.beans.*; + +import com.kitfox.svg.*; + +/** + * + * @author kitfox + */ +public class SVGPanel extends JPanel +{ + public static final long serialVersionUID = 1; + + + SVGUniverse svgUniverse = SVGCache.getSVGUniverse(); + + private boolean antiAlias; + +// private String svgPath; + URI svgURI; + + private boolean scaleToFit; + AffineTransform scaleXform = new AffineTransform(); + + /** Creates new form SVGIcon */ + public SVGPanel() + { + initComponents(); + } + + public int getSVGHeight() + { + if (scaleToFit) return getPreferredSize().height; + + SVGDiagram diagram = svgUniverse.getDiagram(svgURI); + if (diagram == null) return 0; + return (int)diagram.getHeight(); + } + + public int getSVGWidth() + { + if (scaleToFit) return getPreferredSize().width; + + SVGDiagram diagram = svgUniverse.getDiagram(svgURI); + if (diagram == null) return 0; + return (int)diagram.getWidth(); + } + +// Draw the icon at the specified location. + public void paintComponent(Graphics gg) + { + super.paintComponent(gg); + + Graphics2D g = (Graphics2D)gg; + + Object oldAliasHint = g.getRenderingHint(RenderingHints.KEY_ANTIALIASING); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, antiAlias ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF); + + + SVGDiagram diagram = svgUniverse.getDiagram(svgURI); + if (diagram == null) return; + + if (!scaleToFit) + { + try + { + diagram.render(g); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, oldAliasHint); + } + catch (SVGException e) + { + throw new RuntimeException(e); + } + return; + } + + Dimension dim = getSize(); + final int width = dim.width; + final int height = dim.height; +// int width = getWidth(); +// int height = getHeight(); + +// if (width == 0 || height == 0) +// { +// //Chances are we're rendering offscreen +// Dimension dim = getSize(); +// width = dim.width; +// height = dim.height; +// return; +// } + +// g.setClip(0, 0, dim.width, dim.height); + + + final Rectangle2D.Double rect = new Rectangle2D.Double(); + diagram.getViewRect(rect); + + scaleXform.setToScale(width / rect.width, height / rect.height); + + AffineTransform oldXform = g.getTransform(); + g.transform(scaleXform); + + try + { + diagram.render(g); + } + catch (SVGException e) + { + throw new RuntimeException(e); + } + + g.setTransform(oldXform); + + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, oldAliasHint); + } + + public SVGUniverse getSvgUniverse() + { + return svgUniverse; + } + + public void setSvgUniverse(SVGUniverse svgUniverse) + { + SVGUniverse old = this.svgUniverse; + this.svgUniverse = svgUniverse; + firePropertyChange("svgUniverse", old, svgUniverse); + } + + public URI getSvgURI() + { + return svgURI; + } + + public void setSvgURI(URI svgURI) + { + URI old = this.svgURI; + this.svgURI = svgURI; + firePropertyChange("svgURI", old, svgURI); + } + + /** + * Most resources your component will want to access will be resources on your classpath. + * This method will interpret the passed string as a path in the classpath and use + * Class.getResource() to determine the URI of the SVG. + */ + public void setSvgResourcePath(String resourcePath) throws SVGException + { + URI old = this.svgURI; + + try + { + svgURI = new URI(getClass().getResource(resourcePath).toString()); +//System.err.println("SVGPanel: new URI " + svgURI + " from path " + resourcePath); + + firePropertyChange("svgURI", old, svgURI); + + repaint(); + } + catch (Exception e) + { + throw new SVGException("Could not resolve path " + resourcePath, e); +// svgURI = old; + } + } + + public boolean isScaleToFit() + { + return scaleToFit; + } + + public void setScaleToFit(boolean scaleToFit) + { + boolean old = this.scaleToFit; + this.scaleToFit = scaleToFit; + firePropertyChange("scaleToFit", old, scaleToFit); + } + + /** + * @return true if antiAliasing is turned on. + * @deprecated + */ + public boolean getUseAntiAlias() + { + return getAntiAlias(); + } + + /** + * @param antiAlias true to use antiAliasing. + * @deprecated + */ + public void setUseAntiAlias(boolean antiAlias) + { + setAntiAlias(antiAlias); + } + + /** + * @return true if antiAliasing is turned on. + */ + public boolean getAntiAlias() + { + return antiAlias; + } + + /** + * @param antiAlias true to use antiAliasing. + */ + public void setAntiAlias(boolean antiAlias) + { + boolean old = this.antiAlias; + this.antiAlias = antiAlias; + firePropertyChange("antiAlias", old, antiAlias); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() + { + + setLayout(new java.awt.BorderLayout()); + + } + // //GEN-END:initComponents + + + // Variables declaration - do not modify//GEN-BEGIN:variables + // End of variables declaration//GEN-END:variables + +} -- cgit v1.2.3-55-g7522