home *** CD-ROM | disk | FTP | other *** search
- package netscape.application;
-
- import netscape.util.ClassInfo;
- import netscape.util.Codable;
- import netscape.util.CodingException;
- import netscape.util.Decoder;
- import netscape.util.Encoder;
- import netscape.util.Vector;
-
- public class Rect implements Codable {
- // $FF: renamed from: x int
- public int field_0;
- // $FF: renamed from: y int
- public int field_1;
- public int width;
- public int height;
- private static Vector _rectCache = new Vector();
- private static boolean _cacheRects = true;
- static final String X_KEY = "x";
- static final String Y_KEY = "y";
- static final String WIDTH_KEY = "width";
- static final String HEIGHT_KEY = "height";
-
- public static boolean contains(int var0, int var1, int var2, int var3, int var4, int var5) {
- return var4 >= var0 && var4 < var0 + var2 && var5 >= var1 && var5 < var1 + var3;
- }
-
- public static Rect rectFromIntersection(Rect var0, Rect var1) {
- Rect var2 = new Rect(var0);
- var2.intersectWith(var1);
- return var2;
- }
-
- public static Rect rectFromUnion(Rect var0, Rect var1) {
- Rect var2 = new Rect(var0);
- var2.unionWith(var1);
- return var2;
- }
-
- public Rect() {
- }
-
- public Rect(int var1, int var2, int var3, int var4) {
- this.field_0 = var1;
- this.field_1 = var2;
- this.width = var3;
- this.height = var4;
- }
-
- public Rect(Rect var1) {
- this.field_0 = var1.field_0;
- this.field_1 = var1.field_1;
- this.width = var1.width;
- this.height = var1.height;
- }
-
- public String toString() {
- return "(" + this.field_0 + ", " + this.field_1 + ", " + this.width + ", " + this.height + ")";
- }
-
- public void setBounds(int var1, int var2, int var3, int var4) {
- this.field_0 = var1;
- this.field_1 = var2;
- this.width = var3 < 0 ? 0 : var3;
- this.height = var4 < 0 ? 0 : var4;
- }
-
- public void setBounds(Rect var1) {
- if (var1 == null) {
- this.setBounds(0, 0, 0, 0);
- } else {
- this.setBounds(var1.field_0, var1.field_1, var1.width, var1.height);
- }
- }
-
- public void setCoordinates(int var1, int var2, int var3, int var4) {
- this.setBounds(var1, var2, var3 - var1, var4 - var2);
- }
-
- public void moveTo(int var1, int var2) {
- this.field_0 = var1;
- this.field_1 = var2;
- }
-
- public void moveBy(int var1, int var2) {
- this.field_0 += var1;
- this.field_1 += var2;
- }
-
- public void sizeTo(int var1, int var2) {
- this.width = var1 < 0 ? 0 : var1;
- this.height = var2 < 0 ? 0 : var2;
- }
-
- public void sizeBy(int var1, int var2) {
- this.width += var1;
- if (this.width < 0) {
- this.width = 0;
- }
-
- this.height += var2;
- if (this.height < 0) {
- this.height = 0;
- }
-
- }
-
- public void growBy(int var1, int var2) {
- this.field_0 -= var1;
- this.field_1 -= var2;
- this.width += 2 * var1;
- this.height += 2 * var2;
- if (this.width < 0) {
- this.width = 0;
- }
-
- if (this.height < 0) {
- this.height = 0;
- }
-
- }
-
- public int maxX() {
- return this.field_0 + this.width;
- }
-
- public int maxY() {
- return this.field_1 + this.height;
- }
-
- public int midX() {
- return this.field_0 + this.width / 2;
- }
-
- public int midY() {
- return this.field_1 + this.height / 2;
- }
-
- public boolean equals(Object var1) {
- if (!(var1 instanceof Rect)) {
- return false;
- } else {
- Rect var2 = (Rect)var1;
- return var2.field_0 == this.field_0 && var2.field_1 == this.field_1 && var2.width == this.width && var2.height == this.height;
- }
- }
-
- public int hashCode() {
- return this.field_0 ^ this.field_1 ^ this.width ^ this.height;
- }
-
- public boolean isEmpty() {
- return this.width == 0 || this.height == 0;
- }
-
- public boolean contains(int var1, int var2) {
- return var1 >= this.field_0 && var1 < this.field_0 + this.width && var2 >= this.field_1 && var2 < this.field_1 + this.height;
- }
-
- public boolean contains(Point var1) {
- return this.contains(var1.x, var1.y);
- }
-
- public boolean contains(Rect var1) {
- if (var1 == null) {
- return false;
- } else {
- return var1.field_0 >= this.field_0 && var1.field_0 + var1.width <= this.field_0 + this.width && var1.field_1 >= this.field_1 && var1.field_1 + var1.height <= this.field_1 + this.height;
- }
- }
-
- public boolean intersects(int var1, int var2, int var3, int var4) {
- if (this.field_0 < var1 + var3 && this.field_0 + this.width > var1 && this.field_1 < var2 + var4 && this.field_1 + this.height > var2) {
- return this.width != 0 && this.height != 0 && var3 != 0 && var4 != 0;
- } else {
- return false;
- }
- }
-
- public boolean intersects(Rect var1) {
- return var1 == null ? false : this.intersects(var1.field_0, var1.field_1, var1.width, var1.height);
- }
-
- public void intersectWith(int var1, int var2, int var3, int var4) {
- int var5 = var1;
- int var6 = var2;
- int var7 = var1 + var3;
- int var8 = var2 + var4;
- int var9 = this.field_0 + this.width;
- int var10 = this.field_1 + this.height;
- if (this.field_0 < var7 && var9 > var1) {
- if (this.field_0 > var1 && this.field_0 < var7) {
- var5 = this.field_0;
- if (var9 < var7) {
- var7 = var9;
- }
- } else if (var9 > var1 && var9 < var7) {
- var7 = var9;
- }
- } else {
- var7 = 0;
- var5 = 0;
- }
-
- if (this.field_1 < var8 && var10 > var2) {
- if (this.field_1 > var2 && this.field_1 < var8) {
- var6 = this.field_1;
- if (var10 < var8) {
- var8 = var10;
- }
- } else if (var10 > var2 && var10 < var8) {
- var8 = var10;
- }
- } else {
- var8 = 0;
- var6 = 0;
- }
-
- this.setCoordinates(var5, var6, var7, var8);
- }
-
- public void intersectWith(Rect var1) {
- this.intersectWith(var1.field_0, var1.field_1, var1.width, var1.height);
- }
-
- public Rect intersectionRect(Rect var1) {
- int var2 = var1.field_0;
- int var3 = var1.field_1;
- int var4 = var1.field_0 + var1.width;
- int var5 = var1.field_1 + var1.height;
- int var6 = this.field_0 + this.width;
- int var7 = this.field_1 + this.height;
- if (this.field_0 < var4 && var6 > var2 && this.field_1 < var5 && var7 > var3) {
- if (this.field_0 > var2 && this.field_0 < var4) {
- var2 = this.field_0;
- if (var6 < var4) {
- var4 = var6;
- }
- } else if (var6 > var2 && var6 < var4) {
- var4 = var6;
- }
-
- if (this.field_1 > var3 && this.field_1 < var5) {
- var3 = this.field_1;
- if (var7 < var5) {
- var5 = var7;
- }
- } else if (var7 > var3 && var7 < var5) {
- var5 = var7;
- }
-
- return new Rect(var2, var3, var4 - var2, var5 - var3);
- } else {
- return new Rect();
- }
- }
-
- public void unionWith(int var1, int var2, int var3, int var4) {
- int var5 = this.field_0 < var1 ? this.field_0 : var1;
- int var7 = var1 + var3;
- if (this.field_0 + this.width > var7) {
- var7 = this.field_0 + this.width;
- }
-
- int var6 = this.field_1 < var2 ? this.field_1 : var2;
- int var8 = var2 + var4;
- if (this.field_1 + this.height > var8) {
- var8 = this.field_1 + this.height;
- }
-
- this.setCoordinates(var5, var6, var7, var8);
- }
-
- public void unionWith(Rect var1) {
- if (var1 != null) {
- this.unionWith(var1.field_0, var1.field_1, var1.width, var1.height);
- }
- }
-
- public Rect unionRect(Rect var1) {
- if (var1 == null) {
- return new Rect(this);
- } else {
- int var4 = this.field_0 < var1.field_0 ? this.field_0 : var1.field_0;
- int var6 = var1.field_0 + var1.width;
- int var2 = this.field_0 + this.width;
- if (var2 > var6) {
- var6 = var2;
- }
-
- int var5 = this.field_1 < var1.field_1 ? this.field_1 : var1.field_1;
- int var7 = var1.field_1 + var1.height;
- int var3 = this.field_1 + this.height;
- if (var3 > var7) {
- var7 = var3;
- }
-
- return new Rect(var4, var5, var6 - var4, var7 - var5);
- }
- }
-
- void filterEmptyRects(Vector var1) {
- int var3 = var1.count();
-
- while(var3-- > 0) {
- Rect var2 = (Rect)var1.elementAt(var3);
- if (var2.width == 0 || var2.height == 0) {
- var1.removeElementAt(var3);
- }
- }
-
- }
-
- public void computeDisunionRects(Rect var1, Vector var2) {
- if (var1 != null && this.intersects(var1) && var2 != null) {
- if (!var1.contains(this)) {
- if (this.contains(var1)) {
- var2.addElement(newRect(this.field_0, this.field_1, var1.field_0 - this.field_0, this.height));
- var2.addElement(newRect(var1.field_0, this.field_1, var1.width, var1.field_1 - this.field_1));
- var2.addElement(newRect(var1.field_0, var1.maxY(), var1.width, this.maxY() - var1.maxY()));
- var2.addElement(newRect(var1.maxX(), this.field_1, this.maxX() - var1.maxX(), this.height));
- this.filterEmptyRects(var2);
- } else if (var1.field_0 <= this.field_0 && var1.field_1 <= this.field_1) {
- if (var1.maxX() > this.maxX()) {
- var2.addElement(newRect(this.field_0, var1.maxY(), this.width, this.maxY() - var1.maxY()));
- } else if (var1.maxY() > this.maxY()) {
- var2.addElement(newRect(var1.maxX(), this.field_1, this.maxX() - var1.maxX(), this.height));
- } else {
- var2.addElement(newRect(var1.maxX(), this.field_1, this.maxX() - var1.maxX(), var1.maxY() - this.field_1));
- var2.addElement(newRect(this.field_0, var1.maxY(), this.width, this.maxY() - var1.maxY()));
- }
-
- this.filterEmptyRects(var2);
- } else if (var1.field_0 <= this.field_0 && var1.maxY() >= this.maxY()) {
- if (var1.maxX() > this.maxX()) {
- var2.addElement(newRect(this.field_0, this.field_1, this.width, var1.field_1 - this.field_1));
- } else {
- var2.addElement(newRect(this.field_0, this.field_1, this.width, var1.field_1 - this.field_1));
- var2.addElement(newRect(var1.maxX(), var1.field_1, this.maxX() - var1.maxX(), this.maxY() - var1.field_1));
- }
-
- this.filterEmptyRects(var2);
- } else if (var1.field_0 <= this.field_0) {
- if (var1.maxX() >= this.maxX()) {
- var2.addElement(newRect(this.field_0, this.field_1, this.width, var1.field_1 - this.field_1));
- var2.addElement(newRect(this.field_0, var1.maxY(), this.width, this.maxY() - var1.maxY()));
- } else {
- var2.addElement(newRect(this.field_0, this.field_1, this.width, var1.field_1 - this.field_1));
- var2.addElement(newRect(var1.maxX(), var1.field_1, this.maxX() - var1.maxX(), var1.height));
- var2.addElement(newRect(this.field_0, var1.maxY(), this.width, this.maxY() - var1.maxY()));
- }
-
- this.filterEmptyRects(var2);
- } else if (var1.field_0 <= this.maxX() && var1.maxX() > this.maxX()) {
- if (var1.field_1 <= this.field_1 && var1.maxY() > this.maxY()) {
- var2.addElement(newRect(this.field_0, this.field_1, var1.field_0 - this.field_0, this.height));
- } else if (var1.field_1 <= this.field_1) {
- var2.addElement(newRect(this.field_0, this.field_1, var1.field_0 - this.field_0, var1.maxY() - this.field_1));
- var2.addElement(newRect(this.field_0, var1.maxY(), this.width, this.maxY() - var1.maxY()));
- } else if (var1.maxY() > this.maxY()) {
- var2.addElement(newRect(this.field_0, this.field_1, this.width, var1.field_1 - this.field_1));
- var2.addElement(newRect(this.field_0, var1.field_1, var1.field_0 - this.field_0, this.maxY() - var1.field_1));
- } else {
- var2.addElement(newRect(this.field_0, this.field_1, this.width, var1.field_1 - this.field_1));
- var2.addElement(newRect(this.field_0, var1.field_1, var1.field_0 - this.field_0, var1.height));
- var2.addElement(newRect(this.field_0, var1.maxY(), this.width, this.maxY() - var1.maxY()));
- }
-
- this.filterEmptyRects(var2);
- } else if (var1.field_0 >= this.field_0 && var1.maxX() <= this.maxX()) {
- if (var1.field_1 <= this.field_1 && var1.maxY() > this.maxY()) {
- var2.addElement(newRect(this.field_0, this.field_1, var1.field_0 - this.field_0, this.height));
- var2.addElement(newRect(var1.maxX(), this.field_1, this.maxX() - var1.maxX(), this.height));
- } else if (var1.field_1 <= this.field_1) {
- var2.addElement(newRect(this.field_0, this.field_1, var1.field_0 - this.field_0, this.height));
- var2.addElement(newRect(var1.field_0, var1.maxY(), var1.width, this.maxY() - var1.maxY()));
- var2.addElement(newRect(var1.maxX(), this.field_1, this.maxX() - var1.maxX(), this.height));
- } else {
- var2.addElement(newRect(this.field_0, this.field_1, var1.field_0 - this.field_0, this.height));
- var2.addElement(newRect(var1.field_0, this.field_1, var1.width, var1.field_1 - this.field_1));
- var2.addElement(newRect(var1.maxX(), this.field_1, this.maxX() - var1.maxX(), this.height));
- }
-
- this.filterEmptyRects(var2);
- }
- }
- }
- }
-
- public void describeClassInfo(ClassInfo var1) {
- var1.addClass("netscape.application.Rect", 1);
- var1.addField("x", (byte)8);
- var1.addField("y", (byte)8);
- var1.addField("width", (byte)8);
- var1.addField("height", (byte)8);
- }
-
- public void encode(Encoder var1) throws CodingException {
- var1.encodeInt("x", this.field_0);
- var1.encodeInt("y", this.field_1);
- var1.encodeInt("width", this.width);
- var1.encodeInt("height", this.height);
- }
-
- public void decode(Decoder var1) throws CodingException {
- this.field_0 = var1.decodeInt("x");
- this.field_1 = var1.decodeInt("y");
- this.width = var1.decodeInt("width");
- this.height = var1.decodeInt("height");
- }
-
- public void finishDecoding() throws CodingException {
- }
-
- static Rect newRect(int var0, int var1, int var2, int var3) {
- Vector var5 = _rectCache;
- synchronized(var5){}
-
- Rect var4;
- label47: {
- Rect var7;
- try {
- if (_cacheRects && !_rectCache.isEmpty()) {
- var4 = (Rect)_rectCache.removeLastElement();
- break label47;
- }
-
- var7 = new Rect(var0, var1, var2, var3);
- } catch (Throwable var9) {
- throw var9;
- }
-
- return var7;
- }
-
- var4.setBounds(var0, var1, var2, var3);
- return var4;
- }
-
- static Rect newRect(Rect var0) {
- return var0 == null ? newRect(0, 0, 0, 0) : newRect(var0.field_0, var0.field_1, var0.width, var0.height);
- }
-
- static Rect newRect() {
- return newRect(0, 0, 0, 0);
- }
-
- static void returnRect(Rect var0) {
- if (_cacheRects) {
- Vector var1 = _rectCache;
- synchronized(var1){}
-
- try {
- if (_rectCache.count() < 50) {
- _rectCache.addElement(var0);
- }
- } catch (Throwable var3) {
- throw var3;
- }
-
- }
- }
-
- static void returnRects(Vector var0) {
- if (var0 != null && _cacheRects) {
- int var1 = var0.count();
-
- while(var1-- > 0) {
- returnRect((Rect)var0.elementAt(var1));
- }
-
- var0.removeAllElements();
- }
- }
-
- static void setShouldCacheRects(boolean var0) {
- Vector var1 = _rectCache;
- synchronized(var1){}
-
- try {
- _cacheRects = var0;
- if (!_cacheRects) {
- _rectCache.removeAllElements();
- }
- } catch (Throwable var3) {
- throw var3;
- }
-
- }
- }
-