Issue #239 Added circle drawing, fixed jumpiness issues
Change-Id: I3003fc4fd132dde2108ada5cb5ad1152bb8b4566 Former-commit-id:80a7110f21
[formerly4add8c7c8e
] [formerlyab314d0333
[formerly fbf7ea43b20bff1c97dc38265d9dfae091e5dcb4]] Former-commit-id:ab314d0333
Former-commit-id:f28f51f5a5
This commit is contained in:
parent
6723e813e6
commit
a3df5975db
22 changed files with 1032 additions and 260 deletions
|
@ -165,6 +165,9 @@
|
|||
<renderingExtension
|
||||
class="com.raytheon.uf.viz.collaboration.ui.rsc.rendering.StringRenderingHandler">
|
||||
</renderingExtension>
|
||||
<renderingExtension
|
||||
class="com.raytheon.uf.viz.collaboration.ui.rsc.rendering.PrimitiveRenderingHandler">
|
||||
</renderingExtension>
|
||||
</extension>
|
||||
<extension
|
||||
point="org.eclipse.core.runtime.preferences">
|
||||
|
|
|
@ -19,10 +19,14 @@
|
|||
**/
|
||||
package com.raytheon.uf.viz.collaboration.ui.rsc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.jface.action.Action;
|
||||
|
@ -46,6 +50,7 @@ import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.RenderFrameN
|
|||
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.UpdateRenderFrameEvent;
|
||||
import com.raytheon.uf.viz.collaboration.ui.rsc.rendering.CollaborationRenderingDataManager;
|
||||
import com.raytheon.uf.viz.collaboration.ui.rsc.rendering.CollaborationRenderingHandler;
|
||||
import com.raytheon.uf.viz.core.IExtent;
|
||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||
import com.raytheon.uf.viz.core.VizApp;
|
||||
import com.raytheon.uf.viz.core.drawables.IDescriptor;
|
||||
|
@ -109,6 +114,26 @@ public class CollaborationResource extends
|
|||
|
||||
private Rectangle previousBounds = null;
|
||||
|
||||
private Map<IExtent, List<IRenderEvent>> renderableMap = new LinkedHashMap<IExtent, List<IRenderEvent>>() {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.util.LinkedHashMap#removeEldestEntry(java.util.Map.Entry)
|
||||
*/
|
||||
@Override
|
||||
protected boolean removeEldestEntry(
|
||||
Entry<IExtent, List<IRenderEvent>> eldest) {
|
||||
if (size() > 30) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
public CollaborationResource(CollaborationResourceData resourceData,
|
||||
LoadProperties loadProperties) {
|
||||
super(resourceData, loadProperties);
|
||||
|
@ -126,6 +151,19 @@ public class CollaborationResource extends
|
|||
@Override
|
||||
protected void paintInternal(IGraphicsTarget target,
|
||||
PaintProperties paintProps) throws VizException {
|
||||
// Get the renderables for my extent
|
||||
List<IRenderEvent> currentRenderables = null;
|
||||
synchronized (renderableMap) {
|
||||
currentRenderables = renderableMap.get(paintProps.getView()
|
||||
.getExtent());
|
||||
if (currentRenderables == null) {
|
||||
synchronized (this.currentRenderables) {
|
||||
currentRenderables = new ArrayList<IRenderEvent>(
|
||||
this.currentRenderables);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<AbstractDispatchingObjectEvent> currentDataChangeEvents = new LinkedList<AbstractDispatchingObjectEvent>();
|
||||
synchronized (dataChangeEvents) {
|
||||
if (waitingOnObjects.size() == 0) {
|
||||
|
@ -143,17 +181,12 @@ public class CollaborationResource extends
|
|||
|
||||
dataManager.beginRender(target, paintProps);
|
||||
|
||||
List<IRenderEvent> toRender = new LinkedList<IRenderEvent>();
|
||||
synchronized (currentRenderables) {
|
||||
toRender.addAll(currentRenderables);
|
||||
}
|
||||
|
||||
synchronized (renderingRouter) {
|
||||
for (AbstractRemoteGraphicsEvent event : currentDataChangeEvents) {
|
||||
renderingRouter.post(event);
|
||||
}
|
||||
|
||||
for (IRenderEvent event : toRender) {
|
||||
for (IRenderEvent event : currentRenderables) {
|
||||
renderingRouter.post(event);
|
||||
}
|
||||
if (latestMouseLocation != null) {
|
||||
|
@ -262,7 +295,7 @@ public class CollaborationResource extends
|
|||
// Not an update event, new frame
|
||||
int objectId = event.getObjectId();
|
||||
for (IRenderEvent re : event.getRenderEvents()) {
|
||||
renderableArrived((AbstractRemoteGraphicsEvent) re);
|
||||
renderableArrived((AbstractRemoteGraphicsEvent) re.clone());
|
||||
}
|
||||
dataManager.putRenderableObject(objectId, event);
|
||||
}
|
||||
|
@ -313,6 +346,7 @@ public class CollaborationResource extends
|
|||
activeRenderables.add((IRenderEvent) event);
|
||||
} else if (event instanceof EndFrameEvent) {
|
||||
synchronized (currentRenderables) {
|
||||
IExtent current = null;
|
||||
currentRenderables.clear();
|
||||
// Frame over, process BeginFrameEvent now to keep in sync
|
||||
for (IRenderEvent renderable : activeRenderables) {
|
||||
|
@ -342,12 +376,15 @@ public class CollaborationResource extends
|
|||
} else {
|
||||
display.getView().setExtent(bfe.getExtent());
|
||||
}
|
||||
current = bfe.getExtent();
|
||||
} else {
|
||||
// Add to list for processing in paintInternal
|
||||
currentRenderables.add(renderable);
|
||||
}
|
||||
}
|
||||
activeRenderables.clear();
|
||||
renderableMap.put(current, new ArrayList<IRenderEvent>(
|
||||
currentRenderables));
|
||||
}
|
||||
issueRefresh();
|
||||
} else if (event instanceof MouseLocationEvent) {
|
||||
|
|
|
@ -84,7 +84,7 @@ public class ImagingRenderingHandler extends CollaborationRenderingHandler {
|
|||
public void renderImages(PaintImagesEvent event) {
|
||||
PaintProperties paintProps = getPaintProperties();
|
||||
IGraphicsTarget target = getGraphicsTarget();
|
||||
PaintImageEvent[] events = event.getImageEvents();
|
||||
PaintImageEvent[] events = event.getObjects();
|
||||
DrawableImage[] images = toDrawableImages(events, dataManager);
|
||||
if (images.length > 0) {
|
||||
PaintProperties imageProps = new PaintProperties(paintProps);
|
||||
|
|
|
@ -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.collaboration.ui.rsc.rendering;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
||||
import com.raytheon.uf.viz.core.DrawableCircle;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.drawables.DrawCircleEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.drawables.DrawCirclesEvent;
|
||||
|
||||
/**
|
||||
* Rendering handler for primitive shapes (lines, rectangles, circles, etc)
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* May 17, 2012 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class PrimitiveRenderingHandler extends CollaborationRenderingHandler {
|
||||
|
||||
@Subscribe
|
||||
public void drawCircles(DrawCirclesEvent event) {
|
||||
DrawCircleEvent[] events = event.getObjects();
|
||||
DrawableCircle[] circles = new DrawableCircle[events.length];
|
||||
for (int i = 0; i < events.length; ++i) {
|
||||
circles[i] = events[i].getDrawableCircle();
|
||||
}
|
||||
try {
|
||||
getGraphicsTarget().drawCircle(circles);
|
||||
} catch (VizException e) {
|
||||
Activator.statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -179,7 +179,7 @@ public class ShapeRenderingHandler extends CollaborationRenderingHandler {
|
|||
|
||||
@Subscribe
|
||||
public void renderShadedShapes(DrawShadedShapesEvent event) {
|
||||
DrawShadedShapeEvent[] shapeEvents = event.getShapes();
|
||||
DrawShadedShapeEvent[] shapeEvents = event.getObjects();
|
||||
float alpha = event.getAlpha();
|
||||
float brightness = event.getBrightness();
|
||||
IShadedShape[] shapes = new IShadedShape[shapeEvents.length];
|
||||
|
|
|
@ -57,7 +57,7 @@ public class StringRenderingHandler extends CollaborationRenderingHandler {
|
|||
@Subscribe
|
||||
public void drawStrings(DrawStringsEvent event) {
|
||||
IGraphicsTarget target = getGraphicsTarget();
|
||||
DrawStringEvent[] events = event.getStrings();
|
||||
DrawStringEvent[] events = event.getObjects();
|
||||
DrawableString[] strings = new DrawableString[events.length];
|
||||
for (int i = 0; i < events.length; ++i) {
|
||||
strings[i] = events[i].getDrawableString();
|
||||
|
|
|
@ -22,6 +22,7 @@ Export-Package: com.raytheon.uf.viz.remote.graphics,
|
|||
com.raytheon.uf.viz.remote.graphics.events,
|
||||
com.raytheon.uf.viz.remote.graphics.events.clipping,
|
||||
com.raytheon.uf.viz.remote.graphics.events.colormap,
|
||||
com.raytheon.uf.viz.remote.graphics.events.drawables,
|
||||
com.raytheon.uf.viz.remote.graphics.events.fonts,
|
||||
com.raytheon.uf.viz.remote.graphics.events.imagery,
|
||||
com.raytheon.uf.viz.remote.graphics.events.mesh,
|
||||
|
|
|
@ -75,6 +75,8 @@ import com.raytheon.uf.viz.remote.graphics.events.clipping.ClearClippingPane;
|
|||
import com.raytheon.uf.viz.remote.graphics.events.clipping.SetupClippingPane;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.colormap.DispatchingColorMapManager;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.colormap.DrawColorRampEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.drawables.DrawCircleEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.drawables.DrawCirclesEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.imagery.CreateIImageEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.points.DrawPointsEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.BeginFrameEvent;
|
||||
|
@ -336,7 +338,7 @@ public class DispatchGraphicsTarget extends DispatchingObject<IGraphicsTarget>
|
|||
strings[i].setDrawableString(param);
|
||||
++i;
|
||||
}
|
||||
event.setStrings(strings);
|
||||
event.setObjects(strings);
|
||||
dispatch(event);
|
||||
}
|
||||
|
||||
|
@ -420,7 +422,7 @@ public class DispatchGraphicsTarget extends DispatchingObject<IGraphicsTarget>
|
|||
DrawShadedShapeEvent.class, (DispatchingShadedShape) shape);
|
||||
actualShapes[i] = shape.getWrappedObject();
|
||||
}
|
||||
event.setShapes(shapeEvents);
|
||||
event.setObjects(shapeEvents);
|
||||
dispatch(event);
|
||||
|
||||
// Actual draw
|
||||
|
@ -587,6 +589,16 @@ public class DispatchGraphicsTarget extends DispatchingObject<IGraphicsTarget>
|
|||
*/
|
||||
public void drawCircle(DrawableCircle... circles) throws VizException {
|
||||
wrappedObject.drawCircle(circles);
|
||||
DrawCirclesEvent event = RemoteGraphicsEventFactory.createEvent(
|
||||
DrawCirclesEvent.class, this);
|
||||
DrawCircleEvent[] events = new DrawCircleEvent[circles.length];
|
||||
for (int i = 0; i < circles.length; ++i) {
|
||||
events[i] = RemoteGraphicsEventFactory.createEvent(
|
||||
DrawCircleEvent.class, this);
|
||||
events[i].setDrawableCircle(circles[i]);
|
||||
}
|
||||
event.setObjects(events);
|
||||
dispatch(event);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -606,7 +618,7 @@ public class DispatchGraphicsTarget extends DispatchingObject<IGraphicsTarget>
|
|||
* @param color
|
||||
* @param width
|
||||
* @param startAzimuth
|
||||
* @param arcWidth
|
||||
* @param endAzimuth
|
||||
* @param lineStyle
|
||||
* @param includeSides
|
||||
* @throws VizException
|
||||
|
@ -614,11 +626,24 @@ public class DispatchGraphicsTarget extends DispatchingObject<IGraphicsTarget>
|
|||
* double, double, org.eclipse.swt.graphics.RGB, float, int, int,
|
||||
* com.raytheon.uf.viz.core.IGraphicsTarget.LineStyle, boolean)
|
||||
*/
|
||||
@Deprecated
|
||||
public void drawArc(double x1, double y1, double z1, double radius,
|
||||
RGB color, float width, int startAzimuth, int arcWidth,
|
||||
RGB color, float width, int startAzimuth, int endAzimuth,
|
||||
LineStyle lineStyle, boolean includeSides) throws VizException {
|
||||
wrappedObject.drawArc(x1, y1, z1, radius, color, width, startAzimuth,
|
||||
arcWidth, lineStyle, includeSides);
|
||||
DrawableCircle dc = new DrawableCircle();
|
||||
dc.setCoordinates(x1, y1, z1);
|
||||
dc.basics.color = color;
|
||||
dc.lineStyle = lineStyle;
|
||||
dc.startAzimuth = startAzimuth;
|
||||
dc.endAzimuth = endAzimuth;
|
||||
if (startAzimuth > endAzimuth) {
|
||||
endAzimuth += 360;
|
||||
}
|
||||
dc.numberOfPoints = endAzimuth - startAzimuth;
|
||||
dc.includeSides = includeSides;
|
||||
dc.lineWidth = width;
|
||||
dc.radius = radius;
|
||||
drawCircle(dc);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,480 @@
|
|||
/**
|
||||
* 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.drawables;
|
||||
|
||||
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.DrawableCircle;
|
||||
import com.raytheon.uf.viz.core.IGraphicsTarget.LineStyle;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.AbstractRemoteGraphicsRenderEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent;
|
||||
|
||||
/**
|
||||
* Event for drawing a circle
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* May 17, 2012 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
@DynamicSerialize
|
||||
public class DrawCircleEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||
|
||||
@DynamicSerializeElement
|
||||
private double[] location;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private RGB color;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Double screenRadius;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Double radius;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Boolean filled;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Boolean includeSides;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Integer numberOfPoints;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Float startAzimuth;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Float endAzimuth;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Float lineWidth;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private LineStyle lineStyle;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Float alpha;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private Boolean xorColors;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsRenderEvent
|
||||
* #createDiffObject(com.raytheon.uf.viz.remote
|
||||
* .graphics.events.rendering.IRenderEvent)
|
||||
*/
|
||||
@Override
|
||||
public DrawCircleEvent createDiffObject(IRenderEvent event) {
|
||||
DrawCircleEvent diffEvent = (DrawCircleEvent) event;
|
||||
DrawCircleEvent diffObject = new DrawCircleEvent();
|
||||
if (Arrays.equals(location, diffEvent.location) == false)
|
||||
diffObject.location = diffEvent.location;
|
||||
if (color.equals(diffEvent.color) == false)
|
||||
diffObject.color = diffEvent.color;
|
||||
if (alpha != diffEvent.alpha)
|
||||
diffObject.alpha = diffEvent.alpha;
|
||||
if (xorColors != diffEvent.xorColors)
|
||||
diffObject.xorColors = diffEvent.xorColors;
|
||||
if (filled != diffEvent.filled)
|
||||
diffObject.filled = diffEvent.filled;
|
||||
if (startAzimuth != diffEvent.startAzimuth)
|
||||
diffObject.startAzimuth = diffEvent.startAzimuth;
|
||||
if (endAzimuth != diffEvent.endAzimuth)
|
||||
diffObject.endAzimuth = diffEvent.endAzimuth;
|
||||
if (numberOfPoints != diffEvent.numberOfPoints)
|
||||
diffObject.numberOfPoints = diffEvent.numberOfPoints;
|
||||
if (radius != diffEvent.radius)
|
||||
diffObject.radius = diffEvent.radius;
|
||||
if (screenRadius != diffEvent.screenRadius)
|
||||
diffObject.screenRadius = diffEvent.screenRadius;
|
||||
if (lineStyle != diffEvent.lineStyle)
|
||||
diffObject.lineStyle = diffEvent.lineStyle;
|
||||
if (lineWidth != diffEvent.lineWidth)
|
||||
diffObject.lineWidth = diffEvent.lineWidth;
|
||||
if (includeSides != diffEvent.includeSides)
|
||||
diffObject.includeSides = diffEvent.includeSides;
|
||||
return diffObject;
|
||||
}
|
||||
|
||||
/*
|
||||
* (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) {
|
||||
DrawCircleEvent o = (DrawCircleEvent) diffEvent;
|
||||
if (o.location != null)
|
||||
location = o.location;
|
||||
if (o.color != null)
|
||||
color = o.color;
|
||||
if (o.alpha != null)
|
||||
alpha = o.alpha;
|
||||
if (o.xorColors != null)
|
||||
xorColors = o.xorColors;
|
||||
if (o.filled != null)
|
||||
filled = o.filled;
|
||||
if (o.startAzimuth != null)
|
||||
startAzimuth = o.startAzimuth;
|
||||
if (o.endAzimuth != null)
|
||||
endAzimuth = o.endAzimuth;
|
||||
if (o.numberOfPoints != null)
|
||||
numberOfPoints = o.numberOfPoints;
|
||||
if (o.lineStyle != null)
|
||||
lineStyle = o.lineStyle;
|
||||
if (o.lineWidth != null)
|
||||
lineWidth = o.lineWidth;
|
||||
if (o.includeSides != null) {
|
||||
includeSides = o.includeSides;
|
||||
}
|
||||
if (o.radius != null) {
|
||||
radius = o.radius;
|
||||
screenRadius = null;
|
||||
} else if (o.screenRadius != null) {
|
||||
screenRadius = o.screenRadius;
|
||||
radius = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void setDrawableCircle(DrawableCircle circle) {
|
||||
this.location = new double[] { circle.basics.x, circle.basics.y,
|
||||
circle.basics.z };
|
||||
this.color = circle.basics.color;
|
||||
this.alpha = circle.basics.alpha;
|
||||
this.xorColors = circle.basics.xOrColors;
|
||||
this.filled = circle.filled;
|
||||
this.startAzimuth = circle.startAzimuth;
|
||||
this.endAzimuth = circle.endAzimuth;
|
||||
this.numberOfPoints = circle.numberOfPoints;
|
||||
this.radius = circle.radius;
|
||||
this.screenRadius = circle.screenRadius;
|
||||
this.lineStyle = circle.lineStyle;
|
||||
this.lineWidth = circle.lineWidth;
|
||||
this.includeSides = circle.includeSides;
|
||||
}
|
||||
|
||||
public DrawableCircle getDrawableCircle() {
|
||||
DrawableCircle circle = new DrawableCircle();
|
||||
circle.setCoordinates(location[0], location[1], location[2]);
|
||||
circle.basics.color = color;
|
||||
circle.basics.alpha = alpha;
|
||||
circle.basics.xOrColors = xorColors;
|
||||
circle.filled = filled;
|
||||
circle.startAzimuth = startAzimuth;
|
||||
circle.endAzimuth = endAzimuth;
|
||||
circle.numberOfPoints = numberOfPoints;
|
||||
circle.radius = radius;
|
||||
circle.screenRadius = screenRadius;
|
||||
circle.lineStyle = lineStyle;
|
||||
circle.lineWidth = lineWidth;
|
||||
circle.includeSides = includeSides;
|
||||
return circle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the location
|
||||
*/
|
||||
public double[] getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param location
|
||||
* the location to set
|
||||
*/
|
||||
public void setLocation(double[] location) {
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the color
|
||||
*/
|
||||
public RGB getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param color
|
||||
* the color to set
|
||||
*/
|
||||
public void setColor(RGB color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the screenRadius
|
||||
*/
|
||||
public Double getScreenRadius() {
|
||||
return screenRadius;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param screenRadius
|
||||
* the screenRadius to set
|
||||
*/
|
||||
public void setScreenRadius(Double screenRadius) {
|
||||
this.screenRadius = screenRadius;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the radius
|
||||
*/
|
||||
public Double getRadius() {
|
||||
return radius;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param radius
|
||||
* the radius to set
|
||||
*/
|
||||
public void setRadius(Double radius) {
|
||||
this.radius = radius;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the filled
|
||||
*/
|
||||
public Boolean getFilled() {
|
||||
return filled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param filled
|
||||
* the filled to set
|
||||
*/
|
||||
public void setFilled(Boolean filled) {
|
||||
this.filled = filled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the includeSides
|
||||
*/
|
||||
public Boolean getIncludeSides() {
|
||||
return includeSides;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param includeSides
|
||||
* the includeSides to set
|
||||
*/
|
||||
public void setIncludeSides(Boolean includeSides) {
|
||||
this.includeSides = includeSides;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the numberOfPoints
|
||||
*/
|
||||
public Integer getNumberOfPoints() {
|
||||
return numberOfPoints;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param numberOfPoints
|
||||
* the numberOfPoints to set
|
||||
*/
|
||||
public void setNumberOfPoints(Integer numberOfPoints) {
|
||||
this.numberOfPoints = numberOfPoints;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the startAzimuth
|
||||
*/
|
||||
public Float getStartAzimuth() {
|
||||
return startAzimuth;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param startAzimuth
|
||||
* the startAzimuth to set
|
||||
*/
|
||||
public void setStartAzimuth(Float startAzimuth) {
|
||||
this.startAzimuth = startAzimuth;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the endAzimuth
|
||||
*/
|
||||
public Float getEndAzimuth() {
|
||||
return endAzimuth;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param endAzimuth
|
||||
* the endAzimuth to set
|
||||
*/
|
||||
public void setEndAzimuth(Float endAzimuth) {
|
||||
this.endAzimuth = endAzimuth;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the lineWidth
|
||||
*/
|
||||
public Float getLineWidth() {
|
||||
return lineWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param lineWidth
|
||||
* the lineWidth to set
|
||||
*/
|
||||
public void setLineWidth(Float lineWidth) {
|
||||
this.lineWidth = lineWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the lineStyle
|
||||
*/
|
||||
public LineStyle getLineStyle() {
|
||||
return lineStyle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param lineStyle
|
||||
* the lineStyle to set
|
||||
*/
|
||||
public void setLineStyle(LineStyle lineStyle) {
|
||||
this.lineStyle = lineStyle;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the alpha
|
||||
*/
|
||||
public Float getAlpha() {
|
||||
return alpha;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param alpha
|
||||
* the alpha to set
|
||||
*/
|
||||
public void setAlpha(Float alpha) {
|
||||
this.alpha = alpha;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the xorColors
|
||||
*/
|
||||
public Boolean getXorColors() {
|
||||
return xorColors;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param xorColors
|
||||
* the xorColors to set
|
||||
*/
|
||||
public void setXorColors(Boolean xorColors) {
|
||||
this.xorColors = xorColors;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#equals(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
DrawCircleEvent other = (DrawCircleEvent) obj;
|
||||
if (alpha == null) {
|
||||
if (other.alpha != null)
|
||||
return false;
|
||||
} else if (!alpha.equals(other.alpha))
|
||||
return false;
|
||||
if (color == null) {
|
||||
if (other.color != null)
|
||||
return false;
|
||||
} else if (!color.equals(other.color))
|
||||
return false;
|
||||
if (endAzimuth == null) {
|
||||
if (other.endAzimuth != null)
|
||||
return false;
|
||||
} else if (!endAzimuth.equals(other.endAzimuth))
|
||||
return false;
|
||||
if (filled == null) {
|
||||
if (other.filled != null)
|
||||
return false;
|
||||
} else if (!filled.equals(other.filled))
|
||||
return false;
|
||||
if (includeSides == null) {
|
||||
if (other.includeSides != null)
|
||||
return false;
|
||||
} else if (!includeSides.equals(other.includeSides))
|
||||
return false;
|
||||
if (lineStyle != other.lineStyle)
|
||||
return false;
|
||||
if (lineWidth == null) {
|
||||
if (other.lineWidth != null)
|
||||
return false;
|
||||
} else if (!lineWidth.equals(other.lineWidth))
|
||||
return false;
|
||||
if (!Arrays.equals(location, other.location))
|
||||
return false;
|
||||
if (numberOfPoints == null) {
|
||||
if (other.numberOfPoints != null)
|
||||
return false;
|
||||
} else if (!numberOfPoints.equals(other.numberOfPoints))
|
||||
return false;
|
||||
if (radius == null) {
|
||||
if (other.radius != null)
|
||||
return false;
|
||||
} else if (!radius.equals(other.radius))
|
||||
return false;
|
||||
if (screenRadius == null) {
|
||||
if (other.screenRadius != null)
|
||||
return false;
|
||||
} else if (!screenRadius.equals(other.screenRadius))
|
||||
return false;
|
||||
if (startAzimuth == null) {
|
||||
if (other.startAzimuth != null)
|
||||
return false;
|
||||
} else if (!startAzimuth.equals(other.startAzimuth))
|
||||
return false;
|
||||
if (xorColors == null) {
|
||||
if (other.xorColors != null)
|
||||
return false;
|
||||
} else if (!xorColors.equals(other.xorColors))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
/**
|
||||
* 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.drawables;
|
||||
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.AbstractRemoteGraphicsBulkRenderEvent;
|
||||
|
||||
/**
|
||||
* Event for drawing a series of circles
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* May 17, 2012 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
@DynamicSerialize
|
||||
public class DrawCirclesEvent extends
|
||||
AbstractRemoteGraphicsBulkRenderEvent<DrawCircleEvent> {
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent#getObjectClass()
|
||||
*/
|
||||
@Override
|
||||
protected Class<DrawCircleEvent> getObjectClass() {
|
||||
return DrawCircleEvent.class;
|
||||
}
|
||||
|
||||
}
|
|
@ -242,4 +242,16 @@ public class PaintImageEvent extends AbstractDispatchingObjectEvent implements
|
|||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#clone()
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
PaintImageEvent newInstance = new PaintImageEvent();
|
||||
newInstance.applyDiffObject(this);
|
||||
return newInstance;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
**/
|
||||
package com.raytheon.uf.viz.remote.graphics.events.imagery;
|
||||
|
||||
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.DrawableImage;
|
||||
|
@ -28,7 +26,7 @@ import com.raytheon.uf.viz.core.IMesh;
|
|||
import com.raytheon.uf.viz.core.PixelCoverage;
|
||||
import com.raytheon.uf.viz.core.drawables.IImage;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.RemoteGraphicsEventFactory;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.AbstractRemoteGraphicsRenderEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.AbstractRemoteGraphicsBulkRenderEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.objects.AbstractDispatchingImage;
|
||||
import com.raytheon.uf.viz.remote.graphics.objects.DispatchingMesh;
|
||||
|
@ -50,86 +48,40 @@ import com.raytheon.uf.viz.remote.graphics.objects.DispatchingMesh;
|
|||
* @version 1.0
|
||||
*/
|
||||
@DynamicSerialize
|
||||
public class PaintImagesEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||
public class PaintImagesEvent extends
|
||||
AbstractRemoteGraphicsBulkRenderEvent<PaintImageEvent> {
|
||||
|
||||
@DynamicSerializeElement
|
||||
private float alpha;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private PaintImageEvent[] imageEvents;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.remote.graphics.events.IRenderEvent#createDiffObject
|
||||
* (com.raytheon.uf.viz.remote.graphics.events.IRenderEvent)
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent
|
||||
* #createDiffObject(com.raytheon.uf.viz
|
||||
* .remote.graphics.events.rendering.IRenderEvent)
|
||||
*/
|
||||
@Override
|
||||
public PaintImagesEvent createDiffObject(IRenderEvent event) {
|
||||
PaintImagesEvent diff = (PaintImagesEvent) event;
|
||||
PaintImagesEvent diffEvent = new PaintImagesEvent();
|
||||
diffEvent.alpha = diff.alpha;
|
||||
if (diff.imageEvents != null) {
|
||||
if (imageEvents != null
|
||||
&& diff.imageEvents.length == imageEvents.length) {
|
||||
diffEvent.imageEvents = new PaintImageEvent[diff.imageEvents.length];
|
||||
for (int i = 0; i < imageEvents.length; ++i) {
|
||||
PaintImageEvent paintEvent = imageEvents[i];
|
||||
PaintImageEvent diffPaintEvent = diff.imageEvents[i];
|
||||
if (paintEvent.equals(diffPaintEvent) == false) {
|
||||
diffEvent.imageEvents[i] = paintEvent
|
||||
.createDiffObject(diffPaintEvent);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
diffEvent.imageEvents = diff.imageEvents;
|
||||
}
|
||||
}
|
||||
return diffEvent;
|
||||
PaintImagesEvent diffObject = (PaintImagesEvent) super
|
||||
.createDiffObject(event);
|
||||
diffObject.alpha = ((PaintImagesEvent) event).alpha;
|
||||
return diffObject;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.remote.graphics.events.IRenderEvent#applyDiffObject
|
||||
* (com.raytheon.uf.viz.remote.graphics.events.IRenderEvent)
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent
|
||||
* #applyDiffObject(com.raytheon.uf.viz.
|
||||
* remote.graphics.events.rendering.IRenderEvent)
|
||||
*/
|
||||
@Override
|
||||
public void applyDiffObject(IRenderEvent diffEvent) {
|
||||
PaintImagesEvent event = (PaintImagesEvent) diffEvent;
|
||||
PaintImageEvent[] diffImageEvents = event.imageEvents;
|
||||
alpha = event.alpha;
|
||||
if (diffImageEvents == null) {
|
||||
imageEvents = null;
|
||||
} else if (imageEvents == null) {
|
||||
imageEvents = event.imageEvents;
|
||||
} else if (imageEvents.length != diffImageEvents.length) {
|
||||
imageEvents = event.imageEvents;
|
||||
} else {
|
||||
for (int i = 0; i < imageEvents.length; ++i) {
|
||||
PaintImageEvent diffPaintEvent = diffImageEvents[i];
|
||||
if (diffPaintEvent != null) {
|
||||
imageEvents[i].applyDiffObject(diffPaintEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the imageEvents
|
||||
*/
|
||||
public PaintImageEvent[] getImageEvents() {
|
||||
return imageEvents;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param imageEvents
|
||||
* the imageEvents to set
|
||||
*/
|
||||
public void setImageEvents(PaintImageEvent[] imageEvents) {
|
||||
this.imageEvents = imageEvents;
|
||||
super.applyDiffObject(diffEvent);
|
||||
this.alpha = ((PaintImagesEvent) diffEvent).alpha;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -213,6 +165,17 @@ public class PaintImagesEvent extends AbstractRemoteGraphicsRenderEvent {
|
|||
return targeted;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent#getObjectClass()
|
||||
*/
|
||||
@Override
|
||||
protected Class<PaintImageEvent> getObjectClass() {
|
||||
return PaintImageEvent.class;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
|
@ -222,16 +185,27 @@ public class PaintImagesEvent extends AbstractRemoteGraphicsRenderEvent {
|
|||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
if (!super.equals(obj))
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
PaintImagesEvent other = (PaintImagesEvent) obj;
|
||||
if (Float.floatToIntBits(alpha) != Float.floatToIntBits(other.alpha))
|
||||
return false;
|
||||
if (!Arrays.equals(imageEvents, other.imageEvents))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent#clone()
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
PaintImagesEvent event = (PaintImagesEvent) super.clone();
|
||||
event.alpha = alpha;
|
||||
return event;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -112,4 +112,16 @@ public class RenderOffscreenEvent extends AbstractDispatchingObjectEvent
|
|||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#clone()
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
RenderOffscreenEvent newInstance = new RenderOffscreenEvent();
|
||||
newInstance.applyDiffObject(this);
|
||||
return newInstance;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,175 @@
|
|||
/**
|
||||
* 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;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||
|
||||
/**
|
||||
* Abstract class for bulk rendering other objects
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* May 17, 2012 mschenke Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@DynamicSerialize
|
||||
public abstract class AbstractRemoteGraphicsBulkRenderEvent<T extends IRenderEvent>
|
||||
extends AbstractRemoteGraphicsRenderEvent {
|
||||
|
||||
@DynamicSerializeElement
|
||||
private T[] objects;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.remote.graphics.events.IRenderEvent#createDiffObject
|
||||
* (com.raytheon.uf.viz.remote.graphics.events.IRenderEvent)
|
||||
*/
|
||||
@Override
|
||||
public AbstractRemoteGraphicsBulkRenderEvent<T> createDiffObject(
|
||||
IRenderEvent event) {
|
||||
AbstractRemoteGraphicsBulkRenderEvent<T> diff = (AbstractRemoteGraphicsBulkRenderEvent<T>) event;
|
||||
try {
|
||||
AbstractRemoteGraphicsBulkRenderEvent<T> diffEvent = (AbstractRemoteGraphicsBulkRenderEvent<T>) event
|
||||
.getClass().newInstance();
|
||||
if (diff.objects != null) {
|
||||
if (objects != null && diff.objects.length == objects.length) {
|
||||
diffEvent.objects = (T[]) Array.newInstance(
|
||||
diff.getObjectClass(), diff.objects.length);
|
||||
for (int i = 0; i < objects.length; ++i) {
|
||||
T paintEvent = objects[i];
|
||||
T diffPaintEvent = diff.objects[i];
|
||||
if (paintEvent.equals(diffPaintEvent) == false) {
|
||||
diffEvent.objects[i] = (T) paintEvent
|
||||
.createDiffObject(diffPaintEvent);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
diffEvent.objects = diff.objects;
|
||||
}
|
||||
}
|
||||
return diffEvent;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Error creating diff object", e);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.remote.graphics.events.IRenderEvent#applyDiffObject
|
||||
* (com.raytheon.uf.viz.remote.graphics.events.IRenderEvent)
|
||||
*/
|
||||
@Override
|
||||
public void applyDiffObject(IRenderEvent diffEvent) {
|
||||
AbstractRemoteGraphicsBulkRenderEvent<T> event = (AbstractRemoteGraphicsBulkRenderEvent<T>) diffEvent;
|
||||
T[] diffImageEvents = event.objects;
|
||||
if (diffImageEvents == null) {
|
||||
objects = null;
|
||||
} else if (objects == null) {
|
||||
objects = event.objects;
|
||||
} else if (objects.length != diffImageEvents.length) {
|
||||
objects = event.objects;
|
||||
} else {
|
||||
for (int i = 0; i < objects.length; ++i) {
|
||||
T diffPaintEvent = diffImageEvents[i];
|
||||
if (diffPaintEvent != null) {
|
||||
objects[i].applyDiffObject(diffPaintEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the objects
|
||||
*/
|
||||
public T[] getObjects() {
|
||||
return objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param objects
|
||||
* the objects to set
|
||||
*/
|
||||
public void setObjects(T[] objects) {
|
||||
this.objects = objects;
|
||||
}
|
||||
|
||||
protected abstract Class<T> getObjectClass();
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#equals(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
AbstractRemoteGraphicsBulkRenderEvent<T> other = (AbstractRemoteGraphicsBulkRenderEvent<T>) obj;
|
||||
if (!Arrays.equals(objects, other.objects))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#clone()
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
try {
|
||||
AbstractRemoteGraphicsBulkRenderEvent<T> newObject = getClass()
|
||||
.newInstance();
|
||||
if (objects != null) {
|
||||
newObject.objects = (T[]) Array.newInstance(getObjectClass(),
|
||||
objects.length);
|
||||
for (int i = 0; i < objects.length; ++i) {
|
||||
newObject.objects[i] = (T) objects[i].clone();
|
||||
}
|
||||
}
|
||||
return newObject;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Could not clone "
|
||||
+ getClass().getSimpleName() + " object");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -53,6 +53,23 @@ public abstract class AbstractRemoteGraphicsRenderEvent extends
|
|||
return event;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#clone()
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
try {
|
||||
AbstractRemoteGraphicsRenderEvent newInstance = getClass()
|
||||
.newInstance();
|
||||
newInstance.applyDiffObject(this);
|
||||
return newInstance;
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Error cloning render event", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract boolean equals(Object obj);
|
||||
|
||||
|
|
|
@ -43,6 +43,8 @@ public interface IRenderEvent {
|
|||
@Override
|
||||
public abstract boolean equals(Object obj);
|
||||
|
||||
public abstract Object clone();
|
||||
|
||||
public abstract IRenderEvent createDiffObject(IRenderEvent event);
|
||||
|
||||
public abstract void applyDiffObject(IRenderEvent diffEvent);
|
||||
|
|
|
@ -67,4 +67,15 @@ public class DrawShadedShapeEvent extends AbstractDispatchingObjectEvent
|
|||
setObjectId(((DrawShadedShapeEvent) diffEvent).getObjectId());
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#clone()
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
DrawShadedShapeEvent newInstance = new DrawShadedShapeEvent();
|
||||
newInstance.applyDiffObject(this);
|
||||
return newInstance;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,11 +19,9 @@
|
|||
**/
|
||||
package com.raytheon.uf.viz.remote.graphics.events.shapes;
|
||||
|
||||
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.remote.graphics.events.rendering.AbstractRemoteGraphicsRenderEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.AbstractRemoteGraphicsBulkRenderEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent;
|
||||
|
||||
/**
|
||||
|
@ -43,7 +41,8 @@ import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent;
|
|||
* @version 1.0
|
||||
*/
|
||||
@DynamicSerialize
|
||||
public class DrawShadedShapesEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||
public class DrawShadedShapesEvent extends
|
||||
AbstractRemoteGraphicsBulkRenderEvent<DrawShadedShapeEvent> {
|
||||
|
||||
@DynamicSerializeElement
|
||||
private float alpha;
|
||||
|
@ -51,67 +50,38 @@ public class DrawShadedShapesEvent extends AbstractRemoteGraphicsRenderEvent {
|
|||
@DynamicSerializeElement
|
||||
private float brightness;
|
||||
|
||||
@DynamicSerializeElement
|
||||
private DrawShadedShapeEvent[] shapes;
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.remote.graphics.events.IRenderEvent#createDiffObject
|
||||
* (com.raytheon.uf.viz.remote.graphics.events.IRenderEvent)
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent
|
||||
* #createDiffObject(com.raytheon.uf.viz
|
||||
* .remote.graphics.events.rendering.IRenderEvent)
|
||||
*/
|
||||
@Override
|
||||
public DrawShadedShapesEvent createDiffObject(IRenderEvent event) {
|
||||
DrawShadedShapesEvent diff = (DrawShadedShapesEvent) event;
|
||||
DrawShadedShapesEvent diffEvent = new DrawShadedShapesEvent();
|
||||
if (diff.shapes != null) {
|
||||
if (shapes != null && diff.shapes.length == shapes.length) {
|
||||
diffEvent.shapes = new DrawShadedShapeEvent[diff.shapes.length];
|
||||
for (int i = 0; i < shapes.length; ++i) {
|
||||
DrawShadedShapeEvent paintEvent = shapes[i];
|
||||
DrawShadedShapeEvent diffPaintEvent = diff.shapes[i];
|
||||
if (paintEvent.equals(diffPaintEvent) == false) {
|
||||
diffEvent.shapes[i] = paintEvent
|
||||
.createDiffObject(diffPaintEvent);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
diffEvent.shapes = diff.shapes;
|
||||
}
|
||||
}
|
||||
diffEvent.alpha = diff.alpha;
|
||||
diffEvent.brightness = diff.brightness;
|
||||
return diffEvent;
|
||||
DrawShadedShapesEvent diffEvent = (DrawShadedShapesEvent) event;
|
||||
DrawShadedShapesEvent diffObject = (DrawShadedShapesEvent) super
|
||||
.createDiffObject(diffEvent);
|
||||
diffObject.alpha = diffEvent.alpha;
|
||||
diffObject.brightness = diffEvent.brightness;
|
||||
return diffObject;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.remote.graphics.events.IRenderEvent#applyDiffObject
|
||||
* (com.raytheon.uf.viz.remote.graphics.events.IRenderEvent)
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent
|
||||
* #applyDiffObject(com.raytheon.uf.viz.
|
||||
* remote.graphics.events.rendering.IRenderEvent)
|
||||
*/
|
||||
@Override
|
||||
public void applyDiffObject(IRenderEvent diffEvent) {
|
||||
DrawShadedShapesEvent event = (DrawShadedShapesEvent) diffEvent;
|
||||
DrawShadedShapeEvent[] diffImageEvents = event.shapes;
|
||||
if (diffImageEvents == null) {
|
||||
shapes = null;
|
||||
} else if (shapes == null) {
|
||||
shapes = event.shapes;
|
||||
} else if (shapes.length != diffImageEvents.length) {
|
||||
shapes = event.shapes;
|
||||
} else {
|
||||
for (int i = 0; i < shapes.length; ++i) {
|
||||
DrawShadedShapeEvent diffPaintEvent = diffImageEvents[i];
|
||||
if (diffPaintEvent != null) {
|
||||
shapes[i].applyDiffObject(diffPaintEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
alpha = event.alpha;
|
||||
brightness = event.brightness;
|
||||
super.applyDiffObject(diffEvent);
|
||||
DrawShadedShapesEvent diffObject = (DrawShadedShapesEvent) diffEvent;
|
||||
this.alpha = diffObject.alpha;
|
||||
this.brightness = diffObject.brightness;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -144,19 +114,15 @@ public class DrawShadedShapesEvent extends AbstractRemoteGraphicsRenderEvent {
|
|||
this.brightness = brightness;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the shapes
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent#getObjectClass()
|
||||
*/
|
||||
public DrawShadedShapeEvent[] getShapes() {
|
||||
return shapes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param shapes
|
||||
* the shapes to set
|
||||
*/
|
||||
public void setShapes(DrawShadedShapeEvent[] shapes) {
|
||||
this.shapes = shapes;
|
||||
@Override
|
||||
protected Class<DrawShadedShapeEvent> getObjectClass() {
|
||||
return DrawShadedShapeEvent.class;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -168,7 +134,7 @@ public class DrawShadedShapesEvent extends AbstractRemoteGraphicsRenderEvent {
|
|||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
if (!super.equals(obj))
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
|
@ -178,9 +144,21 @@ public class DrawShadedShapesEvent extends AbstractRemoteGraphicsRenderEvent {
|
|||
if (Float.floatToIntBits(brightness) != Float
|
||||
.floatToIntBits(other.brightness))
|
||||
return false;
|
||||
if (!Arrays.equals(shapes, other.shapes))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent#clone()
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
DrawShadedShapesEvent event = (DrawShadedShapesEvent) super.clone();
|
||||
event.alpha = alpha;
|
||||
event.brightness = brightness;
|
||||
return event;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -204,4 +204,16 @@ public class RenderWireframeShapeEvent extends AbstractDispatchingObjectEvent
|
|||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#clone()
|
||||
*/
|
||||
@Override
|
||||
public Object clone() {
|
||||
RenderWireframeShapeEvent newInstance = new RenderWireframeShapeEvent();
|
||||
newInstance.applyDiffObject(this);
|
||||
return newInstance;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,12 +19,8 @@
|
|||
**/
|
||||
package com.raytheon.uf.viz.remote.graphics.events.strings;
|
||||
|
||||
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.remote.graphics.events.rendering.AbstractRemoteGraphicsRenderEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent;
|
||||
import com.raytheon.uf.viz.remote.graphics.events.rendering.AbstractRemoteGraphicsBulkRenderEvent;
|
||||
|
||||
/**
|
||||
* Event for drawing multiple strings in bulk
|
||||
|
@ -43,99 +39,18 @@ import com.raytheon.uf.viz.remote.graphics.events.rendering.IRenderEvent;
|
|||
* @version 1.0
|
||||
*/
|
||||
@DynamicSerialize
|
||||
public class DrawStringsEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||
|
||||
@DynamicSerializeElement
|
||||
private DrawStringEvent[] strings;
|
||||
public class DrawStringsEvent extends
|
||||
AbstractRemoteGraphicsBulkRenderEvent<DrawStringEvent> {
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.remote.graphics.events.IRenderEvent#createDiffObject
|
||||
* (com.raytheon.uf.viz.remote.graphics.events.IRenderEvent)
|
||||
* @see com.raytheon.uf.viz.remote.graphics.events.rendering.
|
||||
* AbstractRemoteGraphicsBulkRenderEvent#getObjectClass()
|
||||
*/
|
||||
@Override
|
||||
public DrawStringsEvent createDiffObject(IRenderEvent event) {
|
||||
DrawStringsEvent diff = (DrawStringsEvent) event;
|
||||
DrawStringsEvent diffEvent = new DrawStringsEvent();
|
||||
if (diff.strings != null) {
|
||||
if (strings != null && diff.strings.length == strings.length) {
|
||||
diffEvent.strings = new DrawStringEvent[diff.strings.length];
|
||||
for (int i = 0; i < strings.length; ++i) {
|
||||
DrawStringEvent paintEvent = strings[i];
|
||||
DrawStringEvent diffPaintEvent = diff.strings[i];
|
||||
if (paintEvent.equals(diffPaintEvent) == false) {
|
||||
diffEvent.strings[i] = paintEvent
|
||||
.createDiffObject(diffPaintEvent);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
diffEvent.strings = diff.strings;
|
||||
}
|
||||
}
|
||||
return diffEvent;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.uf.viz.remote.graphics.events.IRenderEvent#applyDiffObject
|
||||
* (com.raytheon.uf.viz.remote.graphics.events.IRenderEvent)
|
||||
*/
|
||||
@Override
|
||||
public void applyDiffObject(IRenderEvent diffEvent) {
|
||||
DrawStringsEvent event = (DrawStringsEvent) diffEvent;
|
||||
DrawStringEvent[] diffImageEvents = event.strings;
|
||||
if (diffImageEvents == null) {
|
||||
strings = null;
|
||||
} else if (strings == null) {
|
||||
strings = event.strings;
|
||||
} else if (strings.length != diffImageEvents.length) {
|
||||
strings = event.strings;
|
||||
} else {
|
||||
for (int i = 0; i < strings.length; ++i) {
|
||||
DrawStringEvent diffPaintEvent = diffImageEvents[i];
|
||||
if (diffPaintEvent != null) {
|
||||
strings[i].applyDiffObject(diffPaintEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the strings
|
||||
*/
|
||||
public DrawStringEvent[] getStrings() {
|
||||
return strings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param strings
|
||||
* the strings to set
|
||||
*/
|
||||
public void setStrings(DrawStringEvent[] strings) {
|
||||
this.strings = strings;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#equals(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
DrawStringsEvent other = (DrawStringsEvent) obj;
|
||||
if (!Arrays.equals(strings, other.strings))
|
||||
return false;
|
||||
return true;
|
||||
protected Class<DrawStringEvent> getObjectClass() {
|
||||
return DrawStringEvent.class;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ public abstract class AbstractDispatchingImageExtension extends
|
|||
DrawableImage... images) throws VizException {
|
||||
PaintImagesEvent bulkRender = RemoteGraphicsEventFactory.createEvent(
|
||||
PaintImagesEvent.class, target);
|
||||
bulkRender.setImageEvents(PaintImagesEvent.toPaintEvents(images));
|
||||
bulkRender.setObjects(PaintImagesEvent.toPaintEvents(images));
|
||||
DrawableImage[] targeted = PaintImagesEvent.extractTargetImages(images);
|
||||
bulkRender.setAlpha(paintProps.getAlpha());
|
||||
boolean rval = target.getWrappedObject().drawRasters(paintProps,
|
||||
|
|
|
@ -598,23 +598,21 @@ public class GLTarget implements IGLTarget {
|
|||
public void drawArc(double x1, double y1, double z1, double radius,
|
||||
RGB color, float width, int startAzimuth, int endAzimuth,
|
||||
LineStyle lineStyle, boolean includeSides) throws VizException {
|
||||
this.pushGLState();
|
||||
try {
|
||||
gl.glPolygonMode(GL.GL_BACK, GL.GL_LINE);
|
||||
handleLineStyle(lineStyle);
|
||||
gl.glColor4d(color.red / 255.0, color.green / 255.0,
|
||||
color.blue / 255.0, 1.0);
|
||||
gl.glLineWidth(width);
|
||||
gl.glBegin(GL.GL_LINE_STRIP);
|
||||
|
||||
for (double i = startAzimuth; i <= endAzimuth; i++) {
|
||||
double[] pointOnCircle = getPointOnCircle(x1, y1, z1, radius, i);
|
||||
gl.glVertex2d(pointOnCircle[0], pointOnCircle[1]);
|
||||
}
|
||||
gl.glEnd();
|
||||
} finally {
|
||||
this.popGLState();
|
||||
DrawableCircle dc = new DrawableCircle();
|
||||
dc.setCoordinates(x1, y1, z1);
|
||||
dc.basics.color = color;
|
||||
dc.lineStyle = lineStyle;
|
||||
dc.startAzimuth = startAzimuth;
|
||||
dc.endAzimuth = endAzimuth;
|
||||
if (startAzimuth > endAzimuth) {
|
||||
dc.numberOfPoints = (endAzimuth + 360) - startAzimuth;
|
||||
} else {
|
||||
dc.numberOfPoints = endAzimuth - startAzimuth;
|
||||
}
|
||||
dc.includeSides = includeSides;
|
||||
dc.lineWidth = width;
|
||||
dc.radius = radius;
|
||||
drawCircle(dc);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2184,7 +2182,7 @@ public class GLTarget implements IGLTarget {
|
|||
*/
|
||||
@Override
|
||||
public void setView(IView view) {
|
||||
this.targetView = view;
|
||||
this.targetView = (IView) view.clone();
|
||||
this.targetView.setupView(this);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue