home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / WDESAMPL.BIN / DitherTest.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-03-20  |  4.5 KB  |  241 lines

  1. import java.applet.Applet;
  2. import java.awt.BorderLayout;
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Frame;
  6. import java.awt.Image;
  7. import java.awt.Window;
  8. import java.awt.image.ColorModel;
  9. import java.awt.image.MemoryImageSource;
  10.  
  11. public class DitherTest extends Applet implements Runnable {
  12.    static final int NOOP = 0;
  13.    static final int RED = 1;
  14.    static final int GREEN = 2;
  15.    static final int BLUE = 3;
  16.    static final int ALPHA = 4;
  17.    static final int SATURATION = 5;
  18.    ThreadGroup appletThreadGroup;
  19.    Thread kicker;
  20.    DitherControls XControls;
  21.    DitherControls YControls;
  22.    DitherCanvas canvas;
  23.  
  24.    public void init() {
  25.       int[] var3 = new int[2];
  26.       int[] var4 = new int[2];
  27.  
  28.       String var1;
  29.       try {
  30.          var1 = ((Applet)this).getParameter("xaxis");
  31.       } catch (Exception var8) {
  32.          var1 = null;
  33.       }
  34.  
  35.       String var2;
  36.       try {
  37.          var2 = ((Applet)this).getParameter("yaxis");
  38.       } catch (Exception var7) {
  39.          var2 = null;
  40.       }
  41.  
  42.       if (var1 == null) {
  43.          var1 = "red";
  44.       }
  45.  
  46.       if (var2 == null) {
  47.          var2 = "blue";
  48.       }
  49.  
  50.       int var5 = this.colormethod(var1, var3);
  51.       int var6 = this.colormethod(var2, var4);
  52.       ((Container)this).setLayout(new BorderLayout());
  53.       this.XControls = new DitherControls(this, var3[0], var3[1], var5, false);
  54.       this.YControls = new DitherControls(this, var4[0], var4[1], var6, true);
  55.       this.YControls.addRenderButton();
  56.       ((Container)this).add("North", this.XControls);
  57.       ((Container)this).add("South", this.YControls);
  58.       ((Container)this).add("Center", this.canvas = new DitherCanvas());
  59.       this.appletThreadGroup = Thread.currentThread().getThreadGroup();
  60.    }
  61.  
  62.    public synchronized void start() {
  63.       if (this.canvas.getImage() == null) {
  64.          this.kicker = new Thread(this.appletThreadGroup, this);
  65.          this.kicker.start();
  66.       }
  67.  
  68.    }
  69.  
  70.    public synchronized void stop() {
  71.       try {
  72.          if (this.kicker != null) {
  73.             this.kicker.stop();
  74.          }
  75.       } catch (Exception var1) {
  76.       }
  77.  
  78.       this.kicker = null;
  79.    }
  80.  
  81.    public void restart() {
  82.       this.stop();
  83.       this.canvas.setImage((Image)null);
  84.       this.start();
  85.    }
  86.  
  87.    public static void main(String[] var0) {
  88.       Frame var1 = new Frame("DitherTest");
  89.       DitherTest var2 = new DitherTest();
  90.       var2.init();
  91.       ((Container)var1).add("Center", var2);
  92.       ((Window)var1).pack();
  93.       ((Window)var1).show();
  94.       var2.start();
  95.    }
  96.  
  97.    int colormethod(String var1, int[] var2) {
  98.       byte var3 = 0;
  99.       if (var1 == null) {
  100.          var1 = "";
  101.       }
  102.  
  103.       String var4 = var1.toLowerCase();
  104.       if (var4.startsWith("red")) {
  105.          var3 = 1;
  106.          var4 = var4.substring(3);
  107.       } else if (var4.startsWith("green")) {
  108.          var3 = 2;
  109.          var4 = var4.substring(5);
  110.       } else if (var4.startsWith("blue")) {
  111.          var3 = 3;
  112.          var4 = var4.substring(4);
  113.       } else if (var4.startsWith("alpha")) {
  114.          var3 = 4;
  115.          var4 = var4.substring(4);
  116.       } else if (var4.startsWith("saturation")) {
  117.          var3 = 5;
  118.          var4 = var4.substring(10);
  119.       }
  120.  
  121.       if (var3 == 0) {
  122.          var2[0] = 0;
  123.          var2[1] = 0;
  124.          return var3;
  125.       } else {
  126.          int var5 = 0;
  127.          int var6 = 255;
  128.  
  129.          try {
  130.             int var7 = var4.indexOf(45);
  131.             if (var7 < 0) {
  132.                var5 = var6 = Integer.parseInt(var4);
  133.             } else {
  134.                var5 = Integer.parseInt(var4.substring(0, var7));
  135.                var6 = Integer.parseInt(var4.substring(var7 + 1));
  136.             }
  137.          } catch (Exception var8) {
  138.          }
  139.  
  140.          if (var5 < 0) {
  141.             var5 = 0;
  142.          }
  143.  
  144.          if (var6 < 0) {
  145.             var6 = 0;
  146.          }
  147.  
  148.          if (var5 > 255) {
  149.             var5 = 255;
  150.          }
  151.  
  152.          if (var6 > 255) {
  153.             var6 = 255;
  154.          }
  155.  
  156.          var2[0] = var5;
  157.          var2[1] = var6;
  158.          return var3;
  159.       }
  160.    }
  161.  
  162.    void applymethod(int[] var1, int var2, int var3, int var4, int[] var5) {
  163.       if (var2 != 0) {
  164.          int var6 = var4 < 2 ? var5[0] : var5[0] + (var5[1] - var5[0]) * var3 / (var4 - 1);
  165.          switch (var2) {
  166.             case 1:
  167.                var1[0] = var6;
  168.                return;
  169.             case 2:
  170.                var1[1] = var6;
  171.                return;
  172.             case 3:
  173.                var1[2] = var6;
  174.                return;
  175.             case 4:
  176.                var1[3] = var6;
  177.                return;
  178.             case 5:
  179.                int var7 = Math.max(Math.max(var1[0], var1[1]), var1[2]);
  180.                int var8 = var7 * (255 - var6) / 255;
  181.                if (var1[0] == 0) {
  182.                   var1[0] = var8;
  183.                }
  184.  
  185.                if (var1[1] == 0) {
  186.                   var1[1] = var8;
  187.                }
  188.  
  189.                if (var1[2] == 0) {
  190.                   var1[2] = var8;
  191.                   return;
  192.                }
  193.             default:
  194.          }
  195.       }
  196.    }
  197.  
  198.    public void run() {
  199.       Thread var1 = Thread.currentThread();
  200.       var1.setPriority(3);
  201.       int var2 = this.canvas.size().width;
  202.       int var3 = this.canvas.size().height;
  203.       int[] var4 = new int[2];
  204.       int[] var5 = new int[2];
  205.       int var6 = this.XControls.getParams(var4);
  206.       int var7 = this.YControls.getParams(var5);
  207.       int[] var8 = new int[var2 * var3];
  208.       int[] var9 = new int[4];
  209.       int var10 = 0;
  210.  
  211.       for(int var11 = 0; var11 < var3; ++var11) {
  212.          for(int var12 = 0; var12 < var2; ++var12) {
  213.             var9[0] = var9[1] = var9[2] = 0;
  214.             var9[3] = 255;
  215.             if (var6 < var7) {
  216.                this.applymethod(var9, var6, var12, var2, var4);
  217.                this.applymethod(var9, var7, var11, var3, var5);
  218.             } else {
  219.                this.applymethod(var9, var7, var11, var3, var5);
  220.                this.applymethod(var9, var6, var12, var2, var4);
  221.             }
  222.  
  223.             var8[var10++] = var9[3] << 24 | var9[0] << 16 | var9[1] << 8 | var9[2];
  224.             if (this.kicker != var1) {
  225.                return;
  226.             }
  227.          }
  228.       }
  229.  
  230.       this.newImage(var1, var2, var3, var8);
  231.    }
  232.  
  233.    synchronized void newImage(Thread var1, int var2, int var3, int[] var4) {
  234.       if (this.kicker == var1) {
  235.          Image var5 = ((Component)this).createImage(new MemoryImageSource(var2, var3, ColorModel.getRGBdefault(), var4, 0, var2));
  236.          this.canvas.setImage(var5);
  237.          this.kicker = null;
  238.       }
  239.    }
  240. }
  241.