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 / java / awt / GradientPaintContext.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.9 KB  |  190 lines

  1. package java.awt;
  2.  
  3. import java.awt.geom.AffineTransform;
  4. import java.awt.geom.NoninvertibleTransformException;
  5. import java.awt.geom.Point2D;
  6. import java.awt.image.ColorModel;
  7. import java.awt.image.DirectColorModel;
  8. import java.awt.image.Raster;
  9. import sun.awt.image.IntegerComponentRaster;
  10.  
  11. class GradientPaintContext implements PaintContext {
  12.    static ColorModel xrgbmodel = new DirectColorModel(24, 16711680, 65280, 255);
  13.    // $FF: renamed from: x1 double
  14.    double field_0;
  15.    // $FF: renamed from: y1 double
  16.    double field_1;
  17.    // $FF: renamed from: dx double
  18.    double field_2;
  19.    // $FF: renamed from: dy double
  20.    double field_3;
  21.    boolean cyclic;
  22.    int[] interp;
  23.    Raster saved;
  24.    ColorModel model;
  25.  
  26.    public GradientPaintContext(Point2D var1, Point2D var2, AffineTransform var3, Color var4, Color var5, boolean var6) {
  27.       Point2D.Double var7 = new Point2D.Double((double)1.0F, (double)0.0F);
  28.       Point2D.Double var8 = new Point2D.Double((double)0.0F, (double)1.0F);
  29.  
  30.       try {
  31.          AffineTransform var9 = var3.createInverse();
  32.          var9.deltaTransform(var7, var7);
  33.          var9.deltaTransform(var8, var8);
  34.       } catch (NoninvertibleTransformException var29) {
  35.          ((Point2D)var7).setLocation((double)0.0F, (double)0.0F);
  36.          ((Point2D)var8).setLocation((double)0.0F, (double)0.0F);
  37.       }
  38.  
  39.       double var30 = var2.getX() - var1.getX();
  40.       double var11 = var2.getY() - var1.getY();
  41.       double var13 = var30 * var30 + var11 * var11;
  42.       if (var13 <= Double.MIN_VALUE) {
  43.          this.field_2 = (double)0.0F;
  44.          this.field_3 = (double)0.0F;
  45.       } else {
  46.          this.field_2 = (((Point2D)var7).getX() * var30 + ((Point2D)var7).getY() * var11) / var13;
  47.          this.field_3 = (((Point2D)var8).getX() * var30 + ((Point2D)var8).getY() * var11) / var13;
  48.          if (var6) {
  49.             this.field_2 %= (double)1.0F;
  50.             this.field_3 %= (double)1.0F;
  51.          } else if (this.field_2 < (double)0.0F) {
  52.             var1 = var2;
  53.             Color var16 = var4;
  54.             var4 = var5;
  55.             var5 = var16;
  56.             this.field_2 = -this.field_2;
  57.             this.field_3 = -this.field_3;
  58.          }
  59.       }
  60.  
  61.       Point2D var15 = var3.transform(var1, (Point2D)null);
  62.       this.field_0 = var15.getX();
  63.       this.field_1 = var15.getY();
  64.       this.cyclic = var6;
  65.       int var31 = var4.getRGB();
  66.       int var17 = var5.getRGB();
  67.       int var18 = var31 >> 24 & 255;
  68.       int var19 = var31 >> 16 & 255;
  69.       int var20 = var31 >> 8 & 255;
  70.       int var21 = var31 & 255;
  71.       int var22 = (var17 >> 24 & 255) - var18;
  72.       int var23 = (var17 >> 16 & 255) - var19;
  73.       int var24 = (var17 >> 8 & 255) - var20;
  74.       int var25 = (var17 & 255) - var21;
  75.       if ((var31 & var17) >>> 24 == 255) {
  76.          this.model = xrgbmodel;
  77.       } else {
  78.          this.model = ColorModel.getRGBdefault();
  79.       }
  80.  
  81.       this.interp = new int[var6 ? 513 : 257];
  82.  
  83.       for(int var26 = 0; var26 <= 256; ++var26) {
  84.          float var27 = (float)var26 / 256.0F;
  85.          int var28 = (int)((float)var18 + (float)var22 * var27) << 24 | (int)((float)var19 + (float)var23 * var27) << 16 | (int)((float)var20 + (float)var24 * var27) << 8 | (int)((float)var21 + (float)var25 * var27);
  86.          this.interp[var26] = var28;
  87.          if (var6) {
  88.             this.interp[512 - var26] = var28;
  89.          }
  90.       }
  91.  
  92.    }
  93.  
  94.    public void dispose() {
  95.       this.saved = null;
  96.    }
  97.  
  98.    public ColorModel getColorModel() {
  99.       return this.model;
  100.    }
  101.  
  102.    public Raster getRaster(int var1, int var2, int var3, int var4) {
  103.       double var5 = ((double)var1 - this.field_0) * this.field_2 + ((double)var2 - this.field_1) * this.field_3;
  104.       Object var7 = this.saved;
  105.       if (var7 == null || ((Raster)var7).getWidth() < var3 || ((Raster)var7).getHeight() < var4) {
  106.          var7 = this.getColorModel().createCompatibleWritableRaster(var3, var4);
  107.          this.saved = (Raster)var7;
  108.       }
  109.  
  110.       IntegerComponentRaster var8 = (IntegerComponentRaster)var7;
  111.       int var9 = var8.getDataOffset(0);
  112.       int var10 = var8.getScanlineStride() - var3;
  113.       int[] var11 = var8.getDataStorage();
  114.       if (this.cyclic) {
  115.          this.cycleFillRaster(var11, var9, var10, var3, var4, var5, this.field_2, this.field_3);
  116.       } else {
  117.          this.clipFillRaster(var11, var9, var10, var3, var4, var5, this.field_2, this.field_3);
  118.       }
  119.  
  120.       return (Raster)var7;
  121.    }
  122.  
  123.    void cycleFillRaster(int[] var1, int var2, int var3, int var4, int var5, double var6, double var8, double var10) {
  124.       var6 %= (double)2.0F;
  125.       int var12 = (int)(var6 * (double)1.0737418E9F) << 1;
  126.       int var13 = (int)(-var8 * (double)Integer.MIN_VALUE);
  127.       int var14 = (int)(-var10 * (double)Integer.MIN_VALUE);
  128.  
  129.       while(true) {
  130.          --var5;
  131.          if (var5 < 0) {
  132.             return;
  133.          }
  134.  
  135.          int var15 = var12;
  136.  
  137.          for(int var16 = var4; var16 > 0; --var16) {
  138.             var1[var2++] = this.interp[var15 >>> 23];
  139.             var15 += var13;
  140.          }
  141.  
  142.          var2 += var3;
  143.          var12 += var14;
  144.       }
  145.    }
  146.  
  147.    void clipFillRaster(int[] var1, int var2, int var3, int var4, int var5, double var6, double var8, double var10) {
  148.       while(true) {
  149.          --var5;
  150.          if (var5 < 0) {
  151.             return;
  152.          }
  153.  
  154.          double var12 = var6;
  155.          int var14 = var4;
  156.          if (var6 <= (double)0.0F) {
  157.             int var15 = this.interp[0];
  158.  
  159.             do {
  160.                var1[var2++] = var15;
  161.                var12 += var8;
  162.                --var14;
  163.             } while(var14 > 0 && var12 <= (double)0.0F);
  164.          }
  165.  
  166.          while(var12 < (double)1.0F) {
  167.             --var14;
  168.             if (var14 < 0) {
  169.                break;
  170.             }
  171.  
  172.             var1[var2++] = this.interp[(int)(var12 * (double)256.0F)];
  173.             var12 += var8;
  174.          }
  175.  
  176.          if (var14 > 0) {
  177.             int var16 = this.interp[256];
  178.  
  179.             do {
  180.                var1[var2++] = var16;
  181.                --var14;
  182.             } while(var14 > 0);
  183.          }
  184.  
  185.          var2 += var3;
  186.          var6 += var10;
  187.       }
  188.    }
  189. }
  190.