home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.io.Serializable;
-
- public class Polygon implements Shape, Serializable {
- public int npoints;
- public int[] xpoints = new int[4];
- public int[] ypoints = new int[4];
- protected Rectangle bounds;
- private static final long serialVersionUID = -6460061437900069969L;
-
- public Polygon() {
- }
-
- public Polygon(int[] var1, int[] var2, int var3) {
- this.npoints = var3;
- this.xpoints = new int[var3];
- this.ypoints = new int[var3];
- System.arraycopy(var1, 0, this.xpoints, 0, var3);
- System.arraycopy(var2, 0, this.ypoints, 0, var3);
- }
-
- public void translate(int var1, int var2) {
- for(int var3 = 0; var3 < this.npoints; ++var3) {
- int[] var10000 = this.xpoints;
- var10000[var3] += var1;
- var10000 = this.ypoints;
- var10000[var3] += var2;
- }
-
- if (this.bounds != null) {
- this.bounds.translate(var1, var2);
- }
-
- }
-
- void calculateBounds(int[] var1, int[] var2, int var3) {
- int var4 = Integer.MAX_VALUE;
- int var5 = Integer.MAX_VALUE;
- int var6 = Integer.MIN_VALUE;
- int var7 = Integer.MIN_VALUE;
-
- for(int var8 = 0; var8 < var3; ++var8) {
- int var9 = var1[var8];
- var4 = Math.min(var4, var9);
- var6 = Math.max(var6, var9);
- int var10 = var2[var8];
- var5 = Math.min(var5, var10);
- var7 = Math.max(var7, var10);
- }
-
- this.bounds = new Rectangle(var4, var5, var6 - var4, var7 - var5);
- }
-
- void updateBounds(int var1, int var2) {
- this.bounds.x = Math.min(this.bounds.x, var1);
- this.bounds.width = Math.max(this.bounds.width, var1 - this.bounds.x);
- this.bounds.y = Math.min(this.bounds.y, var2);
- this.bounds.height = Math.max(this.bounds.height, var2 - this.bounds.y);
- }
-
- public void addPoint(int var1, int var2) {
- if (this.npoints == this.xpoints.length) {
- int[] var3 = new int[this.npoints * 2];
- System.arraycopy(this.xpoints, 0, var3, 0, this.npoints);
- this.xpoints = var3;
- var3 = new int[this.npoints * 2];
- System.arraycopy(this.ypoints, 0, var3, 0, this.npoints);
- this.ypoints = var3;
- }
-
- this.xpoints[this.npoints] = var1;
- this.ypoints[this.npoints] = var2;
- ++this.npoints;
- if (this.bounds != null) {
- this.updateBounds(var1, var2);
- }
-
- }
-
- public Rectangle getBounds() {
- return this.getBoundingBox();
- }
-
- /** @deprecated */
- public Rectangle getBoundingBox() {
- if (this.bounds == null) {
- this.calculateBounds(this.xpoints, this.ypoints, this.npoints);
- }
-
- return this.bounds;
- }
-
- public boolean contains(Point var1) {
- return this.contains(var1.x, var1.y);
- }
-
- public boolean contains(int var1, int var2) {
- return this.inside(var1, var2);
- }
-
- /** @deprecated */
- public boolean inside(int var1, int var2) {
- if (!this.getBoundingBox().inside(var1, var2)) {
- return false;
- } else {
- int var3 = 0;
- int var4 = 0;
-
- int var5;
- for(var5 = 0; var5 < this.npoints && this.ypoints[var5] == var2; ++var5) {
- }
-
- for(int var6 = 0; var6 < this.npoints; ++var6) {
- int var7 = (var5 + 1) % this.npoints;
- int var8 = this.xpoints[var7] - this.xpoints[var5];
- int var9 = this.ypoints[var7] - this.ypoints[var5];
- if (var9 != 0) {
- int var10 = var1 - this.xpoints[var5];
- int var11 = var2 - this.ypoints[var5];
- if (this.ypoints[var7] == var2 && this.xpoints[var7] >= var1) {
- var4 = this.ypoints[var5];
- }
-
- if (this.ypoints[var5] == var2 && this.xpoints[var5] >= var1 && var4 > var2 != this.ypoints[var7] > var2) {
- --var3;
- }
-
- float var12 = (float)var11 / (float)var9;
- if ((double)var12 >= (double)0.0F && (double)var12 <= (double)1.0F && var12 * (float)var8 >= (float)var10) {
- ++var3;
- }
- }
-
- var5 = var7;
- }
-
- if (var3 % 2 == 0) {
- return false;
- } else {
- return true;
- }
- }
- }
- }
-