blob: 454ec7cf15869974302c154c35efea0b77975267 [file] [log] [blame]
package com.github.mikephil.charting.data;
import android.graphics.Color;
import java.util.ArrayList;
public class BarDataSet extends BarLineScatterCandleRadarDataSet {
/** space indicator between the bars 0.1f == 10 % */
private float mBarSpace = 0.15f;
/**
* the maximum number of bars that are stacked upon each other, this value
* is calculated from the Entries that are added to the DataSet
*/
private int mStackSize = 1;
/** the color used for drawing the bar shadows */
private int mBarShadowColor = Color.rgb(215, 215, 215);
/** the alpha value used to draw the highlight indicator bar */
private int mHighLightAlpha = 120;
/**
* the overall entry count, including counting each stack-value individually
*/
private int mEntryCountStacks = 0;
/** the size of rounded corners */
private float mRoundedCornerSize = 0f;
/**
* array of labels used to describe the different values of the stacked bars
*/
private String[] mStackLabels = new String[] {
"Stack"
};
public BarDataSet(ArrayList<BarEntry> yVals, String label) {
super(yVals, label);
mHighLightColor = Color.rgb(0, 0, 0);
calcStackSize(yVals);
calcEntryCountIncludingStacks(yVals);
}
@Override
public DataSet copy() {
ArrayList<BarEntry> yVals = new ArrayList<BarEntry>();
for (int i = 0; i < mYVals.size(); i++) {
yVals.add(((BarEntry) mYVals.get(i)).copy());
}
BarDataSet copied = new BarDataSet(yVals, getLabel());
copied.mColors = mColors;
copied.mStackSize = mStackSize;
copied.mBarSpace = mBarSpace;
copied.mBarShadowColor = mBarShadowColor;
copied.mStackLabels = mStackLabels;
copied.mHighLightColor = mHighLightColor;
copied.mHighLightAlpha = mHighLightAlpha;
return copied;
}
/**
* Calculates the total number of entries this DataSet represents, including
* stacks. All values belonging to a stack are calculated separately.
*/
private void calcEntryCountIncludingStacks(ArrayList<BarEntry> yVals) {
mEntryCountStacks = 0;
for (int i = 0; i < yVals.size(); i++) {
float[] vals = yVals.get(i).getVals();
if (vals == null)
mEntryCountStacks++;
else
mEntryCountStacks += vals.length;
}
}
/**
* calculates the maximum stacksize that occurs in the Entries array of this
* DataSet
*/
private void calcStackSize(ArrayList<BarEntry> yVals) {
for (int i = 0; i < yVals.size(); i++) {
float[] vals = yVals.get(i).getVals();
if (vals != null && vals.length > mStackSize)
mStackSize = vals.length;
}
}
/**
* Returns the maximum number of bars that can be stacked upon another in
* this DataSet.
*
* @return
*/
public int getStackSize() {
return mStackSize;
}
/**
* returns the overall entry count, including counting each stack-value
* individually
*
* @return
*/
public int getEntryCountStacks() {
return mEntryCountStacks;
}
/**
* returns the space between bars in percent of the whole width of one value
*
* @return
*/
public float getBarSpacePercent() {
return mBarSpace * 100f;
}
/**
* returns the space between bars as the actual value (0 - 1.0f)
*
* @return
*/
public float getBarSpace() {
return mBarSpace;
}
/**
* sets the space between the bars in percent of the total bar width
*
* @param percent
*/
public void setBarSpacePercent(float percent) {
mBarSpace = percent / 100f;
}
/**
* Sets the color used for drawing the bar-shadows. The bar shadows is a
* surface behind the bar that indicates the maximum value. Don't for get to
* use getResources().getColor(...) to set this. Or Color.rgb(...).
*
* @param color
*/
public void setBarShadowColor(int color) {
mBarShadowColor = color;
}
/**
* Returns the color used for drawing the bar-shadows. The bar shadows is a
* surface behind the bar that indicates the maximum value.
*
* @return
*/
public int getBarShadowColor() {
return mBarShadowColor;
}
/**
* Set the alpha value (transparency) that is used for drawing the highlight
* indicator bar. min = 0 (fully transparent), max = 255 (fully opaque)
*
* @param alpha
*/
public void setHighLightAlpha(int alpha) {
mHighLightAlpha = alpha;
}
/**
* Returns the alpha value (transparency) that is used for drawing the
* highlight indicator.
*
* @return
*/
public int getHighLightAlpha() {
return mHighLightAlpha;
}
/**
* Sets labels for different values of bar-stacks, in case there are one.
*
* @param labels
*/
public void setStackLabels(String[] labels) {
mStackLabels = labels;
}
/**
* returns the labels used for the different value-stacks
*
* @return
*/
public String[] getStackLabels() {
return mStackLabels;
}
}