Android Open Source - customhellochartdemo Abstract Chart Renderer






From Project

Back to project page customhellochartdemo.

License

The source code is released under:

Apache License

If you think the Android project customhellochartdemo listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package lecho.lib.hellocharts.renderer;
/*w  w w .ja v  a2 s.c om*/
import lecho.lib.hellocharts.ChartComputator;
import lecho.lib.hellocharts.model.ChartData;
import lecho.lib.hellocharts.model.SelectedValue;
import lecho.lib.hellocharts.model.Viewport;
import lecho.lib.hellocharts.util.Utils;
import lecho.lib.hellocharts.view.Chart;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.graphics.Paint.FontMetricsInt;
import android.graphics.RectF;
import android.graphics.Typeface;

/**
 * Abstract renderer implementation, every chart renderer extends this class(although it is not required it helps).
 * 
 */
public abstract class AbstractChartRenderer implements ChartRenderer {
  public int DEFAULT_LABEL_MARGIN_DP = 4;
  protected Chart chart;

  /** Paint for value labels. */
  protected Paint labelPaint = new Paint();

  /** Paint for labels background. */
  protected Paint labelBackgroundPaint = new Paint();

  /** Holds coordinates for label background rect. */
  protected RectF labelBackgroundRect = new RectF();

  /** Font metrics for label paint, used to determine text height. */
  protected FontMetricsInt fontMetrics = new FontMetricsInt();

  /** Temporary max viewport used during maximum viewport calculations. */
  protected Viewport tempMaxViewport = new Viewport();

  /** If true maximum and current viewport will be calculated when chart data change or during data animations. */
  protected boolean isViewportCalculationEnabled = true;

  protected float density;
  protected float scaledDensity;

  protected SelectedValue selectedValue = new SelectedValue();

  protected char[] labelBuffer = new char[32];
  protected int labelOffset;
  protected int labelMargin;

  protected boolean isValueLabelBackgroundEnabled;
  protected boolean isValueLabelBackgrountAuto;
  protected int valueLabelBackgroundColor;

  public AbstractChartRenderer(Context context, Chart chart) {
    this.density = context.getResources().getDisplayMetrics().density;
    this.scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
    this.chart = chart;

    labelMargin = Utils.dp2px(density, DEFAULT_LABEL_MARGIN_DP);
    labelOffset = labelMargin;

    labelPaint.setAntiAlias(true);
    labelPaint.setStyle(Paint.Style.FILL);
    labelPaint.setTextAlign(Align.LEFT);
    labelPaint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
    labelPaint.setColor(Color.WHITE);

    labelBackgroundPaint.setAntiAlias(true);
    labelBackgroundPaint.setStyle(Paint.Style.FILL);
  }

  @Override
  public void initCurrentViewport() {
    if (isViewportCalculationEnabled) {
      ChartComputator computator = chart.getChartComputator();
      computator.setCurrentViewport(computator.getMaximumViewport());
    }
  }

  @Override
  public void initDataAttributes() {
    final ChartData data = chart.getChartData();

    Typeface typeface = chart.getChartData().getValueLabelTypeface();
    if (null != typeface) {
      labelPaint.setTypeface(typeface);
    }

    labelPaint.setTextSize(Utils.sp2px(scaledDensity, data.getValueLabelTextSize()));
    labelPaint.getFontMetricsInt(fontMetrics);

    this.isValueLabelBackgroundEnabled = data.isValueLabelBackgroundEnabled();
    this.isValueLabelBackgrountAuto = data.isValueLabelBackgroundAuto();
    this.valueLabelBackgroundColor = data.getValueLabelBackgroundColor();
    this.labelBackgroundPaint.setColor(valueLabelBackgroundColor);

    // Important - clear selection when data changed.
    selectedValue.clear();

  }

