package com.github.mikephil.charting.highlight;
import com.github.mikephil.charting.components.YAxis;
/**
* Contains information needed to determine the highlighted value.
*
* @author Philipp Jahoda
*/
public class Highlight {
/**
* the x-value of the highlighted value
*/
private float mX = Float.NaN;
/**
* the y-value of the highlighted value
*/
private float mY = Float.NaN;
/**
* the x-pixel of the highlight
*/
private float mXPx;
/**
* the y-pixel of the highlight
*/
private float mYPx;
/**
* the index of the data object - in case it refers to more than one
*/
private int mDataIndex = -1;
/**
* the index of the dataset the highlighted value is in
*/
private int mDataSetIndex;
/**
* index which value of a stacked bar entry is highlighted, default -1
*/
private int mStackIndex = -1;
/**
* the axis the highlighted value belongs to
*/
private YAxis.AxisDependency axis;
/**
* the x-position (pixels) on which this highlight object was last drawn
*/
private float mDrawX;
/**
* the y-position (pixels) on which this highlight object was last drawn
*/
private float mDrawY;
public Highlight(float x, float y, int dataSetIndex) {
this.mX = x;
this.mY = y;
this.mDataSetIndex = dataSetIndex;
}
public Highlight(float x, int dataSetIndex, int stackIndex) {
this(x, Float.NaN, dataSetIndex);
this.mStackIndex = stackIndex;
}
/**
* constructor
*
* @param x the x-value of the highlighted value
* @param y the y-value of the highlighted value
* @param dataSetIndex the index of the DataSet the highlighted value belongs to
*/
public Highlight(float x, float y, float xPx, float yPx, int dataSetIndex, YAxis.AxisDependency axis) {
this.mX = x;
this.mY = y;
this.mXPx = xPx;
this.mYPx = yPx;
this.mDataSetIndex = dataSetIndex;
this.axis = axis;
}
/**
* Constructor, only used for stacked-barchart.
*
* @param x the index of the highlighted value on the x-axis
* @param y the y-value of the highlighted value
* @param dataSetIndex the index of the DataSet the highlighted value belongs to
* @param stackIndex references which value of a stacked-bar entry has been
* selected
*/
public Highlight(float x, float y, float xPx, float yPx, int dataSetIndex, int stackIndex, YAxis.AxisDependency axis) {
this(x, y, xPx, yPx, dataSetIndex, axis);
this.mStackIndex = stackIndex;
}
/**
* returns the x-value of the highlighted value
*
* @return
*/
public float getX() {
return mX;
}
/**
* returns the y-value of the highlighted value
*
* @return
*/
public float getY() {
return mY;
}
/**
* returns the x-position of the highlight in pixels
*/
public float getXPx() {
return mXPx;
}
/**
* returns the y-position of the highlight in pixels
*/
public float getYPx() {
return mYPx;
}
/**
* the index of the data object - in case it refers to more than one
*
* @return
*/
public int getDataIndex() {
return mDataIndex;
}
public void setDataIndex(int mDataIndex) {
this.mDataIndex = mDataIndex;
}
/**
* returns the index of the DataSet the highlighted value is in
*
* @return
*/
public int getDataSetIndex() {
return mDataSetIndex;
}
/**
* Only needed if a stacked-barchart entry was highlighted. References the
* selected value within the stacked-entry.
*
* @return
*/
public int getStackIndex() {
return mStackIndex;
}
public boolean isStacked() {
return mStackIndex >= 0;
}
/**
* Returns the axis the highlighted value belongs to.
*
* @return
*/
public YAxis.AxisDependency getAxis() {
return axis;
}
/**
* Sets the x- and y-position (pixels) where this highlight was last drawn.
*
* @param x
* @param y
*/
public void setDraw(float x, float y) {
this.mDrawX = x;
this.mDrawY = y;
}
/**
* Returns the x-position in pixels where this highlight object was last drawn.
*
* @return
*/
public float getDrawX() {
return mDrawX;
}
/**
* Returns the y-position in pixels where this highlight object was last drawn.
*
* @return
*/
public float getDrawY() {
return mDrawY;
}
/**
* Returns true if this highlight object is equal to the other (compares
* xIndex and dataSetIndex)
*
* @param h
* @return
*/
public boolean equalTo(Highlight h) {
if (h == null)
return false;
else {
if (this.mDataSetIndex == h.mDataSetIndex && this.mX == h.mX
&& this.mStackIndex == h.mStackIndex && this.mDataIndex == h.mDataIndex)
return true;
else
return false;
}
}
@Override
public String toString() {
return "Highlight, x: " + mX + ", y: " + mY + ", dataSetIndex: " + mDataSetIndex
+ ", stackIndex (only stacked barentry): " + mStackIndex;
}
}