home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / awt / geom / ChainEnd.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.3 KB  |  85 lines

  1. package sun.awt.geom;
  2.  
  3. final class ChainEnd {
  4.    CurveLink head;
  5.    CurveLink tail;
  6.    ChainEnd partner;
  7.    int etag;
  8.  
  9.    public ChainEnd(CurveLink var1, ChainEnd var2) {
  10.       this.head = var1;
  11.       this.tail = var1;
  12.       this.partner = var2;
  13.       this.etag = var1.getEdgeTag();
  14.    }
  15.  
  16.    public CurveLink getChain() {
  17.       return this.head;
  18.    }
  19.  
  20.    public void setOtherEnd(ChainEnd var1) {
  21.       this.partner = var1;
  22.    }
  23.  
  24.    public ChainEnd getPartner() {
  25.       return this.partner;
  26.    }
  27.  
  28.    public CurveLink linkTo(ChainEnd var1) {
  29.       if (this.etag != 0 && var1.etag != 0) {
  30.          if (this.etag == var1.etag) {
  31.             throw new InternalError("Linking chains of the same type!");
  32.          } else {
  33.             ChainEnd var2;
  34.             ChainEnd var3;
  35.             if (this.etag == 1) {
  36.                var2 = this;
  37.                var3 = var1;
  38.             } else {
  39.                var2 = var1;
  40.                var3 = this;
  41.             }
  42.  
  43.             this.etag = 0;
  44.             var1.etag = 0;
  45.             var2.tail.setNext(var3.head);
  46.             var2.tail = var3.tail;
  47.             if (this.partner == var1) {
  48.                return var2.head;
  49.             } else {
  50.                ChainEnd var4 = var3.partner;
  51.                ChainEnd var5 = var2.partner;
  52.                var4.partner = var5;
  53.                var5.partner = var4;
  54.                if (var2.head.getYTop() < var4.head.getYTop()) {
  55.                   var2.tail.setNext(var4.head);
  56.                   var4.head = var2.head;
  57.                } else {
  58.                   var5.tail.setNext(var2.head);
  59.                   var5.tail = var2.tail;
  60.                }
  61.  
  62.                return null;
  63.             }
  64.          }
  65.       } else {
  66.          throw new InternalError("ChainEnd linked more than once!");
  67.       }
  68.    }
  69.  
  70.    public void addLink(CurveLink var1) {
  71.       if (this.etag == 1) {
  72.          this.tail.setNext(var1);
  73.          this.tail = var1;
  74.       } else {
  75.          var1.setNext(this.head);
  76.          this.head = var1;
  77.       }
  78.  
  79.    }
  80.  
  81.    public double getX() {
  82.       return this.etag == 1 ? this.tail.getXBot() : this.head.getXBot();
  83.    }
  84. }
  85.