C# Class Gu.Wpf.Adorners.DoubleUtil

~Inspired~ by: http://referencesource.microsoft.com/#WindowsBase/Shared/MS/Internal/DoubleUtil.cs,ef2a956bcf846761
Show file Open project: JohanLarsson/Gu.Wpf.Adorners

Public Methods

Method Description
AreClose ( Point point1, Point point2 ) : bool

Compares two points for fuzzy equality. This function helps compensate for the fact that double values can acquire error when operated upon

AreClose ( Rect rect1, Rect rect2 ) : bool

Compares two rectangles for fuzzy equality. This function helps compensate for the fact that double values can acquire error when operated upon

AreClose ( Size size1, Size size2 ) : bool

Compares two Size instances for fuzzy equality. This function helps compensate for the fact that double values can acquire error when operated upon

AreClose ( System.Windows.Vector vector1, System.Windows.Vector vector2 ) : bool

Compares two Vector instances for fuzzy equality. This function helps compensate for the fact that double values can acquire error when operated upon

DoubleToInt ( double val ) : int
GreaterThan ( double value1, double value2 ) : bool

GreaterThan - Returns whether or not the first double is greater than the second double. That is, whether or not the first is strictly greater than *and* not within epsilon of the other number. Note that this epsilon is proportional to the numbers themselves to that AreClose survives scalar multiplication. Note, There are plenty of ways for this to return false even for numbers which are theoretically identical, so no code calling this should fail to work if this returns false. This is important enough to repeat: NB: NO CODE CALLING THIS FUNCTION SHOULD DEPEND ON ACCURATE RESULTS - this should be used for optimizations *only*.

GreaterThanOrClose ( double value1, double value2 ) : bool

GreaterThanOrClose - Returns whether or not the first double is greater than or close to the second double. That is, whether or not the first is strictly greater than or within epsilon of the other number. Note that this epsilon is proportional to the numbers themselves to that AreClose survives scalar multiplication. Note, There are plenty of ways for this to return false even for numbers which are theoretically identical, so no code calling this should fail to work if this returns false. This is important enough to repeat: NB: NO CODE CALLING THIS FUNCTION SHOULD DEPEND ON ACCURATE RESULTS - this should be used for optimizations *only*.

IsBetweenZeroAndOne ( double val ) : bool
IsOne ( double value ) : bool

IsOne - Returns whether or not the double is "close" to 1. Same as AreClose(double, 1), but this is faster.

IsZero ( double value ) : bool

IsZero - Returns whether or not the double is "close" to 0. Same as AreClose(double, 0), but this is faster.

LessThan ( double value1, double value2 ) : bool

LessThan - Returns whether or not the first double is less than the second double. That is, whether or not the first is strictly less than *and* not within epsilon of the other number. Note that this epsilon is proportional to the numbers themselves to that AreClose survives scalar multiplication. Note, There are plenty of ways for this to return false even for numbers which are theoretically identical, so no code calling this should fail to work if this returns false. This is important enough to repeat: NB: NO CODE CALLING THIS FUNCTION SHOULD DEPEND ON ACCURATE RESULTS - this should be used for optimizations *only*.

LessThanOrClose ( double value1, double value2 ) : bool

LessThanOrClose - Returns whether or not the first double is less than or close to the second double. That is, whether or not the first is strictly less than or within epsilon of the other number. Note that this epsilon is proportional to the numbers themselves to that AreClose survives scalar multiplication. Note, There are plenty of ways for this to return false even for numbers which are theoretically identical, so no code calling this should fail to work if this returns false. This is important enough to repeat: NB: NO CODE CALLING THIS FUNCTION SHOULD DEPEND ON ACCURATE RESULTS - this should be used for optimizations *only*.

RectHasNaN ( Rect r ) : bool

rectHasNaN - this returns true if this rect has X, Y , Height or Width as NaN.

Private Methods

Method Description
AreClose ( double value1, double value2 ) : bool

Method Details

AreClose() public static method

Compares two points for fuzzy equality. This function helps compensate for the fact that double values can acquire error when operated upon
public static AreClose ( Point point1, Point point2 ) : bool
point1 Point The first point to compare
point2 Point The second point to compare
return bool

AreClose() public static method

Compares two rectangles for fuzzy equality. This function helps compensate for the fact that double values can acquire error when operated upon
public static AreClose ( Rect rect1, Rect rect2 ) : bool
rect1 System.Windows.Rect The first rectangle to compare
rect2 System.Windows.Rect The second rectangle to compare
return bool

