mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 16:47:31 -05:00
fix src folder structure
This commit is contained in:
214
src/main/java/org/jdesktop/swingx/mapviewer/Tile.java
Normal file
214
src/main/java/org/jdesktop/swingx/mapviewer/Tile.java
Normal file
@@ -0,0 +1,214 @@
|
||||
/*
|
||||
* Tile.java
|
||||
*
|
||||
* Created on March 14, 2006, 4:53 PM
|
||||
*
|
||||
* To change this template, choose Tools | Template Manager
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
package org.jdesktop.swingx.mapviewer;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.lang.ref.SoftReference;
|
||||
|
||||
import org.jdesktop.beans.AbstractBean;
|
||||
|
||||
/**
|
||||
* The Tile class represents a particular square image piece of the world bitmap at a particular zoom level.
|
||||
* @author joshy
|
||||
*/
|
||||
|
||||
public class Tile extends AbstractBean
|
||||
{
|
||||
/**
|
||||
* The loading priority
|
||||
*/
|
||||
@SuppressWarnings("javadoc")
|
||||
public enum Priority
|
||||
{
|
||||
High, Low
|
||||
}
|
||||
|
||||
private Priority priority = Priority.High;
|
||||
|
||||
private TileFactory dtf;
|
||||
|
||||
private boolean isLoading = false;
|
||||
|
||||
// Most Recently Accessed Tiles. These are strong references, to prevent reloading
|
||||
// of most recently used tiles.
|
||||
// private static final Map<URI, BufferedImage> recentlyAccessed = new HashMap<URI, BufferedImage>();
|
||||
// private static final TileCache cache = new TileCache();
|
||||
|
||||
/**
|
||||
* The url of the image to load for this tile
|
||||
*/
|
||||
private String url;
|
||||
|
||||
/**
|
||||
* Indicates that loading has succeeded. A PropertyChangeEvent will be fired when the loading is completed
|
||||
*/
|
||||
|
||||
private boolean loaded = false;
|
||||
/**
|
||||
* The zoom level this tile is for
|
||||
*/
|
||||
private int zoom, x, y;
|
||||
|
||||
/**
|
||||
* The image loaded for this Tile
|
||||
*/
|
||||
SoftReference<BufferedImage> image = new SoftReference<BufferedImage>(null);
|
||||
|
||||
/**
|
||||
* Create a new Tile at the specified tile point and zoom level
|
||||
* @param x the x value
|
||||
* @param y the y value
|
||||
* @param zoom the zoom level
|
||||
*/
|
||||
public Tile(int x, int y, int zoom)
|
||||
{
|
||||
loaded = false;
|
||||
this.zoom = zoom;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new Tile that loads its data from the given URL. The URL must resolve to an image
|
||||
* @param x the x value
|
||||
* @param y the y value
|
||||
* @param zoom the zoom level
|
||||
* @param url the URL
|
||||
* @param priority the priority
|
||||
* @param dtf the tile factory
|
||||
*/
|
||||
Tile(int x, int y, int zoom, String url, Priority priority, TileFactory dtf)
|
||||
{
|
||||
this.url = url;
|
||||
loaded = false;
|
||||
this.zoom = zoom;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.priority = priority;
|
||||
this.dtf = dtf;
|
||||
// startLoading();
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if this tile's underlying image has been successfully loaded yet.
|
||||
* @return true if the Tile has been loaded
|
||||
*/
|
||||
public synchronized boolean isLoaded()
|
||||
{
|
||||
return loaded;
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggles the loaded state, and fires the appropriate property change notification
|
||||
* @param loaded the loaded flag
|
||||
*/
|
||||
synchronized void setLoaded(boolean loaded)
|
||||
{
|
||||
boolean old = isLoaded();
|
||||
this.loaded = loaded;
|
||||
firePropertyChange("loaded", old, isLoaded());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the Image associated with this Tile. This is a read only property This may return null at any time,
|
||||
* however if this returns null, a load operation will automatically be started for it.
|
||||
*/
|
||||
public BufferedImage getImage()
|
||||
{
|
||||
BufferedImage img = image.get();
|
||||
if (img == null)
|
||||
{
|
||||
setLoaded(false);
|
||||
|
||||
// tile factory can be null if the tile has invalid coords or zoom
|
||||
if (dtf != null)
|
||||
{
|
||||
dtf.startLoading(this);
|
||||
}
|
||||
}
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the location in the world at this zoom level that this tile should be placed
|
||||
*/
|
||||
/*
|
||||
* public TilePoint getLocation() { return location; }
|
||||
*/
|
||||
|
||||
/**
|
||||
* @return the zoom level that this tile belongs in
|
||||
*/
|
||||
public int getZoom()
|
||||
{
|
||||
return zoom;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the isLoading
|
||||
*/
|
||||
public boolean isLoading()
|
||||
{
|
||||
return isLoading;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param isLoading the isLoading to set
|
||||
*/
|
||||
public void setLoading(boolean isLoading)
|
||||
{
|
||||
this.isLoading = isLoading;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the loading priority of this tile.
|
||||
* @return the priority
|
||||
*/
|
||||
public Priority getPriority()
|
||||
{
|
||||
return priority;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the loading priority of this tile.
|
||||
* @param priority the priority to set
|
||||
*/
|
||||
public void setPriority(Priority priority)
|
||||
{
|
||||
this.priority = priority;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the URL of this tile.
|
||||
* @return the url
|
||||
*/
|
||||
public String getURL()
|
||||
{
|
||||
return url;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the x value
|
||||
*/
|
||||
public int getX()
|
||||
{
|
||||
return x;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the y value
|
||||
*/
|
||||
public int getY()
|
||||
{
|
||||
return y;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user