/
MiniChartRenderer.java
79 lines (70 loc) · 2.64 KB
/
MiniChartRenderer.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.qliktrialreactnativestraighttable;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
public class MiniChartRenderer {
qMiniChart miniChartData = null;
MiniChartInfo miniChartInfo = null;
Representation representation = null;
Rect bounds = new Rect();
Paint paint = new Paint();
float horizontalPadding = 20.0f;
float verticalPadding = 16.0f;
float bandwidth = 0.0f;
float padding = 0.0f;
float scale = 0.0f;
float yScale = 1.0f;
float xAxis = 0.0f;
public MiniChartRenderer(qMiniChart chartData, Representation representation ) {
this.representation = representation;
miniChartData = chartData;
miniChartInfo = representation.miniChart;
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
}
public void updateData(qMiniChart chartData, Representation representation) {
miniChartData = chartData;
this.representation = representation;
}
public void resetScales(Rect bounds) {
this.bounds = bounds;
if(miniChartData != null) {
if(miniChartInfo.yAxis != null && miniChartInfo.yAxis.scale.equals("global")) {
float min = Math.min((float) representation.globalMin, 0.0f);
yScale = (float) representation.globalMax - min;
} else {
float min = Math.min((float) miniChartData.qMin, 0.0f);
yScale = (float) (miniChartData.qMax - min);
}
setBandwidth();
setScales();
}
}
protected void setBandwidth() {
float width = bounds.width() - horizontalPadding;
float totalBandWidth = width / miniChartData.matrix.rows.size();
bandwidth = totalBandWidth * 0.8f;
padding = totalBandWidth * 0.1f;
}
protected void setScales() {
float height = bounds.height() - (verticalPadding * 2.0f);
scale = height / yScale;
xAxis = miniChartData.qMin < 0.0 ? height + ((float)miniChartData.qMin * scale) : height;
xAxis = xAxis + (verticalPadding * 1.25f );
}
protected void setColor(int index, float value, int count) {
if(miniChartInfo.colors.max.valid && value == (float) miniChartData.qMax) {
paint.setColor(miniChartInfo.colors.max.color);
} else if(miniChartInfo.colors.min.valid && value == (float) miniChartData.qMin) {
paint.setColor(miniChartInfo.colors.min.color);
} else if(miniChartInfo.colors.first.valid && index == 0) {
paint.setColor(miniChartInfo.colors.first.color);
} else if(miniChartInfo.colors.last.valid && index == count - 1) {
paint.setColor(miniChartInfo.colors.last.color);
} else {
paint.setColor(miniChartInfo.colors.main.color);
}
}
public void render(Canvas canvas) {}
}