home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2003 January / maximum-cd-2003-01.iso / Software / Utilities / JPerk / jperk.exe / _SETUP.1 / Animate1.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-06  |  13.1 KB  |  711 lines

  1. import java.applet.Applet;
  2. import java.applet.AudioClip;
  3. import java.awt.Component;
  4. import java.awt.Event;
  5. import java.awt.Graphics;
  6. import java.awt.Image;
  7. import java.awt.MediaTracker;
  8. import java.awt.image.CropImageFilter;
  9. import java.awt.image.FilteredImageSource;
  10. import java.net.URL;
  11. import java.util.StringTokenizer;
  12.  
  13. public class Animate1 extends Applet implements Runnable {
  14.    AudioClip[] sounds;
  15.    boolean inapplet = false;
  16.    boolean preload = true;
  17.    boolean pauseloop = false;
  18.    // $FF: renamed from: ct CoolTool3
  19.    CoolTool3 field_0;
  20.    Graphics bufferG;
  21.    Image bufferI;
  22.    Image background;
  23.    Image foreground;
  24.    Image[] images;
  25.    int frame_count;
  26.    // $FF: renamed from: fi int
  27.    int field_1;
  28.    int width;
  29.    int height;
  30.    int cycles;
  31.    int prevfi;
  32.    // $FF: renamed from: ts int
  33.    int field_2;
  34.    // $FF: renamed from: tr int
  35.    int field_3;
  36.    // $FF: renamed from: xp int
  37.    int field_4;
  38.    // $FF: renamed from: yp int
  39.    int field_5;
  40.    int pxp;
  41.    int pyp;
  42.    // $FF: renamed from: mt java.awt.MediaTracker
  43.    MediaTracker field_6;
  44.    String[] bgcolors;
  45.    String[] fgcolors;
  46.    String[] pauses;
  47.    String[] sound_activations;
  48.    String[] targets;
  49.    String[] transition_list;
  50.    String[] transition_rates;
  51.    String[] transition_steps;
  52.    String[] transition_types;
  53.    String[] status_messages;
  54.    String[] x_pos;
  55.    String[] y_pos;
  56.    Thread woohoo;
  57.    URL[] urls;
  58.  
  59.    public void init() {
  60.       this.field_6 = new MediaTracker(this);
  61.       this.field_0 = new CoolTool3(this);
  62.       this.width = ((Component)this).size().width;
  63.       this.height = ((Component)this).size().height;
  64.       this.field_1 = this.frame_count = 0;
  65.       this.background = this.field_0.getBackgroundImage();
  66.       this.foreground = this.field_0.getForegroundImage();
  67.       String var1 = ((Applet)this).getParameter("CYCLES");
  68.       this.cycles = var1 != null ? this.field_0.getRandom(var1) : 0;
  69.       var1 = ((Applet)this).getParameter("PRELOAD");
  70.       if (var1 != null) {
  71.          this.preload = new Boolean(var1.trim());
  72.       }
  73.  
  74.       var1 = ((Applet)this).getParameter("TRANSITION.LIST");
  75.       String var2 = var1 != null ? var1 : "slidein(1-8) | slideout(1-8) | shutter(1-4) | scroll(2:4:6:8)";
  76.       StringTokenizer var3 = new StringTokenizer(var2, "|,");
  77.       int var4 = var3.countTokens();
  78.       this.transition_list = new String[var4];
  79.  
  80.       for(int var5 = 0; var5 < var4; ++var5) {
  81.          this.transition_list[var5] = var3.nextToken().trim();
  82.       }
  83.  
  84.       int var6;
  85.       for(var6 = 0; ((Applet)this).getParameter("IMAGE." + var6) != null; ++var6) {
  86.       }
  87.  
  88.       this.field_1 = 0;
  89.       this.frame_count = var6;
  90.       this.images = new Image[this.frame_count];
  91.       this.sounds = new AudioClip[this.frame_count];
  92.       this.bgcolors = new String[this.frame_count];
  93.       this.fgcolors = new String[this.frame_count];
  94.       this.pauses = new String[this.frame_count];
  95.       this.sound_activations = new String[this.frame_count];
  96.       this.targets = new String[this.frame_count];
  97.       this.transition_steps = new String[this.frame_count];
  98.       this.transition_rates = new String[this.frame_count];
  99.       this.transition_types = new String[this.frame_count];
  100.       this.status_messages = new String[this.frame_count];
  101.       this.x_pos = new String[this.frame_count];
  102.       this.y_pos = new String[this.frame_count];
  103.       this.urls = new URL[this.frame_count];
  104.  
  105.       for(int var31 = 0; ((Applet)this).getParameter("IMAGE." + var31) != null; ++var31) {
  106.          var1 = ((Applet)this).getParameter("IMAGE." + var31);
  107.          StringTokenizer var7 = new StringTokenizer(var1, " |,\t\r\n\f");
  108.  
  109.          try {
  110.             Image var8 = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var7.nextToken().trim());
  111.             if (var7.hasMoreTokens()) {
  112.                if (var8 != null) {
  113.                   this.field_6.addImage(var8, -1 * (var31 + 1));
  114.                }
  115.  
  116.                int var9 = this.field_0.getRandom(var7.nextToken());
  117.                int var10 = this.field_0.getRandom(var7.nextToken());
  118.                int var11 = this.field_0.getRandom(var7.nextToken());
  119.                int var12 = this.field_0.getRandom(var7.nextToken());
  120.                if (!this.field_6.checkID(-1 * (var31 + 1))) {
  121.                   this.field_6.waitForID(-1 * (var31 + 1));
  122.                }
  123.  
  124.                this.images[var31] = ((Component)this).createImage(new FilteredImageSource(var8.getSource(), new CropImageFilter(var9, var10, var11, var12)));
  125.                this.field_6.addImage(this.images[var31], var31 + 1);
  126.             } else {
  127.                this.images[var31] = var8;
  128.                if (this.images[var31] != null) {
  129.                   this.field_6.addImage(this.images[var31], var31 + 1);
  130.                }
  131.             }
  132.          } catch (Exception var15) {
  133.             System.out.println("001 Error: " + var15);
  134.          }
  135.  
  136.          var1 = ((Applet)this).getParameter("SOUND." + var31);
  137.          if (var1 != null) {
  138.             try {
  139.                this.sounds[var31] = ((Applet)this).getAudioClip(((Applet)this).getDocumentBase(), var1);
  140.             } catch (Exception var14) {
  141.                System.out.println("002 Error: " + var14);
  142.             }
  143.          }
  144.  
  145.          var1 = ((Applet)this).getParameter("BGCOLOR." + var31);
  146.          if (var1 != null) {
  147.             this.bgcolors[var31] = var1.trim();
  148.          } else {
  149.             this.bgcolors[var31] = var31 == 0 ? "lightGray" : this.bgcolors[var31 - 1];
  150.          }
  151.  
  152.          var1 = ((Applet)this).getParameter("FGCOLOR." + var31);
  153.          if (var1 != null) {
  154.             this.fgcolors[var31] = var1.trim();
  155.          } else {
  156.             this.fgcolors[var31] = var31 == 0 ? "lightGray" : this.fgcolors[var31 - 1];
  157.          }
  158.  
  159.          var1 = ((Applet)this).getParameter("SOUND.ACTIVATION." + var31);
  160.          if (var1 != null) {
  161.             this.sound_activations[var31] = var1.trim().toLowerCase();
  162.          } else {
  163.             this.sound_activations[var31] = var31 == 0 ? "auto" : this.sound_activations[var31 - 1];
  164.          }
  165.  
  166.          var1 = ((Applet)this).getParameter("TARGET." + var31);
  167.          if (var1 != null) {
  168.             this.targets[var31] = var1.trim();
  169.          } else {
  170.             this.targets[var31] = var31 == 0 ? "_self" : this.targets[var31 - 1];
  171.          }
  172.  
  173.          var1 = ((Applet)this).getParameter("PAUSE." + var31);
  174.          if (var1 != null) {
  175.             this.pauses[var31] = var1.trim();
  176.          } else {
  177.             this.pauses[var31] = var31 == 0 ? "200" : this.pauses[var31 - 1];
  178.          }
  179.  
  180.          var1 = ((Applet)this).getParameter("TRANSITION.TYPE." + var31);
  181.          if (var1 != null) {
  182.             this.transition_types[var31] = var1.trim().toLowerCase();
  183.          } else {
  184.             this.transition_types[var31] = var31 == 0 ? "overwrite()" : this.transition_types[var31 - 1];
  185.          }
  186.  
  187.          var1 = ((Applet)this).getParameter("TRANSITION.RATE." + var31);
  188.          if (var1 != null) {
  189.             this.transition_rates[var31] = var1.trim();
  190.          } else {
  191.             this.transition_rates[var31] = var31 == 0 ? "200" : this.transition_rates[var31 - 1];
  192.          }
  193.  
  194.          var1 = ((Applet)this).getParameter("TRANSITION.STEP." + var31);
  195.          if (var1 != null) {
  196.             this.transition_steps[var31] = var1.trim();
  197.          } else {
  198.             this.transition_steps[var31] = var31 == 0 ? "10" : this.transition_steps[var31 - 1];
  199.          }
  200.  
  201.          var1 = ((Applet)this).getParameter("POSITION." + var31);
  202.          if (var1 != null) {
  203.             StringTokenizer var32 = new StringTokenizer(var1, " |,\t\f\r\n");
  204.             this.x_pos[var31] = var32.nextToken().trim();
  205.             this.y_pos[var31] = var32.nextToken().trim();
  206.          } else {
  207.             this.x_pos[var31] = var31 == 0 ? "0" : this.x_pos[var31 - 1];
  208.             this.y_pos[var31] = var31 == 0 ? "0" : this.y_pos[var31 - 1];
  209.          }
  210.  
  211.          var1 = ((Applet)this).getParameter("URL." + var31);
  212.          if (var1 != null) {
  213.             if (var1.trim().equalsIgnoreCase("null")) {
  214.                this.urls[var31] = null;
  215.             } else {
  216.                try {
  217.                   this.urls[var31] = new URL(((Applet)this).getDocumentBase(), var1.trim());
  218.                } catch (Exception var13) {
  219.                   System.out.println("004 Error: " + var13);
  220.                }
  221.             }
  222.          } else {
  223.             this.urls[var31] = var31 == 0 ? null : this.urls[var31 - 1];
  224.          }
  225.  
  226.          var1 = ((Applet)this).getParameter("STATUS.MESSAGE." + var31);
  227.          if (var1 != null) {
  228.             this.status_messages[var31] = var1;
  229.          } else if (var31 == 0) {
  230.             this.status_messages[var31] = this.urls[var31] == null ? "" : this.urls[var31].toString();
  231.          } else {
  232.             this.status_messages[var31] = this.status_messages[var31 - 1];
  233.          }
  234.       }
  235.  
  236.    }
  237.  
  238.    public void run() {
  239.       String var1 = ((Applet)this).getParameter("CYCLES");
  240.       this.cycles = var1 != null ? this.field_0.getRandom(var1) : 0;
  241.       byte var2;
  242.       if (this.cycles < 1) {
  243.          var2 = 0;
  244.          this.cycles = 1;
  245.       } else {
  246.          var2 = 1;
  247.       }
  248.  
  249.       for(int var3 = 0; var3 < this.cycles * this.frame_count; var3 += var2) {
  250.          if (!this.field_6.checkID(this.field_1 + 1) && this.preload) {
  251.             try {
  252.                this.field_6.waitForID(this.field_1 + 1);
  253.             } catch (Exception var10) {
  254.             }
  255.          }
  256.  
  257.          if (this.inapplet) {
  258.             ((Applet)this).showStatus(this.status_messages[this.field_1]);
  259.          }
  260.  
  261.          if (this.sound_activations[this.field_1].equals("auto") && this.sounds[this.field_1] != null) {
  262.             this.sounds[this.field_1].play();
  263.          }
  264.  
  265.          String var4 = this.transition_types[this.field_1].startsWith("random") ? this.transition_list[(int)(Math.random() * (double)this.transition_list.length)] : this.transition_types[this.field_1];
  266.          this.prevfi = (this.field_1 - 1 + this.frame_count) % this.frame_count;
  267.          this.field_2 = this.field_0.getRandom(this.transition_steps[this.field_1]);
  268.          this.field_3 = this.field_0.getRandom(this.transition_rates[this.field_1]);
  269.          this.field_4 = this.field_0.getRandom(this.x_pos[this.field_1]);
  270.          this.field_5 = this.field_0.getRandom(this.y_pos[this.field_1]);
  271.          this.pxp = this.field_0.getRandom(this.x_pos[this.prevfi]);
  272.          this.pyp = this.field_0.getRandom(this.y_pos[this.prevfi]);
  273.          if (var4.startsWith("overwrite")) {
  274.             this.paintBackground();
  275.             this.bufferG.drawImage(this.images[this.field_1], this.field_4, this.field_5, this);
  276.             this.paintForeground();
  277.             ((Component)this).repaint();
  278.          } else if (!var4.startsWith("shutter")) {
  279.             if (var4.startsWith("shrink")) {
  280.                int var16 = this.field_0.getRandom(this.field_0.pre(this.field_0.post(var4, "("), ")"));
  281.                if (var16 == 1) {
  282.                   this.shrink((double)0.0F, (double)0.0F);
  283.                } else if (var16 == 2) {
  284.                   this.shrink((double)0.5F, (double)0.0F);
  285.                } else if (var16 == 3) {
  286.                   this.shrink((double)1.0F, (double)0.0F);
  287.                } else if (var16 == 4) {
  288.                   this.shrink((double)1.0F, (double)0.5F);
  289.                } else if (var16 == 5) {
  290.                   this.shrink((double)1.0F, (double)1.0F);
  291.                } else if (var16 == 6) {
  292.                   this.shrink((double)0.5F, (double)1.0F);
  293.                } else if (var16 == 7) {
  294.                   this.shrink((double)0.0F, (double)1.0F);
  295.                } else if (var16 == 8) {
  296.                   this.shrink((double)0.0F, (double)0.5F);
  297.                } else {
  298.                   this.shrink((double)0.5F, (double)0.5F);
  299.                }
  300.             } else if (var4.startsWith("expand")) {
  301.                int var17 = this.field_0.getRandom(this.field_0.pre(this.field_0.post(var4, "("), ")"));
  302.                if (var17 == 1) {
  303.                   this.expand((double)0.0F, (double)0.0F);
  304.                } else if (var17 == 2) {
  305.                   this.expand((double)0.5F, (double)0.0F);
  306.                } else if (var17 == 3) {
  307.                   this.expand((double)1.0F, (double)0.0F);
  308.                } else if (var17 == 4) {
  309.                   this.expand((double)1.0F, (double)0.5F);
  310.                } else if (var17 == 5) {
  311.                   this.expand((double)1.0F, (double)1.0F);
  312.                } else if (var17 == 6) {
  313.                   this.expand((double)0.5F, (double)1.0F);
  314.                } else if (var17 == 7) {
  315.                   this.expand((double)0.0F, (double)1.0F);
  316.                } else if (var17 == 8) {
  317.                   this.expand((double)0.0F, (double)0.5F);
  318.                } else {
  319.                   this.expand((double)0.5F, (double)0.5F);
  320.                }
  321.             } else if (var4.startsWith("slidein")) {
  322.                int var18 = this.field_0.getRandom(this.field_0.pre(this.field_0.post(var4, "("), ")"));
  323.                if (var18 == 1) {
  324.                   this.slideIn(-this.width, -this.height, 1, 1);
  325.                } else if (var18 == 2) {
  326.                   this.slideIn(0, -this.height, 0, 1);
  327.                } else if (var18 == 3) {
  328.                   this.slideIn(this.width, -this.height, -1, 1);
  329.                } else if (var18 == 4) {
  330.                   this.slideIn(this.width, 0, -1, 0);
  331.                } else if (var18 == 5) {
  332.                   this.slideIn(this.width, this.height, -1, -1);
  333.                } else if (var18 == 6) {
  334.                   this.slideIn(0, this.height, 0, -1);
  335.                } else if (var18 == 7) {
  336.                   this.slideIn(-this.width, this.height, 1, -1);
  337.                } else {
  338.                   this.slideIn(-this.width, 0, 1, 0);
  339.                }
  340.             } else if (var4.startsWith("slideout")) {
  341.                int var19 = this.field_0.getRandom(this.field_0.pre(this.field_0.post(var4, "("), ")"));
  342.                if (var19 == 1) {
  343.                   this.slideOut(-1, -1);
  344.                } else if (var19 == 2) {
  345.                   this.slideOut(0, -1);
  346.                } else if (var19 == 3) {
  347.                   this.slideOut(1, -1);
  348.                } else if (var19 == 4) {
  349.                   this.slideOut(1, 0);
  350.                } else if (var19 == 5) {
  351.                   this.slideOut(1, 1);
  352.                } else if (var19 == 6) {
  353.                   this.slideOut(0, 1);
  354.                } else if (var19 == 7) {
  355.                   this.slideOut(-1, 1);
  356.                } else {
  357.                   this.slideOut(-1, 0);
  358.                }
  359.             } else if (var4.startsWith("scroll")) {
  360.                int var20 = this.field_0.getRandom(this.field_0.pre(this.field_0.post(var4, "("), ")"));
  361.                if (var20 == 2) {
  362.                   this.scroll(0, 1);
  363.                } else if (var20 == 4) {
  364.                   this.scroll(-1, 0);
  365.                } else if (var20 == 6) {
  366.                   this.scroll(0, -1);
  367.                } else {
  368.                   this.scroll(1, 0);
  369.                }
  370.             } else if (var4.startsWith("squish")) {
  371.                int var21 = this.field_0.getRandom(this.field_0.pre(this.field_0.post(var4, "("), ")"));
  372.                if (var21 == 2) {
  373.                   this.squish(0, 1);
  374.                }
  375.  
  376.                if (var21 == 4) {
  377.                   this.squish(1, 0);
  378.                }
  379.  
  380.                if (var21 == 8) {
  381.                   this.squish(-1, 0);
  382.                } else {
  383.                   this.squish(0, -1);
  384.                }
  385.             }
  386.          } else {
  387.             int var5 = this.field_0.getRandom(this.field_0.pre(this.field_0.post(var4, "("), ")"));
  388.             this.paintBackground();
  389.             this.bufferG.drawImage(this.images[this.prevfi], this.pxp, this.pyp, this);
  390.  
  391.             for(int var6 = 0; var6 < this.field_2; ++var6) {
  392.                this.paintForeground();
  393.                this.bufferG.setColor(this.field_0.makeColor(this.fgcolors[this.field_1]));
  394.                if (var5 != 1 && var5 != 2) {
  395.                   int var22 = this.width / 2 * (this.field_2 - var6) / this.field_2;
  396.                   int var24 = this.height / 2 * (this.field_2 - var6) / this.field_2;
  397.                   this.bufferG.fillRect(var22, var24, this.width - 2 * var22, this.height - 2 * var24);
  398.                } else {
  399.                   int var7 = this.width / 2 * (var6 + 1) / this.field_2;
  400.                   int var8 = this.height / 2 * (var6 + 1) / this.field_2;
  401.                   this.bufferG.fillRect(0, 0, this.width, var8);
  402.                   this.bufferG.fillRect(0, this.height - var8, this.width, var8);
  403.                   this.bufferG.fillRect(0, 0, var7, this.height);
  404.                   this.bufferG.fillRect(this.width - var7, 0, var7, this.height);
  405.                }
  406.  
  407.                try {
  408.                   Thread.sleep((long)this.field_3);
  409.                } catch (Exception var15) {
  410.                }
  411.  
  412.                ((Component)this).repaint();
  413.             }
  414.  
  415.             for(int var23 = 0; var23 < this.field_2; ++var23) {
  416.                this.paintBackground();
  417.                this.bufferG.drawImage(this.images[this.field_1], this.field_4, this.field_5, this);
  418.                this.paintForeground();
  419.                this.bufferG.setColor(this.field_0.makeColor(this.fgcolors[this.field_1]));
  420.                if (var5 != 1 && var5 != 3) {
  421.                   int var26 = this.width / 2 * (var23 + 1) / this.field_2;
  422.                   int var27 = this.height / 2 * (var23 + 1) / this.field_2;
  423.                   this.bufferG.fillRect(var26, var27, this.width - 2 * var26, this.height - 2 * var27);
  424.                } else {
  425.                   int var25 = this.width / 2 * (this.field_2 - var23) / this.field_2;
  426.                   int var9 = this.height / 2 * (this.field_2 - var23) / this.field_2;
  427.                   this.bufferG.fillRect(0, 0, this.width, var9);
  428.                   this.bufferG.fillRect(0, this.height - var9, this.width, var9);
  429.                   this.bufferG.fillRect(0, 0, var25, this.height);
  430.                   this.bufferG.fillRect(this.width - var25, 0, var25, this.height);
  431.                }
  432.  
  433.                try {
  434.                   Thread.sleep((long)this.field_3);
  435.                } catch (Exception var14) {
  436.                }
  437.  
  438.                ((Component)this).repaint();
  439.             }
  440.  
  441.             this.paintBackground();
  442.             this.bufferG.drawImage(this.images[this.field_1], this.field_0.getRandom(this.x_pos[this.field_1]), this.field_0.getRandom(this.y_pos[this.field_1]), this);
  443.             this.paintForeground();
  444.  
  445.             try {
  446.                Thread.sleep((long)this.field_3);
  447.             } catch (Exception var13) {
  448.             }
  449.  
  450.             ((Component)this).repaint();
  451.          }
  452.  
  453.          this.paintBackground();
  454.          this.bufferG.drawImage(this.images[this.field_1], this.field_0.getRandom(this.x_pos[this.field_1]), this.field_0.getRandom(this.y_pos[this.field_1]), this);
  455.          this.paintForeground();
  456.          ((Component)this).repaint();
  457.          if (!this.pauses[this.field_1].startsWith("-")) {
  458.             this.pauseloop = false;
  459.  
  460.             try {
  461.                Thread.sleep((long)this.field_0.getRandom(this.pauses[this.field_1]));
  462.             } catch (Exception var12) {
  463.             }
  464.          } else {
  465.             this.pauseloop = true;
  466.  
  467.             while(this.pauseloop) {
  468.                try {
  469.                   Thread.sleep(100L);
  470.                } catch (Exception var11) {
  471.                }
  472.             }
  473.          }
  474.  
  475.          this.field_1 = (this.field_1 + 1) % this.frame_count;
  476.       }
  477.  
  478.    }
  479.  
  480.    public void shrink(double var1, double var3) {
  481.       for(int var5 = 0; var5 < this.field_2; ++var5) {
  482.          int var6 = this.width * (this.field_2 - var5) / this.field_2;
  483.          int var7 = this.height * (this.field_2 - var5) / this.field_2;
  484.          int var8 = (int)((double)this.pxp + var1 * (double)(this.width - var6));
  485.          int var9 = (int)((double)this.pyp + var3 * (double)(this.height - var7));
  486.          this.paintBackground();
  487.          this.bufferG.drawImage(this.images[this.field_1], this.field_4, this.field_5, this);
  488.          this.bufferG.drawImage(this.images[this.prevfi], var8, var9, var6, var7, this);
  489.          this.paintForeground();
  490.  
  491.          try {
  492.             Thread.sleep((long)this.field_3);
  493.          } catch (Exception var10) {
  494.          }
  495.  
  496.          ((Component)this).repaint();
  497.       }
  498.  
  499.    }
  500.  
  501.    public void expand(double var1, double var3) {
  502.       for(int var5 = 0; var5 < this.field_2; ++var5) {
  503.          int var6 = this.width * (var5 + 1) / this.field_2;
  504.          int var7 = this.height * (var5 + 1) / this.field_2;
  505.          int var8 = (int)((double)this.field_4 + var1 * (double)(this.width - var6));
  506.          int var9 = (int)((double)this.field_5 + var3 * (double)(this.height - var7));
  507.          this.paintBackground();
  508.          this.bufferG.drawImage(this.images[this.prevfi], this.pxp, this.pyp, this);
  509.          this.bufferG.drawImage(this.images[this.field_1], var8, var9, var6, var7, this);
  510.          this.paintForeground();
  511.  
  512.          try {
  513.             Thread.sleep((long)this.field_3);
  514.          } catch (Exception var10) {
  515.          }
  516.  
  517.          ((Component)this).repaint();
  518.       }
  519.  
  520.    }
  521.  
  522.    public void squish(int var1, int var2) {
  523.       for(int var3 = 0; var3 < this.field_2; ++var3) {
  524.          int var6;
  525.          int var7;
  526.          int var10;
  527.          int var11;
  528.          if (var1 == 0) {
  529.             var6 = var10 = this.width;
  530.             var7 = this.height * (this.field_2 - var3 - 1) / this.field_2;
  531.             var11 = this.height - var7;
  532.          } else {
  533.             var7 = var11 = this.height;
  534.             var6 = this.width * (this.field_2 - var3 - 1) / this.field_2;
  535.             var10 = this.width - var6;
  536.          }
  537.  
  538.          int var8 = var1 == -1 ? this.field_4 + this.width - var10 : 0;
  539.          int var4 = var1 == 1 ? this.pxp + this.width - var6 : 0;
  540.          int var9 = var2 == -1 ? this.field_5 + this.height - var11 : 0;
  541.          int var5 = var2 == 1 ? this.pyp + this.height - var7 : 0;
  542.          this.paintBackground();
  543.          this.bufferG.drawImage(this.images[this.prevfi], var4, var5, var6, var7, this);
  544.          this.bufferG.drawImage(this.images[this.field_1], var8, var9, var10, var11, this);
  545.          this.paintForeground();
  546.  
  547.          try {
  548.             Thread.sleep((long)this.field_3);
  549.          } catch (Exception var12) {
  550.          }
  551.  
  552.          ((Component)this).repaint();
  553.       }
  554.  
  555.    }
  556.  
  557.    public void scroll(int var1, int var2) {
  558.       for(int var3 = 0; var3 < this.field_2; ++var3) {
  559.          int var4 = this.field_4 + var1 * (this.width * (var3 + 1) / this.field_2 - this.width);
  560.          int var5 = this.field_5 + var2 * (this.height * (var3 + 1) / this.field_2 - this.height);
  561.          int var6 = this.pxp + var1 * this.width * (var3 + 1) / this.field_2;
  562.          int var7 = this.pyp + var2 * this.height * (var3 + 1) / this.field_2;
  563.          this.paintBackground();
  564.          this.bufferG.drawImage(this.images[this.prevfi], var6, var7, this);
  565.          this.bufferG.drawImage(this.images[this.field_1], var4, var5, this);
  566.          this.paintForeground();
  567.  
  568.          try {
  569.             Thread.sleep((long)this.field_3);
  570.          } catch (Exception var8) {
  571.          }
  572.  
  573.          ((Component)this).repaint();
  574.       }
  575.  
  576.    }
  577.  
  578.    public void slideIn(int var1, int var2, int var3, int var4) {
  579.       for(int var5 = 0; var5 < this.field_2; ++var5) {
  580.          int var6 = this.pxp + var1 + var3 * this.width * (var5 + 1) / this.field_2;
  581.          int var7 = this.pyp + var2 + var4 * this.height * (var5 + 1) / this.field_2;
  582.          this.paintBackground();
  583.          this.bufferG.drawImage(this.images[this.prevfi], this.field_4, this.field_5, this);
  584.          this.bufferG.drawImage(this.images[this.field_1], var6, var7, this);
  585.          this.paintForeground();
  586.  
  587.          try {
  588.             Thread.sleep((long)this.field_3);
  589.          } catch (Exception var8) {
  590.          }
  591.  
  592.          ((Component)this).repaint();
  593.       }
  594.  
  595.    }
  596.  
  597.    public void slideOut(int var1, int var2) {
  598.       for(int var3 = 0; var3 < this.field_2; ++var3) {
  599.          int var4 = this.pxp + var1 * this.width * (var3 + 1) / this.field_2;
  600.          int var5 = this.pyp + var2 * this.height * (var3 + 1) / this.field_2;
  601.          this.paintBackground();
  602.          this.bufferG.drawImage(this.images[this.field_1], this.field_4, this.field_5, this);
  603.          this.bufferG.drawImage(this.images[this.prevfi], var4, var5, this);
  604.          this.paintForeground();
  605.  
  606.          try {
  607.             Thread.sleep((long)this.field_3);
  608.          } catch (Exception var6) {
  609.          }
  610.  
  611.          ((Component)this).repaint();
  612.       }
  613.  
  614.    }
  615.  
  616.    public void paintBackground() {
  617.       this.bufferG.setColor(this.field_0.makeColor(this.bgcolors[this.field_1]));
  618.       this.bufferG.fillRect(0, 0, this.width, this.height);
  619.       if (this.background != null) {
  620.          this.bufferG.drawImage(this.background, 0, 0, this);
  621.       }
  622.  
  623.    }
  624.  
  625.    public void paintForeground() {
  626.       if (this.foreground != null) {
  627.          this.bufferG.drawImage(this.foreground, 0, 0, this);
  628.       }
  629.  
  630.    }
  631.  
  632.    public void paint(Graphics var1) {
  633.       var1.drawImage(this.bufferI, 0, 0, this);
  634.    }
  635.  
  636.    public void update(Graphics var1) {
  637.       this.paint(var1);
  638.    }
  639.  
  640.    public void start() {
  641.       if (this.woohoo == null) {
  642.          this.woohoo = new Thread(this);
  643.       }
  644.  
  645.       if (this.bufferG == null) {
  646.          this.bufferI = ((Component)this).createImage(this.width, this.height);
  647.          this.bufferG = this.bufferI.getGraphics();
  648.       }
  649.  
  650.       if (this.field_0.paramCheck("COPYRIGHT", "Animate applet, Copyright 1997 Sun Microsystems, Inc., all rights reserved.") && this.field_0.paramCheck("DOCUMENTATION", "Documentation found at: http://www.xm.com/cafe/")) {
  651.          this.woohoo.start();
  652.       } else {
  653.          System.out.println("Animate: you need to use the COPYRIGHT/DOCUMENTATION parameters correctly!");
  654.          ((Applet)this).showStatus("Animate: you need to use the COPYRIGHT/DOCUMENTATION parameters correctly!");
  655.       }
  656.    }
  657.  
  658.    public void stop() {
  659.       this.inapplet = false;
  660.       if (this.woohoo != null) {
  661.          this.woohoo.stop();
  662.          this.woohoo = null;
  663.       }
  664.  
  665.    }
  666.  
  667.    public void destroy() {
  668.       if (this.bufferG != null) {
  669.          this.bufferG.dispose();
  670.       }
  671.  
  672.    }
  673.  
  674.    public boolean mouseEnter(Event var1, int var2, int var3) {
  675.       if (this.pauses[this.field_1].equals("-2")) {
  676.          this.pauseloop = false;
  677.       }
  678.  
  679.       this.inapplet = true;
  680.       if (this.sound_activations[this.field_1].equals("enter") && this.sounds[this.field_1] != null) {
  681.          this.sounds[this.field_1].play();
  682.       }
  683.  
  684.       ((Applet)this).showStatus(this.status_messages[this.field_1]);
  685.       return true;
  686.    }
  687.  
  688.    public boolean mouseExit(Event var1, int var2, int var3) {
  689.       this.inapplet = false;
  690.       ((Applet)this).showStatus("");
  691.       return true;
  692.    }
  693.  
  694.    public boolean mouseDown(Event var1, int var2, int var3) {
  695.       if (this.pauses[this.field_1].equals("-1")) {
  696.          this.pauseloop = false;
  697.       }
  698.  
  699.       try {
  700.          ((Applet)this).getAppletContext().showDocument(this.urls[this.field_1], this.targets[this.field_1]);
  701.       } catch (Exception var4) {
  702.       }
  703.  
  704.       if (this.sound_activations[this.field_1].equals("click") && this.sounds[this.field_1] != null) {
  705.          this.sounds[this.field_1].play();
  706.       }
  707.  
  708.       return true;
  709.    }
  710. }
  711.