From e07b4c8a44eb373c14620945a371aa30a4ac91ad Mon Sep 17 00:00:00 2001 From: georgweiss Date: Wed, 23 Mar 2022 14:51:46 +0100 Subject: [PATCH] Plot rendering fix when PV disconnects --- .../javafx/rtplot/internal/TracePainter.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/rtplot/src/main/java/org/csstudio/javafx/rtplot/internal/TracePainter.java b/app/rtplot/src/main/java/org/csstudio/javafx/rtplot/internal/TracePainter.java index aeebb88a80..db7f563225 100644 --- a/app/rtplot/src/main/java/org/csstudio/javafx/rtplot/internal/TracePainter.java +++ b/app/rtplot/src/main/java/org/csstudio/javafx/rtplot/internal/TracePainter.java @@ -14,6 +14,9 @@ import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.Stroke; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.logging.Level; @@ -29,7 +32,7 @@ import org.csstudio.javafx.rtplot.internal.util.ScreenTransform; /** Helper for painting a {@link Trace} - * @param Data type of horizontal {@link Axis} + * @param Data type of horizontal {@link org.csstudio.javafx.rtplot.Axis} * @author Kay Kasemir */ @SuppressWarnings("nls") @@ -254,7 +257,7 @@ final private void drawValueStaircase(final Graphics2D gc, final PlotDataItem item = data.get(i); final int x = clipX(Math.round(x_transform.transform(item.getPosition()))); final double value = item.getValue(); - if (poly_x.size() > 0 && x != last_x) + if (poly_x.size() > 0 && x != last_x && !Double.isNaN(value)) { // Staircase from last 'y'.. poly_x.add(x); poly_y.add(last_y); @@ -301,8 +304,9 @@ final private void drawValueLines(final Graphics2D gc, final PlotDataItem item = data.get(i); final int x = clipX(Math.round(x_transform.transform(item.getPosition()))); final double value = item.getValue(); - if (Double.isNaN(value)) + if (Double.isNaN(value)) { flushPolyLine(gc, value_poly_x, value_poly_y, line_width); + } else { final int y = clipY(y_axis.getScreenCoord(value)); @@ -318,7 +322,7 @@ final private void drawValueLines(final Graphics2D gc, } /** Draw min/max outline - * @param graphics2D GC + * @param gc GC * @param x_transform Horizontal axis * @param y_axis Value axis * @param data Data @@ -433,7 +437,7 @@ final private void drawStdDevLines(final Graphics2D gc, final ScreenTransform