home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Component;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.awt.Rectangle;
- import java.awt.image.PixelGrabber;
-
- public class GIFGraphics {
- public int[] pixels;
- public int width;
- public int height;
- int colour;
- static int[] Red = new int[256];
- static int[] Green = new int[256];
- static int[] Blue = new int[256];
- int left;
- int top;
-
- GIFGraphics(Image var1, Component var2) {
- this(var1, var2, 0, 0);
- }
-
- GIFGraphics(Image var1, Component var2, int var3, int var4) {
- this.left = var3;
- this.top = var4;
- MediaTracker var7 = new MediaTracker(var2);
- var7.addImage(var1, 1);
-
- try {
- var7.waitForID(1);
- this.width = var1.getWidth(var2);
- this.height = var1.getHeight(var2);
- int var5 = this.width * this.height;
- int[] var6 = new int[var5];
- this.pixels = new int[this.width * this.height];
- PixelGrabber var8 = new PixelGrabber(var1, 0, 0, this.width, this.height, var6, 0, this.width);
-
- try {
- var8.grabPixels();
-
- for(int var9 = 0; var9 < this.width; ++var9) {
- for(int var10 = 0; var10 < this.height; ++var10) {
- int var11 = (var6[var10 * this.width + var9] & 16711680) >> 16;
- int var12 = (var6[var10 * this.width + var9] & '\uff00') >> 8;
- int var13 = var6[var10 * this.width + var9] & 255;
- int var14 = var11 % 51;
- int var15 = var12 % 51;
- int var16 = var13 % 51;
- if (var9 < this.width - 1) {
- int var17 = (var6[var10 * this.width + var9 + 1] & 16711680) >> 16;
- var17 += 7 * var14 / 16;
- if (var17 > 255) {
- var17 = 255;
- }
-
- int var18 = (var6[var10 * this.width + var9 + 1] & '\uff00') >> 8;
- var18 += 7 * var15 / 16;
- if (var18 > 255) {
- var18 = 255;
- }
-
- int var19 = var6[var10 * this.width + var9 + 1] & 255;
- var19 += 7 * var16 / 16;
- if (var19 > 255) {
- var19 = 255;
- }
-
- var6[var10 * this.width + var9 + 1] = (var17 << 16) + (var18 << 8) + var19;
- }
-
- if (var9 > 0 && var10 < this.height - 1) {
- int var23 = (var6[(var10 + 1) * this.width + var9 - 1] & 16711680) >> 16;
- var23 += 3 * var14 / 16;
- if (var23 > 255) {
- var23 = 255;
- }
-
- int var30 = (var6[(var10 + 1) * this.width + var9 - 1] & '\uff00') >> 8;
- var30 += 3 * var15 / 16;
- if (var30 > 255) {
- var30 = 255;
- }
-
- int var37 = var6[(var10 + 1) * this.width + var9 - 1] & 255;
- var37 += 3 * var16 / 16;
- if (var37 > 255) {
- var37 = 255;
- }
-
- var6[(var10 + 1) * this.width + var9 - 1] = (var23 << 16) + (var30 << 8) + var37;
- }
-
- if (var10 < this.height - 1) {
- int var25 = (var6[(var10 + 1) * this.width + var9] & 16711680) >> 16;
- var25 += 5 * var14 / 16;
- if (var25 > 255) {
- var25 = 255;
- }
-
- int var32 = (var6[(var10 + 1) * this.width + var9] & '\uff00') >> 8;
- var32 += 5 * var15 / 16;
- if (var32 > 255) {
- var32 = 255;
- }
-
- int var39 = var6[(var10 + 1) * this.width + var9] & 255;
- var39 += 5 * var16 / 16;
- if (var39 > 255) {
- var39 = 255;
- }
-
- var6[(var10 + 1) * this.width + var9] = (var25 << 16) + (var32 << 8) + var39;
- }
-
- if (var9 < this.width - 1 && var10 < this.height - 1) {
- int var27 = (var6[(var10 + 1) * this.width + var9 + 1] & 16711680) >> 16;
- var27 += var14 / 16;
- if (var27 > 255) {
- var27 = 255;
- }
-
- int var34 = (var6[(var10 + 1) * this.width + var9 + 1] & '\uff00') >> 8;
- var34 += var15 / 16;
- if (var34 > 255) {
- var34 = 255;
- }
-
- int var41 = var6[(var10 + 1) * this.width + var9 + 1] & 255;
- var41 += var16 / 16;
- if (var41 > 255) {
- var41 = 255;
- }
-
- var6[(var10 + 1) * this.width + var9 + 1] = (var27 << 16) + (var34 << 8) + var41;
- }
-
- if (var11 - var14 == 0 && var12 - var15 == 0 && var13 - var16 == 0) {
- this.pixels[var10 * this.width + var9] = 255;
- } else {
- this.pixels[var10 * this.width + var9] = 36 * (var11 - var14) / 51 + 6 * (var12 - var15) / 51 + (var13 - var16) / 51 + 1;
- }
- }
- }
-
- } catch (Exception var20) {
- System.out.println("Unable to grab pixels: " + var20);
- }
- } catch (Exception var21) {
- System.out.println("Unable to load image: " + var21);
- }
- }
-
- public void cropTo(Rectangle var1) {
- int var2 = var1.x;
- int var3 = var1.y;
- int var4 = var1.width;
- int var5 = var1.height;
- int[] var6 = new int[var4 * var5];
- int var7 = 0;
-
- for(int var8 = var3; var8 < var3 + var5; ++var8) {
- for(int var9 = var2; var9 < var2 + var4; ++var9) {
- var6[var7] = this.pixels[var8 * this.width + var9];
- ++var7;
- }
- }
-
- this.top = var3;
- this.left = var2;
- this.width = var4;
- this.height = var5;
- this.pixels = var6;
- }
-
- public int getPixel(int var1, int var2) {
- return this.pixels[var2 * this.width + var1];
- }
-
- public int[] getPixels() {
- return this.pixels;
- }
-
- static {
- int var0 = 1;
- Red[0] = 0;
- Green[0] = 0;
- Blue[0] = 0;
-
- for(int var1 = 0; var1 < 6; ++var1) {
- for(int var2 = 0; var2 < 6; ++var2) {
- for(int var3 = 0; var3 < 6; ++var3) {
- Red[var0] = var1 * 51;
- Green[var0] = var2 * 51;
- Blue[var0] = var3 * 51;
- ++var0;
- }
- }
- }
-
- while(var0 < 256) {
- Red[var0] = 0;
- Green[var0] = 0;
- Blue[var0] = 0;
- ++var0;
- }
-
- }
- }
-