home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / text / RLEUtilities.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  1.3 KB  |  107 lines

  1. package javax.swing.text;
  2.  
  3. class RLEUtilities {
  4.    static final boolean debug = false;
  5.  
  6.    static byte[] writeRLE(byte[] var0) {
  7.       byte[] var1 = new byte[var0.length + var0.length / 126 + 1];
  8.       int var2 = 0;
  9.       int var3 = 0;
  10.  
  11.       while(var3 < var0.length) {
  12.          byte var4 = var0[var3];
  13.          boolean var5 = false;
  14.          int var6 = var3 + 1;
  15.  
  16.          for(int var7 = Math.min(var0.length, var3 + 126); var6 < var7; ++var6) {
  17.             if (var0[var6] == var4) {
  18.                ++var6;
  19.                if (var6 >= var7) {
  20.                   break;
  21.                }
  22.  
  23.                if (var0[var6] == var4) {
  24.                   var6 -= 2;
  25.                   break;
  26.                }
  27.             }
  28.  
  29.             var4 = var0[var6];
  30.          }
  31.  
  32.          if (var6 > var3) {
  33.             int var8 = var6 - var3;
  34.             var1[var2++] = (byte)var8;
  35.  
  36.             try {
  37.                System.arraycopy(var0, var3, var1, var2, var8);
  38.             } catch (ArrayIndexOutOfBoundsException var10) {
  39.                System.out.println("src len: " + var0.length + " p: " + var3 + " res len: " + var1.length + " w: " + var2 + " n: " + var8);
  40.                throw var10;
  41.             }
  42.  
  43.             var2 += var8;
  44.          }
  45.  
  46.          if (var6 >= var0.length) {
  47.             break;
  48.          }
  49.  
  50.          var3 = var6++;
  51.          int var15 = Math.min(var0.length, var3 + 126);
  52.  
  53.          byte var16;
  54.          for(var16 = var0[var3]; var6 < var15 && var0[var6] == var16; ++var6) {
  55.          }
  56.  
  57.          if (var6 > var3 + 2) {
  58.             int var9 = var6 - var3;
  59.             var1[var2++] = (byte)(128 | var9);
  60.             var1[var2++] = (byte)var16;
  61.             var3 = var6;
  62.          }
  63.       }
  64.  
  65.       byte[] var13 = new byte[var2];
  66.       System.arraycopy(var1, 0, var13, 0, var2);
  67.       return var13;
  68.    }
  69.  
  70.    static byte[] readRLE(byte[] var0) {
  71.       byte[] var1 = new byte[var0.length * 4];
  72.       int var2 = 0;
  73.       int var3 = 0;
  74.  
  75.       while(var3 < var0.length) {
  76.          byte var4 = var0[var3++];
  77.          int var5 = var4 & 127;
  78.          if (var2 + var5 > var1.length) {
  79.             byte[] var6 = new byte[Math.max(var2 + var5, var1.length * 2)];
  80.             System.arraycopy(var1, 0, var6, 0, var2);
  81.             var1 = var6;
  82.          }
  83.  
  84.          if ((var4 & 128) != 0) {
  85.             byte var9 = var0[var3++];
  86.  
  87.             while(true) {
  88.                --var5;
  89.                if (var5 < 0) {
  90.                   break;
  91.                }
  92.  
  93.                var1[var2++] = var9;
  94.             }
  95.          } else {
  96.             System.arraycopy(var0, var3, var1, var2, var5);
  97.             var3 += var5;
  98.             var2 += var5;
  99.          }
  100.       }
  101.  
  102.       byte[] var8 = new byte[var2];
  103.       System.arraycopy(var1, 0, var8, 0, var2);
  104.       return var8;
  105.    }
  106. }
  107.