Issue #2804 Fixed clipping pane issues where clipped map borders would be visible due to other resources not resetting up the clipping pane when done.

Change-Id: If27cd7c8e11cdc6287303e6d5fc1f4990e300ada

Former-commit-id: 4bcdc9f85b [formerly 6edfb8965f] [formerly dbcbd1b560] [formerly 4bcdc9f85b [formerly 6edfb8965f] [formerly dbcbd1b560] [formerly 1854bbb477 [formerly dbcbd1b560 [formerly 51664693bd87df52acdb74d5286b61eeb06b792d]]]]
Former-commit-id: 1854bbb477
Former-commit-id: c37910a689 [formerly bff80c3ee9] [formerly 64e66813ccc56d3b7a703a331fd119c8cbcceb08 [formerly 6658c94e6e]]
Former-commit-id: ac56a95b831199d75f4f7799c88a6cd9f119118f [formerly 96bdc00728]
Former-commit-id: 83103254e7
This commit is contained in:
Max Schenkelberg 2014-03-03 16:54:22 -06:00
parent 6420b2ac78
commit bee18f29d0
14 changed files with 362 additions and 308 deletions

View file

@ -66,6 +66,9 @@ import com.raytheon.uf.viz.core.rsc.sampling.SamplingResource;
* Jul 20, 2010 6187 bkowal The alpha level will always be reset for every
* resource when the paint method is called now.
* 06/24/2013 2140 randerso Changed to use standardized paint error handling
* Mar 3, 2014 2804 mschenke Setup display to clip before each resource is
* to ensure resources do not affect each other
*
*
* </pre>
*
@ -145,7 +148,6 @@ public class MapRenderableDisplay extends AbstractRenderableDisplay implements
this.mapCenter = descriptor.pixelToWorld(paintProps.getView()
.getExtent().getCenter());
target.setupClippingPlane(getMapExtent());
paintProps.setClippingPane(getMapExtent());
int displayWidth = (int) (((MapDescriptor) descriptor).getMapWidth() * zoomLevel);
@ -173,6 +175,7 @@ public class MapRenderableDisplay extends AbstractRenderableDisplay implements
}
paintProps = calcPaintDataTime(paintProps, rsc);
target.setupClippingPlane(paintProps.getClippingPane());
paintResource(pair, target, paintProps);
}
}

View file

@ -66,6 +66,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* ------------ ---------- ----------- --------------------------
* Dec 22, 2010 mschenke Initial creation
* Jan 31, 2012 14306 kshresth Cursor readout as you sample the dispays
* Mar 3, 2014 2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -352,6 +353,8 @@ public class SamplingResource extends
+ e.getLocalizedMessage(), e);
}
errorInHovering = true;
} finally {
target.setupClippingPlane(paintProps.getClippingPane());
}
}

View file

