diff --git a/cave/build/static/common/cave/etc/pyViz/VizPainter.py b/cave/build/static/common/cave/etc/pyViz/VizPainter.py index d0cbcea552..3204d3e853 100644 --- a/cave/build/static/common/cave/etc/pyViz/VizPainter.py +++ b/cave/build/static/common/cave/etc/pyViz/VizPainter.py @@ -101,7 +101,7 @@ class VizPainter(): # requires multiple passes to paint everything paint = True while paint: - self.target.beginFrame(self.display, True) + self.target.beginFrame(self.display.getView(), True) if backgroundColor is not None: self.target.setBackgroundColor(backgroundColor) self.display.paint(self.target, props) diff --git a/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/DispatchingMosaicImage.java b/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/DispatchingMosaicImage.java index b7fbf42a3b..ea55560d99 100644 --- a/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/DispatchingMosaicImage.java +++ b/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/DispatchingMosaicImage.java @@ -106,7 +106,7 @@ public class DispatchingMosaicImage extends this.imageExtent = imageExtent; UpdateMosaicExtent extentUpdate = RemoteGraphicsEventFactory .createEvent(UpdateMosaicExtent.class, this); - extentUpdate.setIExtent(imageExtent); + extentUpdate.setExtent(imageExtent.clone()); dispatch(extentUpdate); } } diff --git a/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/DispatchingRadarMosaicExtension.java b/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/DispatchingRadarMosaicExtension.java index 715893ce82..b3ba24098c 100644 --- a/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/DispatchingRadarMosaicExtension.java +++ b/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/DispatchingRadarMosaicExtension.java @@ -78,7 +78,7 @@ public class DispatchingRadarMosaicExtension extends if (imageExtent != null) { UpdateMosaicExtent extentUpdate = RemoteGraphicsEventFactory .createEvent(UpdateMosaicExtent.class, image); - extentUpdate.setIExtent(imageExtent); + extentUpdate.setExtent(imageExtent.clone()); creation.setExtent(extentUpdate); } target.dispatch(creation); diff --git a/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/UpdateMosaicExtent.java b/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/UpdateMosaicExtent.java index 96305e8125..e83482fe19 100644 --- a/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/UpdateMosaicExtent.java +++ b/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/mosaic/UpdateMosaicExtent.java @@ -22,7 +22,6 @@ package com.raytheon.uf.viz.collaboration.radar.mosaic; import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; import com.raytheon.uf.viz.core.IExtent; -import com.raytheon.uf.viz.core.PixelExtent; import com.raytheon.uf.viz.remote.graphics.events.AbstractDispatchingObjectEvent; /** @@ -45,12 +44,12 @@ import com.raytheon.uf.viz.remote.graphics.events.AbstractDispatchingObjectEvent public class UpdateMosaicExtent extends AbstractDispatchingObjectEvent { @DynamicSerializeElement - private double[] extent; + private IExtent extent; /** * @return the extent */ - public double[] getExtent() { + public IExtent getExtent() { return extent; } @@ -58,22 +57,8 @@ public class UpdateMosaicExtent extends AbstractDispatchingObjectEvent { * @param extent * the extent to set */ - public void setExtent(double[] extent) { + public void setExtent(IExtent extent) { this.extent = extent; } - public void setIExtent(IExtent extent) { - if (extent != null) { - setExtent(new double[] { extent.getMinX(), extent.getMaxX(), - extent.getMinY(), extent.getMaxY() }); - } - } - - public IExtent getIExtent() { - if (extent != null) { - return new PixelExtent(extent[0], extent[1], extent[2], extent[3]); - } - return null; - } - } diff --git a/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/rendering/RadarGraphicsExtRenderingHandler.java b/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/rendering/RadarGraphicsExtRenderingHandler.java index 5202962b14..606bb12ac1 100644 --- a/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/rendering/RadarGraphicsExtRenderingHandler.java +++ b/cave/com.raytheon.uf.viz.collaboration.radar/src/com/raytheon/uf/viz/collaboration/radar/rendering/RadarGraphicsExtRenderingHandler.java @@ -79,7 +79,7 @@ public class RadarGraphicsExtRenderingHandler extends IExtent imageExtent = null; ColorMapParameters parameters = null; if (event.getExtent() != null) { - imageExtent = event.getExtent().getIExtent(); + imageExtent = event.getExtent().getExtent(); } if (event.getColorMapParameters() != null) { parameters = event.getColorMapParameters().getColorMapParameters(); @@ -114,7 +114,7 @@ public class RadarGraphicsExtRenderingHandler extends IMosaicImage image = dataManager.getRenderableObject( event.getObjectId(), IMosaicImage.class); if (image != null) { - image.setImageExtent(event.getIExtent()); + image.setImageExtent(event.getExtent()); } } } diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/role/dataprovider/CollaborationObjectEventStorage.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/role/dataprovider/CollaborationObjectEventStorage.java index 9c3dfd3fee..7da6cd7e4d 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/role/dataprovider/CollaborationObjectEventStorage.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/role/dataprovider/CollaborationObjectEventStorage.java @@ -180,7 +180,10 @@ public class CollaborationObjectEventStorage implements throws CollaborationException { if (event instanceof CollaborationHttpPersistedEvent) { CollaborationHttpPersistedObject object = retreiveStoredObject((CollaborationHttpPersistedEvent) event); - if (object != null && object.event != null) { + if (object == null) { + // No object available + return null; + } else if (object.event != null) { stats.log(object.event.getClass().getSimpleName(), 0, object.dataSize); return object.event; @@ -213,6 +216,9 @@ public class CollaborationObjectEventStorage implements } catch (SerializationException e) { throw new CollaborationException(e); } + } else if (isNotExists(response.code)) { + // Object was deleted + return null; } else { throw new CollaborationException("Error retrieving object from " + objectPath + " : " + new String(response.data)); @@ -236,9 +242,8 @@ public class CollaborationObjectEventStorage implements if (isNotExists(response.code)) { return new AbstractDispatchingObjectEvent[0]; } - throw new CollaborationException( - "Error retrieving object events, received code: " - + response.code); + throw new CollaborationException("Error retrieving object (" + + objectId + ") events, received code: " + response.code); } CollaborationHttpPersistedEvent event = new CollaborationHttpPersistedEvent(); List objectEvents = new ArrayList(); @@ -264,6 +269,9 @@ public class CollaborationObjectEventStorage implements CollaborationHttpPersistedObject eventObject = retreiveStoredObject(event); if (eventObject != null) { objectEvents.add(eventObject); + } else { + // Object was deleted, abort + return new AbstractDispatchingObjectEvent[0]; } } searchIdx = endsAt + 1; diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/CollaborationResource.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/CollaborationResource.java index d7ca3334d9..bd7121cb22 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/CollaborationResource.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/CollaborationResource.java @@ -299,7 +299,11 @@ public class CollaborationResource extends @Override public void run() { try { - renderableArrived(dataManager.retrieveEvent(event)); + AbstractDispatchingObjectEvent objectEvent = dataManager + .retrieveEvent(event); + if (objectEvent != null) { + renderableArrived(objectEvent); + } } catch (CollaborationException e) { Activator.statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); @@ -340,7 +344,7 @@ public class CollaborationResource extends IRenderableDisplay display = descriptor .getRenderableDisplay(); BeginFrameEvent bfe = (BeginFrameEvent) renderable; - IExtent frameExtent = bfe.getIExtent(); + IExtent frameExtent = bfe.getExtent(); providerWindow = frameExtent; Rectangle bounds = display.getBounds(); double width = frameExtent.getWidth(); diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/GeneralRenderingHandler.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/GeneralRenderingHandler.java index 68a6f33dd9..5423367881 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/GeneralRenderingHandler.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/GeneralRenderingHandler.java @@ -137,6 +137,6 @@ public class GeneralRenderingHandler extends CollaborationRenderingHandler { @Subscribe public void setupClippingPane(SetupClippingPane event) { - getGraphicsTarget().setupClippingPlane(event.getIExtent()); + getGraphicsTarget().setupClippingPlane(event.getExtent()); } } diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/ImagingRenderingHandler.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/ImagingRenderingHandler.java index 76331b05ea..b2820b7c22 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/ImagingRenderingHandler.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/ImagingRenderingHandler.java @@ -374,7 +374,7 @@ public class ImagingRenderingHandler extends CollaborationRenderingHandler { cmap.brightness = event.getBrightness(); cmap.contrast = event.getContrast(); cmap.interpolate = event.isInterpolate(); - cmap.extent = event.getIExtent(); + cmap.extent = event.getExtent(); try { target.drawColorRamp(cmap); } catch (VizException e) { diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/OffscreenRenderingHandler.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/OffscreenRenderingHandler.java index c70f67114c..f62c55ea11 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/OffscreenRenderingHandler.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/OffscreenRenderingHandler.java @@ -96,7 +96,7 @@ public class OffscreenRenderingHandler extends CollaborationRenderingHandler { try { if (event.getExtent() != null) { target.getExtension(IOffscreenRenderingExtension.class) - .renderOffscreen(offscreenImage, event.getIExtent()); + .renderOffscreen(offscreenImage, event.getExtent()); } else { target.getExtension(IOffscreenRenderingExtension.class) .renderOffscreen(offscreenImage); diff --git a/cave/com.raytheon.uf.viz.core/src/com/raytheon/uf/viz/core/IGraphicsTarget.java b/cave/com.raytheon.uf.viz.core/src/com/raytheon/uf/viz/core/IGraphicsTarget.java index 094755d1b9..7361d6c66c 100644 --- a/cave/com.raytheon.uf.viz.core/src/com/raytheon/uf/viz/core/IGraphicsTarget.java +++ b/cave/com.raytheon.uf.viz.core/src/com/raytheon/uf/viz/core/IGraphicsTarget.java @@ -35,7 +35,6 @@ import com.raytheon.uf.viz.core.drawables.ColorMapParameters; import com.raytheon.uf.viz.core.drawables.IDescriptor; import com.raytheon.uf.viz.core.drawables.IFont; import com.raytheon.uf.viz.core.drawables.IImage; -import com.raytheon.uf.viz.core.drawables.IRenderableDisplay; import com.raytheon.uf.viz.core.drawables.IShadedShape; import com.raytheon.uf.viz.core.drawables.IWireframeShape; import com.raytheon.uf.viz.core.drawables.PaintProperties; @@ -594,13 +593,12 @@ public interface IGraphicsTarget extends IImagingExtension { * Start a frame with a given extent. Must call endFrame after drawing is * complete. * - * @param display - * the display area that the frame covers + * @param view + * viewable area of the frame * @param isClearBackground * whether background should be cleared prior to drawing */ - public abstract void beginFrame(IRenderableDisplay display, - boolean isClearBackground); + public abstract void beginFrame(IView view, boolean isClearBackground); /** * End a frame @@ -775,14 +773,6 @@ public interface IGraphicsTarget extends IImagingExtension { */ public IView getView(); - /** - * Notify the Graphics Target that there are updated extents that need to be - * set. - * - * @param updatedExtent - */ - public void updateExtent(IExtent updatedExtent); - /** * Use getExtension(IOffscreenRenderingExtension.class).renderOffscreen( * offscreenImage) instead; diff --git a/cave/com.raytheon.uf.viz.npp.viirs/.pydevproject b/cave/com.raytheon.uf.viz.npp.viirs/.pydevproject new file mode 100644 index 0000000000..a9cca037b3 --- /dev/null +++ b/cave/com.raytheon.uf.viz.npp.viirs/.pydevproject @@ -0,0 +1,7 @@ + + + + +Default +python 2.7 + diff --git a/cave/com.raytheon.uf.viz.remote.graphics/META-INF/MANIFEST.MF b/cave/com.raytheon.uf.viz.remote.graphics/META-INF/MANIFEST.MF index 6a11a8c6f7..7d7d66e597 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/META-INF/MANIFEST.MF +++ b/cave/com.raytheon.uf.viz.remote.graphics/META-INF/MANIFEST.MF @@ -6,6 +6,7 @@ Bundle-Version: 1.0.0.qualifier Bundle-Activator: com.raytheon.uf.viz.remote.graphics.Activator Bundle-Vendor: RAYTHEON Eclipse-RegisterBuddy: com.raytheon.uf.viz.core +Eclipse-BuddyPolicy: dependent Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, com.raytheon.uf.viz.core;bundle-version="1.12.1174", diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/Activator.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/Activator.java index 13f833a4b6..8bac1c5b35 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/Activator.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/Activator.java @@ -1,10 +1,18 @@ package com.raytheon.uf.viz.remote.graphics; +import java.awt.image.BufferedImage; + +import org.eclipse.swt.graphics.RGB; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; +import com.raytheon.uf.common.serialization.DynamicSerializationManager; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; +import com.raytheon.uf.viz.core.PixelExtent; +import com.raytheon.uf.viz.remote.graphics.adapters.PixelExtentSerializationAdapter; +import com.raytheon.uf.viz.remote.graphics.adapters.RGBSerializationAdapter; +import com.raytheon.uf.viz.remote.graphics.adapters.RenderedImageAdapter; /** * The activator class controls the plug-in life cycle @@ -36,6 +44,12 @@ public class Activator extends AbstractUIPlugin { public void start(BundleContext context) throws Exception { super.start(context); plugin = this; + DynamicSerializationManager.registerAdapter(PixelExtent.class, + new PixelExtentSerializationAdapter()); + DynamicSerializationManager.registerAdapter(RGB.class, + new RGBSerializationAdapter()); + DynamicSerializationManager.registerAdapter(BufferedImage.class, + new RenderedImageAdapter()); } /* diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/DispatchGraphicsTarget.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/DispatchGraphicsTarget.java index fb52fa9073..ae2860ba94 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/DispatchGraphicsTarget.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/DispatchGraphicsTarget.java @@ -55,7 +55,6 @@ import com.raytheon.uf.viz.core.drawables.IDescriptor; import com.raytheon.uf.viz.core.drawables.IFont; import com.raytheon.uf.viz.core.drawables.IFont.Style; import com.raytheon.uf.viz.core.drawables.IImage; -import com.raytheon.uf.viz.core.drawables.IRenderableDisplay; import com.raytheon.uf.viz.core.drawables.IShadedShape; import com.raytheon.uf.viz.core.drawables.IWireframeShape; import com.raytheon.uf.viz.core.drawables.ImagingSupport; @@ -110,6 +109,8 @@ public class DispatchGraphicsTarget extends DispatchingObject private IFont defaultFont; + private RGB backgroundColor = new RGB(0, 0, 0); + private GraphicsExtensionManager extensionManager; public DispatchGraphicsTarget(IGraphicsTarget target, Dispatcher dispatcher) { @@ -291,6 +292,8 @@ public class DispatchGraphicsTarget extends DispatchingObject for (int i = 0; i < parameters.length; ++i) { parameters[i].font = originalFonts[i]; } + + // TODO: Send rendering event for String drawing } /** @@ -787,15 +790,15 @@ public class DispatchGraphicsTarget extends DispatchingObject /** * @param display * @param isClearBackground - * @see com.raytheon.uf.viz.core.IGraphicsTarget#beginFrame(com.raytheon.uf.viz.core.drawables.IRenderableDisplay, + * @see com.raytheon.uf.viz.core.IGraphicsTarget#beginFrame(com.raytheon.uf.viz.core.IView, * boolean) */ - public void beginFrame(IRenderableDisplay display, boolean isClearBackground) { - wrappedObject.beginFrame(display, isClearBackground); + public void beginFrame(IView view, boolean isClearBackground) { + wrappedObject.beginFrame(view, isClearBackground); BeginFrameEvent beginFrame = RemoteGraphicsEventFactory.createEvent( BeginFrameEvent.class, this); - beginFrame.setIExtent(display.getExtent()); - beginFrame.setColor(display.getBackgroundColor()); + beginFrame.setExtent(view.getExtent().clone()); + beginFrame.setColor(backgroundColor); dispatch(beginFrame); } @@ -841,7 +844,7 @@ public class DispatchGraphicsTarget extends DispatchingObject wrappedObject.setupClippingPlane(extent); SetupClippingPane event = RemoteGraphicsEventFactory.createEvent( SetupClippingPane.class, this); - event.setIExtent(extent); + event.setExtent(extent); dispatch(event); } @@ -876,6 +879,7 @@ public class DispatchGraphicsTarget extends DispatchingObject * @see com.raytheon.uf.viz.core.IGraphicsTarget#setBackgroundColor(org.eclipse.swt.graphics.RGB) */ public void setBackgroundColor(RGB backgroundColor) { + this.backgroundColor = backgroundColor; wrappedObject.setBackgroundColor(backgroundColor); } @@ -902,7 +906,7 @@ public class DispatchGraphicsTarget extends DispatchingObject event.setBrightness(colorMap.brightness); event.setContrast(colorMap.contrast); event.setInterpolate(colorMap.interpolate); - event.setIExtent(colorMap.extent); + event.setExtent(colorMap.extent); dispatch(event); } @@ -1017,14 +1021,6 @@ public class DispatchGraphicsTarget extends DispatchingObject dispatch(event); } - /** - * @param updatedExtent - * @see com.raytheon.uf.viz.core.IGraphicsTarget#updateExtent(com.raytheon.uf.viz.core.IExtent) - */ - public void updateExtent(IExtent updatedExtent) { - wrappedObject.updateExtent(updatedExtent); - } - /** * @param offscreenImage * @throws VizException @@ -1072,11 +1068,14 @@ public class DispatchGraphicsTarget extends DispatchingObject HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment, Double rotation) throws VizException { - if (font instanceof DispatchingFont) { - font = ((DispatchingFont) font).getWrappedObject(); - } - wrappedObject.drawString(font, text, x, y, z, textStyle, color, - horizontalAlignment, verticalAlignment, rotation); + DrawableString string = new DrawableString(text, color); + string.setCoordinates(x, y, z); + string.font = font; + string.textStyle = textStyle; + string.horizontalAlignment = horizontalAlignment; + string.verticallAlignment = verticalAlignment; + string.rotation = rotation; + drawStrings(string); } /** @@ -1102,11 +1101,13 @@ public class DispatchGraphicsTarget extends DispatchingObject double z, TextStyle textStyle, RGB color, HorizontalAlignment horizontalAlignment, Double rotation) throws VizException { - if (font instanceof DispatchingFont) { - font = ((DispatchingFont) font).getWrappedObject(); - } - wrappedObject.drawString(font, text, x, y, z, textStyle, color, - horizontalAlignment, rotation); + DrawableString string = new DrawableString(text, color); + string.setCoordinates(x, y, z); + string.font = font; + string.textStyle = textStyle; + string.horizontalAlignment = horizontalAlignment; + string.rotation = rotation; + drawStrings(string); } /** @@ -1132,11 +1133,13 @@ public class DispatchGraphicsTarget extends DispatchingObject double z, TextStyle textStyle, RGB[] colors, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) throws VizException { - if (font instanceof DispatchingFont) { - font = ((DispatchingFont) font).getWrappedObject(); - } - wrappedObject.drawStrings(font, text, x, y, z, textStyle, colors, - horizontalAlignment, verticalAlignment); + DrawableString string = new DrawableString(text, colors); + string.setCoordinates(x, y, z); + string.font = font; + string.textStyle = textStyle; + string.horizontalAlignment = horizontalAlignment; + string.verticallAlignment = verticalAlignment; + drawStrings(string); } /** @@ -1162,17 +1165,21 @@ public class DispatchGraphicsTarget extends DispatchingObject * com.raytheon.uf.viz.core.IGraphicsTarget.VerticalAlignment, * java.lang.Double, float, double) */ - public void drawString(IFont font, String string, double xPos, double yPos, - double zPos, TextStyle textStyle, RGB color, + public void drawString(IFont font, String text, double x, double y, + double z, TextStyle textStyle, RGB color, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment, Double rotation, float alpha, double magnification) throws VizException { - if (font instanceof DispatchingFont) { - font = ((DispatchingFont) font).getWrappedObject(); - } - wrappedObject.drawString(font, string, xPos, yPos, zPos, textStyle, - color, horizontalAlignment, verticalAlignment, rotation, alpha, - magnification); + DrawableString string = new DrawableString(text, color); + string.setCoordinates(x, y, z); + string.font = font; + string.textStyle = textStyle; + string.horizontalAlignment = horizontalAlignment; + string.verticallAlignment = verticalAlignment; + string.rotation = rotation; + string.basics.alpha = alpha; + string.magnification = magnification; + drawStrings(string); } /** diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/PixelExtentSerializationAdapter.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/PixelExtentSerializationAdapter.java new file mode 100644 index 0000000000..168a8e4a5e --- /dev/null +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/PixelExtentSerializationAdapter.java @@ -0,0 +1,77 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ +package com.raytheon.uf.viz.remote.graphics.adapters; + +import com.raytheon.uf.common.serialization.IDeserializationContext; +import com.raytheon.uf.common.serialization.ISerializationContext; +import com.raytheon.uf.common.serialization.ISerializationTypeAdapter; +import com.raytheon.uf.common.serialization.SerializationException; +import com.raytheon.uf.viz.core.PixelExtent; + +/** + * Serialization adapter for PixelExtent + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * May 3, 2012            mschenke     Initial creation
+ * 
+ * 
+ * + * @author mschenke + * @version 1.0 + */ + +public class PixelExtentSerializationAdapter implements + ISerializationTypeAdapter { + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#serialize + * (com.raytheon.uf.common.serialization.ISerializationContext, + * java.lang.Object) + */ + @Override + public void serialize(ISerializationContext serializer, PixelExtent object) + throws SerializationException { + serializer.writeDoubleArray(new double[] { object.getMinX(), + object.getMaxX(), object.getMinY(), object.getMaxY() }); + } + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#deserialize + * (com.raytheon.uf.common.serialization.IDeserializationContext) + */ + @Override + public PixelExtent deserialize(IDeserializationContext deserializer) + throws SerializationException { + double[] extent = deserializer.readDoubleArray(); + return new PixelExtent(extent[0], extent[1], extent[2], extent[3]); + } + +} diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/RGBSerializationAdapter.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/RGBSerializationAdapter.java new file mode 100644 index 0000000000..0a74ea9723 --- /dev/null +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/RGBSerializationAdapter.java @@ -0,0 +1,78 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ +package com.raytheon.uf.viz.remote.graphics.adapters; + +import org.eclipse.swt.graphics.RGB; + +import com.raytheon.uf.common.serialization.IDeserializationContext; +import com.raytheon.uf.common.serialization.ISerializationContext; +import com.raytheon.uf.common.serialization.ISerializationTypeAdapter; +import com.raytheon.uf.common.serialization.SerializationException; + +/** + * Serialization adapter for RGB + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * May 3, 2012            mschenke     Initial creation
+ * 
+ * 
+ * + * @author mschenke + * @version 1.0 + */ + +public class RGBSerializationAdapter implements ISerializationTypeAdapter { + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#serialize + * (com.raytheon.uf.common.serialization.ISerializationContext, + * java.lang.Object) + */ + @Override + public void serialize(ISerializationContext serializer, RGB object) + throws SerializationException { + serializer.writeI32(object.red); + serializer.writeI32(object.green); + serializer.writeI32(object.blue); + } + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#deserialize + * (com.raytheon.uf.common.serialization.IDeserializationContext) + */ + @Override + public RGB deserialize(IDeserializationContext deserializer) + throws SerializationException { + return new RGB(deserializer.readI32(), deserializer.readI32(), + deserializer.readI32()); + } + +} diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/RenderedImageAdapter.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/RenderedImageAdapter.java new file mode 100644 index 0000000000..9b53616a5f --- /dev/null +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/adapters/RenderedImageAdapter.java @@ -0,0 +1,97 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ +package com.raytheon.uf.viz.remote.graphics.adapters; + +import java.awt.image.RenderedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import javax.imageio.ImageIO; + +import com.raytheon.uf.common.serialization.IDeserializationContext; +import com.raytheon.uf.common.serialization.ISerializationContext; +import com.raytheon.uf.common.serialization.ISerializationTypeAdapter; +import com.raytheon.uf.common.serialization.SerializationException; + +/** + * Serialization adapter for RenderedImages + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * May 3, 2012            mschenke     Initial creation
+ * 
+ * 
+ * + * @author mschenke + * @version 1.0 + */ + +public class RenderedImageAdapter implements + ISerializationTypeAdapter { + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#serialize + * (com.raytheon.uf.common.serialization.ISerializationContext, + * java.lang.Object) + */ + @Override + public void serialize(ISerializationContext serializer, RenderedImage image) + throws SerializationException { + // serialize rendered image into bytes + try { + ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + ImageIO.write(image, "png", bytes); + serializer.writeBinary(bytes.toByteArray()); + } catch (IOException e) { + throw new SerializationException( + "Error serializing rendered image", e); + } + } + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#deserialize + * (com.raytheon.uf.common.serialization.IDeserializationContext) + */ + @Override + public RenderedImage deserialize(IDeserializationContext deserializer) + throws SerializationException { + byte[] data = deserializer.readBinary(); + // deserialize bytes into rendered image + try { + return ImageIO.read(new ByteArrayInputStream(data)); + } catch (Exception e) { + throw new SerializationException( + "Error deserializing rendered image: " + + e.getLocalizedMessage(), e); + } + } + +} diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/clipping/SetupClippingPane.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/clipping/SetupClippingPane.java index 4e7345616e..83aefb5406 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/clipping/SetupClippingPane.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/clipping/SetupClippingPane.java @@ -19,12 +19,9 @@ **/ package com.raytheon.uf.viz.remote.graphics.events.clipping; -import java.util.Arrays; - import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; import com.raytheon.uf.viz.core.IExtent; -import com.raytheon.uf.viz.core.PixelExtent; import com.raytheon.uf.viz.remote.graphics.events.rendering.AbstractRemoteGraphicsRenderEvent; import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent; @@ -48,7 +45,7 @@ import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent; public class SetupClippingPane extends AbstractRemoteGraphicsRenderEvent { @DynamicSerializeElement - private double[] extent; + private IExtent extent; /* * (non-Javadoc) @@ -62,7 +59,7 @@ public class SetupClippingPane extends AbstractRemoteGraphicsRenderEvent { public IRenderEvent createDiffObject(IRenderEvent event) { SetupClippingPane diffEvent = (SetupClippingPane) event; SetupClippingPane diffObject = new SetupClippingPane(); - if (Arrays.equals(extent, diffEvent.extent) == false) { + if (extent.equals(diffEvent.extent) == false) { diffObject.extent = diffEvent.extent; } return diffObject; @@ -86,7 +83,7 @@ public class SetupClippingPane extends AbstractRemoteGraphicsRenderEvent { /** * @return the extent */ - public double[] getExtent() { + public IExtent getExtent() { return extent; } @@ -94,24 +91,10 @@ public class SetupClippingPane extends AbstractRemoteGraphicsRenderEvent { * @param extent * the extent to set */ - public void setExtent(double[] extent) { + public void setExtent(IExtent extent) { this.extent = extent; } - public void setIExtent(IExtent extent) { - if (extent != null) { - setExtent(new double[] { extent.getMinX(), extent.getMaxX(), - extent.getMinY(), extent.getMaxY() }); - } - } - - public IExtent getIExtent() { - if (extent != null) { - return new PixelExtent(extent[0], extent[1], extent[2], extent[3]); - } - return null; - } - /* * (non-Javadoc) * @@ -126,7 +109,10 @@ public class SetupClippingPane extends AbstractRemoteGraphicsRenderEvent { if (getClass() != obj.getClass()) return false; SetupClippingPane other = (SetupClippingPane) obj; - if (!Arrays.equals(extent, other.extent)) + if (extent == null) { + if (other.extent != null) + return false; + } else if (!extent.equals(other.extent)) return false; return true; } diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/ColorMapDataEvent.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/ColorMapDataEvent.java index 0dcb980ea7..a23621adc1 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/ColorMapDataEvent.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/ColorMapDataEvent.java @@ -19,13 +19,14 @@ **/ package com.raytheon.uf.viz.remote.graphics.events.colormap; +import java.nio.Buffer; + import com.raytheon.uf.common.serialization.SerializationException; import com.raytheon.uf.common.serialization.SerializationUtil; import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; -import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.viz.core.data.IColorMapDataRetrievalCallback.ColorMapData; -import com.raytheon.uf.viz.remote.graphics.Activator; +import com.raytheon.uf.viz.core.data.IColorMapDataRetrievalCallback.ColorMapDataType; import com.raytheon.uf.viz.remote.graphics.events.AbstractDispatchingObjectEvent; /** @@ -49,38 +50,19 @@ import com.raytheon.uf.viz.remote.graphics.events.AbstractDispatchingObjectEvent public class ColorMapDataEvent extends AbstractDispatchingObjectEvent { @DynamicSerializeElement - private byte[] serializedColorMapData; + private int[] dimensions; - /** - * @return the serializedColorMapData - */ - public byte[] getSerializedColorMapData() { - return serializedColorMapData; - } + @DynamicSerializeElement + private ColorMapDataType dataType; - /** - * @param serializedColorMapData - * the serializedColorMapData to set - */ - public void setSerializedColorMapData(byte[] serializedColorMapData) { - this.serializedColorMapData = serializedColorMapData; - } + @DynamicSerializeElement + private Buffer buffer; /** * @return the colorMapData */ public ColorMapData getColorMapData() { - if (serializedColorMapData != null) { - try { - ColorMapDataWrapper wrapper = (ColorMapDataWrapper) SerializationUtil - .transformFromThrift(serializedColorMapData); - return wrapper.getColorMapData(); - } catch (SerializationException e) { - Activator.statusHandler.handle(Priority.PROBLEM, - e.getLocalizedMessage(), e); - } - } - return null; + return new ColorMapData(buffer, dimensions, dataType); } /** @@ -88,15 +70,65 @@ public class ColorMapDataEvent extends AbstractDispatchingObjectEvent { * the colorMapData to set */ public void setColorMapData(ColorMapData colorMapData) { - ColorMapDataWrapper wrapper = new ColorMapDataWrapper(); - wrapper.setColorMapData(colorMapData); + // Copy data via serialization + this.dimensions = colorMapData.getDimensions(); + this.dataType = colorMapData.getDataType(); try { - serializedColorMapData = SerializationUtil - .transformToThrift(wrapper); + // Copy the buffer since it is the same buffer that will be used for + // rendering in a separate thread and serializing Buffer access is + // not thread safe + this.buffer = (Buffer) SerializationUtil + .transformFromThrift(SerializationUtil + .transformToThrift(colorMapData.getBuffer())); } catch (SerializationException e) { - Activator.statusHandler.handle(Priority.PROBLEM, - e.getLocalizedMessage(), e); + throw new RuntimeException("Error copying data Buffer: " + + e.getLocalizedMessage(), e); } } + /** + * @return the dimensions + */ + public int[] getDimensions() { + return dimensions; + } + + /** + * @param dimensions + * the dimensions to set + */ + public void setDimensions(int[] dimensions) { + this.dimensions = dimensions; + } + + /** + * @return the dataType + */ + public ColorMapDataType getDataType() { + return dataType; + } + + /** + * @param dataType + * the dataType to set + */ + public void setDataType(ColorMapDataType dataType) { + this.dataType = dataType; + } + + /** + * @return the buffer + */ + public Buffer getBuffer() { + return buffer; + } + + /** + * @param buffer + * the buffer to set + */ + public void setBuffer(Buffer buffer) { + this.buffer = buffer; + } + } diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/ColorMapDataWrapper.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/ColorMapDataWrapper.java deleted file mode 100644 index 708d7830c2..0000000000 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/ColorMapDataWrapper.java +++ /dev/null @@ -1,172 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.uf.viz.remote.graphics.events.colormap; - -import java.nio.Buffer; -import java.nio.ByteBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -import java.nio.ShortBuffer; - -import com.raytheon.uf.common.serialization.IDeserializationContext; -import com.raytheon.uf.common.serialization.ISerializationContext; -import com.raytheon.uf.common.serialization.ISerializationTypeAdapter; -import com.raytheon.uf.common.serialization.SerializationException; -import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; -import com.raytheon.uf.common.serialization.annotations.DynamicSerializeTypeAdapter; -import com.raytheon.uf.viz.core.data.IColorMapDataRetrievalCallback.ColorMapData; -import com.raytheon.uf.viz.core.data.IColorMapDataRetrievalCallback.ColorMapDataType; -import com.raytheon.uf.viz.remote.graphics.events.colormap.ColorMapDataWrapper.ColorMapDataWrapperAdapter; - -/** - * Object that wraps ColorMapData - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Apr 25, 2012            mschenke     Initial creation
- * 
- * 
- * - * @author mschenke - * @version 1.0 - */ -@DynamicSerialize -@DynamicSerializeTypeAdapter(factory = ColorMapDataWrapperAdapter.class) -public class ColorMapDataWrapper { - - public static class ColorMapDataWrapperAdapter implements - ISerializationTypeAdapter { - - /* - * (non-Javadoc) - * - * @see - * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#serialize - * (com.raytheon.uf.common.serialization.ISerializationContext, - * java.lang.Object) - */ - @Override - public void serialize(ISerializationContext serializer, - ColorMapDataWrapper object) throws SerializationException { - ColorMapData colorMapData = object.getColorMapData(); - serializer.writeString(colorMapData.getDataType().name()); - int[] dimensions = colorMapData.getDimensions(); - serializer.writeI32(dimensions[0]); - serializer.writeI32(dimensions[1]); - Buffer buffer = colorMapData.getBuffer(); - serializer.writeBool(buffer.isDirect()); - buffer.position(0); - ByteBuffer bb = null; - byte[] bytes = null; - switch (colorMapData.getDataType()) { - case BYTE: - case SIGNED_BYTE: - bytes = new byte[buffer.capacity()]; - bb = ByteBuffer.wrap(bytes); - bb.put((ByteBuffer) buffer); - break; - case SHORT: - case UNSIGNED_SHORT: - bytes = new byte[2 * buffer.capacity()]; - bb = ByteBuffer.wrap(bytes); - bb.asShortBuffer().put((ShortBuffer) buffer); - break; - case FLOAT: - bytes = new byte[4 * buffer.capacity()]; - bb = ByteBuffer.wrap(bytes); - bb.asFloatBuffer().put((FloatBuffer) buffer); - break; - case INT: - bytes = new byte[4 * buffer.capacity()]; - bb = ByteBuffer.wrap(bytes); - bb.asIntBuffer().put((IntBuffer) buffer); - break; - } - serializer.writeBinary(bb.array()); - } - - /* - * (non-Javadoc) - * - * @see com.raytheon.uf.common.serialization.ISerializationTypeAdapter# - * deserialize - * (com.raytheon.uf.common.serialization.IDeserializationContext) - */ - @Override - public ColorMapDataWrapper deserialize( - IDeserializationContext deserializer) - throws SerializationException { - ColorMapDataWrapper wrapper = new ColorMapDataWrapper(); - ColorMapDataType dataType = ColorMapDataType.valueOf(deserializer - .readString()); - int[] dimensions = new int[] { deserializer.readI32(), - deserializer.readI32() }; - boolean direct = deserializer.readBool(); - byte[] bytes = deserializer.readBinary(); - ByteBuffer buffer = direct ? ByteBuffer - .allocateDirect(bytes.length) : ByteBuffer - .allocate(bytes.length); - buffer.put(bytes); - buffer.rewind(); - Buffer dataBuffer = null; - switch (dataType) { - case BYTE: - case SIGNED_BYTE: - dataBuffer = buffer; - break; - case SHORT: - case UNSIGNED_SHORT: - dataBuffer = buffer.asShortBuffer(); - break; - case INT: - dataBuffer = buffer.asIntBuffer(); - break; - case FLOAT: - dataBuffer = buffer.asFloatBuffer(); - break; - } - wrapper.setColorMapData(new ColorMapData(dataBuffer, dimensions, - dataType)); - return wrapper; - } - } - - private ColorMapData colorMapData; - - /** - * @return the colorMapData - */ - public ColorMapData getColorMapData() { - return colorMapData; - } - - /** - * @param colorMapData - * the colorMapData to set - */ - public void setColorMapData(ColorMapData colorMapData) { - this.colorMapData = colorMapData; - } - -} diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/DrawColorRampEvent.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/DrawColorRampEvent.java index 26f80a6b7b..7b4490c159 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/DrawColorRampEvent.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/colormap/DrawColorRampEvent.java @@ -19,12 +19,9 @@ **/ package com.raytheon.uf.viz.remote.graphics.events.colormap; -import java.util.Arrays; - import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; import com.raytheon.uf.viz.core.IExtent; -import com.raytheon.uf.viz.core.PixelExtent; import com.raytheon.uf.viz.remote.graphics.events.rendering.AbstractRemoteGraphicsRenderEvent; import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent; @@ -63,7 +60,7 @@ public class DrawColorRampEvent extends AbstractRemoteGraphicsRenderEvent { private boolean interpolate = true; @DynamicSerializeElement - private double[] extent; + private IExtent extent; /* * (non-Javadoc) @@ -102,7 +99,7 @@ public class DrawColorRampEvent extends AbstractRemoteGraphicsRenderEvent { diffObject.brightness = diffEvent.brightness; diffObject.contrast = diffEvent.contrast; diffObject.interpolate = diffEvent.interpolate; - if (Arrays.equals(extent, diffEvent.extent) == false) { + if (extent.equals(diffEvent.extent) == false) { diffObject.extent = diffEvent.extent; } return diffObject; @@ -186,7 +183,7 @@ public class DrawColorRampEvent extends AbstractRemoteGraphicsRenderEvent { /** * @return the extent */ - public double[] getExtent() { + public IExtent getExtent() { return extent; } @@ -194,24 +191,10 @@ public class DrawColorRampEvent extends AbstractRemoteGraphicsRenderEvent { * @param extent * the extent to set */ - public void setExtent(double[] extent) { + public void setExtent(IExtent extent) { this.extent = extent; } - public void setIExtent(IExtent extent) { - if (extent != null) { - setExtent(new double[] { extent.getMinX(), extent.getMaxX(), - extent.getMinY(), extent.getMaxY() }); - } - } - - public IExtent getIExtent() { - if (extent != null) { - return new PixelExtent(extent[0], extent[1], extent[2], extent[3]); - } - return null; - } - /* * (non-Javadoc) * @@ -236,7 +219,10 @@ public class DrawColorRampEvent extends AbstractRemoteGraphicsRenderEvent { if (Float.floatToIntBits(contrast) != Float .floatToIntBits(other.contrast)) return false; - if (!Arrays.equals(extent, other.extent)) + if (extent == null) { + if (other.extent != null) + return false; + } else if (!extent.equals(other.extent)) return false; if (interpolate != other.interpolate) return false; diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/RenderedImageEvent.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/RenderedImageEvent.java index ad1d5385fa..d3eb0fc186 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/RenderedImageEvent.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/RenderedImageEvent.java @@ -46,28 +46,13 @@ import com.raytheon.uf.viz.remote.graphics.events.AbstractDispatchingObjectEvent public class RenderedImageEvent extends AbstractDispatchingObjectEvent { @DynamicSerializeElement - private RenderedImageWrapper wrapper = new RenderedImageWrapper(); - - /** - * @return the wrapper - */ - public RenderedImageWrapper getWrapper() { - return wrapper; - } - - /** - * @param wrapper - * the wrapper to set - */ - public void setWrapper(RenderedImageWrapper wrapper) { - this.wrapper = wrapper; - } + private RenderedImage renderedImage; /** * @return the renderedImage */ public RenderedImage getRenderedImage() { - return wrapper.getWrappedImage(); + return renderedImage; } /** @@ -75,7 +60,7 @@ public class RenderedImageEvent extends AbstractDispatchingObjectEvent { * the renderedImage to set */ public void setRenderedImage(RenderedImage renderedImage) { - wrapper.setWrappedImage(renderedImage); + this.renderedImage = renderedImage; } } diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/RenderedImageWrapper.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/RenderedImageWrapper.java deleted file mode 100644 index 6af0018a14..0000000000 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/RenderedImageWrapper.java +++ /dev/null @@ -1,127 +0,0 @@ -/** - * This software was developed and / or modified by Raytheon Company, - * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * - * U.S. EXPORT CONTROLLED TECHNICAL DATA - * This software product contains export-restricted data whose - * export/transfer/disclosure is restricted by U.S. law. Dissemination - * to non-U.S. persons whether in the United States or abroad requires - * an export license or other authorization. - * - * Contractor Name: Raytheon Company - * Contractor Address: 6825 Pine Street, Suite 340 - * Mail Stop B8 - * Omaha, NE 68106 - * 402.291.0100 - * - * See the AWIPS II Master Rights File ("Master Rights File.pdf") for - * further licensing information. - **/ -package com.raytheon.uf.viz.remote.graphics.events.imagery; - -import java.awt.image.RenderedImage; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -import javax.imageio.ImageIO; - -import com.raytheon.uf.common.serialization.IDeserializationContext; -import com.raytheon.uf.common.serialization.ISerializationContext; -import com.raytheon.uf.common.serialization.ISerializationTypeAdapter; -import com.raytheon.uf.common.serialization.SerializationException; -import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; -import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; -import com.raytheon.uf.common.serialization.annotations.DynamicSerializeTypeAdapter; -import com.raytheon.uf.viz.remote.graphics.events.imagery.RenderedImageWrapper.RenderedImageSerializer; - -/** - * Wraps a RenderedImage for dynamic serialization - * - *
- * 
- * SOFTWARE HISTORY
- * 
- * Date         Ticket#    Engineer    Description
- * ------------ ---------- ----------- --------------------------
- * Apr 13, 2012            mschenke     Initial creation
- * 
- * 
- * - * @author mschenke - * @version 1.0 - */ -@DynamicSerialize -@DynamicSerializeTypeAdapter(factory = RenderedImageSerializer.class) -public class RenderedImageWrapper { - - public static class RenderedImageSerializer implements - ISerializationTypeAdapter { - /* - * (non-Javadoc) - * - * @see - * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#serialize - * (com.raytheon.uf.common.serialization.ISerializationContext, - * java.lang.Object) - */ - @Override - public void serialize(ISerializationContext serializer, - RenderedImageWrapper object) throws SerializationException { - RenderedImage image = object.getWrappedImage(); - // serialize rendered image into bytes - try { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - ImageIO.write(image, "png", bytes); - serializer.writeBinary(bytes.toByteArray()); - } catch (IOException e) { - throw new SerializationException( - "Error serializing rendered image", e); - } - } - - /* - * (non-Javadoc) - * - * @see com.raytheon.uf.common.serialization.ISerializationTypeAdapter# - * deserialize - * (com.raytheon.uf.common.serialization.IDeserializationContext) - */ - @Override - public RenderedImageWrapper deserialize( - IDeserializationContext deserializer) - throws SerializationException { - RenderedImageWrapper wrapper = new RenderedImageWrapper(); - byte[] data = deserializer.readBinary(); - // deserialize bytes into rendered image - try { - wrapper.setWrappedImage(ImageIO.read(new ByteArrayInputStream( - data))); - } catch (Exception e) { - throw new SerializationException( - "Error deserializing rendered image: " - + e.getLocalizedMessage(), e); - } - return wrapper; - } - } - - @DynamicSerializeElement - private RenderedImage wrappedImage; - - /** - * @return the wrappedImage - */ - public RenderedImage getWrappedImage() { - return wrappedImage; - } - - /** - * @param wrappedImage - * the wrappedImage to set - */ - public void setWrappedImage(RenderedImage wrappedImage) { - this.wrappedImage = wrappedImage; - } - -} diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/UpdateSingleColorImage.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/UpdateSingleColorImage.java index 016583d869..6b888c8667 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/UpdateSingleColorImage.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/imagery/UpdateSingleColorImage.java @@ -46,69 +46,21 @@ import com.raytheon.uf.viz.remote.graphics.events.AbstractDispatchingObjectEvent public class UpdateSingleColorImage extends AbstractDispatchingObjectEvent { @DynamicSerializeElement - private int red; - - @DynamicSerializeElement - private int green; - - @DynamicSerializeElement - private int blue; + private RGB color; /** - * @return the red + * @return the color */ - public int getRed() { - return red; - } - - /** - * @param red - * the red to set - */ - public void setRed(int red) { - this.red = red; - } - - /** - * @return the green - */ - public int getGreen() { - return green; - } - - /** - * @param green - * the green to set - */ - public void setGreen(int green) { - this.green = green; - } - - /** - * @return the blue - */ - public int getBlue() { - return blue; - } - - /** - * @param blue - * the blue to set - */ - public void setBlue(int blue) { - this.blue = blue; - } - - public void setColor(RGB color) { - if (color != null) { - red = color.red; - green = color.green; - blue = color.blue; - } - } - public RGB getColor() { - return new RGB(red, green, blue); + return color; + } + + /** + * @param color + * the color to set + */ + public void setColor(RGB color) { + this.color = color; } } diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/offscreen/RenderOffscreenEvent.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/offscreen/RenderOffscreenEvent.java index e79cf529f0..e8041a4b83 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/offscreen/RenderOffscreenEvent.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/offscreen/RenderOffscreenEvent.java @@ -19,12 +19,9 @@ **/ package com.raytheon.uf.viz.remote.graphics.events.offscreen; -import java.util.Arrays; - import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; import com.raytheon.uf.viz.core.IExtent; -import com.raytheon.uf.viz.core.PixelExtent; import com.raytheon.uf.viz.remote.graphics.events.AbstractDispatchingObjectEvent; import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent; @@ -50,7 +47,7 @@ public class RenderOffscreenEvent extends AbstractDispatchingObjectEvent implements IRenderEvent { @DynamicSerializeElement - private double[] extent; + private IExtent extent; /* * (non-Javadoc) @@ -81,7 +78,7 @@ public class RenderOffscreenEvent extends AbstractDispatchingObjectEvent /** * @return the extent */ - public double[] getExtent() { + public IExtent getExtent() { return extent; } @@ -89,31 +86,10 @@ public class RenderOffscreenEvent extends AbstractDispatchingObjectEvent * @param extent * the extent to set */ - public void setExtent(double[] extent) { + public void setExtent(IExtent extent) { this.extent = extent; } - /** - * @return the iextent - */ - public IExtent getIExtent() { - if (extent != null) { - return new PixelExtent(extent[0], extent[1], extent[2], extent[3]); - } - return null; - } - - /** - * @param iextent - * the iextent to set - */ - public void setIExtent(IExtent extent) { - if (extent != null) { - this.extent = new double[] { extent.getMinX(), extent.getMaxX(), - extent.getMinY(), extent.getMaxY() }; - } - } - /* * (non-Javadoc) * @@ -128,7 +104,10 @@ public class RenderOffscreenEvent extends AbstractDispatchingObjectEvent if (getClass() != obj.getClass()) return false; RenderOffscreenEvent other = (RenderOffscreenEvent) obj; - if (!Arrays.equals(extent, other.extent)) + if (extent == null) { + if (other.extent != null) + return false; + } else if (!extent.equals(other.extent)) return false; return true; } diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/points/DrawPointsEvent.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/points/DrawPointsEvent.java index 93ea3f7962..6efd2ef5e6 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/points/DrawPointsEvent.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/points/DrawPointsEvent.java @@ -121,13 +121,7 @@ public class DrawPointsEvent extends AbstractRemoteGraphicsRenderEvent { private float magnification; @DynamicSerializeElement - private int red; - - @DynamicSerializeElement - private int green; - - @DynamicSerializeElement - private int blue; + private RGB color; /* * (non-Javadoc) @@ -141,9 +135,7 @@ public class DrawPointsEvent extends AbstractRemoteGraphicsRenderEvent { public IRenderEvent createDiffObject(IRenderEvent diffEvent) { DrawPointsEvent event = (DrawPointsEvent) diffEvent; DrawPointsEvent diffObject = new DrawPointsEvent(); - diffObject.red = event.red; - diffObject.green = event.green; - diffObject.blue = event.blue; + diffObject.color = color; diffObject.magnification = event.magnification; Set additions = new HashSet(event.points); @@ -171,9 +163,7 @@ public class DrawPointsEvent extends AbstractRemoteGraphicsRenderEvent { @Override public void applyDiffObject(IRenderEvent diffEvent) { DrawPointsEvent event = (DrawPointsEvent) diffEvent; - red = event.red; - green = event.green; - blue = event.blue; + color = event.color; magnification = event.magnification; synchronized (points) { @@ -269,60 +259,18 @@ public class DrawPointsEvent extends AbstractRemoteGraphicsRenderEvent { } /** - * @return the red + * @return the color */ - public int getRed() { - return red; - } - - /** - * @param red - * the red to set - */ - public void setRed(int red) { - this.red = red; - } - - /** - * @return the green - */ - public int getGreen() { - return green; - } - - /** - * @param green - * the green to set - */ - public void setGreen(int green) { - this.green = green; - } - - /** - * @return the blue - */ - public int getBlue() { - return blue; - } - - /** - * @param blue - * the blue to set - */ - public void setBlue(int blue) { - this.blue = blue; - } - - public void setColor(RGB color) { - if (color != null) { - red = color.red; - green = color.green; - blue = color.blue; - } - } - public RGB getColor() { - return new RGB(red, green, blue); + return color; + } + + /** + * @param color + * the color to set + */ + public void setColor(RGB color) { + this.color = color; } /* @@ -339,9 +287,10 @@ public class DrawPointsEvent extends AbstractRemoteGraphicsRenderEvent { if (getClass() != obj.getClass()) return false; DrawPointsEvent other = (DrawPointsEvent) obj; - if (blue != other.blue) - return false; - if (green != other.green) + if (color == null) { + if (other.color != null) + return false; + } else if (!color.equals(other.color)) return false; if (Float.floatToIntBits(magnification) != Float .floatToIntBits(other.magnification)) @@ -351,8 +300,6 @@ public class DrawPointsEvent extends AbstractRemoteGraphicsRenderEvent { return false; } else if (!points.equals(other.points)) return false; - if (red != other.red) - return false; if (removals == null) { if (other.removals != null) return false; diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/rendering/BeginFrameEvent.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/rendering/BeginFrameEvent.java index 9e64ff96bd..55f497cdd9 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/rendering/BeginFrameEvent.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/rendering/BeginFrameEvent.java @@ -19,14 +19,11 @@ **/ package com.raytheon.uf.viz.remote.graphics.events.rendering; -import java.util.Arrays; - import org.eclipse.swt.graphics.RGB; import com.raytheon.uf.common.serialization.annotations.DynamicSerialize; import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement; import com.raytheon.uf.viz.core.IExtent; -import com.raytheon.uf.viz.core.PixelExtent; /** * Frame that specifies the begining of a new rendering sequence. EndFrameEvent @@ -49,67 +46,10 @@ import com.raytheon.uf.viz.core.PixelExtent; public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent { @DynamicSerializeElement - private double[] extent; + private IExtent extent; @DynamicSerializeElement - private int[] rgb; - - /** - * @return the extent - */ - public double[] getExtent() { - return extent; - } - - /** - * @param extent - * the extent to set - */ - public void setExtent(double[] extent) { - this.extent = extent; - } - - public void setIExtent(IExtent extent) { - if (extent != null) { - setExtent(new double[] { extent.getMinX(), extent.getMaxX(), - extent.getMinY(), extent.getMaxY() }); - } - } - - public IExtent getIExtent() { - if (extent != null) { - return new PixelExtent(extent[0], extent[1], extent[2], extent[3]); - } - return null; - } - - /** - * @return the rgb - */ - public int[] getRgb() { - return rgb; - } - - /** - * @param rgb - * the rgb to set - */ - public void setRgb(int[] rgb) { - this.rgb = rgb; - } - - public void setColor(RGB color) { - if (color != null) { - rgb = new int[] { color.red, color.green, color.blue }; - } - } - - public RGB getColor() { - if (rgb != null) { - return new RGB(rgb[0], rgb[1], rgb[2]); - } - return null; - } + private RGB color; /* * (non-Javadoc) @@ -123,11 +63,11 @@ public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent { public IRenderEvent createDiffObject(IRenderEvent event) { BeginFrameEvent diffEvent = (BeginFrameEvent) event; BeginFrameEvent diffObject = new BeginFrameEvent(); - if (Arrays.equals(extent, diffEvent.extent) == false) { + if (extent.equals(diffEvent.extent) == false) { diffObject.extent = diffEvent.extent; } - if (Arrays.equals(rgb, diffEvent.rgb) == false) { - diffObject.rgb = diffEvent.rgb; + if (color.equals(diffEvent.color) == false) { + diffObject.color = diffEvent.color; } return diffObject; } @@ -145,11 +85,41 @@ public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent { if (event.extent != null) { this.extent = event.extent; } - if (event.rgb != null) { - rgb = event.rgb; + if (event.color != null) { + color = event.color; } } + /** + * @return the extent + */ + public IExtent getExtent() { + return extent; + } + + /** + * @param extent + * the extent to set + */ + public void setExtent(IExtent extent) { + this.extent = extent; + } + + /** + * @return the color + */ + public RGB getColor() { + return color; + } + + /** + * @param color + * the color to set + */ + public void setColor(RGB color) { + this.color = color; + } + /* * (non-Javadoc) * @@ -164,9 +134,15 @@ public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent { if (getClass() != obj.getClass()) return false; BeginFrameEvent other = (BeginFrameEvent) obj; - if (!Arrays.equals(extent, other.extent)) + if (color == null) { + if (other.color != null) + return false; + } else if (!color.equals(other.color)) return false; - if (!Arrays.equals(rgb, other.rgb)) + if (extent == null) { + if (other.extent != null) + return false; + } else if (!extent.equals(other.extent)) return false; return true; } diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/rendering/DrawStringsEvent.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/rendering/DrawStringsEvent.java new file mode 100644 index 0000000000..a77780d9f8 --- /dev/null +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/rendering/DrawStringsEvent.java @@ -0,0 +1,64 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ +package com.raytheon.uf.viz.remote.graphics.events.rendering; + +/** + * Event for drawing strings + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * May 3, 2012            mschenke     Initial creation
+ * 
+ * 
+ * + * @author mschenke + * @version 1.0 + */ + +public class DrawStringsEvent extends AbstractRemoteGraphicsRenderEvent { + + /* + * (non-Javadoc) + * + * @see com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent# + * applyDiffObject + * (com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent) + */ + @Override + public void applyDiffObject(IRenderEvent diffEvent) { + + } + + /* + * (non-Javadoc) + * + * @see com.raytheon.uf.viz.remote.graphics.events.rendering. + * AbstractRemoteGraphicsRenderEvent#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + return false; + } + +} diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/wireframe/RenderWireframeShapeEvent.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/wireframe/RenderWireframeShapeEvent.java index 755031f3bb..85da67a47c 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/wireframe/RenderWireframeShapeEvent.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/events/wireframe/RenderWireframeShapeEvent.java @@ -48,13 +48,7 @@ public class RenderWireframeShapeEvent extends AbstractDispatchingObjectEvent implements IRenderEvent { @DynamicSerializeElement - private Integer red; - - @DynamicSerializeElement - private Integer green; - - @DynamicSerializeElement - private Integer blue; + private RGB color; @DynamicSerializeElement private float lineWidth; @@ -92,59 +86,12 @@ public class RenderWireframeShapeEvent extends AbstractDispatchingObjectEvent RenderWireframeShapeEvent event = (RenderWireframeShapeEvent) diffEvent; this.setObjectId(event.getObjectId()); this.alpha = event.alpha; - this.red = event.red; - this.green = event.green; - this.blue = event.blue; + this.color = event.color; this.fontId = event.fontId; this.lineStyle = event.lineStyle; this.lineWidth = event.lineWidth; } - /** - * @return the red - */ - public Integer getRed() { - return red; - } - - /** - * @param red - * the red to set - */ - public void setRed(Integer red) { - this.red = red; - } - - /** - * @return the green - */ - public Integer getGreen() { - return green; - } - - /** - * @param green - * the green to set - */ - public void setGreen(Integer green) { - this.green = green; - } - - /** - * @return the blue - */ - public Integer getBlue() { - return blue; - } - - /** - * @param blue - * the blue to set - */ - public void setBlue(Integer blue) { - this.blue = blue; - } - /** * @return the lineWidth */ @@ -205,20 +152,19 @@ public class RenderWireframeShapeEvent extends AbstractDispatchingObjectEvent this.alpha = alpha; } - public void setColor(RGB color) { - if (color != null) { - red = color.red; - green = color.green; - blue = color.blue; - } + /** + * @return the color + */ + public RGB getColor() { + return color; } - public RGB getColor() { - RGB color = null; - if (red != null && green != null && blue != null) { - color = new RGB(red, green, blue); - } - return color; + /** + * @param color + * the color to set + */ + public void setColor(RGB color) { + this.color = color; } /* @@ -232,8 +178,6 @@ public class RenderWireframeShapeEvent extends AbstractDispatchingObjectEvent return true; if (!super.equals(obj)) return false; - if (obj == null) - return false; if (getClass() != obj.getClass()) return false; RenderWireframeShapeEvent other = (RenderWireframeShapeEvent) obj; @@ -242,31 +186,21 @@ public class RenderWireframeShapeEvent extends AbstractDispatchingObjectEvent return false; } else if (!alpha.equals(other.alpha)) return false; - if (blue == null) { - if (other.blue != null) + if (color == null) { + if (other.color != null) return false; - } else if (!blue.equals(other.blue)) + } else if (!color.equals(other.color)) return false; if (fontId == null) { if (other.fontId != null) return false; } else if (!fontId.equals(other.fontId)) return false; - if (green == null) { - if (other.green != null) - return false; - } else if (!green.equals(other.green)) - return false; if (lineStyle != other.lineStyle) return false; if (Float.floatToIntBits(lineWidth) != Float .floatToIntBits(other.lineWidth)) return false; - if (red == null) { - if (other.red != null) - return false; - } else if (!red.equals(other.red)) - return false; return true; } diff --git a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/extensions/DispatchingOffscreenRenderingExtension.java b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/extensions/DispatchingOffscreenRenderingExtension.java index 0f22b4d758..057b64ee3c 100644 --- a/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/extensions/DispatchingOffscreenRenderingExtension.java +++ b/cave/com.raytheon.uf.viz.remote.graphics/src/com/raytheon/uf/viz/remote/graphics/extensions/DispatchingOffscreenRenderingExtension.java @@ -88,7 +88,7 @@ public class DispatchingOffscreenRenderingExtension extends // Send event for offscreen rendering RenderOffscreenEvent event = RemoteGraphicsEventFactory.createEvent( RenderOffscreenEvent.class, image); - event.setIExtent(extent); + event.setExtent(extent.clone()); image.dispatch(event); } diff --git a/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackDisplay.java b/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackDisplay.java index 5fadf440f8..60bdb1afe9 100644 --- a/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackDisplay.java +++ b/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackDisplay.java @@ -58,7 +58,6 @@ import com.raytheon.viz.awipstools.common.StormTrackData; import com.raytheon.viz.awipstools.common.stormtrack.StormTrackState.DisplayType; import com.raytheon.viz.awipstools.common.stormtrack.StormTrackState.Mode; import com.raytheon.viz.awipstools.common.stormtrack.StormTrackState.StormCoord; -import com.raytheon.viz.awipstools.ui.layer.FeatureFollowingZoomLayer; import com.raytheon.viz.core.rsc.jts.JTSCompiler; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; @@ -140,8 +139,6 @@ public class StormTrackDisplay implements IRenderable { private int lastFrame = -1; - private int currentFrame = -1; - private DataTime[] currentDisplayedTimes; private Coordinate theAnchorPoint = null; @@ -158,7 +155,6 @@ public class StormTrackDisplay implements IRenderable { this.timeFormat.setTimeZone(TimeZone.getTimeZone("GMT")); this.manager = manager; trackUtil = this.manager.getTrackUtil(); - this.currentFrame = this.descriptor.getFramesInfo().getFrameIndex(); } public void setDescriptor(MapDescriptor descriptor) { @@ -174,25 +170,6 @@ public class StormTrackDisplay implements IRenderable { @Override public void paint(IGraphicsTarget target, PaintProperties paintProps) throws VizException { - // Determine if the Feature Following Zoom Tool is loaded - boolean FFZToolLoaded = false; - for (ResourcePair rp : this.descriptor.getResourceList()) { - if (rp != null - && rp.getResource() instanceof FeatureFollowingZoomLayer - && rp.getProperties().isVisible()) { - FFZToolLoaded = true; - } - } - - int newIndex = this.trackUtil.getCurrentFrame(paintProps - .getFramesInfo()); - - if (FFZToolLoaded && this.currentFrame != newIndex) { - this.currentFrame = newIndex; - target.setNeedsRefresh(true); - return; - } - paint(target, (StormTrackProperties) paintProps); } diff --git a/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/ui/layer/FeatureFollowingZoomLayer.java b/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/ui/layer/FeatureFollowingZoomLayer.java index 1ca7764f61..095382b083 100644 --- a/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/ui/layer/FeatureFollowingZoomLayer.java +++ b/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/ui/layer/FeatureFollowingZoomLayer.java @@ -82,25 +82,7 @@ public class FeatureFollowingZoomLayer extends @Override protected void paintInternal(IGraphicsTarget target, PaintProperties paintProps) throws VizException { - // this is done in frameChanged() now - - // StormTrackData data = ToolsDataManager.getInstance() - // .getStormTrackData(); - // // Depending on frame, set center of screen to point - // Coordinate[] trackPoints = data.getCoordinates(); - // int index = paintProps.getFramesInfo().getFrameIndex(); - // if (lastFrame != index && index >= 0 && index < trackPoints.length - // && trackPoints.length > 0 && hasVisibleResource()) { - // Coordinate coord = trackPoints[index]; - // double[] end = descriptor.worldToPixel(new double[] { coord.x, - // coord.y }); - // double[] start = paintProps.getView().getExtent().getCenter(); - // IExtent updatedExtent = paintProps.getView().getExtent().clone(); - // updatedExtent.shift(end[0] - start[0], end[1] - start[1]); - // - // target.updateExtent(updatedExtent); - // } - // lastFrame = index; + // Nothing to paint } private boolean hasVisibleResource() { @@ -135,9 +117,7 @@ public class FeatureFollowingZoomLayer extends updatedExtent.shift(end[0] - start[0], end[1] - start[1]); descriptor.getRenderableDisplay().setExtent(updatedExtent); - descriptor.getRenderableDisplay().getContainer() - .getActiveDisplayPane().getTarget() - .updateExtent(updatedExtent); + issueRefresh(); } lastFrame = index; diff --git a/cave/com.raytheon.viz.core.gl/src/com/raytheon/viz/core/gl/internal/GLTarget.java b/cave/com.raytheon.viz.core.gl/src/com/raytheon/viz/core/gl/internal/GLTarget.java index d3d4939810..b6242252e9 100644 --- a/cave/com.raytheon.viz.core.gl/src/com/raytheon/viz/core/gl/internal/GLTarget.java +++ b/cave/com.raytheon.viz.core.gl/src/com/raytheon/viz/core/gl/internal/GLTarget.java @@ -82,7 +82,6 @@ import com.raytheon.uf.viz.core.drawables.IDescriptor; import com.raytheon.uf.viz.core.drawables.IFont; import com.raytheon.uf.viz.core.drawables.IFont.Style; import com.raytheon.uf.viz.core.drawables.IImage; -import com.raytheon.uf.viz.core.drawables.IRenderableDisplay; import com.raytheon.uf.viz.core.drawables.IShadedShape; import com.raytheon.uf.viz.core.drawables.IWireframeShape; import com.raytheon.uf.viz.core.drawables.ImagingSupport; @@ -187,8 +186,6 @@ public class GLTarget implements IGLTarget { /** The current visible extent */ protected IView targetView; - protected IExtent updatedExtent; - /** The width of the screen */ protected final float theWidth; @@ -378,25 +375,19 @@ public class GLTarget implements IGLTarget { /* * (non-Javadoc) * - * @see com.raytheon.viz.IGraphicsTarget#beginFrame(IRenderableDisplay, - * boolean) + * @see com.raytheon.viz.IGraphicsTarget#beginFrame(IView, boolean) */ @Override - public void beginFrame(IRenderableDisplay display, boolean clearBackground) { + public void beginFrame(IView view, boolean clearBackground) { if (theCanvas != null && theCanvas.isDisposed()) { return; } - if (this.updatedExtent != null) { - display.setExtent(this.updatedExtent); - this.updatedExtent = null; - } - - this.targetView = display.getView(); - makeContextCurrent(); + setView(view); + if (clearBackground) { gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); } @@ -405,8 +396,6 @@ public class GLTarget implements IGLTarget { theCurrentZoom = (viewExtent.getMaxY() - viewExtent.getMinY()) / theHeight; - display.setup(this); - hasLoadedTextureOnLoop = false; synchronized (this) { if (refreshCount > 0) { @@ -2252,11 +2241,6 @@ public class GLTarget implements IGLTarget { gl.glPopAttrib(); } - @Override - public void updateExtent(IExtent updatedExtent) { - this.updatedExtent = updatedExtent; - } - /* * (non-Javadoc) * diff --git a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/actions/AbstractScreenCaptureAction.java b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/actions/AbstractScreenCaptureAction.java index 8a73f62f44..447d670343 100644 --- a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/actions/AbstractScreenCaptureAction.java +++ b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/actions/AbstractScreenCaptureAction.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.graphics.Rectangle; import com.raytheon.uf.viz.core.IDisplayPane; @@ -32,7 +31,7 @@ public abstract class AbstractScreenCaptureAction extends AbstractHandler { int startIndex = 0; int endIndex = editor.getActiveDisplayPane().getDescriptor() .getFramesInfo().getFrameCount(); - if(endIndex == 0){ + if (endIndex == 0) { endIndex = 1; } return captureFrames(editor, startIndex, endIndex); @@ -64,11 +63,11 @@ public abstract class AbstractScreenCaptureAction extends AbstractHandler { private void setFrameIndex(IDescriptor desc, int index) { FramesInfo fi = desc.getFramesInfo(); - if(fi.getFrameTimes() == null || fi.getFrameCount() <= 1){ + if (fi.getFrameTimes() == null || fi.getFrameCount() <= 1) { return; } index = index % fi.getFrameCount(); - if(index < 0){ + if (index < 0) { index += fi.getFrameCount(); } fi = new FramesInfo(fi.getFrameTimes(), index, fi.getTimeMap()); @@ -92,7 +91,7 @@ public abstract class AbstractScreenCaptureAction extends AbstractHandler { // paint in a loop until any async tasks are done while (target.isNeedsRefresh()) { - target.beginFrame(display, true); + target.beginFrame(display.getView(), true); display.paint(target, paintProps); target.endFrame(); } diff --git a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/panes/VizDisplayPane.java b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/panes/VizDisplayPane.java index 5f271513c3..783764cb15 100644 --- a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/panes/VizDisplayPane.java +++ b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/panes/VizDisplayPane.java @@ -499,7 +499,7 @@ public class VizDisplayPane implements IDisplayPane { } synchronized (this) { - this.target.beginFrame(renderableDisplay, true); + this.target.beginFrame(renderableDisplay.getView(), true); try { PaintProperties paintProps = new PaintProperties(1.0f, diff --git a/cots/net.sf.cglib/.classpath b/cots/net.sf.cglib/.classpath index 28a9d061b1..93ad06ad6b 100644 --- a/cots/net.sf.cglib/.classpath +++ b/cots/net.sf.cglib/.classpath @@ -2,6 +2,6 @@ - + diff --git a/cots/net.sf.cglib/cglib-src-2.1_3.jar b/cots/net.sf.cglib/cglib-src-2.1_3.jar new file mode 100644 index 0000000000..cd4e57a7e3 Binary files /dev/null and b/cots/net.sf.cglib/cglib-src-2.1_3.jar differ diff --git a/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/DynamicSerializationManager.java b/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/DynamicSerializationManager.java index 5d11fd50fb..5ae07f3ebb 100644 --- a/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/DynamicSerializationManager.java +++ b/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/DynamicSerializationManager.java @@ -26,6 +26,7 @@ import java.io.OutputStream; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.math.BigDecimal; +import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.FloatBuffer; import java.sql.Timestamp; @@ -49,6 +50,7 @@ import org.geotools.coverage.grid.GridGeometry2D; import com.raytheon.uf.common.serialization.BuiltInTypeSupport.CalendarSerializer; import com.raytheon.uf.common.serialization.BuiltInTypeSupport.DateSerializer; import com.raytheon.uf.common.serialization.BuiltInTypeSupport.TimestampSerializer; +import com.raytheon.uf.common.serialization.adapters.BufferAdapter; import com.raytheon.uf.common.serialization.adapters.ByteBufferAdapter; import com.raytheon.uf.common.serialization.adapters.CoordAdapter; import com.raytheon.uf.common.serialization.adapters.EnumSetAdapter; @@ -68,9 +70,6 @@ import com.raytheon.uf.common.util.ByteArrayOutputStreamPool; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.MultiPolygon; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; /** * Dynamic Serialization Manager provides a serialization capability that runs @@ -108,69 +107,27 @@ public class DynamicSerializationManager { private static final SerializationMetadata NO_METADATA = new SerializationMetadata(); static { - SerializationMetadata md = new SerializationMetadata(); - md.serializationFactory = new CalendarSerializer(); - md.adapterStructName = GregorianCalendar.class.getName(); - serializedAttributes.put(GregorianCalendar.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new DateSerializer(); - md.adapterStructName = Date.class.getName(); - serializedAttributes.put(Date.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new TimestampSerializer(); - md.adapterStructName = Timestamp.class.getName(); - serializedAttributes.put(Timestamp.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new BuiltInTypeSupport.SqlDateSerializer(); - md.adapterStructName = java.sql.Date.class.getName(); - serializedAttributes.put(java.sql.Date.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new PointAdapter(); - md.adapterStructName = java.awt.Point.class.getName(); - serializedAttributes.put(java.awt.Point.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new CoordAdapter(); - md.adapterStructName = Coordinate.class.getName(); - serializedAttributes.put(Coordinate.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new BuiltInTypeSupport.BigDecimalSerializer(); - md.adapterStructName = BigDecimal.class.getName(); - serializedAttributes.put(BigDecimal.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new GeometryTypeAdapter(); - md.adapterStructName = Geometry.class.getName(); - serializedAttributes.put(Polygon.class.getName(), md); - serializedAttributes.put(MultiPolygon.class.getName(), md); - serializedAttributes.put(Point.class.getName(), md); - serializedAttributes.put(Geometry.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new JTSEnvelopeAdapter(); - md.adapterStructName = Envelope.class.getName(); - serializedAttributes.put(Envelope.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new GridGeometry2DAdapter(); - md.adapterStructName = GridGeometry2D.class.getName(); - serializedAttributes.put(GridGeometry2D.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new GridGeometryAdapter(); - md.adapterStructName = GeneralGridGeometry.class.getName(); - serializedAttributes.put(GeneralGridGeometry.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new EnumSetAdapter(); - md.adapterStructName = EnumSet.class.getName(); - serializedAttributes.put(EnumSet.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new StackTraceElementAdapter(); - md.adapterStructName = StackTraceElement.class.getName(); - serializedAttributes.put(StackTraceElement.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new FloatBufferAdapter(); - md.adapterStructName = FloatBuffer.class.getName(); - serializedAttributes.put(FloatBuffer.class.getName(), md); - md = new SerializationMetadata(); - md.serializationFactory = new ByteBufferAdapter(); - md.adapterStructName = ByteBuffer.class.getName(); - serializedAttributes.put(ByteBuffer.class.getName(), md); + // TODO: Can the registration of adapters that require dependencies be + // moved to a separate plugin somehow? + registerAdapter(GregorianCalendar.class, new CalendarSerializer()); + registerAdapter(Date.class, new DateSerializer()); + registerAdapter(Timestamp.class, new TimestampSerializer()); + registerAdapter(java.sql.Date.class, + new BuiltInTypeSupport.SqlDateSerializer()); + registerAdapter(java.awt.Point.class, new PointAdapter()); + registerAdapter(Coordinate.class, new CoordAdapter()); + registerAdapter(BigDecimal.class, + new BuiltInTypeSupport.BigDecimalSerializer()); + registerAdapter(Geometry.class, new GeometryTypeAdapter()); + registerAdapter(Envelope.class, new JTSEnvelopeAdapter()); + registerAdapter(GridGeometry2D.class, new GridGeometry2DAdapter()); + registerAdapter(GeneralGridGeometry.class, new GridGeometryAdapter()); + registerAdapter(EnumSet.class, new EnumSetAdapter()); + registerAdapter(StackTraceElement.class, new StackTraceElementAdapter()); + // These two are OBE by BufferAdapter and should be deleted sometime + registerAdapter(ByteBuffer.class, new ByteBufferAdapter()); + registerAdapter(FloatBuffer.class, new FloatBufferAdapter()); + registerAdapter(Buffer.class, new BufferAdapter()); } public enum EnclosureType { @@ -297,6 +254,19 @@ public class DynamicSerializationManager { return ((ThriftSerializationContext) ctx).deserializeMessage(); } + public static void registerAdapter(Class clazz, + ISerializationTypeAdapter adapter) { + SerializationMetadata md = new SerializationMetadata(); + md.serializationFactory = adapter; + md.adapterStructName = clazz.getName(); + if (serializedAttributes.containsKey(md.adapterStructName)) { + throw new RuntimeException( + "Could not create serialization metadata for class: " + + clazz + ", metadata already exists"); + } + serializedAttributes.put(md.adapterStructName, md); + } + /** * Inspect a class and return the metadata for the object * @@ -308,7 +278,6 @@ public class DynamicSerializationManager { * the class * @return the metadata */ - @SuppressWarnings("unchecked") public static SerializationMetadata inspect(Class c) { // Check for base types @@ -327,9 +296,9 @@ public class DynamicSerializationManager { // Check to see if there is an adapter if (serializeAdapterTag != null) { - Class factoryTag = (serializeAdapterTag).factory(); + Class factoryTag = (serializeAdapterTag).factory(); try { - attribs.serializationFactory = (ISerializationTypeAdapter) factoryTag + attribs.serializationFactory = (ISerializationTypeAdapter) factoryTag .newInstance(); attribs.adapterStructName = c.getName(); } catch (Exception e) { diff --git a/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/SerializationCache.java b/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/SerializationCache.java index 0d457d7789..7c6135c181 100644 --- a/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/SerializationCache.java +++ b/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/SerializationCache.java @@ -98,6 +98,7 @@ public class SerializationCache { generator = new BeanMap.Generator(); } + generator.setClassLoader(SerializationCache.class.getClassLoader()); generator.setBean(obj); bm = generator.create(); generator.setBean(null); @@ -121,7 +122,9 @@ public class SerializationCache { synchronized (classCache) { FastClass fc = classCache.get(name); if (fc == null) { - fc = FastClass.create(Class.forName(name)); + fc = FastClass.create( + SerializationCache.class.getClassLoader(), + Class.forName(name)); classCache.put(name, fc); } return fc; diff --git a/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/adapters/BufferAdapter.java b/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/adapters/BufferAdapter.java new file mode 100644 index 0000000000..d1ff6086a8 --- /dev/null +++ b/edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/adapters/BufferAdapter.java @@ -0,0 +1,152 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ +package com.raytheon.uf.common.serialization.adapters; + +import java.nio.Buffer; +import java.nio.ByteBuffer; +import java.nio.DoubleBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.LongBuffer; +import java.nio.ShortBuffer; + +import com.raytheon.uf.common.serialization.IDeserializationContext; +import com.raytheon.uf.common.serialization.ISerializationContext; +import com.raytheon.uf.common.serialization.ISerializationTypeAdapter; +import com.raytheon.uf.common.serialization.SerializationException; + +/** + * Serialization adapter that handles java.nio.Buffer objects. Buffers are not + * thread safe and therefore should only be serialized if no other threads are + * using them + * + *
+ * 
+ * SOFTWARE HISTORY
+ * 
+ * Date         Ticket#    Engineer    Description
+ * ------------ ---------- ----------- --------------------------
+ * May 3, 2012            mschenke     Initial creation
+ * 
+ * 
+ * + * @author mschenke + * @version 1.0 + */ + +public class BufferAdapter implements ISerializationTypeAdapter { + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#serialize + * (com.raytheon.uf.common.serialization.ISerializationContext, + * java.lang.Object) + */ + @Override + public void serialize(ISerializationContext serializer, Buffer buffer) + throws SerializationException { + serializer.writeBool(buffer.isDirect()); + buffer.position(0); + ByteBuffer bb = null; + byte[] bytes = null; + if (buffer instanceof ByteBuffer) { + serializer.writeByte((byte) 0); + bytes = new byte[buffer.capacity()]; + bb = ByteBuffer.wrap(bytes); + bb.put((ByteBuffer) buffer); + } else if (buffer instanceof ShortBuffer) { + serializer.writeByte((byte) 1); + bytes = new byte[2 * buffer.capacity()]; + bb = ByteBuffer.wrap(bytes); + bb.asShortBuffer().put((ShortBuffer) buffer); + } else if (buffer instanceof FloatBuffer) { + serializer.writeByte((byte) 2); + bytes = new byte[4 * buffer.capacity()]; + bb = ByteBuffer.wrap(bytes); + bb.asFloatBuffer().put((FloatBuffer) buffer); + } else if (buffer instanceof IntBuffer) { + serializer.writeByte((byte) 3); + bytes = new byte[4 * buffer.capacity()]; + bb = ByteBuffer.wrap(bytes); + bb.asIntBuffer().put((IntBuffer) buffer); + } else if (buffer instanceof DoubleBuffer) { + serializer.writeByte((byte) 4); + bytes = new byte[8 * buffer.capacity()]; + bb = ByteBuffer.wrap(bytes); + bb.asDoubleBuffer().put((DoubleBuffer) buffer); + } else if (buffer instanceof LongBuffer) { + serializer.writeByte((byte) 5); + bytes = new byte[8 * buffer.capacity()]; + bb = ByteBuffer.wrap(bytes); + bb.asLongBuffer().put((LongBuffer) buffer); + } else { + throw new SerializationException("Could not handle buffer type: " + + buffer.getClass()); + } + serializer.writeBinary(bb.array()); + } + + /* + * (non-Javadoc) + * + * @see + * com.raytheon.uf.common.serialization.ISerializationTypeAdapter#deserialize + * (com.raytheon.uf.common.serialization.IDeserializationContext) + */ + @Override + public Buffer deserialize(IDeserializationContext deserializer) + throws SerializationException { + boolean direct = deserializer.readBool(); + byte type = deserializer.readByte(); + byte[] bytes = deserializer.readBinary(); + ByteBuffer buffer = direct ? ByteBuffer.allocateDirect(bytes.length) + : ByteBuffer.allocate(bytes.length); + buffer.put(bytes); + buffer.rewind(); + Buffer dataBuffer = null; + switch (type) { + case 0: + dataBuffer = buffer; + break; + case 1: + dataBuffer = buffer.asShortBuffer(); + break; + case 2: + dataBuffer = buffer.asFloatBuffer(); + break; + case 3: + dataBuffer = buffer.asIntBuffer(); + break; + case 4: + dataBuffer = buffer.asDoubleBuffer(); + break; + case 5: + dataBuffer = buffer.asLongBuffer(); + break; + default: + throw new SerializationException("Unrecognized buffer type: " + + type); + } + return dataBuffer; + } + +}