Skip to content

Commit 70691be

Browse files
committed
Fixed glitch in clipping rects.
It's the Android's renderer's bug. When specifying exact clipping rects, they are clipping more than they should! So drawing a thin 1px line on the edge of a clipping rect fail. Instead of insetting by half the line width, inset by full line width.
1 parent 49b4d1a commit 70691be

4 files changed

Lines changed: 12 additions & 12 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ public void renderGridLines(Canvas c) {
270270

271271
public RectF getGridClippingRect() {
272272
mGridClippingRect.set(mViewPortHandler.getContentRect());
273-
mGridClippingRect.inset(-mAxis.getGridLineWidth() / 2.f, 0.f);
273+
mGridClippingRect.inset(-mAxis.getGridLineWidth(), 0.f);
274274
return mGridClippingRect;
275275
}
276276

@@ -322,7 +322,7 @@ public void renderLimitLines(Canvas c) {
322322

323323
int clipRestoreCount = c.save();
324324
mLimitLineClippingRect.set(mViewPortHandler.getContentRect());
325-
mLimitLineClippingRect.inset(-l.getLineWidth() / 2.f, 0.f);
325+
mLimitLineClippingRect.inset(-l.getLineWidth(), 0.f);
326326
c.clipRect(mLimitLineClippingRect);
327327

328328
position[0] = l.getLimit();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ protected void drawLabels(Canvas c, float pos, MPPointF anchor) {
165165
@Override
166166
public RectF getGridClippingRect() {
167167
mGridClippingRect.set(mViewPortHandler.getContentRect());
168-
mGridClippingRect.inset(0.f, -mAxis.getGridLineWidth() / 2.f);
168+
mGridClippingRect.inset(0.f, -mAxis.getGridLineWidth());
169169
return mGridClippingRect;
170170
}
171171

@@ -238,7 +238,7 @@ public void renderLimitLines(Canvas c) {
238238

239239
int clipRestoreCount = c.save();
240240
mLimitLineClippingRect.set(mViewPortHandler.getContentRect());
241-
mLimitLineClippingRect.inset(0.f, -l.getLineWidth() / 2.f);
241+
mLimitLineClippingRect.inset(0.f, -l.getLineWidth());
242242
c.clipRect(mLimitLineClippingRect);
243243

244244
mLimitLinePaint.setStyle(Paint.Style.STROKE);

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public void renderGridLines(Canvas c) {
167167

168168
public RectF getGridClippingRect() {
169169
mGridClippingRect.set(mViewPortHandler.getContentRect());
170-
mGridClippingRect.inset(0.f, -mAxis.getGridLineWidth() / 2.f);
170+
mGridClippingRect.inset(0.f, -mAxis.getGridLineWidth());
171171
return mGridClippingRect;
172172
}
173173

@@ -220,7 +220,7 @@ protected void drawZeroLine(Canvas c) {
220220

221221
int clipRestoreCount = c.save();
222222
mZeroLineClippingRect.set(mViewPortHandler.getContentRect());
223-
mZeroLineClippingRect.inset(0.f, -mYAxis.getZeroLineWidth() / 2.f);
223+
mZeroLineClippingRect.inset(0.f, -mYAxis.getZeroLineWidth());
224224
c.clipRect(mZeroLineClippingRect);
225225

226226
// draw zero line
@@ -232,8 +232,8 @@ protected void drawZeroLine(Canvas c) {
232232
Path zeroLinePath = mDrawZeroLinePath;
233233
zeroLinePath.reset();
234234

235-
zeroLinePath.moveTo(mViewPortHandler.contentLeft(), (float) pos.y - 1);
236-
zeroLinePath.lineTo(mViewPortHandler.contentRight(), (float) pos.y - 1);
235+
zeroLinePath.moveTo(mViewPortHandler.contentLeft(), (float) pos.y);
236+
zeroLinePath.lineTo(mViewPortHandler.contentRight(), (float) pos.y);
237237

238238
// draw a path because lines don't support dashing on lower android versions
239239
c.drawPath(zeroLinePath, mZeroLinePaint);
@@ -272,7 +272,7 @@ public void renderLimitLines(Canvas c) {
272272

273273
int clipRestoreCount = c.save();
274274
mLimitLineClippingRect.set(mViewPortHandler.getContentRect());
275-
mLimitLineClippingRect.inset(0.f, -l.getLineWidth() / 2.f);
275+
mLimitLineClippingRect.inset(0.f, -l.getLineWidth());
276276
c.clipRect(mLimitLineClippingRect);
277277

278278
mLimitLinePaint.setStyle(Paint.Style.STROKE);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ protected float[] getTransformedPositions() {
168168
@Override
169169
public RectF getGridClippingRect() {
170170
mGridClippingRect.set(mViewPortHandler.getContentRect());
171-
mGridClippingRect.inset(-mAxis.getGridLineWidth() / 2.f, 0.f);
171+
mGridClippingRect.inset(-mAxis.getGridLineWidth(), 0.f);
172172
return mGridClippingRect;
173173
}
174174

@@ -188,7 +188,7 @@ protected void drawZeroLine(Canvas c) {
188188

189189
int clipRestoreCount = c.save();
190190
mZeroLineClippingRect.set(mViewPortHandler.getContentRect());
191-
mZeroLineClippingRect.inset(-mYAxis.getZeroLineWidth() / 2.f, 0.f);
191+
mZeroLineClippingRect.inset(-mYAxis.getZeroLineWidth(), 0.f);
192192
c.clipRect(mLimitLineClippingRect);
193193

194194
// draw zero line
@@ -242,7 +242,7 @@ public void renderLimitLines(Canvas c) {
242242

243243
int clipRestoreCount = c.save();
244244
mLimitLineClippingRect.set(mViewPortHandler.getContentRect());
245-
mLimitLineClippingRect.inset(-l.getLineWidth() / 2.f, 0.f);
245+
mLimitLineClippingRect.inset(-l.getLineWidth(), 0.f);
246246
c.clipRect(mLimitLineClippingRect);
247247

248248
pts[0] = l.getLimit();

0 commit comments

Comments
 (0)