home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.awt.image.BufferedImage;
- import java.awt.image.ColorModel;
- import java.awt.image.IndexColorModel;
- import java.awt.image.Raster;
- import java.awt.image.WritableRaster;
- import java.util.Hashtable;
- import sun.awt.image.IntegerComponentRaster;
- import sun.java2d.loops.RasterOutputManager;
-
- class AlphaCompositeContext implements CompositeContext {
- ColorModel srcCM;
- ColorModel dstCM;
- boolean srcNeedConvert;
- boolean dstNeedConvert;
- int rule;
- float extraAlpha;
-
- public AlphaCompositeContext(ColorModel var1, ColorModel var2, int var3, float var4) {
- this.srcCM = var1;
- if (this.srcCM.equals(ColorModel.getRGBdefault())) {
- this.srcNeedConvert = false;
- } else {
- this.srcNeedConvert = true;
- }
-
- this.dstCM = var2;
- if (this.dstCM.equals(ColorModel.getRGBdefault())) {
- this.dstNeedConvert = false;
- } else {
- this.dstNeedConvert = true;
- }
-
- this.rule = var3;
- this.extraAlpha = var4;
- }
-
- WritableRaster convertRaster(Raster var1, ColorModel var2, ColorModel var3) {
- if (var2 instanceof IndexColorModel && var3.equals(ColorModel.getRGBdefault())) {
- IndexColorModel var7 = (IndexColorModel)var2;
- BufferedImage var8 = var7.convertToIntDiscrete(var1, false);
- return var8.getRaster();
- } else {
- BufferedImage var4 = new BufferedImage(var3, var3.createCompatibleWritableRaster(var1.getWidth(), var1.getHeight()), var3.isAlphaPremultiplied(), (Hashtable)null);
-
- for(int var5 = 0; var5 < var1.getHeight(); ++var5) {
- for(int var6 = 0; var6 < var1.getWidth(); ++var6) {
- var4.setRGB(var6, var5, var2.getRGB(var1.getDataElements(var6, var5, (Object)null)));
- }
- }
-
- return var4.getRaster();
- }
- }
-
- public void dispose() {
- }
-
- public void compose(Raster var1, Raster var2, WritableRaster var3) {
- WritableRaster var6 = var3;
- if (this.srcNeedConvert) {
- var1 = this.convertRaster((Raster)var1, this.srcCM, ColorModel.getRGBdefault());
- var2 = this.convertRaster((Raster)var2, this.srcCM, ColorModel.getRGBdefault());
- }
-
- if (this.dstNeedConvert && var3 != var1 && var3 != var2) {
- var3 = this.convertRaster(var3, this.dstCM, ColorModel.getRGBdefault());
- }
-
- IntegerComponentRaster var4;
- if (var3 == var1) {
- var4 = (IntegerComponentRaster)var2;
- } else if (var3 == var2) {
- var4 = (IntegerComponentRaster)var1;
- } else {
- var3.setDataElements(0, 0, (Raster)var2);
- var4 = (IntegerComponentRaster)var1;
- }
-
- IntegerComponentRaster var5 = (IntegerComponentRaster)var3;
- int var7 = Math.min(((Raster)var4).getWidth(), ((Raster)var5).getWidth());
- int var8 = Math.min(((Raster)var4).getHeight(), ((Raster)var5).getHeight());
- RasterOutputManager.ARGBpaintARGB(var4, false, var5, this.rule, this.extraAlpha, (byte[])null, 0, 0, 0, 0, 0, 0, var7, var8, 0);
- if (this.dstNeedConvert) {
- var3 = this.convertRaster(var3, ColorModel.getRGBdefault(), this.dstCM);
- var6.setDataElements(0, 0, var3);
- }
-
- }
- }
-