package timeflow.vis; import timeflow.data.time.*; import java.util.*; public class TimeScale { private double low,high; private Interval interval; public TimeScale() { low=0; high=100; interval=new Interval(new Date(0).getTime(),new Date().getTime()); } public Interval getInterval() { return interval; } public void setNumberRange(double low, double high) { this.low=low; this.high=high; } public void setDateRange(Interval t) { setDateRange(t.start, t.end); } public void setDateRange(long first, long last) { interval.setTo(first, last); } public boolean containsDate(long date) { return interval.contains(date); } public boolean containsNum(double x) { return x>=low && x<=high; } public long duration() { return interval.length(); } public double toNum(long time) { return low+(high-low)*(time-interval.start)/(double)duration(); } public long spaceToTime(double space) { return (long)(space*duration()/(high-low)); } public int toInt(long time) { return (int)toNum(time); } public long toTime(double num) { double millis=interval.start+duration()*(num-low)/(high-low); return (long)millis; } public double getLow() { return low; } public void setLow(double low) { this.low = low; } public double getHigh() { return high; } public void setHigh(double high) { this.high = high; } }