All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.codename1.charts.views.RoundChart Maven / Gradle / Ivy

There is a newer version: 7.0.164
Show newest version
/**
 * Copyright (C) 2009 - 2013 SC 4ViewSoft SRL
 *  
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0
 *  
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.codename1.charts.views;

import com.codename1.charts.compat.Canvas;
import com.codename1.charts.compat.GradientDrawable;
import com.codename1.charts.compat.GradientDrawable.Orientation;
import com.codename1.charts.compat.Paint;
import com.codename1.charts.models.CategorySeries;
import com.codename1.charts.renderers.DefaultRenderer;
import com.codename1.charts.renderers.SimpleSeriesRenderer;
import com.codename1.ui.Component;

/**
 * An abstract class to be extended by round like chart rendering classes.
 */
public abstract class RoundChart extends AbstractChart {
  /** The legend shape width. */
  protected static final int SHAPE_WIDTH = 10;
  /** The series dataset. */
  protected CategorySeries mDataset;
  /** The series renderer. */
  protected DefaultRenderer mRenderer;
  /** A no value constant. */
  protected static final int NO_VALUE = Integer.MAX_VALUE;
  /** The chart center X axis. */
  protected int mCenterX = NO_VALUE;
  /** The chart center y axis. */
  protected int mCenterY = NO_VALUE;
  protected boolean autoCalculateCenter = true;

  /**
   * Round chart.
   * 
   * @param dataset the series dataset
   * @param renderer the series renderer
   */
  public RoundChart(CategorySeries dataset, DefaultRenderer renderer) {
    mDataset = dataset;
    mRenderer = renderer;
  }

  /**
   * The graphical representation of the round chart title.
   * 
   * @param canvas the canvas to paint to
   * @param x the top left x value of the view to draw to
   * @param y the top left y value of the view to draw to
   * @param width the width of the view to draw to
   * @param paint the paint
   */
  public void drawTitle(Canvas canvas, int x, int y, int width, Paint paint) {
    if (mRenderer.isShowLabels()) {
      paint.setColor(mRenderer.getLabelsColor());
      paint.setTextAlign(Component.CENTER);
      paint.setTextSize(mRenderer.getChartTitleTextSize());
      drawString(canvas, mRenderer.getChartTitle(), x + width / 2,
          y + mRenderer.getChartTitleTextSize(), paint);
    }
  }

  /**
   * Returns the legend shape width.
   * 
   * @param seriesIndex the series index
   * @return the legend shape width
   */
  public int getLegendShapeWidth(int seriesIndex) {
    return SHAPE_WIDTH;
  }

  /**
   * The graphical representation of the legend shape.
   * 
   * @param canvas the canvas to paint to
   * @param renderer the series renderer
   * @param x the x value of the point the shape should be drawn at
   * @param y the y value of the point the shape should be drawn at
   * @param seriesIndex the series index
   * @param paint the paint to be used for drawing
   */
  public void drawLegendShape(Canvas canvas, SimpleSeriesRenderer renderer, float x, float y,
      int seriesIndex, Paint paint) {
    if (renderer.isGradientEnabled() && canvas.isShapeClipSupported()) {
        GradientDrawable gr = new GradientDrawable(Orientation.TOP_BOTTOM, new int[]{ renderer.getGradientStartColor(), renderer.getGradientStopColor()});
        gr.setBounds((int)x, (int)(y - SHAPE_WIDTH / 2), (int)(x + SHAPE_WIDTH), (int)(y + SHAPE_WIDTH / 2));
        gr.draw(canvas);
    } else {
        canvas.drawRect(x, y - SHAPE_WIDTH / 2, x + SHAPE_WIDTH, y + SHAPE_WIDTH / 2, paint);
    }
  }

  /**
   * Returns the renderer.
   * 
   * @return the renderer
   */
  public DefaultRenderer getRenderer() {
    return mRenderer;
  }

  /**
   * Returns the center on X axis.
   * 
   * @return the center on X axis
   */
  public int getCenterX() {
    return mCenterX;
  }

  /**
   * Returns the center on Y axis.
   * 
   * @return the center on Y axis
   */
  public int getCenterY() {
    return mCenterY;
  }

  /**
   * Sets a new center on X axis.
   * 
   * @param centerX center on X axis
   */
  public void setCenterX(int centerX) {
    mCenterX = centerX;
  }

  /**
   * Sets a new center on Y axis.
   * 
   * @param centerY center on Y axis
   */
  public void setCenterY(int centerY) {
    mCenterY = centerY;
  }
  
  public void setAutocalculateCenter(boolean a){
      autoCalculateCenter = a;
  }
  
  public boolean isAutocalculateCenter(){
      return autoCalculateCenter;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy