home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.applet.AudioClip;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.LayoutManager;
- import java.awt.MediaTracker;
- import java.awt.image.ImageObserver;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Date;
- import java.util.Vector;
-
- public class doganim extends Applet implements Runnable {
- static final int STARTUP_ID = 0;
- static final int BACKGROUND_ID = 1;
- static final int ANIMATION_ID = 2;
- MediaTracker tracker;
- Thread engine;
- Vector images;
- Vector captions;
- WrappingLabel wrapLabel;
- URL baseDir;
- int frameNum;
- Integer frameNumKey;
- int repeat = -1;
- int currentLoop = 1;
- int maxWidth;
- int maxHeight;
- int appWidth;
- int appHeight;
- Dimension bgSize;
- boolean error;
- boolean BigError;
- boolean loaded;
- Image startUpImage;
- URL startUpImageURL;
- Image backgroundImage;
- URL backgroundImageURL;
- Image offScrImage;
- Graphics offScrGC;
- URL soundURL;
- AudioClip soundtrack;
- int globalPause = 100;
- boolean mousePause;
- int moveEW;
- int moveNS;
- int currentX;
- int currentY;
- boolean bounce;
- int bgR = 192;
- int bgG = 192;
- int bgB = 192;
- int delay;
- int timeout = -1000;
- long wantsecs;
- Vector destinations;
- String SausCRC = "";
- int CRCint;
- final boolean debug;
-
- public void stop() {
- this.dbg("stop");
- if (this.engine != null && this.engine.isAlive()) {
- this.engine.stop();
- }
-
- this.engine = null;
- }
-
- boolean fetchImages(Vector var1) {
- this.dbg("Storing images");
- int var3 = 0;
-
- try {
- var3 = var1.size();
- } catch (NullPointerException var8) {
- this.msg("No images fed in!");
- this.dbg("No images fed in!");
- return false;
- }
-
- for(int var2 = 0; var2 < var3; ++var2) {
- Object var4 = var1.elementAt(var2);
- if (var4 instanceof URL) {
- URL var5 = (URL)var4;
- Image var6 = ((Applet)this).getImage(var5);
- this.tracker.addImage(var6, 2);
- var1.setElementAt(var6, var2);
- }
- }
-
- try {
- this.tracker.waitForID(2);
- } catch (InterruptedException var7) {
- }
-
- if (this.tracker.isErrorID(2)) {
- return false;
- } else {
- for(int var9 = 0; var9 < var3; ++var9) {
- this.updateMaxDims(this.getImageDimensions((Image)var1.elementAt(var9)));
- }
-
- return true;
- }
- }
-
- Dimension getImageDimensions(Image var1) {
- return new Dimension(var1.getWidth((ImageObserver)null), var1.getHeight((ImageObserver)null));
- }
-
- private void msg(String var1) {
- ((Applet)this).showStatus(var1);
- }
-
- private boolean parseMovement(String var1) {
- this.dbg("Reading in movement");
- int var2 = 0;
- int var3 = var1.indexOf(44, 0);
- if (var3 == -1) {
- return false;
- } else {
- this.moveEW = Integer.parseInt(var1.substring(0, var3));
- var2 = var3 + 1;
- var3 = var1.indexOf(44, var3 + 1);
- if (var3 == -1) {
- var3 = var1.length();
- }
-
- this.moveNS = Integer.parseInt(var1.substring(var2, var3));
- return true;
- }
- }
-
- private final int setFrameNum(int var1) {
- this.frameNumKey = new Integer(this.frameNum = var1);
- return this.frameNum;
- }
-
- public void paint(Graphics var1) {
- if (!this.error && this.loaded) {
- if (this.images != null && this.images.size() > 0) {
- if (this.frameNum < this.images.size()) {
- if (this.backgroundImage == null) {
- this.offScrGC.fillRect(0, 0, this.appWidth, this.appHeight);
- } else {
- this.offScrGC.fillRect(0, 0, this.appWidth, this.appHeight);
- this.offScrGC.drawImage(this.backgroundImage, 0, 0, this);
- }
-
- Image var2 = (Image)this.images.elementAt(this.frameNum);
- this.currentX += this.moveEW;
- this.currentY += this.moveNS;
- boolean var3 = false;
- if (!this.bounce) {
- if (this.currentX > this.appWidth) {
- this.currentX = -this.maxWidth + 1;
- var3 = true;
- } else if (this.currentX < -this.maxWidth) {
- this.currentX = this.appWidth - 1;
- var3 = true;
- }
-
- if (this.currentY > this.appHeight + this.maxHeight) {
- this.currentY = -this.maxHeight + 1;
- var3 = true;
- } else if (this.currentY < -this.maxHeight) {
- this.currentY = this.appHeight + this.maxHeight;
- var3 = true;
- }
- } else {
- if (this.currentX > this.appWidth - this.maxWidth || this.currentX < 0) {
- this.moveEW = -this.moveEW;
- var3 = true;
- }
-
- if (this.currentY > this.appHeight - this.maxHeight || this.currentY < 0) {
- this.moveNS = -this.moveNS;
- var3 = true;
- }
- }
-
- if (var3) {
- try {
- Thread.sleep((long)this.delay);
- this.dbg("offedge " + this.delay);
- } catch (InterruptedException var8) {
- }
- }
-
- this.offScrGC.drawImage(var2, this.currentX, this.currentY, this);
- var1.drawImage(this.offScrImage, 0, 0, this);
- } else {
- if (this.backgroundImage == null) {
- var1.fillRect(0, 0, this.appWidth, this.appHeight);
- }
-
- this.currentX += this.moveEW;
- this.currentY += this.moveNS;
- boolean var9 = false;
- if (!this.bounce) {
- if (this.currentX > this.appWidth) {
- this.currentX = -this.maxWidth + 1;
- var9 = true;
- } else if (this.currentX < -this.maxWidth) {
- this.currentX = this.appWidth - 1;
- var9 = true;
- }
-
- if (this.currentY > this.appHeight + this.maxHeight) {
- this.currentY = -this.maxHeight + 1;
- var9 = true;
- } else if (this.currentY < -this.maxHeight) {
- this.currentY = this.appHeight + this.maxHeight;
- var9 = true;
- }
- } else {
- if (this.currentX > this.appWidth - this.maxWidth || this.currentX < 0) {
- this.moveEW = -this.moveEW;
- var9 = true;
- }
-
- if (this.currentY > this.appHeight - this.maxHeight || this.currentY < 0) {
- this.moveNS = -this.moveNS;
- var9 = true;
- }
- }
-
- if (var9) {
- try {
- Thread.sleep((long)this.delay);
- this.dbg("offedge2");
- } catch (InterruptedException var7) {
- }
- }
-
- this.offScrGC.drawImage((Image)this.images.lastElement(), this.currentX, this.currentY, this);
- var1.drawImage(this.offScrImage, 0, 0, this);
- }
- }
- } else if (this.startUpImage != null) {
- if (this.tracker.checkID(0)) {
- var1.drawImage(this.startUpImage, 0, 0, this);
- }
- } else if (this.backgroundImage != null) {
- if (this.tracker.checkID(1)) {
- this.dbg("drawing background image");
- var1.clearRect(0, 0, this.appWidth, this.appHeight);
- var1.drawImage(this.backgroundImage, 0, 0, this);
- }
- } else {
- var1.clearRect(0, 0, this.appWidth, this.appHeight);
- }
-
- if (this.wrapLabel != null && this.captions != null && this.captions.size() > 0) {
- Image var10 = (Image)this.images.elementAt(this.frameNum);
- int var11 = var10.getWidth(this);
- int var4 = var10.getHeight(this);
- int var5 = (this.appWidth - var11) * this.appHeight;
- int var6 = (this.appHeight - var4) * this.appWidth;
- if (var5 > var6) {
- this.wrapLabel.move(var11 + 2, 2);
- this.wrapLabel.resize(this.appWidth - var11 - 4, this.appHeight - 4);
- } else {
- this.wrapLabel.move(2, var4 + 2);
- this.wrapLabel.resize(this.appWidth - 4, this.appHeight - var4 - 4);
- }
-
- this.wrapLabel.setText((String)this.captions.elementAt(this.frameNum));
- this.dbg("Caption set : " + (String)this.captions.elementAt(this.frameNum));
- this.wrapLabel.repaint();
- }
-
- }
-
- private void generateCRC(String var1) {
- int var3 = var1.length();
-
- for(int var2 = 0; var2 < var3; ++var2) {
- this.CRCint += var1.charAt(var2);
- }
-
- }
-
- private boolean parseStartPos(String var1) {
- this.dbg("Reading in start position");
- int var2 = 0;
- int var3 = var1.indexOf(44, 0);
- if (var3 == -1) {
- return false;
- } else {
- this.currentX = Integer.parseInt(var1.substring(0, var3));
- var2 = var3 + 1;
- var3 = var1.indexOf(44, var3 + 1);
- if (var3 == -1) {
- var3 = var1.length();
- }
-
- this.currentY = Integer.parseInt(var1.substring(var2, var3));
- return true;
- }
- }
-
- void startPlaying() {
- if (this.soundtrack != null) {
- this.dbg("Playing soundtrack");
- this.soundtrack.loop();
- }
-
- }
-
- void stopPlaying() {
- if (this.soundtrack != null) {
- this.dbg("Stopping soundtrack");
- this.soundtrack.stop();
- }
-
- }
-
- private void dbg(String var1) {
- }
-
- private Vector prepareImages(String var1) throws MalformedURLException {
- this.msg("Fetching images");
- Vector var2 = new Vector(1);
-
- int var4;
- for(int var3 = 0; var3 < var1.length(); var3 = var4 + 1) {
- var4 = var1.indexOf(44, var3);
- if (var4 == -1) {
- var4 = var1.length();
- }
-
- String var5 = var1.substring(var3, var4);
- var2.addElement(new URL(this.baseDir, var5));
- }
-
- return var2;
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- private boolean checkCRC(String var1) {
- String var2 = Integer.toString(this.CRCint);
- int var4 = var2.length();
- if (var4 > var1.length()) {
- return false;
- } else {
- for(int var3 = 0; var3 < var4; ++var3) {
- this.SausCRC = this.SausCRC + (char)(65 + Integer.parseInt(var2.substring(var3, var3 + 1)));
- }
-
- this.dbg("generated CRC " + this.SausCRC + " " + this.SausCRC.equals(var1.substring(0, this.SausCRC.length())));
- return this.SausCRC.equals(var1.substring(0, this.SausCRC.length()));
- }
- }
-
- private boolean parseHexBG(String var1) {
- this.dbg("Ah - hex colors");
- if (var1.length() < 6) {
- return false;
- } else {
- this.bgR = Integer.parseInt(var1.substring(0, 2), 16);
- this.bgG = Integer.parseInt(var1.substring(2, 4), 16);
- this.bgB = Integer.parseInt(var1.substring(4, 6), 16);
- return true;
- }
- }
-
- public void start() {
- this.dbg("start");
- if (this.engine == null) {
- this.engine = new Thread(this);
- this.engine.start();
- }
-
- }
-
- public String getAppletInfo() {
- return "DogAnim (c) Sausage Software. Coded by JavaGirl";
- }
-
- private Vector prepareCaptions(String var1) {
- this.msg("Fetching captions");
- Vector var2 = new Vector(1);
-
- int var4;
- for(int var3 = 0; var3 < var1.length(); var3 = var4 + 1) {
- var4 = var1.indexOf(124, var3);
- if (var4 == -1) {
- var4 = var1.length();
- }
-
- String var5 = var1.substring(var3, var4);
- var2.addElement(var5);
- }
-
- return var2;
- }
-
- public void run() {
- Thread var2 = Thread.currentThread();
- var2.setPriority(1);
- this.dbg("Animation running");
- this.currentLoop = 1;
- Date var1 = new Date();
- if (this.timeout > 0) {
- this.wantsecs = var1.getTime() + (long)this.timeout;
- } else {
- this.wantsecs = var1.getTime() - 1000L;
- }
-
- if (!this.loaded) {
- try {
- if (this.BigError) {
- this.msg("Applet parameters have changed, please recompile with HotDog");
- this.error = true;
- return;
- }
-
- if (this.backgroundImageURL != null) {
- this.backgroundImage = ((Applet)this).getImage(this.backgroundImageURL);
- this.tracker.addImage(this.backgroundImage, 1);
- this.tracker.waitForID(1);
- if (this.tracker.isErrorID(1)) {
- this.msg("Error: unable to load background image");
- }
-
- this.bgSize = this.getImageDimensions(this.backgroundImage);
- ((Component)this).repaint();
- }
-
- if (this.error) {
- this.msg("Error: Can't find image files, check for correct path to image filename(s)");
- return;
- }
-
- this.dbg("About to create image" + this.appWidth + "," + this.appHeight);
- this.offScrImage = ((Component)this).createImage(this.appWidth, this.appHeight);
- this.offScrGC = this.offScrImage.getGraphics();
- Color var3 = new Color(this.bgR, this.bgG, this.bgB);
- this.offScrGC.setColor(var3);
- ((Applet)this).resize(this.appWidth, this.appHeight);
- if (this.soundURL != null && this.soundtrack == null) {
- this.dbg("Getting " + this.soundURL);
- this.soundtrack = ((Applet)this).getAudioClip(this.soundURL);
- if (this.soundtrack == null) {
- this.msg("Error: Unable to load soundtrack, check for .au format: 8kHz;Mono;MuLaw compression");
- }
- }
-
- this.loaded = true;
- this.error = false;
- } catch (Exception var11) {
- this.error = true;
- ((Throwable)var11).printStackTrace();
- }
- }
-
- if (this.repeat > 0 || this.frameNum < this.images.size()) {
- this.startPlaying();
- }
-
- try {
- if (this.images.size() > 0) {
- for(; this.maxWidth > 0 && this.maxHeight > 0 && this.engine == var2; this.setFrameNum(this.frameNum + 1)) {
- var1 = new Date();
- long var14 = var1.getTime();
- if (this.frameNum >= this.images.size()) {
- if (this.repeat == 0 || this.currentLoop >= this.repeat && this.repeat > 0 || var14 > this.wantsecs && this.timeout > 0) {
- return;
- }
-
- this.setFrameNum(0);
- if (this.repeat > 0 && this.currentLoop < this.repeat) {
- ++this.currentLoop;
- }
- }
-
- ((Component)this).repaint();
-
- try {
- Thread.sleep((long)this.globalPause);
- } catch (InterruptedException var10) {
- }
- }
-
- }
- } finally {
- this.stopPlaying();
- }
- }
-
- private boolean parseBackground(String var1) {
- this.dbg("Reading in background colors");
- int var2 = 0;
- int var3 = var1.length();
- if (var1.charAt(0) == '#') {
- return this.parseHexBG(var1.substring(1));
- } else {
- int var4 = var1.indexOf(44, 0);
- if (var4 == -1) {
- return false;
- } else {
- this.bgR = Integer.parseInt(var1.substring(0, var4));
- var2 = var4 + 1;
- if (var2 >= var3) {
- return false;
- } else {
- var4 = var1.indexOf(44, var2);
- if (var4 == -1) {
- return false;
- } else {
- this.bgG = Integer.parseInt(var1.substring(var2, var4));
- var2 = var4 + 1;
- if (var2 >= var3) {
- return false;
- } else {
- var4 = var1.indexOf(44, var2);
- if (var4 == -1) {
- this.bgB = Integer.parseInt(var1.substring(var2));
- }
-
- return true;
- }
- }
- }
- }
- }
- }
-
- public void init() {
- System.out.println(((Applet)this).getCodeBase());
- this.dbg("Applet starting");
- this.tracker = new MediaTracker(this);
-
- try {
- this.baseDir = ((Applet)this).getDocumentBase();
- String var1 = ((Applet)this).getParameter("REGUSER");
- if (var1 == null) {
- this.BigError = true;
- return;
- }
-
- this.dbg("User = " + var1);
- this.generateCRC(var1);
- var1 = ((Applet)this).getParameter("REPEAT");
- if (var1 != null) {
- this.repeat = Integer.parseInt(var1);
- }
-
- this.dbg("REPEAT = " + this.repeat);
- var1 = ((Applet)this).getParameter("SOUNDTRACK");
- this.dbg("SOUNDTRACK = " + var1);
- if (var1 != null) {
- this.dbg("Found soundtrack param - " + var1);
-
- try {
- this.soundURL = new URL(this.baseDir, var1);
- this.dbg("SOUNDTRACK url = " + this.soundURL);
- } catch (MalformedURLException var8) {
- this.dbg("Soundtrack URL " + var1 + " is not a valid URL");
- }
- }
-
- var1 = ((Applet)this).getParameter("PAUSE");
- this.dbg("PAUSE = " + var1);
- if (var1 != null) {
- this.globalPause = Integer.parseInt(var1);
- }
-
- this.appWidth = ((Component)this).size().width;
- this.appHeight = ((Component)this).size().height;
- var1 = ((Applet)this).getParameter("BACKGROUND");
- this.dbg("BACKGROUNDIMG = " + var1);
- if (var1 != null) {
- this.backgroundImageURL = new URL(this.baseDir, var1);
- }
-
- var1 = ((Applet)this).getParameter("BG");
- if (var1 != null && !this.parseBackground(var1)) {
- this.msg("Background messed up, using default");
- this.bgR = 170;
- this.bgG = 170;
- this.bgB = 170;
- }
-
- this.dbg("BG = " + this.bgR + ", " + this.bgG + ", " + this.bgB);
- var1 = ((Applet)this).getParameter("ENDDELAY");
- this.dbg("ENDDELAY = " + var1);
- if (var1 != null) {
- this.delay = Integer.parseInt(var1);
- }
-
- var1 = ((Applet)this).getParameter("IMAGELIST");
- this.dbg("IMAGELIST = " + var1);
- if (var1 == null) {
- this.msg("No image list. Essential!");
- this.error = true;
- return;
- }
-
- this.images = this.prepareImages(var1);
- this.generateCRC(var1);
- var1 = ((Applet)this).getParameter("CAPTIONLIST");
- this.dbg("CAPTIONLIST = " + var1);
- if (var1 != null) {
- this.captions = this.prepareCaptions(var1);
- String var2 = ((Applet)this).getParameter("FontName");
- if (var2 == null) {
- var2 = "Helvetica";
- }
-
- int var4 = 0;
-
- try {
- int var5 = Integer.parseInt(((Applet)this).getParameter("FontStyle"));
- if ((var5 & 1) > 0) {
- var4 |= 1;
- }
-
- if ((var5 & 2) > 0) {
- var4 |= 2;
- }
- } catch (NumberFormatException var7) {
- }
-
- int var3;
- try {
- var3 = Integer.parseInt(((Applet)this).getParameter("FontSize"));
- } catch (NumberFormatException var6) {
- var3 = 12;
- }
-
- this.wrapLabel = new WrappingLabel();
- this.wrapLabel.setFont(new Font(var2, var4, var3));
- ((Container)this).setLayout((LayoutManager)null);
- ((Container)this).add(this.wrapLabel);
- }
-
- var1 = ((Applet)this).getParameter("SERIALID");
- if (var1 == null) {
- this.BigError = true;
- return;
- }
-
- if (!this.checkCRC(var1)) {
- this.BigError = true;
- return;
- }
-
- this.dbg("SERIALID " + var1);
- if (!this.fetchImages(this.images)) {
- this.error = true;
- }
-
- this.dbg("MaxWidth = " + this.maxWidth + " maxheight = " + this.maxHeight);
- if (this.appWidth == 0) {
- if (this.bgSize.width > this.maxWidth) {
- this.appWidth = this.bgSize.width;
- } else {
- this.appWidth = this.maxWidth;
- }
- }
-
- if (this.appHeight == 0) {
- if (this.bgSize.height > this.maxHeight) {
- this.appHeight = this.bgSize.height;
- } else {
- this.appHeight = this.maxHeight;
- }
- }
-
- var1 = ((Applet)this).getParameter("BOUNCE");
- this.bounce = var1 == null ? true : var1.equalsIgnoreCase("yes") || var1.equalsIgnoreCase("true");
- this.dbg("BOUNCE = " + var1);
- var1 = ((Applet)this).getParameter("MOVE");
- this.dbg("MOVE = " + var1);
- if (var1 != null && !this.parseMovement(var1)) {
- this.msg("Invalid movement param");
- this.moveEW = 0;
- this.moveNS = 0;
- }
- } catch (MalformedURLException var9) {
- }
-
- this.setFrameNum(0);
- }
-
- public boolean handleEvent(Event var1) {
- if (var1.id != 501) {
- if (var1.id == 503) {
- if (this.BigError) {
- this.msg("Bad User - Use HotDog to change the image list");
- } else {
- this.msg("Animation");
- }
-
- return true;
- } else {
- return super.handleEvent(var1);
- }
- } else {
- if (this.loaded) {
- if (this.engine != null && this.engine.isAlive()) {
- if (this.destinations != null && this.destinations.size() >= this.frameNum) {
- URL var2 = (URL)this.destinations.elementAt(this.frameNum);
- ((Applet)this).getAppletContext().showDocument(var2);
- this.msg("Switching pages to " + var2);
- } else {
- if (this.mousePause) {
- this.engine.resume();
- this.startPlaying();
- } else {
- this.engine.suspend();
- this.stopPlaying();
- }
-
- this.mousePause = !this.mousePause;
- }
- } else {
- this.mousePause = false;
- this.setFrameNum(0);
- this.engine = new Thread(this);
- this.engine.start();
- }
- }
-
- return true;
- }
- }
-
- private void updateMaxDims(Dimension var1) {
- this.maxWidth = Math.max(var1.width, this.maxWidth);
- this.maxHeight = Math.max(var1.height, this.maxHeight);
- }
- }
-