/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package automenta.spacenet.space.surface;
import automenta.spacenet.space.SpaceState;
import com.ardor3d.image.Texture;
import com.ardor3d.image.Texture2D;
import com.ardor3d.image.TextureStoreFormat;
import com.ardor3d.image.util.AWTImageLoader;
import com.ardor3d.renderer.state.TextureState;
import com.ardor3d.scenegraph.Spatial;
import com.ardor3d.util.TextureManager;
import com.ardor3d.util.resource.ResourceSource;
import com.ardor3d.util.resource.URLResourceSource;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Logger;
/**
*
* @author seh
*/
public class BitmapSurface extends TextureState implements SpaceState {
static {
AWTImageLoader.registerLoader();
}
private URL url;
private Texture texture;
private double pixelHeight;
private double pixelWidth;
public BitmapSurface(URL url) {
super();
setUrl(url);
}
public BitmapSurface(String url) throws MalformedURLException {
this(new URL(url));
}
@Override
public void apply(Spatial s) {
s.setRenderState(this);
}
@Override
public void unapply(Spatial s) {
}
public URL getUrl() {
return url;
}
public void setUrl(URL url) {
this.url = url;
texture = new Texture2D();
try {
setTexture(TextureManager.load(new URLResourceSource(getUrl()), Texture.MinificationFilter.BilinearNoMipMaps, TextureStoreFormat.GuessNoCompressedFormat, true));
getTexture().setWrap(Texture.WrapMode.Repeat);
pixelHeight = getTexture().getImage().getHeight();
pixelWidth = getTexture().getImage().getWidth();
}
catch (Exception e) {
Logger.getLogger(BitmapSurface.class.getName()).severe(e.toString());
pixelHeight = 1;
pixelWidth = 1;
}
}
public double getPixelHeight() {
return pixelHeight;
}
public double getPixelWidth() {
return pixelWidth;
}
}