summaryrefslogtreecommitdiffstats
path: root/clients/tde/src/widgets/tracewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clients/tde/src/widgets/tracewidget.cpp')
-rw-r--r--clients/tde/src/widgets/tracewidget.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clients/tde/src/widgets/tracewidget.cpp b/clients/tde/src/widgets/tracewidget.cpp
index 08cfe42..1d5440c 100644
--- a/clients/tde/src/widgets/tracewidget.cpp
+++ b/clients/tde/src/widgets/tracewidget.cpp
@@ -695,6 +695,15 @@ void TraceData::drawTrace(TQPainter* p, int graticule_width, int graticule_heigh
activeSamples = abs(rightEdgeIndex-leftEdgeIndex);
incr = (activeSamples/virtual_width)+1;
for (n=leftEdgeIndex; n<numberOfSamples-incr; n=n+incr) {
+ // Detect invalid samples and skip drawing of those samples
+ // This avoids ugly drawing artifacts when not all sample data is available
+ if ( isnan(positionArray[n]) || isinf(positionArray[n])
+ || isnan(positionArray[n+incr]) || isinf(positionArray[n+incr])
+ || isnan(sampleArray[n]) || isinf(sampleArray[n])
+ || isnan(sampleArray[n+incr]) || isinf(sampleArray[n+incr])) {
+ continue;
+ }
+
x = (((positionArray[n]-leftEdge)/(rightEdge-leftEdge))*(virtual_width))-horizoffset;
y = ((((sampleArray[n]+offset)-topEdge)/(bottomEdge-topEdge))*(virtual_height));
x2 = (((positionArray[n+incr]-leftEdge)/(rightEdge-leftEdge))*(virtual_width))-horizoffset;