AreClose() public static method

Compares two Size instances for fuzzy equality. This function helps compensate for the fact that double values can acquire error when operated upon
public static AreClose ( Size size1, Size size2 ) : bool
size1 System.Windows.Size The first size to compare
size2 System.Windows.Size The second size to compare
return bool

AreClose() public static method

Compares two Vector instances for fuzzy equality. This function helps compensate for the fact that double values can acquire error when operated upon
public static AreClose ( System.Windows.Vector vector1, System.Windows.Vector vector2 ) : bool
vector1 System.Windows.Vector The first Vector to compare
vector2 System.Windows.Vector The second Vector to compare
return bool

DoubleToInt() public static method

public static DoubleToInt ( double val ) : int
val double
return int

GreaterThan() public static method

GreaterThan - Returns whether or not the first double is greater than the second double. That is, whether or not the first is strictly greater than *and* not within epsilon of the other number. Note that this epsilon is proportional to the numbers themselves to that AreClose survives scalar multiplication. Note, There are plenty of ways for this to return false even for numbers which are theoretically identical, so no code calling this should fail to work if this returns false. This is important enough to repeat: NB: NO CODE CALLING THIS FUNCTION SHOULD DEPEND ON ACCURATE RESULTS - this should be used for optimizations *only*.
public static GreaterThan ( double value1, double value2 ) : bool
value1 double The first double to compare.
value2 double The second double to compare.
return bool

GreaterThanOrClose() public static method

GreaterThanOrClose - Returns whether or not the first double is greater than or close to the second double. That is, whether or not the first is strictly greater than or within epsilon of the other number. Note that this epsilon is proportional to the numbers themselves to that AreClose survives scalar multiplication. Note, There are plenty of ways for this to return false even for numbers which are theoretically identical, so no code calling this should fail to work if this returns false. This is important enough to repeat: NB: NO CODE CALLING THIS FUNCTION SHOULD DEPEND ON ACCURATE RESULTS - this should be used for optimizations *only*.
public static GreaterThanOrClose ( double value1, double value2 ) : bool
value1 double The first double to compare.
value2 double The second double to compare.
return bool

IsBetweenZeroAndOne() public static method

public static IsBetweenZeroAndOne ( double val ) : bool
val double
return bool

IsOne() public static method

IsOne - Returns whether or not the double is "close" to 1. Same as AreClose(double, 1), but this is faster.
public static IsOne ( double value ) : bool
value double The double to compare to 1.
return bool

IsZero() public static method

IsZero - Returns whether or not the double is "close" to 0. Same as AreClose(double, 0), but this is faster.
public static IsZero ( double value ) : bool
value double The double to compare to 0.
return bool

LessThan() public static method

LessThan - Returns whether or not the first double is less than the second double. That is, whether or not the first is strictly less than *and* not within epsilon of the other number. Note that this epsilon is proportional to the numbers themselves to that AreClose survives scalar multiplication. Note, There are plenty of ways for this to return false even for numbers which are theoretically identical, so no code calling this should fail to work if this returns false. This is important enough to repeat: NB: NO CODE CALLING THIS FUNCTION SHOULD DEPEND ON ACCURATE RESULTS - this should be used for optimizations *only*.
public static LessThan ( double value1, double value2 ) : bool
value1 double The first double to compare.
value2 double The second double to compare.
return bool

LessThanOrClose() public static method

LessThanOrClose - Returns whether or not the first double is less than or close to the second double. That is, whether or not the first is strictly less than or within epsilon of the other number. Note that this epsilon is proportional to the numbers themselves to that AreClose survives scalar multiplication. Note, There are plenty of ways for this to return false even for numbers which are theoretically identical, so no code calling this should fail to work if this returns false. This is important enough to repeat: NB: NO CODE CALLING THIS FUNCTION SHOULD DEPEND ON ACCURATE RESULTS - this should be used for optimizations *only*.
public static LessThanOrClose ( double value1, double value2 ) : bool
value1 double The first double to compare.
value2 double The second double to compare.
return bool

RectHasNaN() public static method

rectHasNaN - this returns true if this rect has X, Y , Height or Width as NaN.
public static RectHasNaN ( Rect r ) : bool
r System.Windows.Rect The rectangle to test
return bool