/*
* @(#)DoubleInterval.java
*
* Copyright 2002 EGANTT LLP. All rights reserved.
* PROPRIETARY/QPL. Use is subject to license terms.
*/
package com.egantt.model.drawing.axis.interval;
import com.egantt.model.drawing.DrawingTransform;
import com.egantt.model.drawing.axis.AxisInterval;
import com.egantt.model.drawing.axis.MutableInterval;
import com.egantt.model.drawing.transform.DoubleTransform;
public class DoubleInterval implements MutableInterval
{
protected double start;
protected double finish;
public DoubleInterval(double start, double finish)
{
this.start = start;
this.finish = finish;
}
//___________________________________________________________________________
public void setStart(Object start)
{
this.start = ((Double)start).doubleValue();
}
public void setFinish(Object finish)
{
this.finish = ((Double)finish).doubleValue();
}
//___________________________________________________________________________
public Object getStart()
{
return new Double(start);
}
public Object getFinish()
{
return new Double(finish);
}
//___________________________________________________________________________
public Object getRange()
{
return new Double(finish - start);
}
//___________________________________________________________________________
public double getStartValue()
{
return start;
}
public double getFinishValue()
{
return finish;
}
//___________________________________________________________________________
public double getRangeValue()
{
return finish - start;
}
// __________________________________________________________________________
public boolean containsValue(Object o)
{
if (o == null || !(o instanceof Double))
return false;
double value = ((Double) o).doubleValue();
return this.start <= value && this.finish >= value;
}
public boolean contains(AxisInterval i)
{
if (i == null || !(i instanceof DoubleInterval))
return false;
DoubleInterval interval = (DoubleInterval) i;
return this.start <= interval.getStartValue() &&
this.finish >= interval.getFinishValue();
}
public boolean intersects(AxisInterval i)
{
if (i == null || !(i instanceof DoubleInterval))
return false;
DoubleInterval interval = (DoubleInterval) i;
return ! (finish < interval.getStartValue())
|| ! (start > interval.getFinishValue());
}
// ________________________________________________________________________
public AxisInterval union(AxisInterval i) {
if (i == null)
return new DoubleInterval(new Double(getStartValue()), new Double(getFinishValue()));
if (!(i instanceof DoubleInterval))
return null;
DoubleInterval interval = (DoubleInterval) i;
return new DoubleInterval(
Math.min(getStartValue(), interval.getStartValue()),
Math.max(getFinishValue(), interval.getFinishValue()));
}
// ________________________________________________________________________
public Object clone() {
return new DoubleInterval(getStartValue(), getFinishValue());
}
public DrawingTransform getTransform() {
return new DoubleTransform(getStartValue(), getFinishValue() - getStartValue());
}
}