home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Frame;
- import java.awt.Image;
- import java.awt.Window;
- import java.awt.image.ColorModel;
- import java.awt.image.MemoryImageSource;
-
- public class DitherTest extends Applet implements Runnable {
- static final int NOOP = 0;
- static final int RED = 1;
- static final int GREEN = 2;
- static final int BLUE = 3;
- static final int ALPHA = 4;
- static final int SATURATION = 5;
- ThreadGroup appletThreadGroup;
- Thread kicker;
- DitherControls XControls;
- DitherControls YControls;
- DitherCanvas canvas;
-
- public void init() {
- int[] var3 = new int[2];
- int[] var4 = new int[2];
-
- String var1;
- try {
- var1 = ((Applet)this).getParameter("xaxis");
- } catch (Exception var8) {
- var1 = null;
- }
-
- String var2;
- try {
- var2 = ((Applet)this).getParameter("yaxis");
- } catch (Exception var7) {
- var2 = null;
- }
-
- if (var1 == null) {
- var1 = "red";
- }
-
- if (var2 == null) {
- var2 = "blue";
- }
-
- int var5 = this.colormethod(var1, var3);
- int var6 = this.colormethod(var2, var4);
- ((Container)this).setLayout(new BorderLayout());
- this.XControls = new DitherControls(this, var3[0], var3[1], var5, false);
- this.YControls = new DitherControls(this, var4[0], var4[1], var6, true);
- this.YControls.addRenderButton();
- ((Container)this).add("North", this.XControls);
- ((Container)this).add("South", this.YControls);
- ((Container)this).add("Center", this.canvas = new DitherCanvas());
- this.appletThreadGroup = Thread.currentThread().getThreadGroup();
- }
-
- public synchronized void start() {
- if (this.canvas.getImage() == null) {
- this.kicker = new Thread(this.appletThreadGroup, this);
- this.kicker.start();
- }
-
- }
-
- public synchronized void stop() {
- try {
- if (this.kicker != null) {
- this.kicker.stop();
- }
- } catch (Exception var1) {
- }
-
- this.kicker = null;
- }
-
- public void restart() {
- this.stop();
- this.canvas.setImage((Image)null);
- this.start();
- }
-
- public static void main(String[] var0) {
- Frame var1 = new Frame("DitherTest");
- DitherTest var2 = new DitherTest();
- var2.init();
- ((Container)var1).add("Center", var2);
- ((Window)var1).pack();
- ((Window)var1).show();
- var2.start();
- }
-
- int colormethod(String var1, int[] var2) {
- byte var3 = 0;
- if (var1 == null) {
- var1 = "";
- }
-
- String var4 = var1.toLowerCase();
- if (var4.startsWith("red")) {
- var3 = 1;
- var4 = var4.substring(3);
- } else if (var4.startsWith("green")) {
- var3 = 2;
- var4 = var4.substring(5);
- } else if (var4.startsWith("blue")) {
- var3 = 3;
- var4 = var4.substring(4);
- } else if (var4.startsWith("alpha")) {
- var3 = 4;
- var4 = var4.substring(4);
- } else if (var4.startsWith("saturation")) {
- var3 = 5;
- var4 = var4.substring(10);
- }
-
- if (var3 == 0) {
- var2[0] = 0;
- var2[1] = 0;
- return var3;
- } else {
- int var5 = 0;
- int var6 = 255;
-
- try {
- int var7 = var4.indexOf(45);
- if (var7 < 0) {
- var5 = var6 = Integer.parseInt(var4);
- } else {
- var5 = Integer.parseInt(var4.substring(0, var7));
- var6 = Integer.parseInt(var4.substring(var7 + 1));
- }
- } catch (Exception var8) {
- }
-
- if (var5 < 0) {
- var5 = 0;
- }
-
- if (var6 < 0) {
- var6 = 0;
- }
-
- if (var5 > 255) {
- var5 = 255;
- }
-
- if (var6 > 255) {
- var6 = 255;
- }
-
- var2[0] = var5;
- var2[1] = var6;
- return var3;
- }
- }
-
- void applymethod(int[] var1, int var2, int var3, int var4, int[] var5) {
- if (var2 != 0) {
- int var6 = var4 < 2 ? var5[0] : var5[0] + (var5[1] - var5[0]) * var3 / (var4 - 1);
- switch (var2) {
- case 1:
- var1[0] = var6;
- return;
- case 2:
- var1[1] = var6;
- return;
- case 3:
- var1[2] = var6;
- return;
- case 4:
- var1[3] = var6;
- return;
- case 5:
- int var7 = Math.max(Math.max(var1[0], var1[1]), var1[2]);
- int var8 = var7 * (255 - var6) / 255;
- if (var1[0] == 0) {
- var1[0] = var8;
- }
-
- if (var1[1] == 0) {
- var1[1] = var8;
- }
-
- if (var1[2] == 0) {
- var1[2] = var8;
- return;
- }
- default:
- }
- }
- }
-
- public void run() {
- Thread var1 = Thread.currentThread();
- var1.setPriority(3);
- int var2 = this.canvas.size().width;
- int var3 = this.canvas.size().height;
- int[] var4 = new int[2];
- int[] var5 = new int[2];
- int var6 = this.XControls.getParams(var4);
- int var7 = this.YControls.getParams(var5);
- int[] var8 = new int[var2 * var3];
- int[] var9 = new int[4];
- int var10 = 0;
-
- for(int var11 = 0; var11 < var3; ++var11) {
- for(int var12 = 0; var12 < var2; ++var12) {
- var9[0] = var9[1] = var9[2] = 0;
- var9[3] = 255;
- if (var6 < var7) {
- this.applymethod(var9, var6, var12, var2, var4);
- this.applymethod(var9, var7, var11, var3, var5);
- } else {
- this.applymethod(var9, var7, var11, var3, var5);
- this.applymethod(var9, var6, var12, var2, var4);
- }
-
- var8[var10++] = var9[3] << 24 | var9[0] << 16 | var9[1] << 8 | var9[2];
- if (this.kicker != var1) {
- return;
- }
- }
- }
-
- this.newImage(var1, var2, var3, var8);
- }
-
- synchronized void newImage(Thread var1, int var2, int var3, int[] var4) {
- if (this.kicker == var1) {
- Image var5 = ((Component)this).createImage(new MemoryImageSource(var2, var3, ColorModel.getRGBdefault(), var4, 0, var2));
- this.canvas.setImage(var5);
- this.kicker = null;
- }
- }
- }
-