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 / Crossings$NonZero.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.3 KB  |  130 lines

  1. package sun.awt.geom;
  2.  
  3. public final class Crossings$NonZero extends Crossings {
  4.    private int[] crosscounts;
  5.  
  6.    public Crossings$NonZero(double var1, double var3, double var5, double var7) {
  7.       super(var1, var3, var5, var7);
  8.       this.crosscounts = new int[super.yranges.length / 2];
  9.    }
  10.  
  11.    public final boolean covers(double var1, double var3) {
  12.       int var5 = 0;
  13.  
  14.       while(var5 < super.limit) {
  15.          double var6 = super.yranges[var5++];
  16.          double var8 = super.yranges[var5++];
  17.          if (!(var1 >= var8)) {
  18.             if (var1 < var6) {
  19.                return false;
  20.             }
  21.  
  22.             if (var3 <= var8) {
  23.                return true;
  24.             }
  25.  
  26.             var1 = var8;
  27.          }
  28.       }
  29.  
  30.       return var1 >= var3;
  31.    }
  32.  
  33.    public void remove(int var1) {
  34.       super.limit -= 2;
  35.       int var2 = super.limit - var1;
  36.       if (var2 > 0) {
  37.          System.arraycopy(super.yranges, var1 + 2, super.yranges, var1, var2);
  38.          System.arraycopy(this.crosscounts, var1 / 2 + 1, this.crosscounts, var1 / 2, var2 / 2);
  39.       }
  40.  
  41.    }
  42.  
  43.    public void insert(int var1, double var2, double var4, int var6) {
  44.       int var7 = super.limit - var1;
  45.       double[] var8 = super.yranges;
  46.       int[] var9 = this.crosscounts;
  47.       if (super.limit >= super.yranges.length) {
  48.          super.yranges = new double[super.limit + 10];
  49.          System.arraycopy(var8, 0, super.yranges, 0, var1);
  50.          this.crosscounts = new int[(super.limit + 10) / 2];
  51.          System.arraycopy(var9, 0, this.crosscounts, 0, var1 / 2);
  52.       }
  53.  
  54.       if (var7 > 0) {
  55.          System.arraycopy(var8, var1, super.yranges, var1 + 2, var7);
  56.          System.arraycopy(var9, var1 / 2, this.crosscounts, var1 / 2 + 1, var7 / 2);
  57.       }
  58.  
  59.       super.yranges[var1 + 0] = var2;
  60.       super.yranges[var1 + 1] = var4;
  61.       this.crosscounts[var1 / 2] = var6;
  62.       super.limit += 2;
  63.    }
  64.  
  65.    public void record(double var1, double var3, int var5) {
  66.       if (!(var1 >= var3)) {
  67.          int var6;
  68.          for(var6 = 0; var6 < super.limit && var1 > super.yranges[var6 + 1]; var6 += 2) {
  69.          }
  70.  
  71.          if (var6 < super.limit) {
  72.             int var7 = this.crosscounts[var6 / 2];
  73.             double var8 = super.yranges[var6 + 0];
  74.             double var10 = super.yranges[var6 + 1];
  75.             if (var10 == var1 && var7 == var5) {
  76.                if (var6 + 2 == super.limit) {
  77.                   super.yranges[var6 + 1] = var3;
  78.                   return;
  79.                }
  80.  
  81.                this.remove(var6);
  82.                var1 = var8;
  83.                var7 = this.crosscounts[var6 / 2];
  84.                var8 = super.yranges[var6 + 0];
  85.                var10 = super.yranges[var6 + 1];
  86.             }
  87.  
  88.             if (var3 < var8) {
  89.                this.insert(var6, var1, var3, var5);
  90.                return;
  91.             }
  92.  
  93.             if (var3 == var8 && var7 == var5) {
  94.                super.yranges[var6] = var1;
  95.                return;
  96.             }
  97.  
  98.             if (var1 < var8) {
  99.                this.insert(var6, var1, var8, var5);
  100.                var6 += 2;
  101.                var1 = var8;
  102.             } else if (var8 < var1) {
  103.                this.insert(var6, var8, var1, var7);
  104.                var6 += 2;
  105.             }
  106.  
  107.             int var12 = var7 + var5;
  108.             double var13 = Math.min(var3, var10);
  109.             if (var12 == 0) {
  110.                this.remove(var6);
  111.             } else {
  112.                this.crosscounts[var6 / 2] = var12;
  113.                super.yranges[var6++] = var1;
  114.                super.yranges[var6++] = var13;
  115.             }
  116.  
  117.             var1 = var13;
  118.             if (var13 < var10) {
  119.                this.insert(var6, var13, var10, var7);
  120.             }
  121.          }
  122.  
  123.          if (var1 < var3) {
  124.             this.insert(var6, var1, var3, var5);
  125.          }
  126.  
  127.       }
  128.    }
  129. }
  130.