  /**
   * Draws label text and label background if isValueLabelBackgroundEnabled is true.
   */
  protected void drawLabelTextAndBackground(Canvas canvas, char[] labelBuffer, int startIndex, int numChars,
      int autoBackgroundColor) {
    final float textX;
    final float textY;

    if (isValueLabelBackgroundEnabled) {

      if (isValueLabelBackgrountAuto) {
        labelBackgroundPaint.setColor(autoBackgroundColor);
      }

      canvas.drawRect(labelBackgroundRect, labelBackgroundPaint);

      textX = labelBackgroundRect.left + labelMargin;
      textY = labelBackgroundRect.bottom - labelMargin;
    } else {
      textX = labelBackgroundRect.left;
      textY = labelBackgroundRect.bottom;
    }

    canvas.drawText(labelBuffer, startIndex, numChars, textX, textY, labelPaint);
  }

  @Override
  public boolean isTouched() {
    return selectedValue.isSet();
  }

  @Override
  public void clearTouch() {
    selectedValue.clear();
  }

  @Override
  public void setMaxViewport(Viewport maxViewport) {
    if (null == maxViewport) {
      initMaxViewport();
    } else {
      this.tempMaxViewport.set(maxViewport);
      chart.getChartComputator().setMaxViewport(maxViewport);
    }
  }

  @Override
  public Viewport getMaxViewport() {
    return tempMaxViewport;
  }

  @Override
  public void setCurrentViewport(Viewport viewport) {
    if (null == viewport) {
      initCurrentViewport();
    } else {
      chart.getChartComputator().setCurrentViewport(viewport);
    }
  }

  @Override
  public Viewport getCurrentViewport() {
    return chart.getChartComputator().getCurrentViewport();
  }

  @Override
  public boolean isViewportCalculationEnabled() {
    return isViewportCalculationEnabled;
  }

  @Override
  public void setViewportCalculationEnabled(boolean isEnabled) {
    this.isViewportCalculationEnabled = isEnabled;
  }

  @Override
  public void selectValue(SelectedValue selectedValue) {
    this.selectedValue.set(selectedValue);
  }

  @Override
  public SelectedValue getSelectedValue() {
    return selectedValue;
  }
}




Java Source Code List

