|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.bbn.openmap.omGraphics.geom.BasicGeometry com.bbn.openmap.omGraphics.OMGraphicAdapter com.bbn.openmap.omGraphics.OMRasterObject com.bbn.openmap.omGraphics.OMRaster com.bbn.openmap.omGraphics.OMScalingRaster
public class OMScalingRaster
This is an extension to OMRaster that automatically scales itelf to match the current projection. It is only lat/lon based, and takes the coordinates of the upper left and lower right corners of the image. It does straight scaling - it does not force the image projection to match the map projection! So, your mileage may vary - you have to understand the projection of the image, and know how it fits the projection type of the map. Of course, at larger scales, it might not matter so much. This class was inspired by, and created from parts of the ImageLayer submission from Adrian Lumsden@sss, on 25-Jan-2002. Used the scaling and trimming code from that submission. That code was also developed with assistance from Steve McDonald at SiliconSpaceships.com.
OMRaster
,
OMRasterObject
,
Serialized FormNested Class Summary |
---|
Nested classes/interfaces inherited from class com.bbn.openmap.omGraphics.OMRasterObject |
---|
OMRasterObject.TrimScaleFilter |
Field Summary | |
---|---|
protected java.awt.Rectangle |
clipRect
The rectangle in screen coordinates that the scaled image projects to after clipping. |
protected java.util.ArrayList<float[]> |
corners
|
protected Projection |
lastProjection
This lastProjection is used to keep track of the last projection used to warp or scale the image, an used during the rendering process to check if we should rework the image to be displayed. |
protected double |
lat2
The latitude of the lower right corner for the image, in decimal degrees. |
protected double |
lon2
The longitude of the lower right corner for the image, in decimal degrees. |
protected int |
scaleTransformType
Transform type for AffineTransformOp to use to scale images. |
protected java.awt.image.AffineTransformOp |
scalingXFormOp
AffineTransformOp applied to the bitmap at render time. |
Fields inherited from class com.bbn.openmap.omGraphics.OMRaster |
---|
colors, transparent |
Fields inherited from class com.bbn.openmap.omGraphics.OMRasterObject |
---|
bitmap, bits, colorModel, COLORMODEL_DIRECT, COLORMODEL_IMAGEICON, COLORMODEL_INDEXED, DEBUG, FAST_SCALING, filteredHeight, filteredWidth, height, imageFilter, lat, logger, lon, needToReposition, pixels, point1, point2, renderRotationAngle, rotationAngle, SMOOTH_SCALING, width, x, y |
Fields inherited from class com.bbn.openmap.omGraphics.OMGraphicAdapter |
---|
declutterType, displayPaint, edgeMatchesFill, fillPaint, hasLabel, linePaint, matted, mattingPaint, renderType, selected, selectPaint, showEditablePalette, stroke, textureMask |
Fields inherited from class com.bbn.openmap.omGraphics.geom.BasicGeometry |
---|
attributes, lineType, needToRegenerate, shape, visible |
Fields inherited from interface java.awt.image.ImageObserver |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
Constructor Summary | |
---|---|
OMScalingRaster()
Construct a blank OMRaster, to be filled in with set calls. |
|
OMScalingRaster(double ullat,
double ullon,
double lrlat,
double lrlon,
java.awt.Image ii)
Create an OMRaster, Lat/Lon placement with an Image. |
|
OMScalingRaster(double ullat,
double ullon,
double lrlat,
double lrlon,
javax.swing.ImageIcon ii)
Create an OMRaster, Lat/Lon placement with an ImageIcon. |
|
OMScalingRaster(double ullat,
double ullon,
double lrlat,
double lrlon,
int w,
int h,
byte[] bytes,
java.awt.Color[] colorTable,
int trans)
Lat/Lon placement with a indexed colormodel, which is using a colortable and a byte array to construct the int[] pixels. |
|
OMScalingRaster(double ullat,
double ullon,
double lrlat,
double lrlon,
int w,
int h,
int[] pix)
Creates an OMRaster images, Lat/Lon placement with a direct colormodel image. |
Method Summary | |
---|---|
boolean |
generate(Projection proj)
Prepare the graphics for rendering. |
java.awt.Rectangle |
getClippedRectangle()
Return the rectangle in screen co-ordinates that the scaled image has been clipped to. |
ImageWarp |
getImageWarp(GeoCoordTransformation transform)
Creates an ImageWarp object from the contents of the OMScalingRaster. |
double |
getLRLat()
Get the southern latitude. |
double |
getLRLon()
Get the eastern longitude. |
int |
getScaleTransformType()
|
double |
getULLat()
Get the upper latitude. |
double |
getULLon()
Get the western longitude. |
boolean |
isOnMap(Projection proj)
Test to see if projected image is on map. |
protected boolean |
position(Projection proj)
Since the image doesn't necessarily need to be regenerated when it is merely moved, raster objects have this function, called from generate() and when a placement attribute is changed. |
void |
render(java.awt.Graphics graphics)
Render the raster on the java.awt.Graphics. |
protected void |
renderImage(java.awt.Graphics g,
java.awt.Image image,
java.awt.Point loc)
Render the image at the given pixel location. |
void |
restore(OMGeometry source)
Takes the generic OMGraphic settings from another OMGraphic and pushes them to this one. |
protected void |
rotate(java.awt.Graphics2D g)
Since the OMScalingRaster changes height and width depending on scale, we need to rotate the image over that point and factor in the scaled height and width of the image. |
protected void |
scaleTo(Projection thisProj)
Take the current projection and the sourceImage, and make the image that gets displayed fit the projection. |
void |
setLRLat(double value)
Change the southern latitude attribute. |
void |
setLRLon(double value)
Change the eastern longitude attribute. |
void |
setScaleTransformType(int scaleTransformType)
Set the AffineTransformOp used for scaling images. |
void |
setShape()
Set the rectangle, based on the location and size of the image after scaling. |
void |
setULLat(double value)
Change the upper latitude attribute. |
void |
setULLon(double value)
Change the western longitude attribute. |
protected boolean |
updateImageForProjection(Projection proj)
Called from within generate. |
Methods inherited from class com.bbn.openmap.omGraphics.OMRaster |
---|
computePixels, evaluateRotationAngle, getBitmapFromInternalData, getByte, getColors, getPixel, getTransparent, setBits, setByte, setColors, setColors, setImageIcon, setPixel, setTransparent |
Methods inherited from class com.bbn.openmap.omGraphics.OMRasterObject |
---|
adjustShapeForRotation, filterImage, getBits, getColorModel, getFilteredHeight, getFilteredWidth, getHeight, getImage, getImageFilter, getLat, getLon, getMapLocation, getNeedToReposition, getPixels, getRotationAngle, getWidth, getX, getY, hasLineTypeChoice, imageUpdate, regenerate, scaleTo, setColorModel, setHeight, setImage, setImageFilter, setLat, setLon, setNeedToReposition, setPixels, setRotationAngle, setWidth, setX, setY, shouldRenderFill |
Methods inherited from class com.bbn.openmap.omGraphics.geom.BasicGeometry |
---|
_distance, appendShapeEdge, appendShapeEdge, appendShapeEdge, appendShapeEdge, clearAttributes, contains, createAttributeMap, createBoxShape, createShape, createShape, describeShapeDetail, describeShapeDetail, distanceToEdge, distanceToEdge, draw, draw, fill, fill, getAppObject, getAttribute, getAttributes, getDescription, getLineType, getNeedToRegenerate, getShape, isRenderable, isRenderable, isVisible, putAttribute, removeAttribute, setAppObject, setAttributes, setLineType, setNeedToRegenerate, setShape, setVisible |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface com.bbn.openmap.omGraphics.OMGraphic |
---|
clone, deselect, getDeclutterType, getDisplayColor, getDisplayPaint, getFillColor, getFillPaint, getLineColor, getLinePaint, getMattingPaint, getRenderType, getSelectColor, getSelectPaint, getShowEditablePalette, getStroke, getTextureMask, isMatted, isSelected, normalizeDistanceForLineWidth, renderLabel, select, setDeclutterType, setFillPaint, setGraphicsColor, setGraphicsForEdge, setGraphicsForFill, setLabelLocation, setLabelLocation, setLabelLocation, setLinePaint, setMatted, setMattingPaint, setRenderType, setSelected, setSelectPaint, setShowEditablePalette, setStroke, setTextureMask, shouldRenderEdge |
Methods inherited from interface com.bbn.openmap.omGraphics.OMGeometry |
---|
clearAttributes, contains, distance, distanceToEdge, draw, draw, fill, fill, getAppObject, getAttribute, getAttributes, getDescription, getLineType, getNeedToRegenerate, getShape, isRenderable, isRenderable, isVisible, putAttribute, removeAttribute, setAppObject, setAttributes, setLineType, setNeedToRegenerate, setShape, setVisible |
Field Detail |
---|
protected double lat2
protected double lon2
protected java.awt.image.AffineTransformOp scalingXFormOp
protected transient java.awt.Rectangle clipRect
protected transient java.util.ArrayList<float[]> corners
protected int scaleTransformType
protected Projection lastProjection
Constructor Detail |
---|
public OMScalingRaster()
public OMScalingRaster(double ullat, double ullon, double lrlat, double lrlon, int w, int h, int[] pix)
ullat
- latitude of the top of the image.ullon
- longitude of the left side of the image.lrlat
- latitude of the bottom of the image.lrlon
- longitude of the right side of the image.w
- width of the image, in pixels.h
- height of the image, in pixels.pix
- color values for the pixels.public OMScalingRaster(double ullat, double ullon, double lrlat, double lrlon, javax.swing.ImageIcon ii)
ullat
- latitude of the top of the image.ullon
- longitude of the left side of the image.lrlat
- latitude of the bottom of the image.lrlon
- longitude of the right side of the image.ii
- ImageIcon used for the image.public OMScalingRaster(double ullat, double ullon, double lrlat, double lrlon, java.awt.Image ii)
ullat
- latitude of the top of the image.ullon
- longitude of the left side of the image.lrlat
- latitude of the bottom of the image.lrlon
- longitude of the right side of the image.ii
- Image used for the image.public OMScalingRaster(double ullat, double ullon, double lrlat, double lrlon, int w, int h, byte[] bytes, java.awt.Color[] colorTable, int trans)
ullat
- latitude of the top of the image.ullon
- longitude of the left side of the image.lrlat
- latitude of the bottom of the image.lrlon
- longitude of the right side of the image.w
- width of the image, in pixels.h
- height of the image, in pixels.bytes
- colortable index values for the pixels.colorTable
- color array corresponding to bytestrans
- transparency of image.Method Detail |
---|
protected boolean position(Projection proj)
position
in class OMRasterObject
proj
- projection of window.
public boolean generate(Projection proj)
generate
in interface OMGeometry
generate
in class OMRaster
proj
- Projection used to position the image on the window.
OMGraphicAdapter.regenerate(com.bbn.openmap.proj.Projection)
protected boolean updateImageForProjection(Projection proj)
proj
- current projection.
protected void rotate(java.awt.Graphics2D g)
rotate
in class OMRasterObject
g
- Graphics2D object to rotate and translate.protected void scaleTo(Projection thisProj)
thisProj
- the projection that the image should be scaled to.public void render(java.awt.Graphics graphics)
render
in interface OMGeometry
render
in class OMRasterObject
graphics
- java.awt.Graphics to draw the image on.protected void renderImage(java.awt.Graphics g, java.awt.Image image, java.awt.Point loc)
renderImage
in class OMRasterObject
g
- the Graphics object to render the image into. Assumes this is a
derivative of the Graphics passed into the OMGraphic, and can be
modified without worrying about passing settings on to other
OMGraphics.image
- the image to render.loc
- the pixel location of the image.public java.awt.Rectangle getClippedRectangle()
public void setULLat(double value)
value
- latitude in decimal degrees.public double getULLat()
public void setULLon(double value)
value
- the longitude in decimal degrees.public double getULLon()
public void setLRLat(double value)
value
- latitude in decimal degrees.public double getLRLat()
public void setLRLon(double value)
value
- the longitude in decimal degrees.public double getLRLon()
public void setShape()
setShape
in class OMRasterObject
public boolean isOnMap(Projection proj)
proj
- current projection
public int getScaleTransformType()
public void setScaleTransformType(int scaleTransformType)
scaleTransformType
- public ImageWarp getImageWarp(GeoCoordTransformation transform)
transform
- the OMScalingImage assumes that the coordinates/pixel
transformation of the image is equal arc. If it's not, the correct
transformation should be provided for this query. The
OMScalingRaster doesn't really know what it is, it just plots the
corner coordinates and scales the image accordingly.
public void restore(OMGeometry source)
OMGraphicAdapter
restore
in interface OMGeometry
restore
in class OMRaster
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |