X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fjpeg%2Fdrew%2FRational.java;fp=tim%2Fprune%2Fjpeg%2Fdrew%2FRational.java;h=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hp=8395898266677c16593604c8a04a0826db490225;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465;p=GpsPrune.git
diff --git a/tim/prune/jpeg/drew/Rational.java b/tim/prune/jpeg/drew/Rational.java
deleted file mode 100644
index 8395898..0000000
--- a/tim/prune/jpeg/drew/Rational.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package tim.prune.jpeg.drew;
-
-/**
- * Immutable class for holding a rational number without loss of precision.
- * Based on Drew Noakes' Metadata extractor at https://drewnoakes.com
- */
-public class Rational
-{
- /** Holds the numerator */
- private final long _numerator;
-
- /** Holds the denominator */
- private final long _denominator;
-
- /**
- * Creates a new (immutable) instance of Rational.
- */
- public Rational(long numerator, long denominator)
- {
- _numerator = numerator;
- _denominator = denominator;
- }
-
- /**
- * @return the value of the specified number as a double
.
- * This may involve rounding.
- */
- public double doubleValue()
- {
- if (_denominator == 0L) return 0.0;
- return (double)_numerator / (double)_denominator;
- }
-
- /**
- * Returns the value of the specified number as an int
.
- */
- public final int intValue()
- {
- return (int) longValue();
- }
-
- /**
- * Returns the value of the specified number as a long
.
- * This may involve rounding or truncation.
- * If the denominator is 0, returns 0 to avoid dividing by 0.
- */
- public final long longValue()
- {
- if (_denominator == 0L) return 0L;
- return _numerator / _denominator;
- }
-
- /** Returns the denominator */
- public final long getDenominator()
- {
- return _denominator;
- }
-
- /** Returns the numerator */
- public final long getNumerator()
- {
- return _numerator;
- }
-
- /**
- * @return the value of the specified number as a positive double
.
- * Prevents interpretation of 32 bit numbers as negative, and forces a positive answer.
- * Needed?
- */
- public double convertToPositiveValue()
- {
- if (_denominator == 0L) return 0.0;
- double numeratorDbl = _numerator;
- double denomDbl = _denominator;
- if (_numerator >= 0L) {
- // Numerator is positive (but maybe denominator isn't?)
- return numeratorDbl / denomDbl;
- }
- // Add 2^32 to negative doubles to make them positive
- final double correction = Math.pow(2.0, 32);
- numeratorDbl += correction;
- if (_denominator < 0L) {
- denomDbl += correction;
- }
- return numeratorDbl / denomDbl;
- }
-
- /**
- * Returns a string representation of the object of form numerator/denominator
.
- */
- @Override
- public String toString()
- {
- return "" + _numerator + "/" + _denominator;
- }
-
- /**
- * Compares two {@link Rational} instances, returning true if they are mathematically
- * equivalent.
- *
- * @param obj the {@link Rational} to compare this instance to.
- * @return true if instances are mathematically equivalent, otherwise false. Will also
- * give false if obj
is not an instance of {@link Rational}.
- */
- @Override
- public boolean equals( Object obj)
- {
- if (obj==null || !(obj instanceof Rational))
- return false;
- Rational that = (Rational) obj;
- return this.doubleValue() == that.doubleValue();
- }
-}