public class TLcdEarthGXYSinglevaluedRasterPainter extends TLcdEarthGXYRasterPainter
ILcdGXYPainter
can paint the scalar data of ILcdEarthTileSet
instances in a 2D view.
This painter has been replaced by TLcdGXYImagePainter
. Please consider using it
instead of this one.
ILcdEarthTileSet
that can produce tiles with a TLcdEarthMultivaluedData
as the tile data. Note that only the first parameter of this data is visualized. The first such
coverage in the tileset will be used (see TLcdEarthGXYRasterPainter.chooseTileSetCoverage(com.luciad.earth.tileset.ILcdEarthTileSet)
).
converted to a short
which is then mapped to a color using the color model
. No color model is set by default.
By default the tile level is chosen such that 4 pixels in the view map to at least one value, if
possible. This avoids most pixelation effects (e.g. that individual pixels are visible). To achieve
this a tile level is chosen with a higher pixel density
than the
view. This behavior can be changed by either setting the quality
or by overriding the TLcdEarthGXYRasterPainter.chooseTileSetLevel(java.awt.Graphics, int, com.luciad.view.gxy.ILcdGXYContext, com.luciad.shape.ILcdBounds)
method.
If some tiles are not available, the tiles at lower levels will be used automatically to avoid
gaps.
If required this painter will warp the data between different coordinate systems, otherwise it
will just paint their linearly scaled images.
The bounds of the tile set will be painted instead of the tiles if the pixel density of the least
detailed level is too high
. There is no limit on the pixel
density by default so the bounds of a tile set will never be painted unless the start resolution
factor is set to a lower value. Typically this is fine for tile sets that cover the entire world
but it may be necessary to lower the start resolution factor if there are multiple smaller tile
sets in a view.
ALcdEarthGXYPainter.isAsynchronousTileRequestAllowed()
and ALcdEarthGXYPainter.isRepaintViewWhenTileAvailable()
should be
set to true
(default).
TLcdEarthGXYRasterPainter.setCacheSize(int)
). Other tiles will also be cached if there is enough
memory (see TLcdEarthGXYRasterPainter.isSoftCachingEnabled()
). Tiles that reside in either of these caches will be
updated automatically every minute (see TLcdEarthGXYRasterPainter.getUpdateInterval()
). You can use the TLcdEarthGXYRasterPainter.updateTiles(com.luciad.view.gxy.ILcdGXYView)
method to update all tiles that are currently
cached immediately.
TLcdGXYAsynchronousPaintQueue.setInterruptPainting(boolean)
)TLcdEarthGXYRasterPainter
,
Serialized FormdefaultCreationFillStyle, defaultCreationLineStyle, defaultFillStyle, defaultLineStyle, fWorkBounds
BODY, CREATING, DEFAULT, HANDLES, RESHAPING, SELECTED, SNAPS, TRANSLATING
Constructor and Description |
---|
TLcdEarthGXYSinglevaluedRasterPainter()
Creates a new earth 2D scalar raster painter with the default cache size.
|
TLcdEarthGXYSinglevaluedRasterPainter(int aCacheSize)
Creates a new earth 2D scalar raster painter with the specified cache size.
|
Modifier and Type | Method and Description |
---|---|
protected TLcdEarthTileFormat |
chooseTileFormat(ILcdEarthTileSet aTileSet,
ILcdEarthTileSetCoverage aCoverage)
Chooses a tile format from the given tileset and coverage to be used for producing tiles.
|
protected short |
convertToShort(double aValue)
Converts a native value to a short.
|
protected ILcdTile |
createRasterTile(ALcdEarthTile aTile)
Creates an
ILcdTile corresponding to the specified ALcdEarthTile . |
int |
getDefaultValue()
Gets the value in the color model that is used for unknown values.
|
protected ILcdTile |
getEmptyTile()
Returns a representative empty tile for this painter.
|
int[] |
getValueRange()
Gets the range of values in the color model that is used for valid values.
|
double |
getValueToShortOffset()
Returns the offset that is applied to the values when they are converted to shorts.
|
double |
getValueToShortScale()
Returns the scale that is applied to the values when they are converted to shorts.
|
protected boolean |
isValidCoverage(ILcdEarthTileSetCoverage aCoverage)
Returns whether the given coverage can be drawn by this painter.
|
void |
setDefaultValue(int aDefaultValue)
Sets the value in the color model that is used for unknown values.
|
void |
setQuality(double aQuality)
The default value is
0.25 . |
void |
setValueRange(int aMin,
int aMax)
Sets the range of values in the color model that is used for valid values.
|
void |
setValueToShortOffset(double aOffset)
Sets the offset that is applied to the values when they are converted to shorts.
|
void |
setValueToShortScale(double aScale)
Sets the scale that is applied to the values when they are converted to shorts.
|
addStatusListener, chooseTileSetCoverage, chooseTileSetLevel, clearCache, clearCache, clone, configureBaseTileSet, createAsynchronousTileSet, getBoundsFillStyle, getBoundsLineStyle, getBrightness, getCacheSize, getColorModel, getContrast, getDisplayName, getOversamplingRate, getPaintCache, getPixelDensity, getQuality, getRequestFormat, getRGBImageFilter, getStartResolutionFactor, getTileContext, getTileSet, getTransparency, getUpdateInterval, getWarpBlockSize, isAllowOutdatedTiles, isAutoIncreaseCacheSize, isPaintBoundsFill, isPaintBoundsOutline, isParentTileRequestAllowed, isSoftCachingEnabled, paint, releaseHardReferencedCache, releaseHardReferencedCache, removeStatusListener, setAllowOutdatedTiles, setAsynchronousTileRequestAllowed, setAutoIncreaseCacheSize, setBoundsFillStyle, setBoundsLineStyle, setBrightness, setCacheSize, setColorModel, setContrast, setExceptionHandler, setObject, setOversamplingRate, setPaintBoundsFill, setPaintBoundsOutline, setPaintCache, setParentTileRequestAllowed, setRepaintViewWhenTileAvailable, setRGBImageFilter, setSoftCachingEnabled, setStartResolutionFactor, setTransparency, setUpdateInterval, setWarpBlockSize, updateTiles, updateTiles
boundsSFCT, getExceptionHandler, getObject, getTileSet, getTileSetCoverage, isAsynchronousTileRequestAllowed, isRepaintViewWhenTileAvailable, isTouched
addPropertyChangeListener, anchorPointSFCT, firePropertyChangeEvent, firePropertyChangeEvent, getCursor, getGXYPainter, isTraceOn, removePropertyChangeListener, setClassTraceOn, setDisplayName, setTraceOn, snapTarget, supportSnap
public TLcdEarthGXYSinglevaluedRasterPainter()
public TLcdEarthGXYSinglevaluedRasterPainter(int aCacheSize)
aCacheSize
- the maximum number of entries in the cacheTLcdEarthGXYRasterPainter.getCacheSize()
,
TLcdEarthGXYRasterPainter.setColorModel(java.awt.image.ColorModel)
public int getDefaultValue()
0
.TLcdEarthGXYRasterPainter.getColorModel()
public void setDefaultValue(int aDefaultValue)
aDefaultValue
- the default valueTLcdEarthGXYRasterPainter.getColorModel()
public void setValueRange(int aMin, int aMax)
aMin
- the inclusive lower boundaMax
- the inclusive upper boundgetValueRange()
public int[] getValueRange()
public void setQuality(double aQuality)
0.25
.setQuality
in class TLcdEarthGXYRasterPainter
aQuality
- the new qualityprotected boolean isValidCoverage(ILcdEarthTileSetCoverage aCoverage)
createRasterTile(com.luciad.earth.tileset.ALcdEarthTile)
.
The default implementation returns true
if the coverage implements ILcdEarthRasterTileSetCoverage
, and the tileset supports a format with TLcdEarthMultivaluedData
as format class and no format name
with the specified coverage.isValidCoverage
in class TLcdEarthGXYRasterPainter
aCoverage
- the candidate coveragetrue
if the given coverage can be paintedILcdEarthTileSet.isFormatSupported(com.luciad.earth.tileset.ILcdEarthTileSetCoverage,
com.luciad.earth.tileset.TLcdEarthTileFormat)
protected TLcdEarthTileFormat chooseTileFormat(ILcdEarthTileSet aTileSet, ILcdEarthTileSetCoverage aCoverage)
createRasterTile(com.luciad.earth.tileset.ALcdEarthTile)
.
The default implementation returns a format with TLcdEarthMultivaluedData
as format class and no format name.chooseTileFormat
in class TLcdEarthGXYRasterPainter
aTileSet
- the tileset whose tiles are being paintedaCoverage
- the coverage whose tiles are being painted.protected ILcdTile createRasterTile(ALcdEarthTile aTile)
ILcdTile
corresponding to the specified ALcdEarthTile
. The resulting raster tile is used in order to draw the
output of a tileset using TLcdRasterPainter
.
The default implementation can only create a tile for tiles with a TLcdEarthMultivaluedData
as tile data. Each value in the
first dimension of this data is converted to a short using convertToShort(double)
.createRasterTile
in class TLcdEarthGXYRasterPainter
aTile
- the tile to convert into a raster tilepublic double getValueToShortOffset()
0
.convertToShort(double)
public void setValueToShortOffset(double aOffset)
aOffset
- the offsetgetValueToShortOffset()
public double getValueToShortScale()
1
.convertToShort(double)
public void setValueToShortScale(double aScale)
aScale
- the scalegetValueToShortScale()
protected short convertToShort(double aValue)
transformedValue = offset + value * scale;and then rounded to the nearest integer value and clamped the result to the valid range of a short. Typically the offset and scale are chosen in such a way that they map the expected value range to the range of a short minus one (ex. [
Short.MIN_VALUE
,Short.MAX_VALUE
- 1]).
This last value can then be used as the default value
.aValue
- a valuegetValueToShortOffset()
,
getValueToShortScale()
protected ILcdTile getEmptyTile()
TLcdEarthGXYRasterPainter
getEmptyTile
in class TLcdEarthGXYRasterPainter