fill the area below a chart curve only when there are at most 2 curves

This makes charts more readable when there are many curves in it.
 Fixes #1823
This commit is contained in:
Peter Hercek
2024-01-13 15:14:51 +01:00
committed by Dennis Guse
parent 1ae18836cb
commit 7ebb629b44
2 changed files with 10 additions and 8 deletions
@@ -116,6 +116,7 @@ public class ChartView extends View {
private int height = 0;
private int effectiveWidth = 0;
private int effectiveHeight = 0;
private TitleDimensions titleDimensions;
private boolean chartByDistance = false;
private UnitSystem unitSystem = UnitSystem.defaultUnitSystem();
@@ -622,7 +623,7 @@ public class ChartView extends View {
private void drawDataSeries(Canvas canvas) {
for (ChartValueSeries chartValueSeries : seriesList) {
if (chartValueSeries.isEnabled() && chartValueSeries.hasData()) {
chartValueSeries.drawPath(canvas);
chartValueSeries.drawPath(canvas, titleDimensions.titlePositions.size() < 3 );
}
}
}
@@ -689,14 +690,13 @@ public class ChartView extends View {
* @param canvas the canvas
*/
private void drawSeriesTitles(Canvas canvas) {
TitleDimensions td = getTitleDimensions();
Iterator<TitlePosition> tpI = td.titlePositions.iterator();
Iterator<TitlePosition> tpI = titleDimensions.titlePositions.iterator();
for (ChartValueSeries chartValueSeries : seriesList) {
if (chartValueSeries.isEnabled() && chartValueSeries.hasData() || allowIfEmpty(chartValueSeries)) {
String title = getContext().getString(chartValueSeries.getTitleId(unitSystem));
Paint paint = chartValueSeries.getTitlePaint();
TitlePosition tp = tpI.next();
int y = topBorder - spacer - (td.lineCount - tp.line) * (td.lineHeight + spacer);
int y = topBorder - spacer - (titleDimensions.lineCount - tp.line) * (titleDimensions.lineHeight + spacer);
canvas.drawText(title, tp.xPos + getScrollX(), y, paint);
}
}
@@ -957,8 +957,8 @@ public class ChartView extends View {
}
leftBorder = (int) (density * BORDER + markerLength);
TitleDimensions td = getTitleDimensions();
topBorder = (int) (density * BORDER + td.lineCount * (td.lineHeight + spacer));
titleDimensions = getTitleDimensions();
topBorder = (int) (density * BORDER + titleDimensions.lineCount * (titleDimensions.lineHeight + spacer));
Rect xAxisLabelRect = getRect(axisPaint, getXAxisLabel());
// border + x axis marker + spacer + .5 x axis label
bottomBorder = (int) (density * BORDER + getRect(xAxisMarkerPaint, "1").height() + spacer + (xAxisLabelRect.height() / 2));