Package org.jfree.data
Class Range
- java.lang.Object
-
- org.jfree.data.Range
-
- All Implemented Interfaces:
java.io.Serializable
- Direct Known Subclasses:
DateRange
public class Range extends java.lang.Object implements java.io.Serializable
Represents an immutable range of values.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private double
lower
The lower bound of the range.private static long
serialVersionUID
For serialization.private double
upper
The upper bound of the range.
-
Constructor Summary
Constructors Constructor Description Range(double lower, double upper)
Creates a new range.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Range
combine(Range range1, Range range2)
Creates a new range by combining two existing ranges.static Range
combineIgnoringNaN(Range range1, Range range2)
Returns a new range that spans bothrange1
andrange2
.double
constrain(double value)
Returns the value within the range that is closest to the specified value.boolean
contains(double value)
Returnstrue
if the range contains the specified value andfalse
otherwise.boolean
equals(java.lang.Object obj)
Tests this object for equality with an arbitrary object.static Range
expand(Range range, double lowerMargin, double upperMargin)
Creates a new range by adding margins to an existing range.static Range
expandToInclude(Range range, double value)
Returns a range that includes all the values in the specifiedrange
AND the specifiedvalue
.double
getCentralValue()
Returns the central value for the range.double
getLength()
Returns the length of the range.double
getLowerBound()
Returns the lower bound for the range.double
getUpperBound()
Returns the upper bound for the range.int
hashCode()
Returns a hash code.boolean
intersects(double b0, double b1)
Returnstrue
if the range intersects with the specified range, andfalse
otherwise.boolean
intersects(Range range)
Returnstrue
if the range intersects with the specified range, andfalse
otherwise.boolean
isNaNRange()
Returnstrue
if both the lower and upper bounds areDouble.NaN
, andfalse
otherwise.private static double
max(double d1, double d2)
private static double
min(double d1, double d2)
Returns the minimum value.static Range
scale(Range base, double factor)
Scales the range by the specified factor.static Range
shift(Range base, double delta)
Shifts the range by the specified amount.static Range
shift(Range base, double delta, boolean allowZeroCrossing)
Shifts the range by the specified amount.private static double
shiftWithNoZeroCrossing(double value, double delta)
Returns the givenvalue
adjusted bydelta
but with a check to prevent the result from crossing0.0
.java.lang.String
toString()
Returns a string representation of this Range.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
For serialization.- See Also:
- Constant Field Values
-
lower
private double lower
The lower bound of the range.
-
upper
private double upper
The upper bound of the range.
-
-
Method Detail
-
getLowerBound
public double getLowerBound()
Returns the lower bound for the range.- Returns:
- The lower bound.
-
getUpperBound
public double getUpperBound()
Returns the upper bound for the range.- Returns:
- The upper bound.
-
getLength
public double getLength()
Returns the length of the range.- Returns:
- The length.
-
getCentralValue
public double getCentralValue()
Returns the central value for the range.- Returns:
- The central value.
-
contains
public boolean contains(double value)
Returnstrue
if the range contains the specified value andfalse
otherwise.- Parameters:
value
- the value to lookup.- Returns:
true
if the range contains the specified value.
-
intersects
public boolean intersects(double b0, double b1)
Returnstrue
if the range intersects with the specified range, andfalse
otherwise.- Parameters:
b0
- the lower bound (should be <= b1).b1
- the upper bound (should be >= b0).- Returns:
- A boolean.
-
intersects
public boolean intersects(Range range)
Returnstrue
if the range intersects with the specified range, andfalse
otherwise.- Parameters:
range
- another range (null
not permitted).- Returns:
- A boolean.
-
constrain
public double constrain(double value)
Returns the value within the range that is closest to the specified value.- Parameters:
value
- the value.- Returns:
- The constrained value.
-
combine
public static Range combine(Range range1, Range range2)
Creates a new range by combining two existing ranges.Note that:
- either range can be
null
, in which case the other range is returned; - if both ranges are
null
the return value isnull
.
- Parameters:
range1
- the first range (null
permitted).range2
- the second range (null
permitted).- Returns:
- A new range (possibly
null
).
- either range can be
-
combineIgnoringNaN
public static Range combineIgnoringNaN(Range range1, Range range2)
Returns a new range that spans bothrange1
andrange2
. This method has a special handling to ignore Double.NaN values.- Parameters:
range1
- the first range (null
permitted).range2
- the second range (null
permitted).- Returns:
- A new range (possibly
null
).
-
min
private static double min(double d1, double d2)
Returns the minimum value. If either value is NaN, the other value is returned. If both are NaN, NaN is returned.- Parameters:
d1
- value 1.d2
- value 2.- Returns:
- The minimum of the two values.
-
max
private static double max(double d1, double d2)
-
expandToInclude
public static Range expandToInclude(Range range, double value)
Returns a range that includes all the values in the specifiedrange
AND the specifiedvalue
.- Parameters:
range
- the range (null
permitted).value
- the value that must be included.- Returns:
- A range.
-
expand
public static Range expand(Range range, double lowerMargin, double upperMargin)
Creates a new range by adding margins to an existing range.- Parameters:
range
- the range (null
not permitted).lowerMargin
- the lower margin (expressed as a percentage of the range length).upperMargin
- the upper margin (expressed as a percentage of the range length).- Returns:
- The expanded range.
-
shift
public static Range shift(Range base, double delta)
Shifts the range by the specified amount.- Parameters:
base
- the base range (null
not permitted).delta
- the shift amount.- Returns:
- A new range.
-
shift
public static Range shift(Range base, double delta, boolean allowZeroCrossing)
Shifts the range by the specified amount.- Parameters:
base
- the base range (null
not permitted).delta
- the shift amount.allowZeroCrossing
- a flag that determines whether or not the bounds of the range are allowed to cross zero after adjustment.- Returns:
- A new range.
-
shiftWithNoZeroCrossing
private static double shiftWithNoZeroCrossing(double value, double delta)
Returns the givenvalue
adjusted bydelta
but with a check to prevent the result from crossing0.0
.- Parameters:
value
- the value.delta
- the adjustment.- Returns:
- The adjusted value.
-
scale
public static Range scale(Range base, double factor)
Scales the range by the specified factor.- Parameters:
base
- the base range (null
not permitted).factor
- the scaling factor (must be non-negative).- Returns:
- A new range.
-
equals
public boolean equals(java.lang.Object obj)
Tests this object for equality with an arbitrary object.- Overrides:
equals
in classjava.lang.Object
- Parameters:
obj
- the object to test against (null
permitted).- Returns:
- A boolean.
-
isNaNRange
public boolean isNaNRange()
Returnstrue
if both the lower and upper bounds areDouble.NaN
, andfalse
otherwise.- Returns:
- A boolean.
-
hashCode
public int hashCode()
Returns a hash code.- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- A hash code.
-
toString
public java.lang.String toString()
Returns a string representation of this Range.- Overrides:
toString
in classjava.lang.Object
- Returns:
- A String "Range[lower,upper]" where lower=lower range and upper=upper range.
-
-