/*
 *  @author Ranides Atterwim <ranides@gmail.com>
 *  @copyright Ranides Atterwim
 *  @license WTFPL
 *  @url http://ranides.net/projects/assira
 */

package net.ranides.assira.awt;

import java.awt.Image;
import java.io.IOException;
import javax.imageio.ImageIO;
import net.ranides.assira.annotations.Meta;
import net.ranides.assira.trace.AdvLogger;
import net.ranides.assira.trace.LoggerUtils;

/**
 * Wsparcie dla szybkiego ładowania obrazków.
 * @author ranides
 */
public final class ImageLoader {
    
    static final AdvLogger LOGGER = LoggerUtils.getLogger();
    
    private ImageLoader() {
        // utility class
    }

    /**
     * Ładuje obrazek z zasobów
     * @param context obiekt oczekujący obrazka, najczęściej po prostu caller. Używany do ustalenia położenia zasobów.
     * @param path Ścieżka do zasobu. Zalecane ścieżki absolutne.
     * @return {@code null} - jeśli wystąpił błąd.
     */
    @Meta.Unsafe()
    public static Image res(Object context, String path) {
        try {
            return ImageIO.read(context.getClass().getResource(path));
        } catch (IOException cause) {
            LOGGER.warn("incorrect resource", cause);
            return null;
        }
    }

}
