| |
| package com.github.mikephil.charting.data; |
| |
| import android.os.Parcel; |
| import android.os.ParcelFormatException; |
| import android.os.Parcelable; |
| |
| /** |
| * Class representing one entry in the chart. Might contain multiple values. |
| * Might only contain a single value depending on the used constructor. |
| * |
| * @author Philipp Jahoda |
| */ |
| public class Entry extends BaseEntry implements Parcelable { |
| |
| /** the x value */ |
| private float x = 0f; |
| |
| public Entry() { |
| |
| } |
| |
| /** |
| * A Entry represents one single entry in the chart. |
| * |
| * @param x the x value |
| * @param y the y value (the actual value of the entry) |
| */ |
| public Entry(float x, float y) { |
| super(y); |
| this.x = x; |
| } |
| |
| /** |
| * A Entry represents one single entry in the chart. |
| * |
| * @param x the x value |
| * @param y the y value (the actual value of the entry) |
| * @param data Spot for additional data this Entry represents. |
| */ |
| public Entry(float x, float y, Object data) { |
| super(y, data); |
| this.x = x; |
| } |
| |
| /** |
| * Returns the x-value of this Entry object. |
| * |
| * @return |
| */ |
| public float getX() { |
| return x; |
| } |
| |
| /** |
| * Sets the x-value of this Entry object. |
| * |
| * @param x |
| */ |
| public void setX(float x) { |
| this.x = x; |
| } |
| |
| /** |
| * returns an exact copy of the entry |
| * |
| * @return |
| */ |
| public Entry copy() { |
| Entry e = new Entry(x, getY(), getData()); |
| return e; |
| } |
| |
| /** |
| * Compares value, xIndex and data of the entries. Returns true if entries |
| * are equal in those points, false if not. Does not check by hash-code like |
| * it's done by the "equals" method. |
| * |
| * @param e |
| * @return |
| */ |
| public boolean equalTo(Entry e) { |
| |
| if (e == null) |
| return false; |
| |
| if (e.getData() != this.getData()) |
| return false; |
| |
| if (Math.abs(e.x - this.x) > 0.000001f) |
| return false; |
| |
| if (Math.abs(e.getY() - this.getY()) > 0.000001f) |
| return false; |
| |
| return true; |
| } |
| |
| /** |
| * returns a string representation of the entry containing x-index and value |
| */ |
| @Override |
| public String toString() { |
| return "Entry, x: " + x + " y: " + getY(); |
| } |
| |
| @Override |
| public int describeContents() { |
| return 0; |
| } |
| |
| @Override |
| public void writeToParcel(Parcel dest, int flags) { |
| dest.writeFloat(this.x); |
| dest.writeFloat(this.getY()); |
| if (getData() != null) { |
| if (getData() instanceof Parcelable) { |
| dest.writeInt(1); |
| dest.writeParcelable((Parcelable) this.getData(), flags); |
| } else { |
| throw new ParcelFormatException("Cannot parcel an Entry with non-parcelable data"); |
| } |
| } else { |
| dest.writeInt(0); |
| } |
| } |
| |
| protected Entry(Parcel in) { |
| this.x = in.readFloat(); |
| this.setY(in.readFloat()); |
| if (in.readInt() == 1) { |
| this.setData(in.readParcelable(Object.class.getClassLoader())); |
| } |
| } |
| |
| public static final Parcelable.Creator<Entry> CREATOR = new Parcelable.Creator<Entry>() { |
| public Entry createFromParcel(Parcel source) { |
| return new Entry(source); |
| } |
| |
| public Entry[] newArray(int size) { |
| return new Entry[size]; |
| } |
| }; |
| } |