Revision: 6399
http://sourceforge.net/p/jump-pilot/code/6399
Author: michaudm
Date: 2020-08-31 09:10:20 +0000 (Mon, 31 Aug 2020)
Log Message:
-----------
* bugfix #385 RasterImageLayer was not cloneable
Modified Paths:
--------------
core/trunk/ChangeLog
core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java
Modified: core/trunk/ChangeLog
===================================================================
--- core/trunk/ChangeLog 2020-08-30 21:04:07 UTC (rev 6398)
+++ core/trunk/ChangeLog 2020-08-31 09:10:20 UTC (rev 6399)
@@ -4,6 +4,9 @@
# 3. be concise but convey the change in a way that ordinary users understand
#<-------------------------------- 80 chars
---------------------------------->#
+2020-08-31 mmichaud <[email protected]>
+ * bugfix #385 RasterImageLayer was not cloneable
+
2020-08-28 Nicolas Ribot
* Protection against null GeometryColumn when building spatial filter for
Spatialite
* Cleaned-up log message (OJ Logger), removed obsolete TODOs
Modified: core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java
===================================================================
--- core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java
2020-08-30 21:04:07 UTC (rev 6398)
+++ core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java
2020-08-31 09:10:20 UTC (rev 6399)
@@ -22,13 +22,10 @@
import java.awt.image.ColorModel;
import java.awt.image.IndexColorModel;
import java.awt.image.Raster;
-//import java.awt.image.renderable.ParameterBlock;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.UUID;
-//import javax.media.jai.JAI;
-
import org.openjump.core.ccordsys.utils.SRSInfo;
import org.openjump.util.metaData.MetaDataMap;
import org.openjump.util.metaData.ObjectContainingMetaInformation;
@@ -62,7 +59,7 @@
* @version $Rev: 2509 $
* modified: [sstein]: 16.Feb.2009 changed logger-entries to comments, used
frame.warnUser
*/
-public final class RasterImageLayer extends AbstractLayerable implements
ObjectContainingMetaInformation {
+public final class RasterImageLayer extends AbstractLayerable implements
ObjectContainingMetaInformation, Cloneable {
protected static Blackboard blackboard = null;
@@ -218,13 +215,15 @@
/**
* Constructor to be used in case the image was not loaded from a file, so
there is
* no file name, but an image
- *
+ * [mmichaud 2020-08-31] deprecated as this constructor seems not used and
building a
+ * RasterImageLayer without fileName is errorprone
*@param name name of the layer
*@param layerManager
*@param imageToDisplay the image (if already loaded) or null
*@param newRaster the raster (if already loaded) or null
- *@param envelope real-world coordinates of the image
+ *@param wholeImageEnvelope real-world coordinates of the image
*/
+ @Deprecated
public RasterImageLayer(String name, LayerManager layerManager,
BufferedImage imageToDisplay, Raster newRaster, Envelope wholeImageEnvelope) {
super(name, layerManager);
@@ -235,12 +234,12 @@
if (imageToDisplay != null)
this.setImage(imageToDisplay);
- else{
+ else {
//logger.printError("given image is NULL");
}
if (newRaster != null) {
// this.setRasterData(newRaster);
- }else{
+ } else {
//logger.printError("given raster is NULL");
}
//[sstein 9.Aug.2010]
@@ -264,28 +263,16 @@
@Override
public Object clone() throws CloneNotSupportedException {
- super.clone();
RasterImageLayer raster = null;
- if (this.isNeedToKeepImage()) {
- try {
- raster = new RasterImageLayer(getName(), getLayerManager(),
getImageForDisplay(), getRasterData(null), new
Envelope(getWholeImageEnvelope()));
- } catch (IOException ex) {
- Logger.error(ex);
- } catch (NoninvertibleTransformException ex) {
- Logger.error(ex);
- } catch (Exception ex) {
- Logger.error(ex);
- }
- } else {
- try {
- raster = new RasterImageLayer(getName(), getLayerManager(),
getImageFileName(), getImageForDisplay(), new
Envelope(getWholeImageEnvelope()));
- } catch (IOException ex) {
- Logger.error(ex);
- } catch (NoninvertibleTransformException ex) {
- Logger.error(ex);
- } catch (Exception ex) {
- Logger.error(ex);
- }
+ try {
+ raster = new RasterImageLayer(getName(), getLayerManager(),
getImageFileName(), getImageForDisplay(), new
Envelope(getWholeImageEnvelope()));
+ raster.needToKeepImage = needToKeepImage;
+ } catch (IOException ex) {
+ Logger.error(ex);
+ } catch (NoninvertibleTransformException ex) {
+ Logger.error(ex);
+ } catch (Exception ex) {
+ Logger.error(ex);
}
// clone must produce a layerable with the same name (as for Layer)
not a unique name
if (raster != null) {
@@ -302,7 +289,7 @@
* Giuseppe Aruta [2020-8-26]- Workaround to solve Error:
* Could not find mediaLib accelerator wrapper class
* This seems also to speed up the rendering of the image
- * @param before
+ * @param im
* @param xScale
* @param yScale
* @return
@@ -355,7 +342,6 @@
return bim;
- //return PlanarImage.wrapRenderedImage(bim);
}
/**
@@ -380,7 +366,10 @@
//GeoTIFFRaster grr = new GeoTIFFRaster((new
File(imageFileName)).toURI().toString());
- java.awt.Point imageDims =
RasterImageIO.getImageDimensions(imageFileName);
+ java.awt.Point imageDims = image == null ?
+ RasterImageIO.getImageDimensions(imageFileName)
+ : new Point(image.getWidth(), image.getHeight());
+
origImageWidth = imageDims.x;
origImageHeight = imageDims.y;
@@ -778,8 +767,9 @@
/**
* Method to change the coordinates of the image and later apply the
- * changes to the RasterImageLayer by using {@link
RasterImageLayer#setGeometryAsEnvelope(Geometry)}.
- *@return return the imageEnvelope (= bounding box) as a geometry,
+ * changes to the RasterImageLayer by using
+ * {@link RasterImageLayer#setGeometryAsWholeImageEnvelope(Geometry)}.
+ * @return return the imageEnvelope (= bounding box) as a geometry,
*/
public Polygon getWholeImageEnvelopeAsGeometry(){
Coordinate[] coordinates = new Coordinate[5];
@@ -810,7 +800,8 @@
}
/**
- * Method to set the coordinates of the image, e.g. after changing them
after using {@link RasterImageLayer#getEnvelopeAsGeometry()}.
+ * Method to set the coordinates of the image, e.g. after changing them
after using
+ * {@link RasterImageLayer#getWholeImageEnvelopeAsGeometry()}.
*/
public void setGeometryAsWholeImageEnvelope(Geometry geometry){
setWholeImageEnvelope(geometry.getEnvelopeInternal());
@@ -822,7 +813,7 @@
/**
* Add transparency to the image (more exactly: to each pixel which a
color == this.transparentColor)
- *@param pImage the image
+ *@param bim the image
*/
private BufferedImage setupTransparency(BufferedImage bim){
//BufferedImage bim = pImage.getAsBufferedImage();
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel