Revision: 6619
http://sourceforge.net/p/jump-pilot/code/6619
Author: michaudm
Date: 2020-11-08 23:39:40 +0000 (Sun, 08 Nov 2020)
Log Message:
-----------
Continue simplification of RasterImageLayer and fix problem with RasterSymbology
Modified Paths:
--------------
core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java
core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java
Modified: core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java
===================================================================
--- core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java
2020-11-07 16:16:37 UTC (rev 6618)
+++ core/trunk/src/org/openjump/core/rasterimage/RasterImageIO.java
2020-11-08 23:39:40 UTC (rev 6619)
@@ -1,8 +1,6 @@
package org.openjump.core.rasterimage;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Rectangle;
+import java.awt.*;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
@@ -18,10 +16,7 @@
import java.io.IOException;
import javax.imageio.ImageIO;
-import javax.media.jai.JAI;
-import javax.media.jai.PlanarImage;
-import javax.media.jai.RasterFactory;
-import javax.media.jai.RenderedOp;
+import javax.media.jai.*;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
@@ -394,7 +389,15 @@
return new Point(pImage.getWidth(),
pImage.getHeight());
}
- }else if (filenameOrURL.toLowerCase().endsWith(".tif")
+ } else if (filenameOrURL.toLowerCase().endsWith(".jpg") ||
+ filenameOrURL.toLowerCase().endsWith(".jpeg")) {
+ try {
+ Dimension dimension =
org.apache.commons.imaging.Imaging.getImageSize(new File(filenameOrURL));
+ return new Point((int)dimension.getWidth(),
(int)dimension.getHeight());
+ } catch(ImageReadException e) {
+ throw new IOException(e);
+ }
+ } else if (filenameOrURL.toLowerCase().endsWith(".tif")
||
filenameOrURL.toLowerCase().endsWith(".tiff")) {
RenderedOp renderedOp;
renderedOp= TiffUtilsV2.getRenderedOp(new
File(filenameOrURL));
@@ -402,7 +405,6 @@
if (renderedOp != null) {
return new Point(renderedOp.getWidth(),
renderedOp.getHeight());
}
-
} else if (filenameOrURL.toLowerCase().endsWith(".flt")) {
@@ -416,7 +418,7 @@
return new Point(ga.getnCols(), ga.getnRows());
} else {
-
+ System.out.println("Filename " + filenameOrURL);
BufferedImage image = ImageIO.read(new
File(filenameOrURL));
return new Point(image.getWidth(), image.getHeight());
Modified: core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java
===================================================================
--- core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java
2020-11-07 16:16:37 UTC (rev 6618)
+++ core/trunk/src/org/openjump/core/rasterimage/RasterImageLayer.java
2020-11-08 23:39:40 UTC (rev 6619)
@@ -9,11 +9,7 @@
*/
package org.openjump.core.rasterimage;
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.Image;
-import java.awt.Point;
-import java.awt.Rectangle;
+import java.awt.*;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
@@ -22,6 +18,7 @@
import java.awt.image.Raster;
import java.awt.image.renderable.ParameterBlock;
import java.io.IOException;
+import java.util.Objects;
import java.util.UUID;
import javax.media.jai.JAI;
@@ -34,7 +31,6 @@
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
-import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jump.I18N;
import com.vividsolutions.jump.util.Blackboard;
import com.vividsolutions.jump.util.Timer;
@@ -98,13 +94,12 @@
protected int numBands = 0;
//-- [sstein 2nd Aug 2010] new, since we scale the image now for display
- protected Raster actualRasterData = null;
+ //protected Raster actualRasterData = null;
protected boolean rasterDataChanged = false; //may be needed for rescaling
the image values
- //protected boolean wasScaledForDisplay = false; // never used !
//-- end
-
+
protected BufferedImage scaledBufferedImage = null;
-
+
protected Envelope actualImageEnvelope = null, visibleEnv = null,
oldVisibleEnv;
protected Envelope originalImageEnvelope = null;
@@ -116,7 +111,7 @@
/**
* Flag to control if the image should be deleted from RAM as soon as
possible to save RAM
- * or if it should be keeped e.g. because it was generated
+ * or if it should be kept e.g. because it was generated
* dynamically and can not be loaded from a file again, once it was
deleted.
*/
protected boolean needToKeepImage = false;
@@ -193,8 +188,7 @@
if (imageToDisplay != null)
this.setImage(imageToDisplay);
-// if (newRaster != null)
-// this.setRasterData(newRaster);
+
//[sstein 9.Aug.2010]
long avram = getAvailRAM();
if(avram > 256000000){
@@ -278,7 +272,16 @@
pb.addSource(im);
pb.add(xScale);
pb.add(yScale);
-
+ JAI.create("Scale", pb, null).getAsBufferedImage();
+ // @TODO Try to replace JAI by Graphics2D after migration to 2.0
+ //BufferedImage resizedImage =
+ // new BufferedImage((int)(im.getWidth()*xScale),
(int)(im.getHeight()*yScale), im.getType());
+ //Graphics2D graphics2D = resizedImage.createGraphics();
+
//graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+
//graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
+ //graphics2D.drawImage(im, 0, 0, (int)(im.getWidth()*xScale),
(int)(im.getHeight()*yScale), null);
+ //graphics2D.dispose();
+ //return resizedImage;
return JAI.create("Scale", pb, null).getAsBufferedImage();
}
@@ -294,7 +297,6 @@
grfcs.setColor(color);
grfcs.fillRect( 0, 0, bim.getWidth(), bim.getHeight() );
grfcs.dispose();
- bim.flush();
return bim;
}
@@ -307,10 +309,9 @@
Viewport viewport = layerViewPanel.getViewport();
- if (!this.isVisible() || this.transparencyLevel >= 1.0){
+ if (!this.isVisible() || this.transparencyLevel >= 1.0) {
this.setImageProcessingMode(RasterImageLayer.MODE_NONE);
this.clearImageAndRaster(true);
- Logger.debug("Image " + imageFileName + " is not visible");
return null;
}
@@ -342,9 +343,12 @@
visibleEnv = newVisibleEnv;
symbologyChanged = false;
-
+ this.setNeedToKeepImage(false);
+ clearImageAndRaster(true);
+ // Load the part of the image intersecting the viewport and
setting this.image
reLoadImage();
if(image == null) {
+ // If image does not intersect viewport, it is null
return null;
}
@@ -355,20 +359,16 @@
double scaledWidth = lowerRightCornerOfImage.getX() -
upperLeftCornerOfImage.getX();
double scaledHeight = upperLeftCornerOfImage.getY() -
lowerRightCornerOfImage.getY();
- long totalMem = Runtime.getRuntime().totalMemory();
- long freeMem = Runtime.getRuntime().freeMemory();
- long committedMemory = totalMem - freeMem;
-
- // There is freeRam available to cache the new image
- //if(!needFreeRAM){
+ // Apply symbology to this.image
setImage(stretchImageValuesForDisplay());
+ imageToDraw = stretchImageValuesForDisplay();
- //wasScaledForDisplay = true;
- if(committedMemory + minRamToKeepFree < availRAM){
- setNeedToKeepImage(true); //so small images are not
reloaded every time
- }
+ //if(getCommittedMemory() + minRamToKeepFree < availRAM){
+ //setNeedToKeepImage(true); //so small images are not
reloaded every time
+ //}
- //[sstein end]
+ //[sstein end]
+ //Compute envelope of the visible part
imagePart =
getVisibleImageCoordinatesOfImage(image.getWidth(), image.getHeight(),
visibleEnv, getActualImageEnvelope());
@@ -397,8 +397,6 @@
if (transparentColor!=null)
transparencyColorNeedsToBeApplied = true;
- //imageProcessingStep1 = null;
-
xOffset = (int)(xOffset *scaleXImg2Canvas);
yOffset = (int)(yOffset *(-scaleYImg2Canvas));
@@ -409,53 +407,43 @@
}
-
+
if (scaledBufferedImage != null &&
transparencyColorNeedsToBeApplied ){
- scaledBufferedImage.flush();
imageToDraw = setupTransparency(scaledBufferedImage);
} else if (scaledBufferedImage != null) {
- scaledBufferedImage.flush();
imageToDraw = scaledBufferedImage;
}
} catch (Exception e){
- //logger.printError(e.getMessage());
- e.printStackTrace();
+ Logger.warn(e);
}
-
- if (Runtime.getRuntime().freeMemory() <
RasterImageLayer.getMinRamToKeepFree()){
- clearImageAndRaster(true);
- }
- //BufferedImage imageFinal = null;
+ System.out.println(
+ "" + getCommittedMemory() + " " + imageFileName + " " +
+ image.getWidth()+"x"+image.getHeight() + " - " +
+
scaledBufferedImage.getWidth()+"x"+scaledBufferedImage.getHeight()
+ );
if (imageToDraw != null) {
- //imageFinal = imageToDraw;
- imageToDraw.flush();
return imageToDraw;
- } else if (scaledBufferedImage!=null) {
- //imageFinal = imageProcessingStep2;
- scaledBufferedImage.flush();
+ } else {
return scaledBufferedImage;
}
-
- return null;
}
+
+ protected long getCommittedMemory() {
+ return Runtime.getRuntime().totalMemory() -
Runtime.getRuntime().freeMemory();
+ }
/**
- * deletes image from RAM (if it is not to be kept and if the RAM
consumption is high)
- * and calls the garbage collector, if the <code>garbageCollect</code> is
true.
- *@param garbageCollect if true the garbage collector will be called (this
parameter may be overridden, if there is not enough RAM available...)
+ * Deletes image from RAM (if it is not to be kept and if the RAM
consumption is high)
+ * and calls the garbage collector, if <code>garbageCollect</code> is true.
+ * @param garbageCollect if true the garbage collector will be called
(this parameter
+ * may be overridden, if there is not enough RAM
available...)
*/
public boolean clearImageAndRaster(boolean garbageCollect){
- //TODO: [sstein 9.Aug.2010] not sure if below condition is correct,
since it
- // does not account for Xmx (max memory), only for the actual
memory
- // Hence we should work with committed memory as I did above???
- boolean reallyNeedToFreeRAM = (Runtime.getRuntime().freeMemory() <
minRamToKeepFree);
+ boolean reallyNeedToFreeRAM = (availRAM-getCommittedMemory() <
minRamToKeepFree);
if (!needToKeepImage && reallyNeedToFreeRAM ){
flushImages(garbageCollect);
- //this.image = null;
- //rasterData = null; //[sstein 2Aug2010] line added
- //wasScaledForDisplay = false; //[sstein 20Aug2010] line added
}
else if (garbageCollect){
Runtime.getRuntime().gc();
@@ -465,17 +453,15 @@
/**
* flushes all images from the RAM.
- *@param garbageCollect if true the garbage collector will be called (this
parameter may be overridden, if there is not enough RAM available...)
+ * @param garbageCollect if true the garbage collector will be called
(this parameter may be overridden, if there is not enough RAM available...)
*/
public void flushImages(boolean garbageCollect){
if (image!=null)
image.flush();
image = null;
-
if (scaledBufferedImage!=null)
scaledBufferedImage.flush();
scaledBufferedImage = null;
-
if (garbageCollect){
Runtime.getRuntime().gc();
}
@@ -492,12 +478,11 @@
getWorkbenchContext().getLayerManager().getLayerables(Layerable.class).isEmpty())
{
viewport.zoom(originalImageEnvelope);
}
-
-// Rectangle visibleRect = viewport.getPanel().getVisibleRect();
-
+
Resolution requestedRes =
RasterImageIO.calcRequestedResolution(viewport);
long start = Timer.milliSecondsSince(0);
Logger.debug("Try reading "+getName());
+ // Get the part of the image intersecting the viewport
ImageAndMetadata imageAndMetadata =
rasterImageIO.loadImage(getWorkbenchContext(), imageFileName, stats,
viewport.getEnvelopeInModelCoordinates(), requestedRes);
Logger.debug("Reading '"+getName()+"' took
"+Timer.secondsSinceString(start)+"s.");
metadata = imageAndMetadata.getMetadata();
@@ -513,13 +498,6 @@
if(image != null) {
setImage(image);
}
- //wasScaledForDisplay = false;
-
- if(image != null) {
- actualRasterData = image.copyData(null);
- } else {
- actualRasterData = null;
- }
}
/**
@@ -534,15 +512,16 @@
}
protected BufferedImage stretchImageValuesForDisplay() throws
NoninvertibleTransformException{
-
+
+ Raster actualRasterData = image.copyData(null);
int width = actualRasterData.getWidth();
- int height = actualRasterData.getHeight();
-
+ int height = actualRasterData.getHeight();
+
// Need to change image type to support transparency and apply
symbology
if(image.getColorModel() instanceof IndexColorModel) {
return image;
}
-
+
BufferedImage newImage = new BufferedImage(width, height,
BufferedImage.TYPE_4BYTE_ABGR);
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
@@ -646,8 +625,9 @@
}
/**
- * Sets the Envelope object containing the real world coordinates (e.g.
WGS84) of the image - this needs to be set (if it wasn't given to the
constructor)!
- *@param envelope the Envelope
+ * Sets the Envelope containing the real world coordinates (e.g. WGS84) of
the image
+ * this needs to be set (if it wasn't given to the constructor)!
+ * @param envelope the Envelope
*/
private void setWholeImageEnvelope(Envelope envelope) {
originalImageEnvelope = envelope;
@@ -723,32 +703,12 @@
* {@link RasterImageLayer#setGeometryAsWholeImageEnvelope(Geometry)}.
* @return return the imageEnvelope (= bounding box) as a geometry,
*/
- public Polygon getWholeImageEnvelopeAsGeometry(){
- Coordinate[] coordinates = new Coordinate[5];
-
- coordinates[0] = new Coordinate(originalImageEnvelope.getMinX(),
originalImageEnvelope.getMaxY());
- coordinates[1] = new Coordinate(originalImageEnvelope.getMaxX(),
originalImageEnvelope.getMaxY());
- coordinates[2] = new Coordinate(originalImageEnvelope.getMaxX(),
originalImageEnvelope.getMinY());
- coordinates[3] = new Coordinate(originalImageEnvelope.getMinX(),
originalImageEnvelope.getMinY());
- coordinates[4] = new Coordinate(originalImageEnvelope.getMinX(),
originalImageEnvelope.getMaxY());
-
- GeometryFactory gf = new GeometryFactory();
-
- return gf.createPolygon(gf.createLinearRing(coordinates), null);
+ public Geometry getWholeImageEnvelopeAsGeometry(){
+ return new GeometryFactory().toGeometry(originalImageEnvelope);
}
- public Polygon getActualImageEnvelopeAsGeometry(){
- Coordinate[] coordinates = new Coordinate[5];
-
- coordinates[0] = new Coordinate(actualImageEnvelope.getMinX(),
actualImageEnvelope.getMaxY());
- coordinates[1] = new Coordinate(actualImageEnvelope.getMaxX(),
actualImageEnvelope.getMaxY());
- coordinates[2] = new Coordinate(actualImageEnvelope.getMaxX(),
actualImageEnvelope.getMinY());
- coordinates[3] = new Coordinate(actualImageEnvelope.getMinX(),
actualImageEnvelope.getMinY());
- coordinates[4] = new Coordinate(actualImageEnvelope.getMinX(),
actualImageEnvelope.getMaxY());
-
- GeometryFactory gf = new GeometryFactory();
-
- return gf.createPolygon(gf.createLinearRing(coordinates), null);
+ public Geometry getActualImageEnvelopeAsGeometry(){
+ return new GeometryFactory().toGeometry(actualImageEnvelope);
}
/**
@@ -809,10 +769,6 @@
private void setImageProcessingMode( int nr ){
if (lastImgProcessingMode != nr){
- if (scaledBufferedImage!=null)
- scaledBufferedImage.flush();
- scaledBufferedImage = null;
-
imagePart = null;
oldScaleXImg2Canvas = -1;
@@ -843,13 +799,10 @@
*/
public static BufferedImage makeBufferedImage(Image im) {
BufferedImage copy = new BufferedImage(im.getWidth(null),
im.getHeight(null), BufferedImage.TYPE_INT_ARGB);
- // create a graphics context
- Graphics2D g2d = copy.createGraphics();
- // copy image
- g2d.drawImage(im,0,0,null);
+ Graphics2D g2d = copy.createGraphics();
+ g2d.drawImage(im,0,0,null);
g2d.dispose();
- //copy.flush();
- return copy;
+ return copy;
}
protected BufferedImage getScaledImageMatchingVisible( BufferedImage
toBeScaled, double XscaleImg2Canvas, double YscaleImg2Canvas ){
@@ -866,16 +819,13 @@
}
public BufferedImage getTileAsImage( Envelope wantedEnvelope ) throws
Exception{
+
double imgWidth = image.getWidth();
double imgHeight = image.getHeight();
Envelope imageEnv = getActualImageEnvelope();
+ Envelope visiblePartOfImage = wantedEnvelope.intersection(imageEnv);
+ if (visiblePartOfImage.isNull()) return null;
- double minVisibleX = Math.max(wantedEnvelope.getMinX(),
imageEnv.getMinX());
- double minVisibleY = Math.max(wantedEnvelope.getMinY(),
imageEnv.getMinY());
-
- double maxVisibleX = Math.min(wantedEnvelope.getMaxX(),
imageEnv.getMaxX());
- double maxVisibleY = Math.min(wantedEnvelope.getMaxY(),
imageEnv.getMaxY());
-
double offset2VisibleX = imageEnv.getMinX() - wantedEnvelope.getMinX();
double offset2VisibleY = wantedEnvelope.getMaxY() - imageEnv.getMaxY();
@@ -897,15 +847,12 @@
yOffset = (int)(-offset2VisibleY * scaleY);
}
- width = (int)((maxVisibleX-minVisibleX) * scaleX);
- height = (int)((maxVisibleY-minVisibleY) * scaleY);
+ width = (int)(visiblePartOfImage.getWidth() * scaleX);
+ height = (int)(visiblePartOfImage.getHeight() * scaleY);
+
+ if (width < imgWidth) width += 1;
+ if (height < imgHeight) height += 1;
- if (width < imgWidth && height < imgHeight){
- width += 1;
- height += 1;
- }
-
-
if (width <= 0 || height <= 0) return null;
int wantedWidth = (int)(wantedEnvelope.getWidth() * scaleX);
@@ -941,101 +888,11 @@
graf.drawImage(imgTile, xTileOffset, yTileOffset, imgTile.getWidth(),
imgTile.getHeight(), backgroundColor, null);
graf.dispose();
-
- //this.clearImageAndRaster(false);
- imgTile.flush();
- result.flush();
+
+ this.clearImageAndRaster(false);
return result;
}
-// public Raster getTileAsRaster( Envelope wantedEnvelope ) throws
IOException{
-//
-// double imgWidth = origImageWidth;
-// double imgHeight = origImageHeight;
-// Envelope imageEnv = originalImageEnvelope;
-//
-// double minVisibleX = Math.max(wantedEnvelope.getMinX(),
imageEnv.getMinX());
-// double minVisibleY = Math.max(wantedEnvelope.getMinY(),
imageEnv.getMinY());
-//
-// double maxVisibleX = Math.min(wantedEnvelope.getMaxX(),
imageEnv.getMaxX());
-// double maxVisibleY = Math.min(wantedEnvelope.getMaxY(),
imageEnv.getMaxY());
-//
-// double offset2VisibleX = imageEnv.getMinX() -
wantedEnvelope.getMinX();
-// double offset2VisibleY = wantedEnvelope.getMaxY() -
imageEnv.getMaxY();
-//
-// double scaleX = imgWidth / imageEnv.getWidth();
-// double scaleY = imgHeight / imageEnv.getHeight();
-//
-// // use local variables!
-// int xOffset, yOffset, width, height;
-//
-// if (offset2VisibleX >= 0){
-// xOffset = 0;
-// } else {
-// xOffset = (int)(-offset2VisibleX * scaleX);
-// }
-//
-// if (offset2VisibleY >= 0){
-// yOffset = 0;
-// } else {
-// yOffset = (int)(-offset2VisibleY * scaleY);
-// }
-//
-// width = (int)((maxVisibleX-minVisibleX) * scaleX);
-// height = (int)((maxVisibleY-minVisibleY) * scaleY);
-//
-// if (width < imgWidth && height < imgHeight){
-// width += 1;
-// height += 1;
-// }
-//
-//
-// if (width <= 0 || height <= 0) return null;
-//
-// int wantedWidth = (int)(wantedEnvelope.getWidth() * scaleX);
-// int wantedHeight = (int)(wantedEnvelope.getHeight() * scaleY);
-//
-// Rectangle subset = new Rectangle(xOffset, yOffset, wantedWidth,
wantedHeight);
-// Raster rasterData = RasterImageIO.loadRasterData(imageFileName,
subset);
-// return rasterData;
-//
-//
-//// ColorModel colorModel =
PlanarImage.createColorModel(rasterData.getSampleModel());
-//// BufferedImage bufimg = new BufferedImage(colorModel,
(WritableRaster) rasterData, false, null);
-//// PlanarImage pimage = PlanarImage.wrapRenderedImage(bufimg);
-////
-//// BufferedImage imgTile = pimage.getAsBufferedImage( new
Rectangle(xOffset, yOffset, width, height), pimage.getColorModel());
-////
-//// BufferedImage result = new BufferedImage( wantedWidth,
wantedHeight, BufferedImage.TYPE_INT_ARGB);
-////
-//// Graphics2D graf = result.createGraphics();
-////
-//// Color backgroundColor =
(this.transparentColor!=null)?this.transparentColor:Color.white;
-////
-//// graf.fillRect(0,0,wantedWidth, wantedHeight);
-////
-//// int xTileOffset,yTileOffset;
-////
-//// if (xOffset > 0){
-//// xTileOffset = 0;
-//// } else {
-//// xTileOffset = (int)(offset2VisibleX * scaleX);
-//// }
-////
-//// if (yOffset > 0){
-//// yTileOffset = 0;
-//// } else {
-//// yTileOffset = (int)(offset2VisibleY * scaleY);
-//// }
-////
-//// graf.drawImage(imgTile, xTileOffset, yTileOffset,
imgTile.getWidth(), imgTile.getHeight(), backgroundColor, null);
-//// graf.dispose();
-////
-//// this.clearImageAndRaster(false);
-////
-//// return result.getData();
-// }
-
protected WorkbenchContext getWorkbenchContext(){
return
(WorkbenchContext)this.getBlackboard().get(BLACKBOARD_KEY_WORKBENCHCONTEXT);
}
@@ -1169,8 +1026,6 @@
*/
public void setImage(BufferedImage image) {
this.image = image;
- //origImageWidth = image.getWidth();
- //origImageHeight = image.getHeight();
imageSet = true;
}
@@ -1281,7 +1136,8 @@
*@param transparentColor the color for transparency
*/
public void setTransparentColor(Color transparentColor) {
- if (this.transparentColor != transparentColor &&
(this.transparentColor==null ||
!this.transparentColor.equals(transparentColor))){
+
+ if (!Objects.equals(this.transparentColor, transparentColor)){
this.transparentColor = transparentColor;
@@ -1320,11 +1176,9 @@
}
public static void setFreeRamFactor(double freeRamFactor) {
- //logger.printDebug("setting freeRamFactor to " + freeRamFactor);
RasterImageLayer.freeRamFactor = freeRamFactor;
RasterImageLayer.minRamToKeepFree = RasterImageLayer.availRAM *
RasterImageLayer.freeRamFactor;
RasterImageLayer.maxPixelsForFastDisplayMode =
(int)((RasterImageLayer.availRAM -
RasterImageLayer.minRamToKeepFree)/(1024*1024) * 3000);
- //logger.printDebug("maxPixelsForFastDisplayMode: " +
maxPixelsForFastDisplayMode);
}
@@ -1341,8 +1195,8 @@
}
/**
- * Sets the image's files name (if image is not to be keeped) - this needs
to be set!
- *@param imageFileName the file name of the image
+ * Sets the image's files name (if image is not to be kept) - this needs
to be set!
+ * @param imageFileName the file name of the image
*/
public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
@@ -1352,7 +1206,7 @@
/**
*
- *@return the file name of the image represented by this instance of the
<code>RasterImageLayer</code>
+ * @return the file name of the image represented by this instance of the
<code>RasterImageLayer</code>
*/
public String getImageFileName() {
return imageFileName;
@@ -1359,17 +1213,17 @@
}
/**
- * check, if image will be keeped in RAM or if it will be reloaded from a
file
+ * check, if image will be kept in RAM or if it will be reloaded from a
file
* if needed
- *@return true if image will be keeped in RAM, else false
+ * @return true if image will be kept in RAM, else false
*/
public boolean isNeedToKeepImage() {
return needToKeepImage;
}
/**
- * toogle, if image will be keeped in RAM or if it will be reloaded from a
file
+ * toogle, if image will be kept in RAM or if it will be reloaded from a
file
* if needed
- *@param needToKeepImage true if image is supposed be keeped in RAM, else
false
+ * @param needToKeepImage true if image is supposed be kept in RAM, else
false
*/
public void setNeedToKeepImage(boolean needToKeepImage) {
this.needToKeepImage = needToKeepImage;
@@ -1398,7 +1252,7 @@
/**
* for java2xml
- *@param origImageHeight height of original image
+ * @param origImageHeight height of original image
*/
public void setOrigImageHeight(int origImageHeight) {
this.origImageHeight = origImageHeight;
@@ -1414,7 +1268,7 @@
/**
* shows or hides the image in the Jump map
- *@param visible set true if image must be visible
+ * @param visible set true if image must be visible
*/
@Override
public void setVisible(boolean visible) {
@@ -1430,7 +1284,7 @@
/**
* @see #firingAppearanceEvents
- *@return true if appearance events are fired automatically, false if not
+ * @return true if appearance events are fired automatically, false if not
*/
public boolean isFiringAppearanceEvents() {
return firingAppearanceEvents;
@@ -1438,7 +1292,7 @@
/**
* @see #firingAppearanceEvents
- *@param firingAppearanceEvents true if appearance events are to be fired
automatically, false if not
+ * @param firingAppearanceEvents true if appearance events are to be fired
automatically, false if not
*/
public void setFiringAppearanceEvents(boolean firingAppearanceEvents) {
this.firingAppearanceEvents = firingAppearanceEvents;
@@ -1527,7 +1381,7 @@
* @return the rasterDataChanged
*/
public boolean isRasterDataChanged() {
- return rasterDataChanged;
+ return rasterDataChanged;
}
/**
@@ -1534,7 +1388,7 @@
* @param rasterDataChanged the rasterDataChanged to set
*/
public void setRasterDataChanged(boolean rasterDataChanged) {
- this.rasterDataChanged = rasterDataChanged;
+ this.rasterDataChanged = rasterDataChanged;
}
/**
@@ -1582,10 +1436,7 @@
int row = origImageHeight - (int) Math.floor((coordY -
originalImageEnvelope.getMinY()) / cellSizeY) - 1;
if(col <0 || col >= origImageWidth || row <0 || row >=
origImageHeight) return null;
-
- //int pos = row * origImageWidth + col;
- //double value;
- //int bands = stats.getBandCount();
+
return RasterImageIO.readCellValue(imageFileName, col, row, band);
/*
@@ -1635,6 +1486,7 @@
public void setSymbology(RasterSymbology symbology) throws
NoninvertibleTransformException {
this.symbology = symbology;
symbologyChanged = true;
+ scaledBufferedImage = null;
LayerViewPanel layerViewPanel =
getWorkbenchContext().getLayerViewPanel();
if(layerViewPanel != null) {
layerViewPanel.getViewport().update();
@@ -1642,7 +1494,7 @@
}
public Raster getActualRasterData() {
- return actualRasterData;
+ return image.copyData(null);
}
public UUID getUUID() {
@@ -1694,5 +1546,4 @@
this.srsInfo = srs;
}
-
}
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel