home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 May / PCO_5_97.ISO / FilesBBS / OS2 / CSIME.ARJ / CSIME.ZIP / csime / Rect.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-02-09  |  3.4 KB  |  157 lines

  1. import java.awt.Graphics;
  2. import java.util.NoSuchElementException;
  3. import java.util.StringTokenizer;
  4.  
  5. public class Rect extends Area {
  6.    private static final int MINWIDTH = 10;
  7.    private static final int MINHEIGHT = 10;
  8.    private static final int TOP = 1;
  9.    private static final int BOTTOM = 2;
  10.    private static final int LEFT = 4;
  11.    private static final int RIGHT = 8;
  12.    private int _x1;
  13.    private int _y1;
  14.    private int _x2;
  15.    private int _y2;
  16.    private int _grabIndex;
  17.  
  18.    public Rect(int var1, int var2) {
  19.       this(var1, var2, var1, var2);
  20.    }
  21.  
  22.    public Rect(int var1, int var2, int var3, int var4) {
  23.       this._grabIndex = 10;
  24.       this._x1 = var1;
  25.       this._y1 = var2;
  26.       this._x2 = var3;
  27.       this._y2 = var4;
  28.    }
  29.  
  30.    public Rect(String var1) {
  31.       this._grabIndex = 10;
  32.       StringTokenizer var2 = new StringTokenizer(var1, ", \t\n\r");
  33.  
  34.       try {
  35.          this._x1 = Integer.parseInt(var2.nextToken());
  36.          this._y1 = Integer.parseInt(var2.nextToken());
  37.          this._x2 = Integer.parseInt(var2.nextToken());
  38.          this._y2 = Integer.parseInt(var2.nextToken());
  39.       } catch (NoSuchElementException var3) {
  40.       } catch (NumberFormatException var4) {
  41.       }
  42.    }
  43.  
  44.    private Rect() {
  45.       this._grabIndex = 10;
  46.    }
  47.  
  48.    public void resize(int var1, int var2) {
  49.       if ((this._grabIndex & 1) != 0) {
  50.          this._y1 = var2;
  51.       }
  52.  
  53.       if ((this._grabIndex & 2) != 0) {
  54.          this._y2 = var2;
  55.       }
  56.  
  57.       if ((this._grabIndex & 4) != 0) {
  58.          this._x1 = var1;
  59.       }
  60.  
  61.       if ((this._grabIndex & 8) != 0) {
  62.          this._x2 = var1;
  63.       }
  64.  
  65.    }
  66.  
  67.    public void translate(int var1, int var2) {
  68.       this._x1 += var1;
  69.       this._y1 += var2;
  70.       this._x2 += var1;
  71.       this._y2 += var2;
  72.    }
  73.  
  74.    public boolean isGrab(int var1, int var2) {
  75.       int var3 = (this._x1 + this._x2) / 2;
  76.       int var4 = (this._y1 + this._y2) / 2;
  77.       if (((Area)this).grabPoint(this._x1, this._y1, var1, var2)) {
  78.          this._grabIndex = 5;
  79.       } else if (((Area)this).grabPoint(var3, this._y1, var1, var2)) {
  80.          this._grabIndex = 1;
  81.       } else if (((Area)this).grabPoint(this._x2, this._y1, var1, var2)) {
  82.          this._grabIndex = 9;
  83.       } else if (((Area)this).grabPoint(this._x2, var4, var1, var2)) {
  84.          this._grabIndex = 8;
  85.       } else if (((Area)this).grabPoint(this._x2, this._y2, var1, var2)) {
  86.          this._grabIndex = 10;
  87.       } else if (((Area)this).grabPoint(var3, this._y2, var1, var2)) {
  88.          this._grabIndex = 2;
  89.       } else if (((Area)this).grabPoint(this._x1, this._y2, var1, var2)) {
  90.          this._grabIndex = 6;
  91.       } else {
  92.          if (!((Area)this).grabPoint(this._x1, var4, var1, var2)) {
  93.             return false;
  94.          }
  95.  
  96.          this._grabIndex = 4;
  97.       }
  98.  
  99.       return true;
  100.    }
  101.  
  102.    public boolean isSelect(int var1, int var2) {
  103.       return ((Area)this).grabLine(this._x1, this._y1, this._x2, this._y1, var1, var2) || ((Area)this).grabLine(this._x2, this._y1, this._x2, this._y2, var1, var2) || ((Area)this).grabLine(this._x2, this._y2, this._x1, this._y2, var1, var2) || ((Area)this).grabLine(this._x1, this._y2, this._x1, this._y1, var1, var2);
  104.    }
  105.  
  106.    public boolean inside(int var1, int var2) {
  107.       return (this._x1 <= var1 && var1 <= this._x2 || this._x2 <= var1 && var1 <= this._x1) && (this._y1 <= var2 && var2 <= this._y2 || this._y2 <= var2 && var2 <= this._y1);
  108.    }
  109.  
  110.    public boolean isValid() {
  111.       return Math.abs(this._x2 - this._x1) >= 10 || Math.abs(this._y2 - this._y1) >= 10;
  112.    }
  113.  
  114.    public boolean isComplete() {
  115.       return this.isValid();
  116.    }
  117.  
  118.    public void advance() {
  119.    }
  120.  
  121.    public void draw(Graphics var1) {
  122.       if (this.isValid()) {
  123.          int var2 = Math.min(this._x1, this._x2);
  124.          int var3 = Math.min(this._y1, this._y2);
  125.          int var4 = Math.abs(this._x2 - this._x1);
  126.          int var5 = Math.abs(this._y2 - this._y1);
  127.          var1.drawRect(var2, var3, var4, var5);
  128.          if (super._selected) {
  129.             int var6 = (this._x1 + this._x2) / 2;
  130.             int var7 = (this._y1 + this._y2) / 2;
  131.             ((Area)this).drawPoint(var1, this._x1, this._y1);
  132.             ((Area)this).drawPoint(var1, var6, this._y1);
  133.             ((Area)this).drawPoint(var1, this._x2, this._y1);
  134.             ((Area)this).drawPoint(var1, this._x2, var7);
  135.             ((Area)this).drawPoint(var1, this._x2, this._y2);
  136.             ((Area)this).drawPoint(var1, var6, this._y2);
  137.             ((Area)this).drawPoint(var1, this._x1, this._y2);
  138.             ((Area)this).drawPoint(var1, this._x1, var7);
  139.             ((Area)this).drawCenter(var1, var6, var7);
  140.          }
  141.       }
  142.  
  143.    }
  144.  
  145.    public String getShape() {
  146.       return "RECT";
  147.    }
  148.  
  149.    public String getCoords() {
  150.       return Math.min(this._x1, this._x2) + "," + Math.min(this._y1, this._y2) + "," + Math.max(this._x1, this._x2) + "," + Math.max(this._y1, this._y2);
  151.    }
  152.  
  153.    public synchronized Object clone() {
  154.       return new Rect(this._x1, this._y1, this._x2, this._y2);
  155.    }
  156. }
  157.