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 <m.michael.mich...@orange.fr>
+  * 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
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to