package com.github.mikephil.charting.utils; import java.util.List; /** * Class for describing width and height dimensions in some arbitrary * unit. Replacement for the android.Util.SizeF which is available only on API >= 21. */ public final class FSize extends ObjectPool.Poolable{ // TODO : Encapsulate width & height public float width; public float height; private static ObjectPool<FSize> pool; static { pool = ObjectPool.create(256, new FSize(0,0)); pool.setReplenishPercentage(0.5f); } protected ObjectPool.Poolable instantiate(){ return new FSize(0,0); } public static FSize getInstance(final float width, final float height){ FSize result = pool.get(); result.width = width; result.height = height; return result; } public static void recycleInstance(FSize instance){ pool.recycle(instance); } public static void recycleInstances(List<FSize> instances){ pool.recycle(instances); } public FSize() { } public FSize(final float width, final float height) { this.width = width; this.height = height; } @Override public boolean equals(final Object obj) { if (obj == null) { return false; } if (this == obj) { return true; } if (obj instanceof FSize) { final FSize other = (FSize) obj; return width == other.width && height == other.height; } return false; } @Override public String toString() { return width + "x" + height; } /** * {@inheritDoc} */ @Override public int hashCode() { return Float.floatToIntBits(width) ^ Float.floatToIntBits(height); } }