home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.geom;
-
- public final class Crossings$NonZero extends Crossings {
- private int[] crosscounts;
-
- public Crossings$NonZero(double var1, double var3, double var5, double var7) {
- super(var1, var3, var5, var7);
- this.crosscounts = new int[super.yranges.length / 2];
- }
-
- public final boolean covers(double var1, double var3) {
- int var5 = 0;
-
- while(var5 < super.limit) {
- double var6 = super.yranges[var5++];
- double var8 = super.yranges[var5++];
- if (!(var1 >= var8)) {
- if (var1 < var6) {
- return false;
- }
-
- if (var3 <= var8) {
- return true;
- }
-
- var1 = var8;
- }
- }
-
- return var1 >= var3;
- }
-
- public void remove(int var1) {
- super.limit -= 2;
- int var2 = super.limit - var1;
- if (var2 > 0) {
- System.arraycopy(super.yranges, var1 + 2, super.yranges, var1, var2);
- System.arraycopy(this.crosscounts, var1 / 2 + 1, this.crosscounts, var1 / 2, var2 / 2);
- }
-
- }
-
- public void insert(int var1, double var2, double var4, int var6) {
- int var7 = super.limit - var1;
- double[] var8 = super.yranges;
- int[] var9 = this.crosscounts;
- if (super.limit >= super.yranges.length) {
- super.yranges = new double[super.limit + 10];
- System.arraycopy(var8, 0, super.yranges, 0, var1);
- this.crosscounts = new int[(super.limit + 10) / 2];
- System.arraycopy(var9, 0, this.crosscounts, 0, var1 / 2);
- }
-
- if (var7 > 0) {
- System.arraycopy(var8, var1, super.yranges, var1 + 2, var7);
- System.arraycopy(var9, var1 / 2, this.crosscounts, var1 / 2 + 1, var7 / 2);
- }
-
- super.yranges[var1 + 0] = var2;
- super.yranges[var1 + 1] = var4;
- this.crosscounts[var1 / 2] = var6;
- super.limit += 2;
- }
-
- public void record(double var1, double var3, int var5) {
- if (!(var1 >= var3)) {
- int var6;
- for(var6 = 0; var6 < super.limit && var1 > super.yranges[var6 + 1]; var6 += 2) {
- }
-
- if (var6 < super.limit) {
- int var7 = this.crosscounts[var6 / 2];
- double var8 = super.yranges[var6 + 0];
- double var10 = super.yranges[var6 + 1];
- if (var10 == var1 && var7 == var5) {
- if (var6 + 2 == super.limit) {
- super.yranges[var6 + 1] = var3;
- return;
- }
-
- this.remove(var6);
- var1 = var8;
- var7 = this.crosscounts[var6 / 2];
- var8 = super.yranges[var6 + 0];
- var10 = super.yranges[var6 + 1];
- }
-
- if (var3 < var8) {
- this.insert(var6, var1, var3, var5);
- return;
- }
-
- if (var3 == var8 && var7 == var5) {
- super.yranges[var6] = var1;
- return;
- }
-
- if (var1 < var8) {
- this.insert(var6, var1, var8, var5);
- var6 += 2;
- var1 = var8;
- } else if (var8 < var1) {
- this.insert(var6, var8, var1, var7);
- var6 += 2;
- }
-
- int var12 = var7 + var5;
- double var13 = Math.min(var3, var10);
- if (var12 == 0) {
- this.remove(var6);
- } else {
- this.crosscounts[var6 / 2] = var12;
- super.yranges[var6++] = var1;
- super.yranges[var6++] = var13;
- }
-
- var1 = var13;
- if (var13 < var10) {
- this.insert(var6, var13, var10, var7);
- }
- }
-
- if (var1 < var3) {
- this.insert(var6, var1, var3, var5);
- }
-
- }
- }
- }
-