/*
* $Id: Domain.java,v 1.4 2003/08/22 23:02:40 dwd Exp $
*
* This software is provided by NOAA for full, free and open release. It is
* understood by the recipient/user that NOAA assumes no liability for any
* errors contained in the code. Although this software is released without
* conditions or restrictions in its use, it is expected that appropriate
* credit be given to its author and to the National Oceanic and Atmospheric
* Administration should the software be included by the recipient as an
* element in other product development.
*/
package sgtplot.util;
/**
* GraphDomain contains the X and Y ranges in user units.
*
* @author Donald Denbo
* @version $Revision: 1.4 $, $Date: 2003/08/22 23:02:40 $
* @since sgtplot 2.0
*/
public class Domain implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
Range2D xRange_ = null;
Range2D yRange_ = null;
TimeRange tRange_ = null;
boolean xTime_ = false;
boolean yTime_ = false;
boolean xReversed_ = false;
boolean yReversed_ = false;
/**
* Default constructor.
*/
public Domain() {
}
/**
* Create a copy of a Domain. The references for the
* ranges are copied, not the objects.
*/
public Domain(Domain domain) {
if(domain.isXTime()) {
tRange_ = domain.getTimeRange();
} else {
xRange_ = domain.getXRange();
}
if(domain.isYTime()) {
tRange_ = domain.getTimeRange();
} else {
yRange_ = domain.getYRange();
}
xReversed_ = domain.isXReversed();
yReversed_ = domain.isYReversed();
}
public Domain(Range2D xRange, Range2D yRange) {
xRange_ = xRange;
yRange_ = yRange;
}
public Domain(TimeRange tRange, Range2D yRange) {
tRange_ = tRange;
yRange_ = yRange;
xTime_ = true;
}
public Domain(Range2D xRange, TimeRange tRange) {
xRange_ = xRange;
tRange_ = tRange;
yTime_ = true;
}
/**
* @since sgtplot 3.0
*/
public Domain(Range2D xRange, Range2D yRange,
boolean xRev, boolean yRev) {
xRange_ = xRange;
yRange_ = yRange;
xReversed_ = xRev;
yReversed_ = yRev;
}
/**
* @since sgtplot 3.0
*/
public Domain(TimeRange tRange, Range2D yRange,
boolean xRev, boolean yRev) {
tRange_ = tRange;
yRange_ = yRange;
xTime_ = true;
xReversed_ = xRev;
yReversed_ = yRev;
}
/**
* @since sgtplot 3.0
*/
public Domain(Range2D xRange, TimeRange tRange,
boolean xRev, boolean yRev) {
xRange_ = xRange;
tRange_ = tRange;
yTime_ = true;
xReversed_ = xRev;
yReversed_ = yRev;
}
/**
* Set the x range.
*/
public void setXRange(Range2D xRange) {
xTime_ = false;
xRange_ = xRange;
}
/**
* Set the x range as time.
*/
public void setXRange(TimeRange tRange) {
xTime_ = true;
tRange_ = tRange;
}
/**
* Get the x range.
*/
public Range2D getXRange() {
return xRange_;
}
/**
* Set the y range
*/
public void setYRange(Range2D yRange) {
yTime_ = false;
yRange_ = yRange;
}
/**
* Set the yrange as time.
*/
public void setYRange(TimeRange tRange) {
yTime_ = true;
tRange_ = tRange;
}
/**
* Get the y range.
*/
public Range2D getYRange() {
return yRange_;
}
/**
* Get the time range
*/
public TimeRange getTimeRange() {
return tRange_;
}
/**
* Test if x range is time.
*/
public boolean isXTime() {
return xTime_;
}
/**
* Test if y range is time.
*/
public boolean isYTime() {
return yTime_;
}
/**
* @since sgtplot 3.0
*/
public void setYReversed(boolean rev) {
yReversed_ = rev;
}
/**
* @since sgtplot 3.0
*/
public boolean isYReversed() {
return yReversed_;
}
/**
* @since sgtplot 3.0
*/
public void setXReversed(boolean rev) {
xReversed_ = rev;
}
/**
* @since sgtplot 3.0
*/
public boolean isXReversed() {
return xReversed_;
}
/**
* Tests for equality of Domains. Both ranges must be
* equal.
*/
public boolean equals(Domain d) {
if(xTime_) {
if(!d.isXTime()) return false;
if(!tRange_.equals(d.getTimeRange())) return false;
} else {
if(d.isXTime()) return false;
if(!xRange_.equals(d.getXRange())) return false;
}
if(yTime_) {
if(!d.isYTime()) return false;
if(!tRange_.equals(d.getTimeRange())) return false;
} else {
if(d.isYTime()) return false;
if(!yRange_.equals(d.getYRange())) return false;
}
if(xReversed_ != d.isXReversed()) return false;
if(yReversed_ != d.isYReversed()) return false;
return true;
}
public String toString() {
StringBuffer buf = new StringBuffer(100);
buf.append("x=");
if(xTime_) {
buf.append(tRange_).append(",y=");
} else {
buf.append(xRange_).append(",y=");
}
if(yTime_) {
buf.append(tRange_);
} else {
buf.append(yRange_);
}
buf.append(", xRev=").append(xReversed_);
buf.append(", yRev=").append(yReversed_);
return buf.toString();
}
}
Ads help maintain this website.