package org.openstreetmap.josm.plugins.walkingpapers;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
/**
* Class that contains information about one single slippy map tile.
*
* @author Frederik Ramm <frederik@remote.org>
* @author LuVar <lubomir.varga@freemap.sk>
* @author Dave Hansen <dave@sr71.net>
*
*/
public class WalkingPapersTile {
private Image tileImage;
long timestamp;
int x;
int y;
int z;
WalkingPapersLayer parentLayer;
public WalkingPapersTile(int x, int y, int z, WalkingPapersLayer parent) {
this.x = x;
this.y = y;
this.z = z;
parentLayer = parent;
timestamp = System.currentTimeMillis();
}
public URL getImageUrl() {
return parentLayer.formatImageUrl(x, y, z);
}
public void loadImage() {
URL imageUrl = this.getImageUrl();
tileImage = Toolkit.getDefaultToolkit().createImage(imageUrl);
Toolkit.getDefaultToolkit().sync();
timestamp = System.currentTimeMillis();
}
public Image getImage() {
timestamp = System.currentTimeMillis();
return tileImage;
}
public void dropImage() {
tileImage = null;
// This should work in theory but doesn't seem to actually
// reduce the X server memory usage
//tileImage.flush();
}
public long access_time() {
return timestamp;
}
public boolean equals(Object o) {
if (!(o instanceof WalkingPapersTile))
return false;
WalkingPapersTile other = (WalkingPapersTile) o;
return (this.x == other.x && this.y == other.y && this.z == other.z);
}
}