Revision: 6525
http://sourceforge.net/p/jump-pilot/code/6525
Author: edso
Date: 2020-09-23 16:20:40 +0000 (Wed, 23 Sep 2020)
Log Message:
-----------
sometimes the image to be rendered seems to be still grayscale which does not
play well with drawing onto a rgb graphics. as a workaround we detect those
cases and convert em to rgb. done.
Modified Paths:
--------------
core/trunk/src/org/openjump/core/rasterimage/RasterImageRenderer.java
Modified: core/trunk/src/org/openjump/core/rasterimage/RasterImageRenderer.java
===================================================================
--- core/trunk/src/org/openjump/core/rasterimage/RasterImageRenderer.java
2020-09-23 16:16:34 UTC (rev 6524)
+++ core/trunk/src/org/openjump/core/rasterimage/RasterImageRenderer.java
2020-09-23 16:20:40 UTC (rev 6525)
@@ -12,10 +12,11 @@
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
-import java.awt.Rectangle;
import java.awt.RenderingHints;
+import java.awt.color.ColorSpace;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
+import java.awt.image.ColorConvertOp;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
@@ -92,7 +93,11 @@
if (!getRasterImageLayer().isVisible()) {
return;
}
-
+
+// if (last_scale == panel.getViewport().getScale() && last_env ==
panel.getViewport().fullExtent()) {
+// return;
+// }
+
// while(!this.doneRendering)
// Thread.sleep(50);
@@ -180,7 +185,19 @@
g.setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, 1.0f - (float)
getRasterImageLayer().getTransparencyLevel()));
- g.drawImage(sourceImage, xOffset, yOffset, null);
+ // suboptimal but seemingly working, drawing grayscale images
throws
+ // Array Index Out Of Bounds Exception because it tries to
copy RGB values
+ // why?! don't ask me..
+ BufferedImage outImage = sourceImage;
+ int cs_type =
outImage.getColorModel().getColorSpace().getType();
+ if (cs_type != ColorSpace.TYPE_RGB) {
+ // TODO: this is really slow, replace with something faster
+ ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
+ ColorConvertOp op = new ColorConvertOp(cs, null);
+ outImage = op.filter(sourceImage, null);
+ }
+
+ g.drawImage(outImage, xOffset, yOffset, null);
if (oldRenderingKey!=null)
g.setRenderingHint(RenderingHints.KEY_RENDERING,
oldRenderingKey);
@@ -205,9 +222,8 @@
}
};
-
image.draw(drawer);
-
+
doneRendering = true;
}
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel