Skip to content

Commit 4115366

Browse files
committed
Add support for lines
1 parent 8062018 commit 4115366

2 files changed

Lines changed: 49 additions & 32 deletions

File tree

MPChartLib/src/main/java/com/github/mikephil/charting/renderer/XAxisRenderer.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -178,16 +178,16 @@ protected void drawLabels(Canvas c, float pos, MPPointF anchor) {
178178
final float labelRotationAngleDegrees = mXAxis.getLabelRotationAngle();
179179
boolean centeringEnabled = mXAxis.isCenterAxisLabelsEnabled();
180180

181-
float[] positions = new float[mXAxis.mEntryCount * 2];
181+
float[] positions;
182182

183183
if (mXAxis.isShowSpecificLabelPositions()) {
184184
positions = new float[mXAxis.getSpecificLabelPositions().length * 2];
185185
for (int i = 0; i < positions.length; i += 2) {
186186
positions[i] = mXAxis.getSpecificLabelPositions()[i / 2];
187187
}
188188
} else {
189+
positions = new float[mXAxis.mEntryCount * 2];
189190
for (int i = 0; i < positions.length; i += 2) {
190-
191191
// only fill x values
192192
if (centeringEnabled) {
193193
positions[i] = mXAxis.mCenteredEntries[i / 2];
@@ -245,15 +245,26 @@ public void renderGridLines(Canvas c) {
245245

246246
int clipRestoreCount = c.save();
247247
c.clipRect(getGridClippingRect());
248-
249-
if(mRenderGridLinesBuffer.length != mAxis.mEntryCount * 2){
250-
mRenderGridLinesBuffer = new float[mXAxis.mEntryCount * 2];
248+
249+
if (mAxis.isShowSpecificLabelPositions()) {
250+
if (mRenderGridLinesBuffer.length != mAxis.getSpecificLabelPositions().length * 2) {
251+
mRenderGridLinesBuffer = new float[mXAxis.getSpecificLabelPositions().length * 2];
252+
}
253+
} else {
254+
if (mRenderGridLinesBuffer.length != mAxis.mEntryCount * 2) {
255+
mRenderGridLinesBuffer = new float[mXAxis.mEntryCount * 2];
256+
}
251257
}
252258
float[] positions = mRenderGridLinesBuffer;
253259

254260
for (int i = 0; i < positions.length; i += 2) {
255-
positions[i] = mXAxis.mEntries[i / 2];
256-
positions[i + 1] = mXAxis.mEntries[i / 2];
261+
if (mAxis.isShowSpecificLabelPositions()) {
262+
positions[i] = mXAxis.getSpecificLabelPositions()[i / 2];
263+
positions[i + 1] = mXAxis.getSpecificLabelPositions()[i / 2];
264+
} else {
265+
positions[i] = mXAxis.mEntries[i / 2];
266+
positions[i + 1] = mXAxis.mEntries[i / 2];
267+
}
257268
}
258269

259270
mTrans.pointValuesToPixel(positions);
@@ -264,7 +275,6 @@ public void renderGridLines(Canvas c) {
264275
gridLinePath.reset();
265276

266277
for (int i = 0; i < positions.length; i += 2) {
267-
268278
drawGridLine(c, positions[i], positions[i + 1], gridLinePath);
269279
}
270280

MPChartLib/src/main/java/com/github/mikephil/charting/renderer/YAxisRenderer.java

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -120,34 +120,31 @@ public void renderAxisLine(Canvas c) {
120120
*/
121121
protected void drawYLabels(Canvas c, float fixedPosition, float[] positions, float offset) {
122122

123-
if (mYAxis.isShowSpecificLabelPositions()) {
124-
float[] specificLabelsPositions = new float[mYAxis.getSpecificLabelPositions().length * 2];
125-
for (int i = 0; i < mYAxis.getSpecificLabelPositions().length; i++) {
126-
specificLabelsPositions[i * 2 + 1] = mYAxis.getSpecificLabelPositions()[i];
127-
}
128-
mTrans.pointValuesToPixel(specificLabelsPositions);
123+
final int from;
124+
final int to;
129125

130-
for (int i = 0; i < mYAxis.getSpecificLabelPositions().length; i++) {
131-
float y = specificLabelsPositions[i * 2 + 1];
132-
if (mViewPortHandler.isInBoundsY(y)) {
133-
String text = mYAxis.getValueFormatter().getFormattedValue(mYAxis.getSpecificLabelPositions()[i], mYAxis);
134-
c.drawText(text, fixedPosition, y + offset, mAxisLabelPaint);
135-
}
136-
}
137-
return;
126+
if (mYAxis.isShowSpecificLabelPositions()) {
127+
from = 0;
128+
to = mYAxis.isDrawTopYLabelEntryEnabled()
129+
? mYAxis.getSpecificLabelPositions().length
130+
: (mYAxis.getSpecificLabelPositions().length - 1);
131+
} else {
132+
from = mYAxis.isDrawBottomYLabelEntryEnabled() ? 0 : 1;
133+
to = mYAxis.isDrawTopYLabelEntryEnabled()
134+
? mYAxis.mEntryCount
135+
: (mYAxis.mEntryCount - 1);
138136
}
139137

140-
final int from = mYAxis.isDrawBottomYLabelEntryEnabled() ? 0 : 1;
141-
final int to = mYAxis.isDrawTopYLabelEntryEnabled()
142-
? mYAxis.mEntryCount
143-
: (mYAxis.mEntryCount - 1);
144-
145138
float xOffset = mYAxis.getLabelXOffset();
146139

147140
// draw
148141
for (int i = from; i < to; i++) {
149-
150-
String text = mYAxis.getFormattedLabel(i);
142+
String text;
143+
if (mYAxis.isShowSpecificLabelPositions()) {
144+
text = mYAxis.getValueFormatter().getFormattedValue(mYAxis.getSpecificLabelPositions()[i], mYAxis);
145+
} else {
146+
text = mYAxis.getFormattedLabel(i);
147+
}
151148

152149
c.drawText(text,
153150
fixedPosition + xOffset,
@@ -226,14 +223,24 @@ protected Path linePath(Path p, int i, float[] positions) {
226223
*/
227224
protected float[] getTransformedPositions() {
228225

229-
if(mGetTransformedPositionsBuffer.length != mYAxis.mEntryCount * 2){
230-
mGetTransformedPositionsBuffer = new float[mYAxis.mEntryCount * 2];
226+
if (mYAxis.isShowSpecificLabelPositions()) {
227+
if (mGetTransformedPositionsBuffer.length != mYAxis.getSpecificLabelPositions().length * 2) {
228+
mGetTransformedPositionsBuffer = new float[mYAxis.getSpecificLabelPositions().length * 2];
229+
}
230+
} else {
231+
if (mGetTransformedPositionsBuffer.length != mYAxis.mEntryCount * 2) {
232+
mGetTransformedPositionsBuffer = new float[mYAxis.mEntryCount * 2];
233+
}
231234
}
232235
float[] positions = mGetTransformedPositionsBuffer;
233236

234237
for (int i = 0; i < positions.length; i += 2) {
235238
// only fill y values, x values are not needed for y-labels
236-
positions[i + 1] = mYAxis.mEntries[i / 2];
239+
if (mYAxis.isShowSpecificLabelPositions()) {
240+
positions[i + 1] = mYAxis.getSpecificLabelPositions()[i / 2];
241+
} else {
242+
positions[i + 1] = mYAxis.mEntries[i / 2];
243+
}
237244
}
238245

239246
mTrans.pointValuesToPixel(positions);

0 commit comments

Comments
 (0)