Advertisement
Guest User

Gradient fill below line

a guest
Nov 29th, 2012
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.80 KB | None | 0 0
  1.     @Override
  2.     public void drawSeries(Canvas canvas, Paint paint, float[] points,
  3.             SimpleSeriesRenderer seriesRenderer, float yAxisValue, int seriesIndex, int startIndex) {
  4.         int length = points.length;
  5.         XYSeriesRenderer renderer = (XYSeriesRenderer) seriesRenderer;
  6.         float lineWidth = paint.getStrokeWidth();
  7.         paint.setStrokeWidth(renderer.getLineWidth());
  8.         if (renderer.isFillBelowLine() || renderer.isGradientEnabled()) {
  9.             int pLength = points.length;
  10.             float[] fillPoints = new float[pLength + 4];
  11.             System.arraycopy(points, 0, fillPoints, 0, length);
  12.             fillPoints[0] = points[0] + 1;
  13.             fillPoints[length] = fillPoints[length - 2];
  14.             fillPoints[length + 1] = yAxisValue;
  15.             fillPoints[length + 2] = fillPoints[0];
  16.             fillPoints[length + 3] = fillPoints[length + 1];
  17.             float max = 0;
  18.             for (int i = 0; i < length + 4; i += 2) {
  19.                 if (fillPoints[i + 1] < 0) {
  20.                     fillPoints[i + 1] = 0;
  21.                 }
  22.                 else if (fillPoints[i + 1] > max) {
  23.                     max = fillPoints[i + 1];
  24.                 }
  25.             }
  26.             paint.setStyle(Style.FILL);
  27.             if (renderer.isGradientEnabled()) {
  28.                 Shader s = paint.getShader();
  29.                 // Create gradient from values set in renderer
  30.                 paint.setShader(new LinearGradient(0, (float)(renderer.getGradientStartValue() * max), 0, (float)(renderer.getGradientStopValue() * max),
  31.                         renderer.getGradientStartColor(), renderer.getGradientStopColor(), Shader.TileMode.MIRROR));
  32.                 drawPath(canvas, fillPoints, paint, true);
  33.                 // Restore paint's shader to previous value (null)
  34.                 paint.setShader(s);
  35.             }
  36.             else {
  37.                 paint.setColor(renderer.getFillBelowLineColor());
  38.                 drawPath(canvas, fillPoints, paint, true);
  39.             }
  40.         }
  41.         paint.setColor(seriesRenderer.getColor());
  42.         paint.setStyle(Style.STROKE);
  43.         drawPath(canvas, points, paint, false);
  44.         paint.setStrokeWidth(lineWidth);
  45.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement