package org.incha.ui.jripples; import java.awt.Graphics2D; import java.awt.Image; import java.awt.MediaTracker; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.net.URL; import javax.swing.JComponent; public final class JRipplesResources { @SuppressWarnings("serial") private static final JComponent component = new JComponent(){}; /** * Default constructor. */ private JRipplesResources() { super(); } /** * @param resource resource name. * @return image. */ public static Image getImage(final String resource) { final MediaTracker tracker = new MediaTracker(component); final URL url = JRipplesResources.class.getClassLoader().getResource(resource); final Image image = url == null ? null : Toolkit.getDefaultToolkit().getImage(url); synchronized(tracker) { tracker.addImage(image, 17); try { tracker.waitForID(17, 0); } catch (final InterruptedException e) { throw new RuntimeException(e); } } return image; } /** * @param resource * @return buffered image from given resource. */ public static BufferedImage getBufferedImage(final String resource) { final Image im = getImage(resource); final BufferedImage image = new BufferedImage( im.getWidth(component), im.getHeight(component), BufferedImage.TYPE_INT_ARGB_PRE); final Graphics2D g = image.createGraphics(); try { g.drawImage(im, 0, 0, null); } finally { g.dispose(); } return image; } }