X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fdata%2FPhoto.java;h=3646cb5201ba706d3d2aae30fa021d8407a41adf;hp=52743f7a34659d40bd6aebb46b85759b0b524902;hb=5625a1abadb5f2ca5f017fe7dbda1d5141cb637b;hpb=23959e65a6a0d581e657b07186d18b7a1ac5afeb diff --git a/tim/prune/data/Photo.java b/tim/prune/data/Photo.java index 52743f7..3646cb5 100644 --- a/tim/prune/data/Photo.java +++ b/tim/prune/data/Photo.java @@ -1,7 +1,10 @@ package tim.prune.data; +import java.awt.Dimension; import java.io.File; +import javax.swing.ImageIcon; + /** * Class to represent a photo and link to DataPoint */ @@ -9,8 +12,18 @@ public class Photo { /** File where photo is stored */ private File _file = null; + /** Timestamp, if any */ + private Timestamp _timestamp = null; /** Associated DataPoint if correlated */ private DataPoint _dataPoint = null; + /** Size of original image */ + private Dimension _size = null; + /** Status of photo when loaded */ + private byte _originalStatus = PhotoStatus.NOT_CONNECTED; + /** Current photo status */ + private byte _currentStatus = PhotoStatus.NOT_CONNECTED; + // TODO: Need to store caption for image? + // TODO: Need to store thumbnail for image? /** @@ -20,7 +33,6 @@ public class Photo public Photo(File inFile) { _file = inFile; - // TODO: Cache photo file contents to allow thumbnail preview } @@ -40,6 +52,15 @@ public class Photo public void setDataPoint(DataPoint inPoint) { _dataPoint = inPoint; + // set status according to point + if (inPoint == null) + { + setCurrentStatus(PhotoStatus.NOT_CONNECTED); + } + else + { + setCurrentStatus(PhotoStatus.CONNECTED); + } } /** @@ -50,6 +71,116 @@ public class Photo return _dataPoint; } + /** + * @param inTimestamp Timestamp of photo + */ + public void setTimestamp(Timestamp inTimestamp) + { + _timestamp = inTimestamp; + } + + /** + * @return timestamp of photo + */ + public Timestamp getTimestamp() + { + return _timestamp; + } + + /** + * Calculate the size of the image (slow) + */ + private void calculateSize() + { + ImageIcon icon = new ImageIcon(_file.getAbsolutePath()); + int width = icon.getIconWidth(); + int height = icon.getIconHeight(); + if (width > 0 && height > 0) + { + _size = new Dimension(width, height); + } + } + + /** + * @return size of image as Dimension object + */ + public Dimension getSize() + { + if (_size == null) + { + calculateSize(); + } + return _size; + } + + /** + * @return width of the image, if known + */ + public int getWidth() + { + if (_size == null) + { + calculateSize(); + if (_size == null) {return -1;} + } + return _size.width; + } + + /** + * @return height of the image, if known + */ + public int getHeight() + { + if (_size == null) + { + calculateSize(); + if (_size == null) {return -1;} + } + return _size.height; + } + + /** + * @param inStatus status of photo when loaded + */ + public void setOriginalStatus(byte inStatus) + { + _originalStatus = inStatus; + _currentStatus = inStatus; + } + + /** + * @return status of photo when it was loaded + */ + public byte getOriginalStatus() + { + return _originalStatus; + } + + /** + * @return current status of photo + */ + public byte getCurrentStatus() + { + return _currentStatus; + } + /** + * @param inStatus current status of photo + */ + public void setCurrentStatus(byte inStatus) + { + _currentStatus = inStatus; + } + + + /** + * Delete the cached data when the Photo is no longer needed + */ + public void resetCachedData() + { + _size = null; + // remove thumbnail too + } + /** * Check if a Photo object refers to the same File as another * @param inOther other Photo object