lecho.lib.hellocharts.ChartComputator.java
lecho.lib.hellocharts.DummyChartAnimationListener.java
lecho.lib.hellocharts.DummyVieportChangeListener.java
lecho.lib.hellocharts.PreviewChartComputator.java
lecho.lib.hellocharts.ViewportChangeListener.java
lecho.lib.hellocharts.animation.ChartAnimationListener.java
lecho.lib.hellocharts.animation.ChartDataAnimatorV14.java
lecho.lib.hellocharts.animation.ChartDataAnimatorV8.java
lecho.lib.hellocharts.animation.ChartDataAnimator.java
lecho.lib.hellocharts.animation.ChartViewportAnimatorV14.java
lecho.lib.hellocharts.animation.ChartViewportAnimatorV8.java
lecho.lib.hellocharts.animation.ChartViewportAnimator.java
lecho.lib.hellocharts.animation.PieChartRotationAnimatorV14.java
lecho.lib.hellocharts.animation.PieChartRotationAnimatorV8.java
lecho.lib.hellocharts.animation.PieChartRotationAnimator.java
lecho.lib.hellocharts.gesture.ChartScroller.java
lecho.lib.hellocharts.gesture.ChartTouchHandler.java
lecho.lib.hellocharts.gesture.ChartZoomer.java
lecho.lib.hellocharts.gesture.ContainerScrollType.java
lecho.lib.hellocharts.gesture.PieChartTouchHandler.java
lecho.lib.hellocharts.gesture.PreviewChartTouchHandler.java
lecho.lib.hellocharts.gesture.ZoomType.java
lecho.lib.hellocharts.gesture.ZoomerCompat.java
lecho.lib.hellocharts.model.AbstractChartData.java
lecho.lib.hellocharts.model.ArcValue.java
lecho.lib.hellocharts.model.AxisValue.java
lecho.lib.hellocharts.model.Axis.java
lecho.lib.hellocharts.model.BubbleChartData.java
lecho.lib.hellocharts.model.BubbleValue.java
lecho.lib.hellocharts.model.ChartData.java
lecho.lib.hellocharts.model.ColumnChartData.java
lecho.lib.hellocharts.model.ColumnValue.java
lecho.lib.hellocharts.model.Column.java
lecho.lib.hellocharts.model.ComboLineColumnChartData.java
lecho.lib.hellocharts.model.LineChartData.java
lecho.lib.hellocharts.model.Line.java
lecho.lib.hellocharts.model.PieChartData.java
lecho.lib.hellocharts.model.PointValue.java
lecho.lib.hellocharts.model.SelectedValue.java
lecho.lib.hellocharts.model.SimpleValueFormatter.java
lecho.lib.hellocharts.model.ValueFormatter.java
lecho.lib.hellocharts.model.ValueShape.java
lecho.lib.hellocharts.model.Viewport.java
lecho.lib.hellocharts.provider.BubbleChartDataProvider.java
lecho.lib.hellocharts.provider.ColumnChartDataProvider.java
lecho.lib.hellocharts.provider.ComboLineColumnChartDataProvider.java
lecho.lib.hellocharts.provider.LineChartDataProvider.java
lecho.lib.hellocharts.provider.PieChartDataProvider.java
lecho.lib.hellocharts.renderer.AbstractChartRenderer.java
lecho.lib.hellocharts.renderer.AxesRenderer.java
lecho.lib.hellocharts.renderer.BubbleChartRenderer.java
lecho.lib.hellocharts.renderer.ChartRenderer.java
lecho.lib.hellocharts.renderer.ColumnChartRenderer.java
lecho.lib.hellocharts.renderer.ComboLineColumnChartRenderer.java
lecho.lib.hellocharts.renderer.LineChartRenderer.java
lecho.lib.hellocharts.renderer.PieChartRenderer.java
lecho.lib.hellocharts.renderer.PreviewColumnChartRenderer.java
lecho.lib.hellocharts.renderer.PreviewLineChartRenderer.java
lecho.lib.hellocharts.samples.AboutActivity.java
lecho.lib.hellocharts.samples.BrokenLineChartActivity.java
lecho.lib.hellocharts.samples.BrokenLineView.java
lecho.lib.hellocharts.samples.BubbleChartActivity.java
lecho.lib.hellocharts.samples.ColumnChartActivity.java
lecho.lib.hellocharts.samples.ComboLineColumnChartActivity.java
lecho.lib.hellocharts.samples.GoodBadChartActivity.java
lecho.lib.hellocharts.samples.LineChartActivity.java
lecho.lib.hellocharts.samples.LineColumnDependencyActivity.java
lecho.lib.hellocharts.samples.MainActivity.java
lecho.lib.hellocharts.samples.PieChartActivity.java
lecho.lib.hellocharts.samples.PreviewColumnChartActivity.java
lecho.lib.hellocharts.samples.PreviewLineChartActivity.java
lecho.lib.hellocharts.samples.SpeedChartActivity.java
lecho.lib.hellocharts.samples.TempoChartActivity.java
lecho.lib.hellocharts.samples.ViewPagerChartsActivity.java
lecho.lib.hellocharts.util.AxisAutoValues.java
lecho.lib.hellocharts.util.Utils.java
lecho.lib.hellocharts.view.AbstractChartView.java
lecho.lib.hellocharts.view.BubbleChartView.java
lecho.lib.hellocharts.view.Chart.java
lecho.lib.hellocharts.view.ColumnChartView.java
lecho.lib.hellocharts.view.ComboLineColumnChartView.java
lecho.lib.hellocharts.view.LineChartView.java
lecho.lib.hellocharts.view.PieChartView.java
lecho.lib.hellocharts.view.PreviewColumnChartView.java
lecho.lib.hellocharts.view.PreviewLineChartView.java
lecho.lib.hellocharts.view.hack.HackyDrawerLayout.java
lecho.lib.hellocharts.view.hack.HackyViewPager.java