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 / TexturePaintContext.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.4 KB  |  183 lines

  1. package java.awt;
  2.  
  3. import java.awt.geom.AffineTransform;
  4. import java.awt.geom.NoninvertibleTransformException;
  5. import java.awt.image.BufferedImage;
  6. import java.awt.image.ColorModel;
  7. import java.awt.image.DirectColorModel;
  8. import java.awt.image.IndexColorModel;
  9. import java.awt.image.Raster;
  10. import java.awt.image.WritableRaster;
  11. import sun.awt.image.ByteInterleavedRaster;
  12. import sun.awt.image.IntegerInterleavedRaster;
  13.  
  14. abstract class TexturePaintContext implements PaintContext {
  15.    ColorModel colorModel;
  16.    int bWidth;
  17.    int bHeight;
  18.    int maxWidth;
  19.    WritableRaster outRas;
  20.    double xOrg;
  21.    double yOrg;
  22.    double incXAcross;
  23.    double incYAcross;
  24.    double incXDown;
  25.    double incYDown;
  26.    int colincx;
  27.    int colincy;
  28.    int colincxerr;
  29.    int colincyerr;
  30.    int rowincx;
  31.    int rowincy;
  32.    int rowincxerr;
  33.    int rowincyerr;
  34.  
  35.    public static PaintContext getContext(BufferedImage var0, AffineTransform var1, RenderingHints var2, Rectangle var3) {
  36.       WritableRaster var4 = var0.getRaster();
  37.       ColorModel var5 = var0.getColorModel();
  38.       int var6 = var3.width;
  39.       Object var7 = var2.get(RenderingHints.KEY_INTERPOLATION);
  40.       boolean var8 = var7 == null ? var2.get(RenderingHints.KEY_RENDERING) == RenderingHints.VALUE_RENDER_QUALITY : var7 != RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR;
  41.       if (var4 instanceof IntegerInterleavedRaster && (!var8 || isFilterableDCM(var5))) {
  42.          IntegerInterleavedRaster var10 = (IntegerInterleavedRaster)var4;
  43.          if (((Raster)var10).getNumDataElements() == 1 && var10.getPixelStride() == 1) {
  44.             return new Int(var10, var5, var1, var6, var8);
  45.          }
  46.       } else if (var4 instanceof ByteInterleavedRaster) {
  47.          ByteInterleavedRaster var9 = (ByteInterleavedRaster)var4;
  48.          if (((Raster)var9).getNumDataElements() == 1 && var9.getPixelStride() == 1) {
  49.             if (!var8) {
  50.                return new Byte(var9, var5, var1, var6);
  51.             }
  52.  
  53.             if (isFilterableICM(var5)) {
  54.                return new ByteFilter(var9, var5, var1, var6);
  55.             }
  56.          }
  57.       }
  58.  
  59.       return new Any(var4, var5, var1, var6, var8);
  60.    }
  61.  
  62.    public static boolean isFilterableICM(ColorModel var0) {
  63.       if (var0 instanceof IndexColorModel) {
  64.          IndexColorModel var1 = (IndexColorModel)var0;
  65.          if (var1.getMapSize() <= 256) {
  66.             return true;
  67.          }
  68.       }
  69.  
  70.       return false;
  71.    }
  72.  
  73.    public static boolean isFilterableDCM(ColorModel var0) {
  74.       if (!(var0 instanceof DirectColorModel)) {
  75.          return false;
  76.       } else {
  77.          DirectColorModel var1 = (DirectColorModel)var0;
  78.          return isMaskOK(var1.getAlphaMask(), true) && isMaskOK(var1.getRedMask(), false) && isMaskOK(var1.getGreenMask(), false) && isMaskOK(var1.getBlueMask(), false);
  79.       }
  80.    }
  81.  
  82.    public static boolean isMaskOK(int var0, boolean var1) {
  83.       if (var1 && var0 == 0) {
  84.          return true;
  85.       } else {
  86.          return var0 == 255 || var0 == 65280 || var0 == 16711680 || var0 == -16777216;
  87.       }
  88.    }
  89.  
  90.    TexturePaintContext(ColorModel var1, AffineTransform var2, int var3, int var4, int var5) {
  91.       this.colorModel = var1;
  92.       this.bWidth = var3;
  93.       this.bHeight = var4;
  94.       this.maxWidth = var5;
  95.  
  96.       try {
  97.          var2 = var2.createInverse();
  98.       } catch (NoninvertibleTransformException var7) {
  99.          var2.setToScale((double)0.0F, (double)0.0F);
  100.       }
  101.  
  102.       this.incXAcross = mod(var2.getScaleX(), (double)var3);
  103.       this.incYAcross = mod(var2.getShearY(), (double)var4);
  104.       this.incXDown = mod(var2.getShearX(), (double)var3);
  105.       this.incYDown = mod(var2.getScaleY(), (double)var4);
  106.       this.xOrg = var2.getTranslateX();
  107.       this.yOrg = var2.getTranslateY();
  108.       this.colincx = (int)this.incXAcross;
  109.       this.colincy = (int)this.incYAcross;
  110.       this.colincxerr = fractAsInt(this.incXAcross);
  111.       this.colincyerr = fractAsInt(this.incYAcross);
  112.       this.rowincx = (int)this.incXDown;
  113.       this.rowincy = (int)this.incYDown;
  114.       this.rowincxerr = fractAsInt(this.incXDown);
  115.       this.rowincyerr = fractAsInt(this.incYDown);
  116.    }
  117.  
  118.    static int fractAsInt(double var0) {
  119.       return (int)(var0 % (double)1.0F * (double)Integer.MAX_VALUE);
  120.    }
  121.  
  122.    static double mod(double var0, double var2) {
  123.       var0 %= var2;
  124.       if (var0 < (double)0.0F) {
  125.          var0 += var2;
  126.          if (var0 >= var2) {
  127.             var0 = (double)0.0F;
  128.          }
  129.       }
  130.  
  131.       return var0;
  132.    }
  133.  
  134.    public void dispose() {
  135.    }
  136.  
  137.    public ColorModel getColorModel() {
  138.       return this.colorModel;
  139.    }
  140.  
  141.    public Raster getRaster(int var1, int var2, int var3, int var4) {
  142.       if (this.outRas == null || this.outRas.getWidth() < var3 || this.outRas.getHeight() < var4) {
  143.          this.outRas = this.makeRaster(var4 == 1 ? Math.max(var3, this.maxWidth) : var3, var4);
  144.       }
  145.  
  146.       double var5 = mod(this.xOrg + (double)var1 * this.incXAcross + (double)var2 * this.incXDown, (double)this.bWidth);
  147.       double var7 = mod(this.yOrg + (double)var1 * this.incYAcross + (double)var2 * this.incYDown, (double)this.bHeight);
  148.       this.setRaster((int)var5, (int)var7, fractAsInt(var5), fractAsInt(var7), var3, var4, this.bWidth, this.bHeight, this.colincx, this.colincxerr, this.colincy, this.colincyerr, this.rowincx, this.rowincxerr, this.rowincy, this.rowincyerr);
  149.       return this.outRas;
  150.    }
  151.  
  152.    public abstract WritableRaster makeRaster(int var1, int var2);
  153.  
  154.    public abstract void setRaster(int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11, int var12, int var13, int var14, int var15, int var16);
  155.  
  156.    public static int blend(int[] var0, int var1, int var2) {
  157.       var1 >>>= 19;
  158.       var2 >>>= 19;
  159.       int var6 = 0;
  160.       int var5 = 0;
  161.       int var4 = 0;
  162.       int var3 = 0;
  163.  
  164.       for(int var7 = 0; var7 < 4; ++var7) {
  165.          int var8 = var0[var7];
  166.          var1 = 4096 - var1;
  167.          if ((var7 & 1) == 0) {
  168.             var2 = 4096 - var2;
  169.          }
  170.  
  171.          int var9 = var1 * var2;
  172.          if (var9 != 0) {
  173.             var3 += (var8 >>> 24) * var9;
  174.             var4 += (var8 >>> 16 & 255) * var9;
  175.             var5 += (var8 >>> 8 & 255) * var9;
  176.             var6 += (var8 & 255) * var9;
  177.          }
  178.       }
  179.  
  180.       return var3 + 8388608 >>> 24 << 24 | var4 + 8388608 >>> 24 << 16 | var5 + 8388608 >>> 24 << 8 | var6 + 8388608 >>> 24;
  181.    }
  182. }
  183.