package com.explodingpixels.macwidgets.plaf;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
import com.explodingpixels.widgets.ImageUtils;
public class ArtworkUtils {
private ArtworkUtils() {
// utility class - no constructor needed.
}
public static ImageSet getImageSet(URL imageLocation) {
Image image = new ImageIcon(imageLocation).getImage();
// ensure that the given image is divisible by three along the horizontal axis.
checkImageDivisibleByThree(image);
int subImageWidth = image.getWidth(null) / 3;
int imageHeight = image.getHeight(null);
Image inactiveImage = ImageUtils.getSubImage(image, 0, 0, subImageWidth, imageHeight);
Image activeImage = ImageUtils.getSubImage(image, subImageWidth, 0, subImageWidth, imageHeight);
Image pressedImage = ImageUtils.getSubImage(image, subImageWidth * 2, 0, subImageWidth, imageHeight);
return new ImageSet(inactiveImage, activeImage, pressedImage);
}
private static void checkImageDivisibleByThree(Image image) {
if (image.getWidth(null) % 3 != 0) {
throw new IllegalArgumentException(
"The given image should contain three sub-images all of the same size.");
}
}
public static class ImageSet {
private final ImageIcon fInactiveImage;
private final ImageIcon fActiveImage;
private final ImageIcon fPressedImage;
private ImageSet(Image inactiveImage, Image activeImage, Image pressedImage) {
fInactiveImage = new ImageIcon(inactiveImage);
fActiveImage = new ImageIcon(activeImage);
fPressedImage = new ImageIcon(pressedImage);
}
public ImageIcon getInactiveImage() {
return fInactiveImage;
}
public ImageIcon getActiveImage() {
return fActiveImage;
}
public ImageIcon getPressedImage() {
return fPressedImage;
}
}
}