@ -29,6 +29,7 @@ import javax.xml.bind.annotation.XmlElement;
import com.raytheon.uf.common.time.DataTime;
import com.raytheon.uf.viz.core.drawables.IDescriptor;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType;
/**
* A base implementation of resource data and metadata. This class is used by
@ -112,7 +113,10 @@ public abstract class AbstractResourceData {
*
* This class is typically implemented and provides any transformations
* necessary to go between the raw data form and the input of the renderable
* AbstractVizResource.
* AbstractVizResource. Default calls
* {@link #fireChangeListeners(com.raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType, Object)}
* with {@link ChangeType#DATA_UPDATE} and the updateData with no
* transformations
*
*
* @param updateData

View file

@ -174,6 +174,7 @@ import com.vividsolutions.jts.geom.Point;
* Jul 17, 2013 2197 njensen Improved speed of getName()
* Oct 18, 2013 DR 16151 gzhang Used getAverageValue() for QPF Graph.
* Feb 19, 2014 2819 randerso Removed unnecessary .clone() call
* Mar 3, 2014 2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -1211,198 +1212,208 @@ public class FFMPResource extends
}
aTarget.clearClippingPlane();
try {
paintTime = paintProps.getDataTime();
paintProps.setAlpha(getCapability(ImagingCapability.class).getAlpha());
paintTime = paintProps.getDataTime();
paintProps.setAlpha(getCapability(ImagingCapability.class)
.getAlpha());
FFMPDrawable drawable = null;
FFMPDrawable drawable = null;
if (paintTime != null) {
if (!drawables.containsKey(paintTime)) {
if (paintTime != null) {
if (!drawables.containsKey(paintTime)) {
drawable = new FFMPDrawable(getDomains());
drawables.put(paintTime, drawable);
} else {
// we found it!
drawable = drawables.get(paintTime);
// System.out.println("Found the drawable");
drawable = new FFMPDrawable(getDomains());
drawables.put(paintTime, drawable);
} else {
// we found it!
drawable = drawables.get(paintTime);
// System.out.println("Found the drawable");
if (!paintTime.equals(drawable.getTime())) {
drawable.setDirty(true);
}
// auto refresh state
if (isQuery) {
drawable.setDirty(true);
}
}
if (getResourceData().tableLoad
&& !paintTime.getRefTime().equals(getMostRecentTime())) {
setMostRecentTime(paintTime.getRefTime());
setTableTime();
// if (isLinkToFrame && loader != null && loader.loadType !=
// LOADER_TYPE.GENERAL) {
if (isLinkToFrame) {
updateDialog();
}
}
} else {
getResourceData().getMonitor().forceKillFFMPSplash();
}
if ((drawable != null) && drawable.isDirty()) {
// only need to do the query if extent changed, pfafs may be
// fine
if (!isFirst || (queryJob.getState() == Job.NONE)) {
queryJob.request(aTarget, drawable, paintTime);
}
}
if ((drawable != null) && isFfmpDataToggle()) {
IColormapShadedShapeExtension ext = aTarget
.getExtension(IColormapShadedShapeExtension.class);
ImagingCapability imageCap = getCapability(ImagingCapability.class);
float brightness = imageCap.getBrightness();
float alpha = imageCap.getAlpha();
for (DomainXML domain : getDomains()) {
String cwa = domain.getCwa();
IColormapShadedShape shape = shadedShapes.getDrawableShape(cwa,
drawable.getShadedHuc());
Map<Object, RGB> colorMap = drawable.getColorMap(cwa);
if ((shape != null) && (colorMap != null)) {
ext.drawColormapShadedShape(shape, colorMap, alpha,
brightness);
}
}
}
boolean isAllHuc = getHuc().equals(FFMPRecord.ALL);
if (getResourceData().tableLoad) {
int mapWidth = getDescriptor().getMapWidth() / 1000;
double zoom = getDescriptor().getRenderableDisplay().getZoom();
// determine whether or not to draw the small guys
if ((mapWidth * zoom) > 250.0) {
if (isSmallBasins) {
isSmallBasins = false;
refresh();
}
} else if ((mapWidth * zoom) < 250.0) {
if (!isSmallBasins) {
isSmallBasins = true;
if (smallBasinOverlayShape == null) {
if (!paintTime.equals(drawable.getTime())) {
drawable.setDirty(true);
} else {
}
// auto refresh state
if (isQuery) {
drawable.setDirty(true);
}
}
if (getResourceData().tableLoad
&& !paintTime.getRefTime().equals(getMostRecentTime())) {
setMostRecentTime(paintTime.getRefTime());
setTableTime();
// if (isLinkToFrame && loader != null && loader.loadType !=
// LOADER_TYPE.GENERAL) {
if (isLinkToFrame) {
updateDialog();
}
}
} else {
getResourceData().getMonitor().forceKillFFMPSplash();
}
if ((drawable != null) && drawable.isDirty()) {
// only need to do the query if extent changed, pfafs may be
// fine
if (!isFirst || (queryJob.getState() == Job.NONE)) {
queryJob.request(aTarget, drawable, paintTime);
}
}
if ((drawable != null) && isFfmpDataToggle()) {
IColormapShadedShapeExtension ext = aTarget
.getExtension(IColormapShadedShapeExtension.class);
ImagingCapability imageCap = getCapability(ImagingCapability.class);
float brightness = imageCap.getBrightness();
float alpha = imageCap.getAlpha();
for (DomainXML domain : getDomains()) {
String cwa = domain.getCwa();
IColormapShadedShape shape = shadedShapes.getDrawableShape(
cwa, drawable.getShadedHuc());
Map<Object, RGB> colorMap = drawable.getColorMap(cwa);
if ((shape != null) && (colorMap != null)) {
ext.drawColormapShadedShape(shape, colorMap, alpha,
brightness);
}
}
}
boolean isAllHuc = getHuc().equals(FFMPRecord.ALL);
if (getResourceData().tableLoad) {
int mapWidth = getDescriptor().getMapWidth() / 1000;
double zoom = getDescriptor().getRenderableDisplay().getZoom();
// determine whether or not to draw the small guys
if ((mapWidth * zoom) > 250.0) {
if (isSmallBasins) {
isSmallBasins = false;
refresh();
}
}
}
if (isSmallBasins && this.isBasinToggle()) {
OutlineCapability lineCap = getCapability(OutlineCapability.class);
if ((smallBasinOverlayShape != null)
&& smallBasinOverlayShape.isDrawable()) {
if (basinBoundaryColor == null) {
basinBoundaryColor = getCapability(
ColorableCapability.class).getColor();
}
aTarget.drawWireframeShape(smallBasinOverlayShape,
basinBoundaryColor, lineCap.getOutlineWidth(),
lineCap.getLineStyle());
} else if ((smallBasinOverlayShape == null)
&& lineCap.isOutlineOn()) {
issueRefresh();
}
}
// the product string
if (isFfmpDataToggle() && (fieldDescString != null)) {
paintProductString(aTarget, paintProps);
}
}
// re-centered ?
if (centeredAggregationKey != null) {
vgbDrawables.clear();
// create pixelCoverages for the VGB's
if (isAllHuc) {
for (DomainXML domain : getDomains()) {
for (Long pfaf : monitor.getTemplates(getSiteKey())
.getMap(getSiteKey(), domain.getCwa(), getHuc())
.keySet()) {
List<FFMPVirtualGageBasinMetaData> fvgmdList = monitor
.getTemplates(getSiteKey())
.getVirtualGageBasinMetaData(getSiteKey(),
domain.getCwa(), pfaf);
if (fvgmdList != null) {
for (FFMPVirtualGageBasinMetaData fvgmd : fvgmdList) {
vgbDrawables.put(
fvgmd.getLid(),
getPixelCoverage(fvgmd.getCoordinate(),
paintProps));
}
} else if ((mapWidth * zoom) < 250.0) {
if (!isSmallBasins) {
isSmallBasins = true;
if (smallBasinOverlayShape == null) {
drawable.setDirty(true);
} else {
refresh();
}
}
}
} else {
if (lowestCenter == FFMPRecord.ZOOM.AGGREGATE) {
for (Long pfaf : monitor.getTemplates(getSiteKey())
.getAllAggregatePfafs(centeredAggregationKey,
getHuc())) {
List<FFMPVirtualGageBasinMetaData> fvgmdList = monitor
if (isSmallBasins && this.isBasinToggle()) {
OutlineCapability lineCap = getCapability(OutlineCapability.class);
if ((smallBasinOverlayShape != null)
&& smallBasinOverlayShape.isDrawable()) {
if (basinBoundaryColor == null) {
basinBoundaryColor = getCapability(
ColorableCapability.class).getColor();
}
aTarget.drawWireframeShape(smallBasinOverlayShape,
basinBoundaryColor, lineCap.getOutlineWidth(),
lineCap.getLineStyle());
} else if ((smallBasinOverlayShape == null)
&& lineCap.isOutlineOn()) {
issueRefresh();
}
}
// the product string
if (isFfmpDataToggle() && (fieldDescString != null)) {
paintProductString(aTarget, paintProps);
}
}
// re-centered ?
if (centeredAggregationKey != null) {
vgbDrawables.clear();
// create pixelCoverages for the VGB's
if (isAllHuc) {
for (DomainXML domain : getDomains()) {
for (Long pfaf : monitor
.getTemplates(getSiteKey())
.getVirtualGageBasinMetaData(getSiteKey(),
null, pfaf);
if (fvgmdList != null) {
for (FFMPVirtualGageBasinMetaData fvgmd : fvgmdList) {
vgbDrawables.put(
fvgmd.getLid(),
getPixelCoverage(fvgmd.getCoordinate(),
paintProps));
.getMap(getSiteKey(), domain.getCwa(), getHuc())
.keySet()) {
List<FFMPVirtualGageBasinMetaData> fvgmdList = monitor
.getTemplates(getSiteKey())
.getVirtualGageBasinMetaData(getSiteKey(),
domain.getCwa(), pfaf);
if (fvgmdList != null) {
for (FFMPVirtualGageBasinMetaData fvgmd : fvgmdList) {
vgbDrawables.put(
fvgmd.getLid(),
getPixelCoverage(
fvgmd.getCoordinate(),
paintProps));
}
}
}
}
} else {
for (DomainXML domain : getDomains()) {
for (Entry<String, FFMPVirtualGageBasinMetaData> entry : monitor
.getTemplates(getSiteKey())
.getVirtualGageBasins(getSiteKey(),
domain.getCwa()).entrySet()) {
if (entry.getValue() != null) {
vgbDrawables.put(
entry.getKey(),
getPixelCoverage(entry.getValue()
.getCoordinate(), paintProps));
if (lowestCenter == FFMPRecord.ZOOM.AGGREGATE) {
for (Long pfaf : monitor.getTemplates(getSiteKey())
.getAllAggregatePfafs(centeredAggregationKey,
getHuc())) {
List<FFMPVirtualGageBasinMetaData> fvgmdList = monitor
.getTemplates(getSiteKey())
.getVirtualGageBasinMetaData(getSiteKey(),
null, pfaf);
if (fvgmdList != null) {
for (FFMPVirtualGageBasinMetaData fvgmd : fvgmdList) {
vgbDrawables.put(
fvgmd.getLid(),
getPixelCoverage(
fvgmd.getCoordinate(),
paintProps));
}
}
}
} else {
for (DomainXML domain : getDomains()) {
for (Entry<String, FFMPVirtualGageBasinMetaData> entry : monitor
.getTemplates(getSiteKey())
.getVirtualGageBasins(getSiteKey(),
domain.getCwa()).entrySet()) {
if (entry.getValue() != null) {
vgbDrawables.put(
entry.getKey(),
getPixelCoverage(entry.getValue()
.getCoordinate(),
paintProps));
}
}
}
}
}
paintCenter(aTarget, paintProps);
paintVGBs(aTarget, paintProps);
}
paintCenter(aTarget, paintProps);
paintVGBs(aTarget, paintProps);
}
// draw or clear the colorMap
if (!isFfmpDataToggle()) { // clear if ffmpDataToggle is false
getCapability(ColorMapCapability.class).setColorMapParameters(
null);
} else if (getColorUtil().getColorMapParameters() != null) {
// restore if null
getCapability(ColorMapCapability.class).setColorMapParameters(
getColorUtil().getColorMapParameters());
}
// draw or clear the colorMap
if (!isFfmpDataToggle()) { // clear if ffmpDataToggle is false
getCapability(ColorMapCapability.class).setColorMapParameters(null);
} else if (getColorUtil().getColorMapParameters() != null) {
// restore if null
getCapability(ColorMapCapability.class).setColorMapParameters(
getColorUtil().getColorMapParameters());
}
// draw stream trace?
if (isShowStream() && isStreamFollow()) {
paintUpAndDownStream(aTarget, paintProps);
}
// draw stream trace?
if (isShowStream() && isStreamFollow()) {
paintUpAndDownStream(aTarget, paintProps);
// always reset
isQuery = false;
} finally {
aTarget.setupClippingPlane(paintProps.getClippingPane());
}
// always reset
isQuery = false;
}
/**

View file

@ -84,7 +84,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* D2DTimeMatcher.
* Apr 02, 2013 1731 mpduff Fix problem with DMD updates.
* Apr 22, 2013 1926 njensen Faster rendering
*
* Mar 3, 2014 2804 mschenke Set back up clipping pane
* </pre>
*
* @author dhladky
@ -246,7 +246,6 @@ public class ScanResource extends
PaintProperties paintProps) throws VizException {
getScan().setFrames(paintProps.getFramesInfo().getFrameCount());
target.setupClippingPlane(paintProps.getClippingPane());
this.paintTime = paintProps.getDataTime();
if (paintTime != null) {
@ -393,6 +392,7 @@ public class ScanResource extends
} else if (getTable().equals(ScanTables.DMD)) {
paintElevationAngle(target, paintProps);
}
target.setupClippingPlane(paintProps.getClippingPane());
}
}

View file

@ -39,9 +39,9 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.style.ParamLevelMatchCriteria;
import com.raytheon.uf.common.style.StyleException;
import com.raytheon.uf.common.style.StyleManager;
import com.raytheon.uf.common.style.StyleRule;
import com.raytheon.uf.common.style.StyleException;
import com.raytheon.uf.common.style.image.ImagePreferences;
import com.raytheon.uf.common.time.DataTime;
import com.raytheon.uf.viz.core.IGraphicsTarget;
@ -68,8 +68,8 @@ import com.vividsolutions.jts.geom.Coordinate;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 11Nov2009 2037 dhladky Initial Creation.
*
* 11Nov2009 2037 dhladky Initial Creation.
* Mar 3, 2014 2804 mschenke Set back up clipping pane
* </pre>
*
* @author dhladky
@ -196,76 +196,81 @@ public class VILResource extends
PaintProperties paintProps) throws VizException {
target.clearClippingPlane();
this.displayedDataTime = paintProps.getDataTime();
try {
this.displayedDataTime = paintProps.getDataTime();
if (this.font == null) {
this.font = target.initializeFont("Dialog", 11, null);
}
// Pull the record out
this.record = resourceData.dataObjectMap.get(this.displayedDataTime);
if (record == null) {
// Don't have data for this frame
return;
}
GriddedImageDisplay2 gridDisplay = null;
if (record.getDataArray() == null) {
record = resourceData.populateRecord(record);
}
gridDisplay = griddedDisplayMap.get(displayedDataTime);
if (gridDisplay == null) {
gridDisplay = new GriddedImageDisplay2(FloatBuffer.wrap(record
.getDataArray()), record.getGridGeometry(), this);
this.previousDataTime = displayedDataTime;
griddedDisplayMap.put(displayedDataTime, gridDisplay);
}
if (record.getDataArray() == null) {
// this should never happen, but just to be sure
System.err.println("record.getDataArray() returned null");
return;
}
ColorMapParameters colorMapParameters = getCapability(
ColorMapCapability.class).getColorMapParameters();
if (record != null && init) {
// Get default colormap
StyleRule sr;
try {
sr = StyleManager.getInstance().getStyleRule(
StyleManager.StyleType.IMAGERY, getMatchCriteria());
} catch (StyleException e) {
throw new VizException(e.getLocalizedMessage(), e);
if (this.font == null) {
this.font = target.initializeFont("Dialog", 11, null);
}
this.colormapfile = ((ImagePreferences) sr.getPreferences())
.getDefaultColormap();
IColorMap cxml = ColorMapLoader.loadColorMap(colormapfile);
ColorMap colorMap = new ColorMap(colormapfile, (ColorMap) cxml);
colorMapParameters.setColorMap(colorMap);
// Pull the record out
this.record = resourceData.dataObjectMap
.get(this.displayedDataTime);
colorMapParameters.setDataMapping(((ImagePreferences) sr
.getPreferences()).getDataMapping());
if (record == null) {
// Don't have data for this frame
return;
}
vilmax = colorMapParameters
.getDataMapping()
.getEntries()
.get(colorMapParameters.getDataMapping().getEntries()
.size() - 1).getDisplayValue().floatValue();
vilmin = colorMapParameters.getDataMapping().getEntries().get(0)
.getDisplayValue().floatValue();
colorMapParameters.setColorMapMax(vilmax);
colorMapParameters.setColorMapMin(vilmin);
GriddedImageDisplay2 gridDisplay = null;
init = false;
if (record.getDataArray() == null) {
record = resourceData.populateRecord(record);
}
gridDisplay = griddedDisplayMap.get(displayedDataTime);
if (gridDisplay == null) {
gridDisplay = new GriddedImageDisplay2(FloatBuffer.wrap(record
.getDataArray()), record.getGridGeometry(), this);
this.previousDataTime = displayedDataTime;
griddedDisplayMap.put(displayedDataTime, gridDisplay);
}
if (record.getDataArray() == null) {
// this should never happen, but just to be sure
System.err.println("record.getDataArray() returned null");
return;
}
ColorMapParameters colorMapParameters = getCapability(
ColorMapCapability.class).getColorMapParameters();
if (record != null && init) {
// Get default colormap
StyleRule sr;
try {
sr = StyleManager.getInstance().getStyleRule(
StyleManager.StyleType.IMAGERY, getMatchCriteria());
} catch (StyleException e) {
throw new VizException(e.getLocalizedMessage(), e);
}
this.colormapfile = ((ImagePreferences) sr.getPreferences())
.getDefaultColormap();
IColorMap cxml = ColorMapLoader.loadColorMap(colormapfile);
ColorMap colorMap = new ColorMap(colormapfile, (ColorMap) cxml);
colorMapParameters.setColorMap(colorMap);
colorMapParameters.setDataMapping(((ImagePreferences) sr
.getPreferences()).getDataMapping());
vilmax = colorMapParameters
.getDataMapping()
.getEntries()
.get(colorMapParameters.getDataMapping().getEntries()
.size() - 1).getDisplayValue().floatValue();
vilmin = colorMapParameters.getDataMapping().getEntries()
.get(0).getDisplayValue().floatValue();
colorMapParameters.setColorMapMax(vilmax);
colorMapParameters.setColorMapMin(vilmin);
init = false;
}
gridDisplay.paint(target, paintProps);
} finally {
target.setupClippingPlane(paintProps.getClippingPane());
}
gridDisplay.paint(target, paintProps);
}
/*

View file

@ -72,6 +72,7 @@ import com.vividsolutions.jts.geom.LineString;
* Aug 29, 2013 2281 bsteffen Fix click distance calculations.
* Sep 03, 2013 2310 bsteffen Move MouseHandler from ShearAction to
* ShearLayer.
* Mar 3, 2014 2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -167,7 +168,11 @@ public class ShearLayer extends
drawLineString(target, ls, color, IGraphicsTarget.LineStyle.SOLID);
String label = drawLabeling(target, ls, color, paintProps);
target.clearClippingPlane();
drawUpperLeftCornerLabel(target, paintProps, label);
try {
drawUpperLeftCornerLabel(target, paintProps, label);
} finally {
target.setupClippingPlane(paintProps.getClippingPane());
}
}
public void drawLines(Coordinate[] coors) {
@ -227,7 +232,7 @@ public class ShearLayer extends
return coorOnCircle;
}
protected void drawBaselineLabel(IGraphicsTarget target,
Coordinate latLong, String label) throws VizException {
@ -244,7 +249,7 @@ public class ShearLayer extends
ds.horizontalAlignment = HorizontalAlignment.LEFT;
// set the magnification
ds.magnification = this.getCapability(MagnificationCapability.class)
.getMagnification().floatValue();
.getMagnification().floatValue();
target.drawStrings(ds);
}
@ -309,8 +314,7 @@ public class ShearLayer extends
* y location in screen pixels
* @return T Coordinate of the endpoint, null if not found.
*/
public Coordinate isInsideEndpoint(int x,
int y) {
public Coordinate isInsideEndpoint(int x, int y) {
IDisplayPaneContainer container = getResourceContainer();
if (container == null) {
return null;
@ -378,7 +382,7 @@ public class ShearLayer extends
ds.horizontalAlignment = HorizontalAlignment.LEFT;
// set the magnification
ds.magnification = this.getCapability(MagnificationCapability.class)
.getMagnification().floatValue();
.getMagnification().floatValue();
target.drawStrings(ds);
}
@ -425,9 +429,10 @@ public class ShearLayer extends
String separatorSymbol;
public VelocityRange(Map<String, Object> map) {
if (map != null && map.containsKey("Mnemonic")
&& (map.containsKey(BASE_VELOCITY_VALUE_KEY) ||
map.containsKey(VALUE_KEY))) {
if (map != null
&& map.containsKey("Mnemonic")
&& (map.containsKey(BASE_VELOCITY_VALUE_KEY) || map
.containsKey(VALUE_KEY))) {
String mnemonic = map.get("Mnemonic").toString();
if (mnemonic.equalsIgnoreCase("V")

View file

@ -130,6 +130,7 @@ import com.sun.opengl.util.j2d.TextRenderer;
* May 28, 2013 1638 mschenke Made sure {@link TextStyle#BLANKED} text is drawing correct size
* box around text
* Nov 4, 2013 2492 mschenke Switched colormap drawing to use 1D texture object for alpha mask
* Mar 3, 2014 2804 mschenke Added clipping pane field to only setup if changed
*
* </pre>
*
@ -250,6 +251,8 @@ public class GLTarget extends AbstractGraphicsTarget implements IGLTarget {
protected Rectangle monitorBounds;
protected IExtent clippingPane;
/**
* Construct a GL target using a canvas (inherited from IGraphicsTarget)
*
@ -406,6 +409,7 @@ public class GLTarget extends AbstractGraphicsTarget implements IGLTarget {
gl.glDisable(GL.GL_CLIP_PLANE1);
gl.glDisable(GL.GL_CLIP_PLANE2);
gl.glDisable(GL.GL_CLIP_PLANE3);
this.clippingPane = null;
}
/*
@ -1394,9 +1398,19 @@ public class GLTarget extends AbstractGraphicsTarget implements IGLTarget {
*/
@Override
public void setupClippingPlane(IExtent extent) {
if (extent == null) {
if (this.clippingPane == extent
|| (this.clippingPane != null && extent != null && this.clippingPane
.equals(extent))) {
// Clipping pane already set to this
return;
}
this.clippingPane = extent;
if (clippingPane == null) {
clearClippingPlane();
return;
}
// Clone to preserve clipping pane extent
this.clippingPane = clippingPane.clone();
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glPushMatrix();

View file

@ -35,8 +35,6 @@ import com.raytheon.uf.common.dataplugin.gfe.reference.ReferenceData;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.core.AbstractGraphicsFactoryAdapter;
import com.raytheon.uf.viz.core.GraphicsFactory;
import com.raytheon.uf.viz.core.IDisplayPane;
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
import com.raytheon.uf.viz.core.IExtent;
@ -103,6 +101,7 @@ import com.raytheon.viz.ui.input.InputAdapter;
* 01/23/2013 #1524 randerso Fix error when clicking on discrete color bar when
* no grid exists
* 08/27/2013 #2287 randerso Fixed fitToDataColorTable for Single Grids
* Mar 3, 2014 #2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -241,8 +240,6 @@ public class GFEColorbarResource extends
protected static RGB seColorBarBgWxPickupColor = new RGB(255, 0, 255);
AbstractGraphicsFactoryAdapter graphicsAdapter = null;
protected Set<ParmID> fittedParms;
static {
@ -430,12 +427,7 @@ public class GFEColorbarResource extends
colorbarDisplay.paint(target, paintProps);
}
if (graphicsAdapter == null) {
graphicsAdapter = GraphicsFactory.getGraphicsAdapter();
}
target.setupClippingPlane(graphicsAdapter.constructExtent(descriptor
.getGridGeometry().getGridRange()));
target.setupClippingPlane(paintProps.getClippingPane());
// this.lastIndex = curIndex;

View file

@ -61,10 +61,11 @@ import com.raytheon.viz.ui.cmenu.IContextMenuContributor;
* SOFTWARE HISTORY
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Feb 20, 2009 mpduff Initial creation
* Feb 20, 2009 mpduff Initial creation
* Feb 14, 2013 1616 bsteffen Add option for interpolation of colormap
* parameters, disable colormap interpolation
* by default.
* Mar 3, 2014 2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -156,11 +157,15 @@ public class HydroColorBarResource extends
target.clearClippingPlane();
double yMax = screenExtent.getMaxY();
try {
double yMax = screenExtent.getMaxY();
/* Draw the color bar */
yMax = drawColorBar(target, screenExtent.getMinX(),
screenExtent.getMaxX(), yMax);
/* Draw the color bar */
yMax = drawColorBar(target, screenExtent.getMinX(),
screenExtent.getMaxX(), yMax);
} finally {
target.setupClippingPlane(paintProps.getClippingPane());
}
}
/**

View file

@ -86,6 +86,7 @@ import com.vividsolutions.jts.index.strtree.STRtree;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jul 8, 2009 2589 snaples Initial creation
* Mar 3, 2014 2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -528,6 +529,7 @@ public class PointFreezePlotResource extends
}
target.clearClippingPlane();
drawQCLegend();
target.setupClippingPlane(paintProps.getClippingPane());
}
}

View file

@ -88,6 +88,7 @@ import com.vividsolutions.jts.index.strtree.STRtree;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Nov 24, 2008 1748 snaples Initial creation
* Mar 3, 2014 2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -761,6 +762,7 @@ public class PointPrecipPlotResource extends
}
target.clearClippingPlane();
drawQCLegend();
target.setupClippingPlane(paintProps.getClippingPane());
}
}

View file

@ -87,6 +87,7 @@ import com.vividsolutions.jts.index.strtree.STRtree;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jun 24, 2009 2524 snaples Initial creation
* Mar 3, 2014 2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -602,6 +603,7 @@ public class PointTempPlotResource extends
}
target.clearClippingPlane();
drawQCLegend();
target.setupClippingPlane(paintProps.getClippingPane());
}
}

View file

@ -43,11 +43,11 @@ import com.raytheon.uf.viz.core.rsc.capabilities.ColorableCapability;
import com.raytheon.uf.viz.core.rsc.capabilities.IMiddleClickCapableResource;
import com.raytheon.uf.viz.core.rsc.capabilities.MagnificationCapability;
import com.raytheon.viz.radar.IRadarConfigListener;
import com.raytheon.viz.radar.VizRadarRecord;
import com.raytheon.viz.radar.interrogators.IRadarInterrogator;
import com.raytheon.viz.radar.rsc.AbstractRadarResource;
import com.raytheon.viz.radar.rsc.RadarResourceData;
import com.raytheon.viz.radar.ui.RadarDisplayManager;
import com.raytheon.viz.radar.VizRadarRecord;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
@ -62,7 +62,8 @@ import com.vividsolutions.jts.geom.Envelope;
* May 13, 2010 mnash Initial creation
* Jul 20, 2010 #6187 bkowal The cache will be cleared out every time
* a refresh is required.
* 03/05/2013 DCS51 zwang Handle GFM product
* 03/05/2013 DCS51 zwang Handle GFM product
* Mar 3, 2014 2804 mschenke Set back up clipping pane
*
* </pre>
*
@ -164,14 +165,14 @@ public class RadarGraphicsResource extends AbstractRadarResource<MapDescriptor>
@Override
public String[] getUpperText(DataTime time) {
VizRadarRecord record = getRadarRecord(time);
// Use upper text to display gfmCount for GFM (140)
if (record != null && record.getProductCode() == 140) {
return super.getUpperText(time);
}
// Upper text would interfere with the table
VizRadarRecord record = getRadarRecord(time);
// Use upper text to display gfmCount for GFM (140)
if (record != null && record.getProductCode() == 140) {
return super.getUpperText(time);
}
// Upper text would interfere with the table
return null;
}
@ -223,48 +224,53 @@ public class RadarGraphicsResource extends AbstractRadarResource<MapDescriptor>
// DMD specify
if (radarRecord.getProductCode() == 149) {
target.clearClippingPlane();
int xPos = 95;
int yPos = 10;
xPos = paintProps.getCanvasBounds().x
+ paintProps.getCanvasBounds().width - xPos;
try {
int xPos = 95;
int yPos = 10;
xPos = paintProps.getCanvasBounds().x
+ paintProps.getCanvasBounds().width - xPos;
// Get the Lat/Lon of the screen Extent
Envelope screenLatLon = descriptor.pixelToWorld(paintProps
.getView().getExtent());
// Get the Lat/Lon of the screen Extent
Envelope screenLatLon = descriptor.pixelToWorld(paintProps
.getView().getExtent());
int offScreenCount = 0;
int filteredCount = 0;
Coordinate currFeature;
for (RadarDataKey currPt : radarRecord.getSymbologyData().keySet()) {
currFeature = new Coordinate(currPt.getLon(), currPt.getLat());
int offScreenCount = 0;
int filteredCount = 0;
Coordinate currFeature;
for (RadarDataKey currPt : radarRecord.getSymbologyData()
.keySet()) {
currFeature = new Coordinate(currPt.getLon(),
currPt.getLat());
if (!screenLatLon.contains(currFeature)) {
// Count how many are not on the screen
offScreenCount++;
} else if (!radarRecord.getSymbologyData().get(currPt)
.isVisible()) {
// Count how many are not visible, that would be on the
// screen
filteredCount++;
if (!screenLatLon.contains(currFeature)) {
// Count how many are not on the screen
offScreenCount++;
} else if (!radarRecord.getSymbologyData().get(currPt)
.isVisible()) {
// Count how many are not visible, that would be on the
// screen
filteredCount++;
}
}
DrawableString offscreen = new DrawableString(offScreenCount
+ " FEATURES OFF SCREEN", this.getCapability(
ColorableCapability.class).getColor());
offscreen.setCoordinates(xPos, yPos);
offscreen.horizontalAlignment = HorizontalAlignment.CENTER;
offscreen.verticallAlignment = VerticalAlignment.MIDDLE;
DrawableString notShown = new DrawableString(filteredCount
+ " FEATURES NOT SHOWN", this.getCapability(
ColorableCapability.class).getColor());
notShown.setCoordinates(xPos, yPos + 20);
notShown.horizontalAlignment = HorizontalAlignment.CENTER;
notShown.verticallAlignment = VerticalAlignment.MIDDLE;
target.getExtension(ICanvasRenderingExtension.class)
.drawStrings(paintProps, offscreen, notShown);
} finally {
target.setupClippingPlane(paintProps.getClippingPane());
}
DrawableString offscreen = new DrawableString(offScreenCount
+ " FEATURES OFF SCREEN", this.getCapability(
ColorableCapability.class).getColor());
offscreen.setCoordinates(xPos, yPos);
offscreen.horizontalAlignment = HorizontalAlignment.CENTER;
offscreen.verticallAlignment = VerticalAlignment.MIDDLE;
DrawableString notShown = new DrawableString(filteredCount
+ " FEATURES NOT SHOWN", this.getCapability(
ColorableCapability.class).getColor());
notShown.setCoordinates(xPos, yPos + 20);
notShown.horizontalAlignment = HorizontalAlignment.CENTER;
notShown.verticallAlignment = VerticalAlignment.MIDDLE;
target.getExtension(ICanvasRenderingExtension.class).drawStrings(
paintProps, offscreen, notShown);
}
}