Java Code Examples for com.github.mikephil.charting.interfaces.datasets.ILineDataSet#getCircleRadius()
The following examples show how to use
com.github.mikephil.charting.interfaces.datasets.ILineDataSet#getCircleRadius() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: LineChartRenderer.java From StockChart-MPAndroidChart with MIT License | 4 votes |
protected void drawCircles(Canvas c) { mRenderPaint.setStyle(Paint.Style.FILL); float phaseY = mAnimator.getPhaseY(); mCirclesBuffer[0] = 0; mCirclesBuffer[1] = 0; List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isVisible() || !dataSet.isDrawCirclesEnabled() || dataSet.getEntryCount() == 0) { continue; } mCirclePaintInner.setColor(dataSet.getCircleHoleColor()); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); mXBounds.set(mChart, dataSet); float circleRadius = dataSet.getCircleRadius(); float circleHoleRadius = dataSet.getCircleHoleRadius(); boolean drawCircleHole = dataSet.isDrawCircleHoleEnabled() && circleHoleRadius < circleRadius && circleHoleRadius > 0.f; boolean drawTransparentCircleHole = drawCircleHole && dataSet.getCircleHoleColor() == ColorTemplate.COLOR_NONE; DataSetImageCache imageCache; if (mImageCaches.containsKey(dataSet)) { imageCache = mImageCaches.get(dataSet); } else { imageCache = new DataSetImageCache(); mImageCaches.put(dataSet, imageCache); } boolean changeRequired = imageCache.init(dataSet); // only fill the cache with new bitmaps if a change is required if (changeRequired) { imageCache.fill(dataSet, drawCircleHole, drawTransparentCircleHole); } int boundsRangeCount = mXBounds.range + mXBounds.min; for (int j = mXBounds.min; j <= boundsRangeCount; j++) { Entry e = dataSet.getEntryForIndex(j); if (e == null) { break; } mCirclesBuffer[0] = e.getX(); mCirclesBuffer[1] = e.getY() * phaseY; trans.pointValuesToPixel(mCirclesBuffer); if (!mViewPortHandler.isInBoundsRight(mCirclesBuffer[0])) { break; } if (!mViewPortHandler.isInBoundsLeft(mCirclesBuffer[0]) || !mViewPortHandler.isInBoundsY(mCirclesBuffer[1])) { continue; } Bitmap circleBitmap = imageCache.getBitmap(j); if (circleBitmap != null) { c.drawBitmap(circleBitmap, mCirclesBuffer[0] - circleRadius, mCirclesBuffer[1] - circleRadius, null); } } } }
Example 2
Source File: LineChartRenderer.java From StockChart-MPAndroidChart with MIT License | 4 votes |
/** * Fills the cache with bitmaps for the given dataset. * * @param set * @param drawCircleHole * @param drawTransparentCircleHole */ public void fill(ILineDataSet set, boolean drawCircleHole, boolean drawTransparentCircleHole) { int colorCount = set.getCircleColorCount(); float circleRadius = set.getCircleRadius(); float circleHoleRadius = set.getCircleHoleRadius(); for (int i = 0; i < colorCount; i++) { Bitmap.Config conf = Bitmap.Config.ARGB_4444; Bitmap circleBitmap = Bitmap.createBitmap((int) (circleRadius * 2.1), (int) (circleRadius * 2.1), conf); Canvas canvas = new Canvas(circleBitmap); circleBitmaps[i] = circleBitmap; mRenderPaint.setColor(set.getCircleColor(i)); if (drawTransparentCircleHole) { // Begin path for circle with hole mCirclePathBuffer.reset(); mCirclePathBuffer.addCircle( circleRadius, circleRadius, circleRadius, Path.Direction.CW); // Cut hole in path mCirclePathBuffer.addCircle( circleRadius, circleRadius, circleHoleRadius, Path.Direction.CCW); // Fill in-between canvas.drawPath(mCirclePathBuffer, mRenderPaint); } else { canvas.drawCircle( circleRadius, circleRadius, circleRadius, mRenderPaint); if (drawCircleHole) { canvas.drawCircle( circleRadius, circleRadius, circleHoleRadius, mCirclePaintInner); } } } }
Example 3
Source File: LineChartRenderer.java From Ticket-Analysis with MIT License | 4 votes |
protected void drawCircles(Canvas c) { mRenderPaint.setStyle(Paint.Style.FILL); float phaseY = mAnimator.getPhaseY(); mCirclesBuffer[0] = 0; mCirclesBuffer[1] = 0; List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isVisible() || !dataSet.isDrawCirclesEnabled() || dataSet.getEntryCount() == 0) continue; mCirclePaintInner.setColor(dataSet.getCircleHoleColor()); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); mXBounds.set(mChart, dataSet); float circleRadius = dataSet.getCircleRadius(); float circleHoleRadius = dataSet.getCircleHoleRadius(); boolean drawCircleHole = dataSet.isDrawCircleHoleEnabled() && circleHoleRadius < circleRadius && circleHoleRadius > 0.f; boolean drawTransparentCircleHole = drawCircleHole && dataSet.getCircleHoleColor() == ColorTemplate.COLOR_NONE; DataSetImageCache imageCache; if (mImageCaches.containsKey(dataSet)) { imageCache = mImageCaches.get(dataSet); } else { imageCache = new DataSetImageCache(); mImageCaches.put(dataSet, imageCache); } boolean changeRequired = imageCache.init(dataSet); // only fill the cache with new bitmaps if a change is required if (changeRequired) { imageCache.fill(dataSet, drawCircleHole, drawTransparentCircleHole); } int boundsRangeCount = mXBounds.range + mXBounds.min; for (int j = mXBounds.min; j <= boundsRangeCount; j++) { Entry e = dataSet.getEntryForIndex(j); if (e == null) break; mCirclesBuffer[0] = e.getX(); mCirclesBuffer[1] = e.getY() * phaseY; trans.pointValuesToPixel(mCirclesBuffer); if (!mViewPortHandler.isInBoundsRight(mCirclesBuffer[0])) break; if (!mViewPortHandler.isInBoundsLeft(mCirclesBuffer[0]) || !mViewPortHandler.isInBoundsY(mCirclesBuffer[1])) continue; Bitmap circleBitmap = imageCache.getBitmap(j); if (circleBitmap != null) { c.drawBitmap(circleBitmap, mCirclesBuffer[0] - circleRadius, mCirclesBuffer[1] - circleRadius, null); } } } }
Example 4
Source File: LineChartRenderer.java From Ticket-Analysis with MIT License | 4 votes |
/** * Fills the cache with bitmaps for the given dataset. * * @param set * @param drawCircleHole * @param drawTransparentCircleHole */ protected void fill(ILineDataSet set, boolean drawCircleHole, boolean drawTransparentCircleHole) { int colorCount = set.getCircleColorCount(); float circleRadius = set.getCircleRadius(); float circleHoleRadius = set.getCircleHoleRadius(); for (int i = 0; i < colorCount; i++) { Bitmap.Config conf = Bitmap.Config.ARGB_4444; Bitmap circleBitmap = Bitmap.createBitmap((int) (circleRadius * 2.1), (int) (circleRadius * 2.1), conf); Canvas canvas = new Canvas(circleBitmap); circleBitmaps[i] = circleBitmap; mRenderPaint.setColor(set.getCircleColor(i)); if (drawTransparentCircleHole) { // Begin path for circle with hole mCirclePathBuffer.reset(); mCirclePathBuffer.addCircle( circleRadius, circleRadius, circleRadius, Path.Direction.CW); // Cut hole in path mCirclePathBuffer.addCircle( circleRadius, circleRadius, circleHoleRadius, Path.Direction.CCW); // Fill in-between canvas.drawPath(mCirclePathBuffer, mRenderPaint); } else { canvas.drawCircle( circleRadius, circleRadius, circleRadius, mRenderPaint); if (drawCircleHole) { canvas.drawCircle( circleRadius, circleRadius, circleHoleRadius, mCirclePaintInner); } } } }
Example 5
Source File: LineChartRenderer.java From android-kline with Apache License 2.0 | 4 votes |
protected void drawCircles(Canvas c) { mRenderPaint.setStyle(Paint.Style.FILL); float phaseY = mAnimator.getPhaseY(); mCirclesBuffer[0] = 0; mCirclesBuffer[1] = 0; List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isVisible() || !dataSet.isDrawCirclesEnabled() || dataSet.getEntryCount() == 0) continue; mCirclePaintInner.setColor(dataSet.getCircleHoleColor()); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); mXBounds.set(mChart, dataSet); float circleRadius = dataSet.getCircleRadius(); float circleHoleRadius = dataSet.getCircleHoleRadius(); boolean drawCircleHole = dataSet.isDrawCircleHoleEnabled() && circleHoleRadius < circleRadius && circleHoleRadius > 0.f; boolean drawTransparentCircleHole = drawCircleHole && dataSet.getCircleHoleColor() == ColorTemplate.COLOR_NONE; DataSetImageCache imageCache; if (mImageCaches.containsKey(dataSet)) { imageCache = mImageCaches.get(dataSet); } else { imageCache = new DataSetImageCache(); mImageCaches.put(dataSet, imageCache); } boolean changeRequired = imageCache.init(dataSet); // only fill the cache with new bitmaps if a change is required if (changeRequired) { imageCache.fill(dataSet, drawCircleHole, drawTransparentCircleHole); } int boundsRangeCount = mXBounds.range + mXBounds.min; for (int j = mXBounds.min; j <= boundsRangeCount; j++) { Entry e = dataSet.getEntryForIndex(j); if (e == null) break; mCirclesBuffer[0] = e.getX(); mCirclesBuffer[1] = e.getY() * phaseY; trans.pointValuesToPixel(mCirclesBuffer); if (!mViewPortHandler.isInBoundsRight(mCirclesBuffer[0])) break; if (!mViewPortHandler.isInBoundsLeft(mCirclesBuffer[0]) || !mViewPortHandler.isInBoundsY(mCirclesBuffer[1])) continue; Bitmap circleBitmap = imageCache.getBitmap(j); if (circleBitmap != null) { c.drawBitmap(circleBitmap, mCirclesBuffer[0] - circleRadius, mCirclesBuffer[1] - circleRadius, null); } } } }
Example 6
Source File: LineChartRenderer.java From android-kline with Apache License 2.0 | 4 votes |
/** * Fills the cache with bitmaps for the given dataset. * * @param set * @param drawCircleHole * @param drawTransparentCircleHole */ protected void fill(ILineDataSet set, boolean drawCircleHole, boolean drawTransparentCircleHole) { int colorCount = set.getCircleColorCount(); float circleRadius = set.getCircleRadius(); float circleHoleRadius = set.getCircleHoleRadius(); for (int i = 0; i < colorCount; i++) { Bitmap.Config conf = Bitmap.Config.ARGB_4444; Bitmap circleBitmap = Bitmap.createBitmap((int) (circleRadius * 2.1), (int) (circleRadius * 2.1), conf); Canvas canvas = new Canvas(circleBitmap); circleBitmaps[i] = circleBitmap; mRenderPaint.setColor(set.getCircleColor(i)); if (drawTransparentCircleHole) { // Begin path for circle with hole mCirclePathBuffer.reset(); mCirclePathBuffer.addCircle( circleRadius, circleRadius, circleRadius, Path.Direction.CW); // Cut hole in path mCirclePathBuffer.addCircle( circleRadius, circleRadius, circleHoleRadius, Path.Direction.CCW); // Fill in-between canvas.drawPath(mCirclePathBuffer, mRenderPaint); } else { canvas.drawCircle( circleRadius, circleRadius, circleRadius, mRenderPaint); if (drawCircleHole) { canvas.drawCircle( circleRadius, circleRadius, circleHoleRadius, mCirclePaintInner); } } } }
Example 7
Source File: LineChartRenderer.java From android-kline with Apache License 2.0 | 4 votes |
protected void drawCircles(Canvas c) { mRenderPaint.setStyle(Paint.Style.FILL); float phaseY = mAnimator.getPhaseY(); mCirclesBuffer[0] = 0; mCirclesBuffer[1] = 0; List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isVisible() || !dataSet.isDrawCirclesEnabled() || dataSet.getEntryCount() == 0) continue; mCirclePaintInner.setColor(dataSet.getCircleHoleColor()); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); mXBounds.set(mChart, dataSet); float circleRadius = dataSet.getCircleRadius(); float circleHoleRadius = dataSet.getCircleHoleRadius(); boolean drawCircleHole = dataSet.isDrawCircleHoleEnabled() && circleHoleRadius < circleRadius && circleHoleRadius > 0.f; boolean drawTransparentCircleHole = drawCircleHole && dataSet.getCircleHoleColor() == ColorTemplate.COLOR_NONE; DataSetImageCache imageCache; if (mImageCaches.containsKey(dataSet)) { imageCache = mImageCaches.get(dataSet); } else { imageCache = new DataSetImageCache(); mImageCaches.put(dataSet, imageCache); } boolean changeRequired = imageCache.init(dataSet); // only fill the cache with new bitmaps if a change is required if (changeRequired) { imageCache.fill(dataSet, drawCircleHole, drawTransparentCircleHole); } int boundsRangeCount = mXBounds.range + mXBounds.min; for (int j = mXBounds.min; j <= boundsRangeCount; j++) { Entry e = dataSet.getEntryForIndex(j); if (e == null) break; mCirclesBuffer[0] = e.getX(); mCirclesBuffer[1] = e.getY() * phaseY; trans.pointValuesToPixel(mCirclesBuffer); if (!mViewPortHandler.isInBoundsRight(mCirclesBuffer[0])) break; if (!mViewPortHandler.isInBoundsLeft(mCirclesBuffer[0]) || !mViewPortHandler.isInBoundsY(mCirclesBuffer[1])) continue; Bitmap circleBitmap = imageCache.getBitmap(j); if (circleBitmap != null) { c.drawBitmap(circleBitmap, mCirclesBuffer[0] - circleRadius, mCirclesBuffer[1] - circleRadius, null); } } } }
Example 8
Source File: LineChartRenderer.java From android-kline with Apache License 2.0 | 4 votes |
public void drawCircle(Canvas c, Highlight high, float x) { mRenderPaint.setStyle(Paint.Style.FILL); float phaseY = mAnimator.getPhaseY(); mCirclesBuffer[0] = 0; mCirclesBuffer[1] = 0; List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isVisible() /*|| !dataSet.isDrawCirclesEnabled()*/ || dataSet.getEntryCount() == 0) continue; mRenderPaint.setColor(dataSet.getCircleColor(0)); mCirclePaintInner.setColor(dataSet.getCircleHoleColor()); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); mXBounds.set(mChart, dataSet); float circleRadius = dataSet.getCircleRadius() * 2.0f; float circleHoleRadius = dataSet.getCircleHoleRadius() * 2.0f; boolean drawCircleHole = dataSet.isDrawCircleHoleEnabled() && circleHoleRadius < circleRadius && circleHoleRadius > 0.f; if (high.getX() < dataSet.getEntryCount() - 1) { Entry e = dataSet.getEntryForIndex((int) high.getX()); if (e == null) return; mCirclesBuffer[1] = e.getY() * phaseY; trans.pointValuesToPixel(mCirclesBuffer); mCirclesBuffer[0] = x; if (!mViewPortHandler.isInBoundsRight(mCirclesBuffer[0])) return; if (!mViewPortHandler.isInBoundsLeft(mCirclesBuffer[0]) || !mViewPortHandler.isInBoundsY(mCirclesBuffer[1])) return; c.drawCircle( mCirclesBuffer[0], mCirclesBuffer[1], circleRadius, mRenderPaint); if (drawCircleHole) { c.drawCircle( mCirclesBuffer[0], mCirclesBuffer[1], circleHoleRadius, mCirclePaintInner); } } } }
Example 9
Source File: LineChartRenderer.java From android-kline with Apache License 2.0 | 4 votes |
/** * Fills the cache with bitmaps for the given dataset. * * @param set * @param drawCircleHole * @param drawTransparentCircleHole */ protected void fill(ILineDataSet set, boolean drawCircleHole, boolean drawTransparentCircleHole) { int colorCount = set.getCircleColorCount(); float circleRadius = set.getCircleRadius(); float circleHoleRadius = set.getCircleHoleRadius(); for (int i = 0; i < colorCount; i++) { Bitmap.Config conf = Bitmap.Config.ARGB_4444; Bitmap circleBitmap = Bitmap.createBitmap((int) (circleRadius * 2.1), (int) (circleRadius * 2.1), conf); Canvas canvas = new Canvas(circleBitmap); circleBitmaps[i] = circleBitmap; mRenderPaint.setColor(set.getCircleColor(i)); if (drawTransparentCircleHole) { // Begin path for circle with hole mCirclePathBuffer.reset(); mCirclePathBuffer.addCircle( circleRadius, circleRadius, circleRadius, Path.Direction.CW); // Cut hole in path mCirclePathBuffer.addCircle( circleRadius, circleRadius, circleHoleRadius, Path.Direction.CCW); // Fill in-between canvas.drawPath(mCirclePathBuffer, mRenderPaint); } else { canvas.drawCircle( circleRadius, circleRadius, circleRadius, mRenderPaint); if (drawCircleHole) { canvas.drawCircle( circleRadius, circleRadius, circleHoleRadius, mCirclePaintInner); } } } }
Example 10
Source File: AppLineChartRenderer.java From android-kline with Apache License 2.0 | 4 votes |
protected void drawLastPointCircle(Canvas c) { mRenderPaint.setStyle(Paint.Style.FILL); float phaseY = mAnimator.getPhaseY(); mCirclesBuffer[0] = 0; mCirclesBuffer[1] = 0; List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isVisible() /*|| !dataSet.isDrawCirclesEnabled()*/ || dataSet.getEntryCount() == 0) continue; mRenderPaint.setColor(dataSet.getCircleColor(0)); mCirclePaintInner.setColor(dataSet.getCircleHoleColor()); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); mXBounds.set(mChart, dataSet); float circleRadius = dataSet.getCircleRadius() * 2.0f; float circleHoleRadius = dataSet.getCircleHoleRadius() * 2.0f; boolean drawCircleHole = dataSet.isDrawCircleHoleEnabled() && circleHoleRadius < circleRadius && circleHoleRadius > 0.f; Entry e = dataSet.getEntryForIndex(dataSet.getEntryCount() - 1); if (e == null) return; mCirclesBuffer[0] = e.getX(); mCirclesBuffer[1] = e.getY() * phaseY; trans.pointValuesToPixel(mCirclesBuffer); if (!mViewPortHandler.isInBoundsRight(mCirclesBuffer[0])) return; if (!mViewPortHandler.isInBoundsLeft(mCirclesBuffer[0]) || !mViewPortHandler.isInBoundsY(mCirclesBuffer[1])) return; c.drawCircle( mCirclesBuffer[0], mCirclesBuffer[1], circleRadius, mRenderPaint); if (drawCircleHole) { c.drawCircle( mCirclesBuffer[0], mCirclesBuffer[1], circleHoleRadius, mCirclePaintInner); } } }
Example 11
Source File: LineChartRenderer.java From NetKnight with Apache License 2.0 | 4 votes |
protected void drawCircles(Canvas c) { mRenderPaint.setStyle(Paint.Style.FILL); float phaseX = Math.max(0.f, Math.min(1.f, mAnimator.getPhaseX())); float phaseY = mAnimator.getPhaseY(); float[] circlesBuffer = new float[2]; List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isVisible() || !dataSet.isDrawCirclesEnabled() || dataSet.getEntryCount() == 0) continue; mCirclePaintInner.setColor(dataSet.getCircleHoleColor()); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); int entryCount = dataSet.getEntryCount(); Entry entryFrom = dataSet.getEntryForXIndex((mMinX < 0) ? 0 : mMinX, DataSet.Rounding.DOWN); Entry entryTo = dataSet.getEntryForXIndex(mMaxX, DataSet.Rounding.UP); int diff = (entryFrom == entryTo) ? 1 : 0; if (dataSet.getMode() == LineDataSet.Mode.CUBIC_BEZIER) diff += 1; int minx = Math.max(dataSet.getEntryIndex(entryFrom) - diff, 0); int maxx = Math.min(Math.max(minx + 2, dataSet.getEntryIndex(entryTo) + 1), entryCount); float circleRadius = dataSet.getCircleRadius(); float circleHoleRadius = dataSet.getCircleHoleRadius(); boolean drawCircleHole = dataSet.isDrawCircleHoleEnabled() && circleHoleRadius < circleRadius && circleHoleRadius > 0.f; boolean drawTransparentCircleHole = drawCircleHole && dataSet.getCircleHoleColor() == ColorTemplate.COLOR_NONE; for (int j = minx, count = (int) Math.ceil((maxx - minx) * phaseX + minx); j < count; j ++) { Entry e = dataSet.getEntryForIndex(j); if (e == null) break; circlesBuffer[0] = e.getXIndex(); circlesBuffer[1] = e.getVal() * phaseY; trans.pointValuesToPixel(circlesBuffer); if (!mViewPortHandler.isInBoundsRight(circlesBuffer[0])) break; // make sure the circles don't do shitty things outside // bounds if (!mViewPortHandler.isInBoundsLeft(circlesBuffer[0]) || !mViewPortHandler.isInBoundsY(circlesBuffer[1])) continue; mRenderPaint.setColor(dataSet.getCircleColor(j)); if (drawTransparentCircleHole) { // Begin path for circle with hole mCirclePathBuffer.reset(); mCirclePathBuffer.addCircle(circlesBuffer[0], circlesBuffer[1], circleRadius, Path.Direction.CW); // Cut hole in path mCirclePathBuffer.addCircle(circlesBuffer[0], circlesBuffer[1], circleHoleRadius, Path.Direction.CCW); // Fill in-between c.drawPath(mCirclePathBuffer, mRenderPaint); } else { c.drawCircle(circlesBuffer[0], circlesBuffer[1], circleRadius, mRenderPaint); if (drawCircleHole) { c.drawCircle(circlesBuffer[0], circlesBuffer[1], circleHoleRadius, mCirclePaintInner); } } } } }
Example 12
Source File: LineChartRenderer.java From Stayfit with Apache License 2.0 | 2 votes |
@Override public void drawValues(Canvas c) { if (mChart.getLineData().getYValCount() < mChart.getMaxVisibleCount() * mViewPortHandler.getScaleX()) { List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isDrawValuesEnabled() || dataSet.getEntryCount() == 0) continue; // apply the text-styling defined by the DataSet applyValueTextStyle(dataSet); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); // make sure the values do not interfear with the circles int valOffset = (int) (dataSet.getCircleRadius() * 1.75f); if (!dataSet.isDrawCirclesEnabled()) valOffset = valOffset / 2; int entryCount = dataSet.getEntryCount(); Entry entryFrom = dataSet.getEntryForXIndex((mMinX < 0) ? 0 : mMinX, DataSet.Rounding.DOWN); Entry entryTo = dataSet.getEntryForXIndex(mMaxX, DataSet.Rounding.UP); int minx = Math.max(dataSet.getEntryIndex(entryFrom), 0); int maxx = Math.min(dataSet.getEntryIndex(entryTo) + 1, entryCount); float[] positions = trans.generateTransformedValuesLine( dataSet, mAnimator.getPhaseX(), mAnimator.getPhaseY(), minx, maxx); for (int j = 0; j < positions.length; j += 2) { float x = positions[j]; float y = positions[j + 1]; if (!mViewPortHandler.isInBoundsRight(x)) break; if (!mViewPortHandler.isInBoundsLeft(x) || !mViewPortHandler.isInBoundsY(y)) continue; Entry entry = dataSet.getEntryForIndex(j / 2 + minx); drawValue(c, dataSet.getValueFormatter(), entry.getVal(), entry, i, x, y - valOffset, dataSet.getValueTextColor(j / 2)); } } } }
Example 13
Source File: LineChartRenderer.java From Stayfit with Apache License 2.0 | 2 votes |
protected void drawCircles(Canvas c) { mRenderPaint.setStyle(Paint.Style.FILL); float phaseX = mAnimator.getPhaseX(); float phaseY = mAnimator.getPhaseY(); List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isVisible() || !dataSet.isDrawCirclesEnabled() || dataSet.getEntryCount() == 0) continue; mCirclePaintInner.setColor(dataSet.getCircleHoleColor()); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); int entryCount = dataSet.getEntryCount(); Entry entryFrom = dataSet.getEntryForXIndex((mMinX < 0) ? 0 : mMinX, DataSet.Rounding.DOWN); Entry entryTo = dataSet.getEntryForXIndex(mMaxX, DataSet.Rounding.UP); int minx = Math.max(dataSet.getEntryIndex(entryFrom), 0); int maxx = Math.min(dataSet.getEntryIndex(entryTo) + 1, entryCount); CircleBuffer buffer = mCircleBuffers[i]; buffer.setPhases(phaseX, phaseY); buffer.limitFrom(minx); buffer.limitTo(maxx); buffer.feed(dataSet); trans.pointValuesToPixel(buffer.buffer); float halfsize = dataSet.getCircleRadius() / 2f; for (int j = 0, count = (int) Math.ceil((maxx - minx) * phaseX + minx) * 2; j < count; j += 2) { float x = buffer.buffer[j]; float y = buffer.buffer[j + 1]; if (!mViewPortHandler.isInBoundsRight(x)) break; // make sure the circles don't do shitty things outside // bounds if (!mViewPortHandler.isInBoundsLeft(x) || !mViewPortHandler.isInBoundsY(y)) continue; int circleColor = dataSet.getCircleColor(j / 2 + minx); mRenderPaint.setColor(circleColor); c.drawCircle(x, y, dataSet.getCircleRadius(), mRenderPaint); if (dataSet.isDrawCircleHoleEnabled() && circleColor != mCirclePaintInner.getColor()) c.drawCircle(x, y, halfsize, mCirclePaintInner); } } }
Example 14
Source File: LineChartRenderer.java From NetKnight with Apache License 2.0 | 2 votes |
@Override public void drawValues(Canvas c) { if (mChart.getLineData().getYValCount() < mChart.getMaxVisibleCount() * mViewPortHandler.getScaleX()) { List<ILineDataSet> dataSets = mChart.getLineData().getDataSets(); for (int i = 0; i < dataSets.size(); i++) { ILineDataSet dataSet = dataSets.get(i); if (!dataSet.isDrawValuesEnabled() || dataSet.getEntryCount() == 0) continue; // apply the text-styling defined by the DataSet applyValueTextStyle(dataSet); Transformer trans = mChart.getTransformer(dataSet.getAxisDependency()); // make sure the values do not interfear with the circles int valOffset = (int) (dataSet.getCircleRadius() * 1.75f); if (!dataSet.isDrawCirclesEnabled()) valOffset = valOffset / 2; int entryCount = dataSet.getEntryCount(); Entry entryFrom = dataSet.getEntryForXIndex((mMinX < 0) ? 0 : mMinX, DataSet.Rounding.DOWN); Entry entryTo = dataSet.getEntryForXIndex(mMaxX, DataSet.Rounding.UP); int diff = (entryFrom == entryTo) ? 1 : 0; if (dataSet.getMode() == LineDataSet.Mode.CUBIC_BEZIER) diff += 1; int minx = Math.max(dataSet.getEntryIndex(entryFrom) - diff, 0); int maxx = Math.min(Math.max(minx + 2, dataSet.getEntryIndex(entryTo) + 1), entryCount); float[] positions = trans.generateTransformedValuesLine( dataSet, mAnimator.getPhaseX(), mAnimator.getPhaseY(), minx, maxx); for (int j = 0; j < positions.length; j += 2) { float x = positions[j]; float y = positions[j + 1]; if (!mViewPortHandler.isInBoundsRight(x)) break; if (!mViewPortHandler.isInBoundsLeft(x) || !mViewPortHandler.isInBoundsY(y)) continue; Entry entry = dataSet.getEntryForIndex(j / 2 + minx); drawValue(c, dataSet.getValueFormatter(), entry.getVal(), entry, i, x, y - valOffset, dataSet.getValueTextColor(j / 2)); } } } }