[OpenMap Users] RasterFormatException

From: Leah Wong <lwong@iswsolutions.com>
Date: Wed Jun 16 2004 - 18:43:25 EDT

Hello Don,

In OpenMap v4.5.4 I was getting the following RasterFormatException when
panning around a boundary for CIB10. It seemed more likely to happen right
after I resized the map display window. I looked at
com.bbn.openmap.omGraphics.OMScalingRaster in v4.6 and noticed that the
scaleTo() function hasn't changed.

CADRG|RpfLayer.RpfWorker.construct(): java.awt.image.RasterFormatException:
negative or zero width
java.awt.image.RasterFormatException: negative or zero width
        at java.awt.image.Raster.<init>(Raster.java:1091)
        at java.awt.image.WritableRaster.<init>(WritableRaster.java:111)
        at sun.awt.image.SunWritableRaster.<init>(SunWritableRaster.java:49)
        at
sun.awt.image.IntegerComponentRaster.<init>(IntegerComponentRaster.java:151)
        at
sun.awt.image.IntegerInterleavedRaster.<init>(IntegerInterleavedRaster.java:
111)
        at
sun.awt.image.IntegerInterleavedRaster.createWritableChild(IntegerInterleave
dRaster.java:468)
        at java.awt.image.BufferedImage.getSubimage(BufferedImage.java:1060)
        at
com.bbn.openmap.omGraphics.OMScalingRaster.scaleTo(OMScalingRaster.java:377)
        at
com.bbn.openmap.omGraphics.OMScalingRaster.generate(OMScalingRaster.java:278
)
        at com.bbn.openmap.omGraphics.OMGraphicList.generate(Unknown Source)
        at com.bbn.openmap.omGraphics.OMGraphicList.generate(Unknown Source)
        at
com.bbn.openmap.layer.rpf.RpfCacheManager$RpfMaps.generate(Unknown Source)
        at com.bbn.openmap.omGraphics.OMGraphicList.generate(Unknown Source)
        at com.bbn.openmap.omGraphics.OMGraphicList.project(Unknown Source)
        at com.bbn.openmap.layer.rpf.RpfLayer.prepare(Unknown Source)
        at com.bbn.openmap.layer.rpf.RpfLayer$RpfWorker.construct(Unknown
Source)
        at com.bbn.openmap.util.SwingWorker$2.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:536)

What I did to fix this was change part of the
com.bbn.openmap.omGraphics.OMScalingRaster.scaleTo() function from:

clipRect.width = (int)(iRect.width * xScaleFactor); // scale the width
clipRect.height = (int)(iRect.height * yScaleFactor); // scale the height

where the clipRect.width or clipRect.height could potentially be 0 because
of rounding to:

// scale the width
int scaledWidth = (int)(iRect.width * xScaleFactor);
clipRect.width = (scaledWidth < 1) ? 1 : scaledWidth;
// scale the height
int scaledHeight = (int)(iRect.height * yScaleFactor);
clipRect.height = (scaledHeight < 1) ? 1 : scaledHeight;

where the smallest integer clipRect.width or clipRect.height can be is 1.

Is this a viable fix? It worked in my tests, but maybe you can think of a
case where setting clipRect.width or clipRect.height to 1 isn't a good idea.
Or maybe you fixed this in v4.6 in a different way. Please let me know what
you think.

Thanks,
Leah

--
[To unsubscribe to this list send an email to "majdart@bbn.com"
with the following text in the BODY of the message "unsubscribe openmap-users"]
Received on Wed Jun 16 18:44:18 2004

This archive was generated by hypermail 2.1.8 : Thu May 12 2005 - 07:18:38 EDT