-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.g2d.image.impl;\r
-\r
-import java.awt.image.BufferedImage;\r
-import java.io.IOException;\r
-import java.net.URL;\r
-\r
-import javax.imageio.ImageIO;\r
-\r
-import org.simantics.g2d.image.Image;\r
-import org.simantics.g2d.image.ImageUtils;\r
-import org.simantics.g2d.svg.SVGImage;\r
-import org.simantics.utils.datastructures.cache.IFactory;\r
-import org.simantics.utils.datastructures.cache.ProvisionException;\r
-\r
-/**\r
- * Creates images at an URL.\r
- * \r
- * @See {@link ImageUtils}\r
- * @author Toni Kalajainen\r
- * @deprecated does not work with org.simantics.scenegraph\r
- */\r
-@Deprecated\r
-public class ImageURLFactory implements IFactory<Image> {\r
-\r
- URL url;\r
-\r
- public ImageURLFactory(URL url)\r
- {\r
- if (url==null) throw new IllegalArgumentException("null arg");\r
- this.url = url;\r
- }\r
-\r
- @Override\r
- public Image get() throws ProvisionException {\r
- boolean svg = url.getFile().toLowerCase().endsWith(".svg");\r
-\r
- if (svg) {\r
- try {\r
- // FIXME: provide nodeIdentifier argument from outside of the factory\r
- return SVGImage.loadFromURL(url.toString(), url);\r
- } catch (IOException e) {\r
- throw new ProvisionException(e);\r
- }\r
- }\r
-\r
- // Try opening with ImageIO\r
- try {\r
- BufferedImage bi = ImageIO.read(url);\r
- return new AWTImage(bi);\r
- } catch (IOException e) {\r
- throw new ProvisionException(e);\r
- }\r
- }\r
-\r
- @Override\r
- public int hashCode() {\r
- return url.hashCode() + 243243243;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- if (obj == null) return false;\r
- if (!obj.getClass().equals(getClass())) return false;\r
- return ((ImageURLFactory)obj).url.equals(url);\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.g2d.image.impl;
+
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.imageio.ImageIO;
+
+import org.simantics.g2d.image.Image;
+import org.simantics.g2d.image.ImageUtils;
+import org.simantics.g2d.svg.SVGImage;
+import org.simantics.utils.datastructures.cache.IFactory;
+import org.simantics.utils.datastructures.cache.ProvisionException;
+
+/**
+ * Creates images at an URL.
+ *
+ * @See {@link ImageUtils}
+ * @author Toni Kalajainen
+ * @deprecated does not work with org.simantics.scenegraph
+ */
+@Deprecated
+public class ImageURLFactory implements IFactory<Image> {
+
+ URL url;
+
+ public ImageURLFactory(URL url)
+ {
+ if (url==null) throw new IllegalArgumentException("null arg");
+ this.url = url;
+ }
+
+ public static Image loadFromURL(String nodeIdentifier, URL url) throws IOException {
+ try (InputStream in = url.openStream()) {
+ return new SVGImage(nodeIdentifier, in);
+ }
+ }
+
+
+ @Override
+ public Image get() throws ProvisionException {
+ boolean svg = url.getFile().toLowerCase().endsWith(".svg");
+
+ if (svg) {
+ try {
+ // FIXME: provide nodeIdentifier argument from outside of the factory
+ return SVGImage.loadFromURL(url.toString(), url);
+ } catch (IOException e) {
+ throw new ProvisionException(e);
+ }
+ }
+
+ // Try opening with ImageIO
+ try {
+ BufferedImage bi = ImageIO.read(url);
+ return new AWTImage(bi);
+ } catch (IOException e) {
+ throw new ProvisionException(e);
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ return url.hashCode() + 243243243;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) return false;
+ if (!obj.getClass().equals(getClass())) return false;
+ return ((ImageURLFactory)obj).url.equals(url);
+ }
+
+}