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; } }