1 /*******************************************************************************
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.g2d.image.impl;
14 import java.awt.image.BufferedImage;
15 import java.io.IOException;
16 import java.io.InputStream;
19 import javax.imageio.ImageIO;
21 import org.simantics.g2d.image.Image;
22 import org.simantics.g2d.image.ImageUtils;
23 import org.simantics.g2d.svg.SVGImage;
24 import org.simantics.utils.datastructures.cache.IFactory;
25 import org.simantics.utils.datastructures.cache.ProvisionException;
28 * Creates images at an URL.
30 * @See {@link ImageUtils}
31 * @author Toni Kalajainen
32 * @deprecated does not work with org.simantics.scenegraph
35 public class ImageURLFactory implements IFactory<Image> {
39 public ImageURLFactory(URL url)
41 if (url==null) throw new IllegalArgumentException("null arg");
45 public static Image loadFromURL(String nodeIdentifier, URL url) throws IOException {
46 try (InputStream in = url.openStream()) {
47 return new SVGImage(nodeIdentifier, in);
53 public Image get() throws ProvisionException {
54 boolean svg = url.getFile().toLowerCase().endsWith(".svg");
58 // FIXME: provide nodeIdentifier argument from outside of the factory
59 return SVGImage.loadFromURL(url.toString(), url);
60 } catch (IOException e) {
61 throw new ProvisionException(e);
65 // Try opening with ImageIO
67 BufferedImage bi = ImageIO.read(url);
68 return new AWTImage(bi);
69 } catch (IOException e) {
70 throw new ProvisionException(e);
75 public int hashCode() {
76 return url.hashCode() + 243243243;
80 public boolean equals(Object obj) {
81 if (obj == null) return false;
82 if (!obj.getClass().equals(getClass())) return false;
83 return ((ImageURLFactory)obj).url.equals(url);