diff --git a/hellocharts-library/src/lecho/lib/hellocharts/model/Line.java b/hellocharts-library/src/lecho/lib/hellocharts/model/Line.java index b9e6ce0b..db00b497 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/model/Line.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/model/Line.java @@ -225,7 +225,7 @@ public boolean isCubic() { public Line setCubic(boolean isCubic) { this.isCubic = isCubic; - if (isSquare) + if (isSquare && isCubic) setSquare(false); return this; } @@ -236,7 +236,7 @@ public boolean isSquare() { public Line setSquare(boolean isSquare) { this.isSquare = isSquare; - if (isCubic) + if (isCubic && isSquare) setCubic(false); return this; } diff --git a/hellocharts-library/src/lecho/lib/hellocharts/renderer/LineChartRenderer.java b/hellocharts-library/src/lecho/lib/hellocharts/renderer/LineChartRenderer.java index b12e9609..221a9eca 100644 --- a/hellocharts-library/src/lecho/lib/hellocharts/renderer/LineChartRenderer.java +++ b/hellocharts-library/src/lecho/lib/hellocharts/renderer/LineChartRenderer.java @@ -215,15 +215,21 @@ private void drawPath(Canvas canvas, final Line line) { prepareLinePaint(line); int valueIndex = 0; + boolean invalidYValue = false; for (PointValue pointValue : line.getValues()) { final float rawX = computator.computeRawX(pointValue.getX()); final float rawY = computator.computeRawY(pointValue.getY()); - if (valueIndex == 0) { - path.moveTo(rawX, rawY); - } else { - path.lineTo(rawX, rawY); + if (Float.isNaN(rawY)) + invalidYValue = true; + else { + if (valueIndex == 0 || invalidYValue) { + path.moveTo(rawX, rawY); + } else { + path.lineTo(rawX, rawY); + } + invalidYValue = false; } ++valueIndex; @@ -243,17 +249,19 @@ private void drawSquarePath(Canvas canvas, final Line line) { prepareLinePaint(line); int valueIndex = 0; - float previousRawY = 0; + float previousRawY = Float.NaN; for (PointValue pointValue : line.getValues()) { final float rawX = computator.computeRawX(pointValue.getX()); final float rawY = computator.computeRawY(pointValue.getY()); - if (valueIndex == 0) { - path.moveTo(rawX, rawY); - } else { - path.lineTo(rawX, previousRawY); - path.lineTo(rawX, rawY); + if (! Float.isNaN(rawY)) { + if (Float.isNaN(previousRawY)) { + path.moveTo(rawX, rawY); + } else { + path.lineTo(rawX, previousRawY); + path.lineTo(rawX, rawY); + } } previousRawY = rawY;