summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--platform/java/src/com/artifex/mupdf/fitz/Rect.java69
-rw-r--r--platform/java/src/com/artifex/mupdf/fitz/RectI.java32
2 files changed, 91 insertions, 10 deletions
diff --git a/platform/java/src/com/artifex/mupdf/fitz/Rect.java b/platform/java/src/com/artifex/mupdf/fitz/Rect.java
index 477c9565..3b8983a9 100644
--- a/platform/java/src/com/artifex/mupdf/fitz/Rect.java
+++ b/platform/java/src/com/artifex/mupdf/fitz/Rect.java
@@ -7,30 +7,41 @@ public class Rect
public float x1;
public float y1;
- public Rect(float x0, float y0, float x1, float y1) {
+ public Rect()
+ {
+ x0 = y0 = x1 = y1 = 0;
+ }
+
+ public Rect(float x0, float y0, float x1, float y1)
+ {
this.x0 = x0;
this.y0 = y0;
this.x1 = x1;
this.y1 = y1;
}
- public Rect(Rect r) {
+ public Rect(Rect r)
+ {
this(r.x0, r.y0, r.x1, r.y1);
}
- public Rect(RectI r) {
+ public Rect(RectI r)
+ {
this(r.x0, r.y0, r.x1, r.y1);
}
- public String toString() {
+ public String toString()
+ {
return "[" + x0 + " " + y0 + " " + x1 + " " + y1 + "]";
}
- public Rect transform(Matrix tm) {
+ public Rect transform(Matrix tm)
+ {
float ax0 = x0 * tm.a;
float ax1 = x1 * tm.a;
- if (ax0 > ax1) {
+ if (ax0 > ax1)
+ {
float t = ax0;
ax0 = ax1;
ax1 = t;
@@ -39,7 +50,8 @@ public class Rect
float cy0 = y0 * tm.c;
float cy1 = y1 * tm.c;
- if (cy0 > cy1) {
+ if (cy0 > cy1)
+ {
float t = cy0;
cy0 = cy1;
cy1 = t;
@@ -50,7 +62,8 @@ public class Rect
float bx0 = x0 * tm.b;
float bx1 = x1 * tm.b;
- if (bx0 > bx1) {
+ if (bx0 > bx1)
+ {
float t = bx0;
bx0 = bx1;
bx1 = t;
@@ -59,7 +72,8 @@ public class Rect
float dy0 = y0 * tm.d;
float dy1 = y1 * tm.d;
- if (dy0 > dy1) {
+ if (dy0 > dy1)
+ {
float t = dy0;
dy0 = dy1;
dy1 = t;
@@ -77,9 +91,44 @@ public class Rect
public boolean contains(float x, float y)
{
- if (x>=x0 && x<x1 && y>=y0 && y<y1)
+ if (x >= x0 && x < x1 && y >= y0 && y < y1)
+ return true;
+
+ return false;
+ }
+
+ public boolean contains(Rect r)
+ {
+ if (r.x0 >= x0 && r.x1 < x1 && r.y0 >= y0 && r.y1 < y1)
return true;
return false;
}
+
+ public boolean isEmpty()
+ {
+ return (x0 == x1 || y0 == y1);
+ }
+
+ public void union(Rect r)
+ {
+ if (isEmpty())
+ {
+ x0 = r.x0;
+ y0 = r.y0;
+ x1 = r.x1;
+ y1 = r.y1;
+ }
+ else
+ {
+ if (r.x0 < x0)
+ x0 = r.x0;
+ if (r.y0 < y0)
+ y0 = r.y0;
+ if (r.x1 > x1)
+ x1 = r.x1;
+ if (r.y1 > y1)
+ y1 = r.y1;
+ }
+ }
}
diff --git a/platform/java/src/com/artifex/mupdf/fitz/RectI.java b/platform/java/src/com/artifex/mupdf/fitz/RectI.java
index 8e46a3f2..2d5e8f70 100644
--- a/platform/java/src/com/artifex/mupdf/fitz/RectI.java
+++ b/platform/java/src/com/artifex/mupdf/fitz/RectI.java
@@ -7,6 +7,11 @@ public class RectI
public int x1;
public int y1;
+ public RectI()
+ {
+ x0 = y0 = x1 = y1 = 0;
+ }
+
public RectI(int x0, int y0, int x1, int y1) {
this.x0 = x0;
this.y0 = y0;
@@ -77,4 +82,31 @@ public class RectI
return this;
}
+
+ public boolean isEmpty()
+ {
+ return (x0 == x1 || y0 == y1);
+ }
+
+ public void union(RectI r)
+ {
+ if (isEmpty())
+ {
+ x0 = r.x0;
+ y0 = r.y0;
+ x1 = r.x1;
+ y1 = r.y1;
+ }
+ else
+ {
+ if (r.x0 < x0)
+ x0 = r.x0;
+ if (r.y0 < y0)
+ y0 = r.y0;
+ if (r.x1 > x1)
+ x1 = r.x1;
+ if (r.y1 > y1)
+ y1 = r.y1;
+ }
+ }
}