summaryrefslogtreecommitdiffstats
path: root/src/nativewindow
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2013-06-30 03:52:16 +0200
committerSven Gothel <[email protected]>2013-06-30 03:52:16 +0200
commit1c717a781702b0decb0c4da71a9dadc2a8255d5b (patch)
tree34ec8f1e183f8fff339c5bc8e6bb2e27e195a635 /src/nativewindow
parent95d3c4020f9871f3520e29d314c8ae6b3b42f9eb (diff)
Add Comparable<?>: Point*, Dimension*, Rectangle*, SurfaceSize* and MonitorMode* ; Sort List<MonitorMode> in descending order to be well determined.
Add Comparable<?>: Point*, Dimension*, Rectangle*, SurfaceSize* and MonitorMode*: - Compare square values - See API doc for order of special semantics (flags, rotation, ..) Sort List<MonitorMode> in descending order to be well determined: - Removes order by native mode id, give user a reliable natural order.
Diffstat (limited to 'src/nativewindow')
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/util/Dimension.java13
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/util/DimensionImmutable.java11
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/util/Point.java13
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/util/PointImmutable.java11
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/util/Rectangle.java25
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/util/RectangleImmutable.java11
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/util/SurfaceSize.java26
7 files changed, 105 insertions, 5 deletions
diff --git a/src/nativewindow/classes/javax/media/nativewindow/util/Dimension.java b/src/nativewindow/classes/javax/media/nativewindow/util/Dimension.java
index 4fae98f08..b52414146 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/util/Dimension.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/util/Dimension.java
@@ -85,6 +85,19 @@ public class Dimension implements Cloneable, DimensionImmutable {
}
@Override
+ public int compareTo(final DimensionImmutable d) {
+ final int tsq = width*height;
+ final int xsq = d.getWidth()*d.getHeight();
+
+ if(tsq > xsq) {
+ return 1;
+ } else if(tsq < xsq) {
+ return -1;
+ }
+ return 0;
+ }
+
+ @Override
public boolean equals(Object obj) {
if(this == obj) { return true; }
if (obj instanceof Dimension) {
diff --git a/src/nativewindow/classes/javax/media/nativewindow/util/DimensionImmutable.java b/src/nativewindow/classes/javax/media/nativewindow/util/DimensionImmutable.java
index d14e94c10..22bd3f48b 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/util/DimensionImmutable.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/util/DimensionImmutable.java
@@ -37,13 +37,22 @@ import com.jogamp.common.type.WriteCloneable;
* <li><code>height</code></li>
* </ul>
*/
-public interface DimensionImmutable extends WriteCloneable {
+public interface DimensionImmutable extends WriteCloneable, Comparable<DimensionImmutable> {
int getHeight();
int getWidth();
/**
+ * <p>
+ * Compares square of size.
+ * </p>
+ * {@inheritDoc}
+ */
+ @Override
+ public int compareTo(final DimensionImmutable d);
+
+ /**
* Checks whether two dimensions objects are equal. Two instances
* of <code>DimensionReadOnly</code> are equal if two components
* <code>height</code> and <code>width</code> are equal.
diff --git a/src/nativewindow/classes/javax/media/nativewindow/util/Point.java b/src/nativewindow/classes/javax/media/nativewindow/util/Point.java
index 8e6caf72b..a30d3030e 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/util/Point.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/util/Point.java
@@ -55,6 +55,19 @@ public class Point implements Cloneable, PointImmutable {
}
@Override
+ public int compareTo(final PointImmutable d) {
+ final int sq = x*y;
+ final int xsq = d.getX()*d.getY();
+
+ if(sq > xsq) {
+ return 1;
+ } else if(sq < xsq) {
+ return -1;
+ }
+ return 0;
+ }
+
+ @Override
public boolean equals(Object obj) {
if(this == obj) { return true; }
if (obj instanceof Point) {
diff --git a/src/nativewindow/classes/javax/media/nativewindow/util/PointImmutable.java b/src/nativewindow/classes/javax/media/nativewindow/util/PointImmutable.java
index d7eb0e7b4..b00329bb5 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/util/PointImmutable.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/util/PointImmutable.java
@@ -32,13 +32,22 @@ package javax.media.nativewindow.util;
import com.jogamp.common.type.WriteCloneable;
/** Immutable Point interface */
-public interface PointImmutable extends WriteCloneable {
+public interface PointImmutable extends WriteCloneable, Comparable<PointImmutable> {
int getX();
int getY();
/**
+ * <p>
+ * Compares the square of the position.
+ * </p>
+ * {@inheritDoc}
+ */
+ @Override
+ public int compareTo(final PointImmutable d);
+
+ /**
* Checks whether two points objects are equal. Two instances
* of <code>PointReadOnly</code> are equal if the two components
* <code>y</code> and <code>x</code> are equal.
diff --git a/src/nativewindow/classes/javax/media/nativewindow/util/Rectangle.java b/src/nativewindow/classes/javax/media/nativewindow/util/Rectangle.java
index 8e6fc8e36..7576f4ec7 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/util/Rectangle.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/util/Rectangle.java
@@ -143,6 +143,31 @@ public class Rectangle implements Cloneable, RectangleImmutable {
}
@Override
+ public int compareTo(final RectangleImmutable d) {
+ {
+ final int sq = width*height;
+ final int xsq = d.getWidth()*d.getHeight();
+
+ if(sq > xsq) {
+ return 1;
+ } else if(sq < xsq) {
+ return -1;
+ }
+ }
+ {
+ final int sq = x*y;
+ final int xsq = d.getX()*d.getY();
+
+ if(sq > xsq) {
+ return 1;
+ } else if(sq < xsq) {
+ return -1;
+ }
+ }
+ return 0;
+ }
+
+ @Override
public boolean equals(Object obj) {
if(this == obj) { return true; }
if (obj instanceof Rectangle) {
diff --git a/src/nativewindow/classes/javax/media/nativewindow/util/RectangleImmutable.java b/src/nativewindow/classes/javax/media/nativewindow/util/RectangleImmutable.java
index 7531989de..440d9e000 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/util/RectangleImmutable.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/util/RectangleImmutable.java
@@ -31,7 +31,7 @@ package javax.media.nativewindow.util;
import com.jogamp.common.type.WriteCloneable;
/** Immutable Rectangle interface */
-public interface RectangleImmutable extends WriteCloneable {
+public interface RectangleImmutable extends WriteCloneable, Comparable<RectangleImmutable> {
int getHeight();
@@ -62,6 +62,15 @@ public interface RectangleImmutable extends WriteCloneable {
float coverage(RectangleImmutable r);
/**
+ * <p>
+ * Compares square of size 1st, if equal the square of position.
+ * </p>
+ * {@inheritDoc}
+ */
+ @Override
+ public int compareTo(final RectangleImmutable d);
+
+ /**
* Checks whether two rect objects are equal. Two instances
* of <code>Rectangle</code> are equal if the four integer values
* of the fields <code>y</code>, <code>x</code>,
diff --git a/src/nativewindow/classes/javax/media/nativewindow/util/SurfaceSize.java b/src/nativewindow/classes/javax/media/nativewindow/util/SurfaceSize.java
index d7e451af8..3084816a5 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/util/SurfaceSize.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/util/SurfaceSize.java
@@ -29,13 +29,14 @@
package javax.media.nativewindow.util;
-/** Immutable SurfaceSize Class, consisting of it's read only components:<br>
+/**
+ * Immutable SurfaceSize Class, consisting of it's read only components:<br>
* <ul>
* <li>{@link javax.media.nativewindow.util.DimensionImmutable} size in pixels</li>
* <li><code>bits per pixel</code></li>
* </ul>
*/
-public class SurfaceSize {
+public class SurfaceSize implements Comparable<SurfaceSize> {
final DimensionImmutable resolution;
final int bitsPerPixel;
@@ -60,6 +61,27 @@ public class SurfaceSize {
}
/**
+ * <p>
+ * Compares {@link DimensionImmutable#compareTo(DimensionImmutable) resolution} 1st, if equal the bitsPerPixel.
+ * </p>
+ * {@inheritDoc}
+ */
+ @Override
+ public int compareTo(final SurfaceSize ssz) {
+ final int rres = resolution.compareTo(ssz.getResolution());
+ if( 0 != rres ) {
+ return rres;
+ }
+ final int xbpp = ssz.getBitsPerPixel();
+ if(bitsPerPixel > xbpp) {
+ return 1;
+ } else if(bitsPerPixel < xbpp) {
+ return -1;
+ }
+ return 0;
+ }
+
+ /**
* Checks whether two size objects are equal. Two instances
* of <code>SurfaceSize</code> are equal if the two components
* <code>resolution</code> and <code>bitsPerPixel</code>