home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / DTEXT.EXE / CLASS / DancingText.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-04-17  |  5.4 KB  |  231 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Event;
  6. import java.awt.Font;
  7. import java.awt.Graphics;
  8. import java.awt.Image;
  9. import java.awt.image.ImageObserver;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import java.util.StringTokenizer;
  13.  
  14. public class DancingText extends Applet implements Runnable {
  15.    StringInfo strInfo = new StringInfo();
  16.    ColorInfo color = new ColorInfo();
  17.    Image offscreen;
  18.    Graphics offgraphics;
  19.    Thread myThread;
  20.    Font font;
  21.    boolean shadow;
  22.    boolean mouse;
  23.    int charSpace;
  24.    int maxXOff;
  25.    int maxYOff;
  26.    int shaXOff;
  27.    int shaYOff;
  28.    int speed;
  29.    URL url;
  30.    Dimension dim;
  31.    String target;
  32.  
  33.    public void init() {
  34.       int var2 = 0;
  35.       String var1;
  36.       if ((var1 = ((Applet)this).getParameter("fontStyle")) != null) {
  37.          StringTokenizer var3 = new StringTokenizer(var1, "|");
  38.  
  39.          while(var3.hasMoreTokens()) {
  40.             String var4 = var3.nextToken();
  41.             if (var4.equals("PLAIN")) {
  42.                var2 += 0;
  43.             } else if (var4.equals("BOLD")) {
  44.                ++var2;
  45.             } else if (var4.equals("ITALIC")) {
  46.                var2 += 2;
  47.             }
  48.          }
  49.       } else {
  50.          var2 = 0;
  51.       }
  52.  
  53.       int var21;
  54.       if ((var1 = ((Applet)this).getParameter("fontSize")) != null) {
  55.          var21 = Integer.parseInt(var1);
  56.       } else {
  57.          var21 = 36;
  58.       }
  59.  
  60.       String var22;
  61.       if ((var1 = ((Applet)this).getParameter("fontName")) != null) {
  62.          var22 = var1;
  63.       } else {
  64.          var22 = "TimesRoman";
  65.       }
  66.  
  67.       this.font = new Font(var22, var2, var21);
  68.       if ((var1 = ((Applet)this).getParameter("charSpace")) != null) {
  69.          this.charSpace = Integer.parseInt(var1);
  70.       } else {
  71.          this.charSpace = 2;
  72.       }
  73.  
  74.       if ((var1 = ((Applet)this).getParameter("maxXOffset")) != null) {
  75.          this.maxXOff = Integer.parseInt(var1);
  76.       } else {
  77.          this.maxXOff = 2;
  78.       }
  79.  
  80.       if ((var1 = ((Applet)this).getParameter("maxYOffset")) != null) {
  81.          this.maxYOff = Integer.parseInt(var1);
  82.       } else {
  83.          this.maxYOff = 4;
  84.       }
  85.  
  86.       if ((var1 = ((Applet)this).getParameter("shadowXOffset")) != null) {
  87.          this.shaXOff = Integer.parseInt(var1);
  88.       } else {
  89.          this.shaXOff = 3;
  90.       }
  91.  
  92.       if ((var1 = ((Applet)this).getParameter("shadowYOffset")) != null) {
  93.          this.shaYOff = Integer.parseInt(var1);
  94.       } else {
  95.          this.shaYOff = 3;
  96.       }
  97.  
  98.       if ((var1 = ((Applet)this).getParameter("text")) == null) {
  99.          var1 = "DancingText";
  100.       }
  101.  
  102.       this.strInfo.putInfo(var1, this.font, this.charSpace, this.maxXOff + Math.abs(this.shaXOff), this.maxYOff + Math.abs(this.shaYOff));
  103.       ((Applet)this).resize(this.strInfo.width, this.strInfo.height);
  104.       if ((var1 = ((Applet)this).getParameter("shadow")) != null) {
  105.          this.shadow = new Boolean(var1);
  106.       } else {
  107.          this.shadow = true;
  108.       }
  109.  
  110.       if (this.shadow && (var1 = ((Applet)this).getParameter("shadowColor")) != null) {
  111.          this.color.shadowColor = this.color.getColor(var1);
  112.       } else {
  113.          this.color.shadowColor = new Color(128, 128, 128);
  114.       }
  115.  
  116.       var1 = ((Applet)this).getParameter("textColor");
  117.       this.color.calcColor(var1, this.strInfo.length);
  118.       if ((var1 = ((Applet)this).getParameter("baseColor")) != null) {
  119.          this.color.baseColor = this.color.getColor(var1);
  120.       } else {
  121.          this.color.baseColor = ((Component)this).getBackground();
  122.       }
  123.  
  124.       if ((var1 = ((Applet)this).getParameter("speed")) != null) {
  125.          this.speed = Integer.parseInt(var1);
  126.       } else {
  127.          this.speed = 100;
  128.       }
  129.  
  130.       if ((var1 = ((Applet)this).getParameter("target")) != null) {
  131.          this.target = var1;
  132.       }
  133.  
  134.       if ((var1 = ((Applet)this).getParameter("URL")) != null) {
  135.          try {
  136.             this.url = new URL(var1);
  137.          } catch (MalformedURLException var5) {
  138.             System.out.println("Malformed URL: Check Applet parameter - URL");
  139.          }
  140.       }
  141.  
  142.       this.dim = ((Component)this).size();
  143.       this.offscreen = ((Component)this).createImage(this.dim.width, this.dim.height);
  144.       this.offgraphics = this.offscreen.getGraphics();
  145.       this.offgraphics.setFont(this.font);
  146.    }
  147.  
  148.    public void start() {
  149.       if (this.myThread == null) {
  150.          this.myThread = new Thread(this);
  151.          this.myThread.start();
  152.       }
  153.  
  154.    }
  155.  
  156.    public void stop() {
  157.       this.myThread.stop();
  158.       this.myThread = null;
  159.    }
  160.  
  161.    public void run() {
  162.       for(; this.myThread != null; ((Component)this).repaint()) {
  163.          try {
  164.             Thread.sleep((long)this.speed);
  165.          } catch (InterruptedException var1) {
  166.          }
  167.       }
  168.  
  169.    }
  170.  
  171.    public void update(Graphics var1) {
  172.       this.offgraphics.setColor(this.color.baseColor);
  173.       this.offgraphics.fillRect(0, 0, this.dim.width, this.dim.height);
  174.       int var2 = this.shaXOff < 0 ? -this.shaXOff + 4 : 4;
  175.       int var3 = 1 + this.strInfo.ascent - (this.shaYOff < 0 ? this.shaYOff : 0);
  176.  
  177.       for(int var4 = 0; var4 < this.strInfo.length; ++var4) {
  178.          int var5 = var2 + (int)(Math.random() * (double)this.maxXOff);
  179.          int var6 = var3 + (int)(Math.random() * (double)this.maxYOff);
  180.          if (this.shadow) {
  181.             this.offgraphics.setColor(this.color.shadowColor);
  182.             this.offgraphics.drawChars(this.strInfo.separated, var4, 1, var5 + this.shaXOff, var6 + this.shaYOff);
  183.          }
  184.  
  185.          this.offgraphics.setColor(this.color.textColor[var4]);
  186.          this.offgraphics.drawChars(this.strInfo.separated, var4, 1, var5, var6);
  187.          var2 += this.strInfo.charWidth[var4];
  188.       }
  189.  
  190.       var1.drawImage(this.offscreen, 0, 0, (ImageObserver)null);
  191.    }
  192.  
  193.    public void paint(Graphics var1) {
  194.       var1.drawImage(this.offscreen, 0, 0, (ImageObserver)null);
  195.    }
  196.  
  197.    public boolean mouseEnter(Event var1, int var2, int var3) {
  198.       if (this.url != null) {
  199.          ((Applet)this).showStatus(this.url.toString());
  200.       }
  201.  
  202.       return true;
  203.    }
  204.  
  205.    public boolean mouseExit(Event var1, int var2, int var3) {
  206.       if (this.url != null) {
  207.          ((Applet)this).showStatus("");
  208.       }
  209.  
  210.       return true;
  211.    }
  212.  
  213.    public boolean mouseDown(Event var1, int var2, int var3) {
  214.       if (this.url != null) {
  215.          if (this.target != null) {
  216.             ((Applet)this).getAppletContext().showDocument(this.url, this.target);
  217.          } else {
  218.             ((Applet)this).getAppletContext().showDocument(this.url);
  219.          }
  220.  
  221.          ((Applet)this).showStatus("Opening document, please wait.");
  222.       }
  223.  
  224.       return true;
  225.    }
  226.  
  227.    public String getAppletInfo() {
  228.       return "DancingText 1.0 by Stanley Poon - 12 Feb 1996";
  229.    }
  230. }
  231.