home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.applet.AppletContext;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.awt.image.ImageObserver;
- import java.io.DataInputStream;
- import java.io.FilterInputStream;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.StringTokenizer;
-
- public class Banners extends Applet implements Runnable {
- private String msgFile;
- private String separator;
- private int borderWidth;
- private int reloadInterval;
- private int xPos;
- private int yPos;
- private int frameDelay;
- private int redV;
- private int greenV;
- private int blueV;
- private int effectVal;
- private int animVal;
- private int dWidth;
- private int dHeight;
- private int dOffset;
- private int numImages;
- private int centerX;
- private int centerY;
- // $FF: renamed from: i int
- private int field_0;
- private long startTime;
- private long startPause;
- private long lastReloadTime;
- private Color borderColor;
- private Color borderHilite;
- private Color borderShadow;
- private Color animColor;
- private Color fgColor;
- private Thread animatorThread;
- private boolean threadSuspended = false;
- private boolean bgLoaded = false;
- private boolean mouseOver = false;
- private boolean initialized = false;
- private boolean debug = false;
- private Image offImage;
- private Image offBgImage;
- private Graphics offGraphics;
- private Graphics offBgGraphics;
- private MediaTracker imageTracker = new MediaTracker(this);
- private static final int MSG_ENTER = 0;
- private static final int MSG_EXIT = 1;
- private static final int MSG_PAUSE = 2;
- private static final int MSG_DONE = 3;
- private static final int EFF_NONE = 0;
- private static final int EFF_COLOR = 1;
- private static final int ANI_NONE = 0;
- private static final int ANI_SCROLLLEFT = 1;
- private static final int ANI_SCROLLRIGHT = 2;
- private static final int ANI_SCROLLUP = 3;
- private static final int ANI_SCROLLDOWN = 4;
- private static final int ANI_ZOOMIN = 5;
- private static final int ANI_ZOOMOUT = 6;
- private static final int ANI_FADE = 7;
- private static final int ANI_WIPELEFT = 8;
- private static final int ANI_WIPERIGHT = 9;
- private static final int ANI_WIPEUP = 10;
- private static final int ANI_WIPEDOWN = 11;
- private static final int BG_NONE = 0;
- private static final int BG_SQUEEZE = 1;
- private static final int ALN_CENTER = 0;
- private static final int ALN_LEFT = 1;
- private static final int ALN_RIGHT = 2;
- private static final int ALN_TOP = 3;
- private static final int ALN_BOTTOM = 4;
- private static final int MAX_ZOOM = 100;
- private static final int MIN_ZOOM = 1;
- private BannersMsg firstMsg;
- private BannersMsg msg;
- private BannersMsg def = new BannersMsg();
-
- public void init() {
- }
-
- public String getAppletInfo() {
- return "Banners 1.02, copyright 1996, Macromedia, Inc.";
- }
-
- public void start() {
- if (this.animatorThread == null) {
- this.threadSuspended = false;
- this.animatorThread = new Thread(this);
- this.animatorThread.start();
- }
-
- }
-
- public void stop() {
- if (this.animatorThread != null && this.animatorThread.isAlive()) {
- this.animatorThread.stop();
- }
-
- this.animatorThread = null;
- this.threadSuspended = true;
- }
-
- public void run() {
- while(!this.initialized) {
- try {
- Thread.sleep(50L);
- } catch (InterruptedException var5) {
- }
- }
-
- if (this.firstMsg == null) {
- this.raiseErr("No valid messages found, can't run...");
- } else {
- BannersMsg var3 = this.cueNextMessage();
- this.startTime = System.currentTimeMillis();
-
- while(Thread.currentThread() == this.animatorThread) {
- var3 = this.nextFrame(var3);
- this.startTime += (long)this.frameDelay;
- long var1 = this.startTime - System.currentTimeMillis();
- if (var1 > 0L) {
- try {
- Thread.sleep(var1);
- } catch (InterruptedException var4) {
- }
- }
- }
-
- }
- }
-
- public void paint(Graphics var1) {
- if (!this.initialized) {
- this.initInstance(var1);
- } else {
- if (this.offImage != null) {
- var1.drawImage(this.offBgImage, 0, 0, this);
- var1.clipRect(this.dOffset, this.dOffset, this.dWidth, this.dHeight);
- var1.drawImage(this.offImage, 0, 0, this);
- }
-
- }
- }
-
- private synchronized BannersMsg nextFrame(BannersMsg var1) {
- ((Component)this).size();
- this.offGraphics = this.offImage.getGraphics();
- this.tryToLoadBgImage(var1, false);
- this.offGraphics.drawImage(this.offBgImage, 0, 0, this);
- if (var1.state == 0 && !this.applyAnimation(var1, var1.enter)) {
- if (var1.pause > 0) {
- var1.state = 2;
- this.startPause = System.currentTimeMillis();
- } else {
- var1.state = 1;
- this.cueAnimation(var1, var1.exit);
- }
- }
-
- if (var1.state == 2 && System.currentTimeMillis() - this.startPause > (long)var1.pause) {
- var1.state = 1;
- this.cueAnimation(var1, var1.exit);
- }
-
- if (var1.state == 1 && !this.applyAnimation(var1, var1.exit)) {
- var1.state = 3;
- }
-
- this.applyEffect(var1);
- if (var1.state == 3) {
- return this.cueNextMessage();
- } else {
- this.offGraphics.setFont(var1.font);
- if (var1.shadowColor != null) {
- if (var1.emboss) {
- this.offGraphics.setColor(Color.white);
-
- for(this.field_0 = 0; this.field_0 < var1.numLines; ++this.field_0) {
- this.offGraphics.drawString(var1.text[this.field_0], this.xPos - var1.shadowDepth, this.yPos - var1.shadowDepth + this.field_0 * var1.lineHeight);
- }
- }
-
- this.offGraphics.setColor(var1.shadowColor);
-
- for(this.field_0 = 0; this.field_0 < var1.numLines; ++this.field_0) {
- this.offGraphics.drawString(var1.text[this.field_0], this.xPos + var1.shadowDepth, this.yPos + var1.shadowDepth + this.field_0 * var1.lineHeight);
- }
- }
-
- this.offGraphics.setColor(this.fgColor);
-
- for(this.field_0 = 0; this.field_0 < var1.numLines; ++this.field_0) {
- this.offGraphics.drawString(var1.text[this.field_0], this.xPos, this.yPos + this.field_0 * var1.lineHeight);
- }
-
- Graphics var2 = ((Component)this).getGraphics();
- if (var2 != null) {
- var2.clipRect(this.dOffset, this.dOffset, this.dWidth, this.dHeight);
- var2.drawImage(this.offImage, 0, 0, this);
- }
-
- return var1;
- }
- }
-
- private synchronized boolean applyAnimation(BannersMsg var1, int var2) {
- boolean var3 = var1.state == 0;
- boolean var4 = var1.state == 1;
- boolean var5 = false;
- switch (var2) {
- case 0:
- var5 = true;
- break;
- case 1:
- if (var3 && this.xPos <= this.centerX && this.xPos > this.centerX - var1.cpf) {
- var5 = true;
- } else if (var4 && this.xPos < this.dOffset - var1.textWidth) {
- var5 = true;
- } else {
- this.xPos -= var1.cpf;
- }
- break;
- case 2:
- if (var3 && this.xPos <= this.centerX && this.xPos > this.centerX - var1.cpf) {
- var5 = true;
- } else if (var4 && this.xPos > this.dWidth - this.dOffset) {
- var5 = true;
- } else {
- this.xPos += var1.cpf;
- }
- break;
- case 3:
- if (var3 && this.yPos <= this.centerY && this.yPos > this.centerY - var1.cpf) {
- var5 = true;
- } else if (var4 && this.yPos < this.dOffset + var1.textAscent - var1.textHeight) {
- var5 = true;
- } else {
- this.yPos -= var1.cpf;
- }
- break;
- case 4:
- if (var3 && this.yPos <= this.centerY && this.yPos > this.centerY - var1.cpf) {
- var5 = true;
- }
-
- if (var4 && this.yPos > this.dHeight + var1.textAscent - this.dOffset) {
- var5 = true;
- } else {
- this.yPos += var1.cpf;
- }
- break;
- case 5:
- case 6:
- if (var3 && this.animVal == var1.size) {
- var5 = true;
- } else {
- if (var2 == 5) {
- this.animVal += var1.cpf;
- } else {
- this.animVal -= var1.cpf;
- }
-
- if (var3) {
- if (var2 == 5 && this.animVal >= var1.size || var2 == 6 && this.animVal <= var1.size) {
- this.animVal = var1.size;
- }
- } else if (var4 && (var2 == 5 && this.animVal > 100 || var2 == 6 && this.animVal < 1)) {
- var5 = true;
- }
- }
-
- if (!var5) {
- this.setupMsgFont(var1, this.animVal);
- this.alignMessage(var1, var2);
- }
- break;
- case 7:
- if (var3) {
- this.animColor = this.fadeColor(this.animColor, var1.textColor, var1.cpf);
- if (this.animColor == null) {
- var5 = true;
- this.animColor = var1.textColor;
- }
- } else if (var4) {
- this.animColor = this.fadeColor(this.animColor, var1.bgColor, var1.cpf);
- if (this.animColor == null) {
- var5 = true;
- this.animColor = var1.bgColor;
- }
- }
-
- if (!var5) {
- this.fgColor = this.animColor;
- }
- break;
- case 8:
- this.animVal -= var1.cpf;
- if (this.animVal < 0) {
- var5 = true;
- this.animVal = var1.textWidth;
- } else if (var3) {
- this.offGraphics.clipRect(this.xPos + this.animVal, this.yPos - var1.textAscent, var1.textWidth - this.animVal, var1.textHeight);
- } else if (var4) {
- this.offGraphics.clipRect(this.xPos, this.yPos - var1.textAscent, this.animVal, var1.textHeight);
- }
- break;
- case 9:
- this.animVal += var1.cpf;
- if (this.animVal > var1.textWidth) {
- var5 = true;
- this.animVal = 0;
- } else if (var3) {
- this.offGraphics.clipRect(this.xPos, this.yPos - var1.textAscent, this.animVal, var1.textHeight);
- } else if (var4) {
- this.offGraphics.clipRect(this.xPos + this.animVal, this.yPos - var1.textAscent, var1.textWidth - this.animVal, var1.textHeight);
- }
- break;
- case 10:
- this.animVal -= var1.cpf;
- if (this.animVal < 0) {
- var5 = true;
- this.animVal = var1.textHeight;
- } else if (var3) {
- this.offGraphics.clipRect(this.xPos, this.yPos - var1.textAscent + this.animVal, var1.textWidth, var1.textHeight - this.animVal);
- } else if (var4) {
- this.offGraphics.clipRect(this.xPos, this.yPos - var1.textAscent, var1.textWidth, this.animVal);
- }
- break;
- case 11:
- this.animVal += var1.cpf;
- if (this.animVal > var1.textHeight) {
- var5 = true;
- this.animVal = 0;
- } else if (var3) {
- this.offGraphics.clipRect(this.xPos, this.yPos - var1.textAscent, var1.textWidth, this.animVal);
- } else if (var4) {
- this.offGraphics.clipRect(this.xPos, this.yPos - var1.textAscent + this.animVal, var1.textWidth, var1.textHeight - this.animVal);
- }
- }
-
- return !var5;
- }
-
- private synchronized void applyEffect(BannersMsg var1) {
- switch (var1.effect) {
- case 1:
- if (this.effectVal > 4) {
- this.redV = (int)(Math.random() * (double)255.0F);
- this.greenV = (int)(Math.random() * (double)255.0F);
- this.blueV = (int)(Math.random() * (double)255.0F);
- this.fgColor = new Color(this.redV, this.greenV, this.blueV);
- this.effectVal = 0;
- }
-
- ++this.effectVal;
- return;
- default:
- }
- }
-
- private void initInstance(Graphics var1) {
- if (this.offImage == null) {
- Dimension var2 = ((Component)this).size();
- this.offImage = ((Component)this).createImage(var2.width, var2.height);
- this.offBgImage = ((Component)this).createImage(var2.width, var2.height);
- this.offBgGraphics = this.offBgImage.getGraphics();
- String var3 = ((Applet)this).getParameter("bgColor");
- if (var3 == null) {
- this.def.bgColor = ((Component)this).getBackground();
- } else {
- this.def.bgColor = this.convertColor(var3);
- }
-
- this.offBgGraphics.setColor(this.def.bgColor);
- this.offBgGraphics.fillRect(0, 0, var2.width, var2.height);
- var1.drawImage(this.offBgImage, 0, 0, this);
- this.parseParams();
- int var4 = this.borderColor.getRed();
- int var5 = this.borderColor.getGreen();
- int var6 = this.borderColor.getBlue();
- this.borderHilite = new Color(var4 + 40 < 256 ? var4 + 40 : 255, var5 + 40 < 256 ? var5 + 40 : 255, var6 + 40 < 256 ? var6 + 40 : 255);
- this.borderShadow = new Color(var4 - 40 >= 0 ? var4 - 40 : 0, var5 - 40 >= 0 ? var5 - 40 : 0, var6 - 40 >= 0 ? var6 - 40 : 0);
- this.dOffset = 3 * this.borderWidth;
- this.dWidth = var2.width - 2 * this.dOffset;
- this.dHeight = var2.height - 2 * this.dOffset;
- this.initialized = true;
- }
- }
-
- private synchronized BannersMsg cueNextMessage() {
- if (this.reloadInterval > 0 && this.msgFile != null && System.currentTimeMillis() - this.lastReloadTime > (long)this.reloadInterval) {
- this.parseMessages(this.def, this.getMsgsFromFile(this.msgFile));
- }
-
- if (this.firstMsg == null) {
- this.raiseErr("No valid messages were found, applet can't run...");
- return null;
- } else {
- boolean var1 = this.msg == null;
- if (var1) {
- this.msg = this.firstMsg;
- }
-
- Object var2 = null;
- if (var1 || this.msg.repeatCnt >= this.msg.repeat) {
- if (!var1) {
- if (this.msg.bgExit != 0) {
- switch (this.msg.bgExit) {
- case 1:
- Graphics var3 = ((Component)this).getGraphics();
- if (var3 != null) {
- this.bgTransition(var3, this.offImage, this.def.bgColor, "out");
- }
- }
- }
-
- this.msg = this.msg.next;
- if (this.msg == null) {
- this.msg = this.firstMsg;
- }
- }
-
- this.msg.repeatCnt = 0;
- this.frameDelay = this.msg.fps > 0 ? 1000 / this.msg.fps : 100;
- this.offBgGraphics = this.offBgImage.getGraphics();
- switch (this.msg.bgEnter) {
- case 0:
- this.drawBackground(this.offBgGraphics, this.msg, true);
- Graphics var5 = ((Component)this).getGraphics();
- if (var5 != null) {
- var5.drawImage(this.offBgImage, 0, 0, this);
- }
- break;
- case 1:
- this.drawBackground(this.offBgGraphics, this.msg, true);
- Graphics var4 = ((Component)this).getGraphics();
- if (var4 != null) {
- this.bgTransition(var4, this.offBgImage, this.def.bgColor, "in");
- }
- }
-
- this.setupMsgFont(this.msg, this.msg.size);
- this.centerX = this.dOffset + (this.dWidth - this.msg.textWidth) / 2;
- this.centerY = this.dOffset + (this.dHeight - this.msg.textHeight) / 2 + this.msg.textAscent;
- if (this.mouseOver && this.msg.url != null) {
- ((Applet)this).showStatus(this.msg.url);
- } else {
- ((Applet)this).showStatus("");
- }
- }
-
- ++this.msg.repeatCnt;
- this.msg.state = 0;
- this.cueAnimation(this.msg, this.msg.enter);
- return this.msg;
- }
- }
-
- private void cueAnimation(BannersMsg var1, int var2) {
- boolean var3 = var1.state == 0;
- boolean var4 = var1.state == 1;
- if (var3) {
- switch (var2) {
- case 1:
- this.xPos = this.dOffset + this.dWidth;
- break;
- case 2:
- this.xPos = this.dOffset - var1.textWidth;
- break;
- case 3:
- this.yPos = this.dOffset + this.dHeight + var1.textAscent;
- break;
- case 4:
- this.yPos = this.dOffset - var1.textHeight + var1.textAscent;
- }
-
- this.alignMessage(var1, var2);
- }
-
- switch (var2) {
- case 5:
- case 6:
- if (var3) {
- if (var2 == 5) {
- this.animVal = 1;
- } else {
- this.animVal = 100;
- }
- } else if (var4) {
- this.animVal = var1.size;
- }
-
- this.setupMsgFont(var1, this.animVal);
- this.alignMessage(var1, var2);
- break;
- case 7:
- if (var3) {
- this.animColor = var1.bgColor;
- } else if (var4) {
- this.animColor = var1.textColor;
- }
- break;
- case 8:
- this.animVal = var1.textWidth;
- break;
- case 9:
- case 11:
- this.animVal = 0;
- break;
- case 10:
- this.animVal = var1.textHeight;
- }
-
- this.fgColor = var1.textColor;
- }
-
- private void alignMessage(BannersMsg var1, int var2) {
- if (var2 != 1 && var2 != 2) {
- if (var1.align == 1) {
- this.xPos = this.dOffset;
- } else if (var1.align == 2) {
- this.xPos = this.dOffset + this.dWidth - var1.textWidth;
- } else {
- this.xPos = this.dOffset + (this.dWidth - var1.textWidth) / 2;
- }
- }
-
- if (var2 != 3 && var2 != 4) {
- if (var1.align == 3) {
- this.yPos = this.dOffset + var1.textAscent;
- return;
- }
-
- if (var1.align == 4) {
- this.yPos = this.dOffset + this.dHeight - var1.textHeight + var1.textAscent;
- return;
- }
-
- this.yPos = this.dOffset + (this.dHeight - var1.textHeight) / 2 + var1.textAscent;
- }
-
- }
-
- private void setupMsgFont(BannersMsg var1, int var2) {
- var1.font = new Font(var1.fontName, var1.style, var2);
- FontMetrics var3 = ((Component)this).getFontMetrics(var1.font);
- var1.textAscent = var3.getAscent();
- var1.textDescent = var3.getDescent();
- var1.lineHeight = var3.getHeight();
- var1.textWidth = 0;
-
- for(this.field_0 = 0; this.field_0 < var1.numLines; ++this.field_0) {
- var1.textWidth = Math.max(var1.textWidth, var3.stringWidth(var1.text[this.field_0]));
- }
-
- var1.textHeight = var1.numLines * var1.lineHeight - var3.getLeading();
- if (var1.shadowColor != null) {
- if (var1.emboss) {
- this.field_0 = 2;
- } else {
- this.field_0 = 1;
- }
-
- var1.textWidth += this.field_0 * var1.shadowDepth;
- var1.textHeight += this.field_0 * var1.shadowDepth;
- var1.textDescent += this.field_0 * var1.shadowDepth;
- }
-
- }
-
- public boolean mouseDown(Event var1, int var2, int var3) {
- if (!var1.controlDown() && !var1.shiftDown()) {
- if (this.msg != null && this.msg.url != null) {
- Object var4 = null;
-
- try {
- var7 = new URL(((Applet)this).getDocumentBase(), this.msg.url);
- } catch (MalformedURLException var6) {
- this.raiseErr("Unable to get url '" + this.msg.url + "' relative to '" + ((Applet)this).getDocumentBase() + "'");
- return false;
- }
-
- AppletContext var5 = ((Applet)this).getAppletContext();
- if (this.msg.urlTargetFrame == null) {
- var5.showDocument(var7, "_parent");
- } else {
- var5.showDocument(var7, this.msg.urlTargetFrame);
- }
- }
- } else {
- if (this.threadSuspended) {
- ((Applet)this).showStatus("");
- this.animatorThread.resume();
- } else {
- ((Applet)this).showStatus("Applet paused, shift-click to resume");
- this.animatorThread.suspend();
- }
-
- this.threadSuspended = !this.threadSuspended;
- }
-
- return false;
- }
-
- public boolean mouseEnter(Event var1, int var2, int var3) {
- this.mouseOver = true;
- if (this.msg != null && this.msg.url != null) {
- ((Applet)this).showStatus(this.msg.url);
- return true;
- } else {
- return false;
- }
- }
-
- public boolean mouseExit(Event var1, int var2, int var3) {
- this.mouseOver = false;
- return false;
- }
-
- private void drawBackground(Graphics var1, BannersMsg var2, boolean var3) {
- this.drawBorder(var1);
- var1.clipRect(this.dOffset, this.dOffset, this.dWidth, this.dHeight);
- var1.setColor(var2.bgColor);
- Dimension var4 = ((Component)this).size();
- var1.fillRect(0, 0, var4.width, var4.height);
- if (var2.bgImageURL != null) {
- boolean var5 = this.tryToLoadBgImage(var2, true);
- if (var3) {
- for(; !var5; var5 = this.tryToLoadBgImage(var2, true)) {
- try {
- Thread.sleep(50L);
- } catch (InterruptedException var6) {
- }
- }
- }
- }
-
- }
-
- private boolean tryToLoadBgImage(BannersMsg var1, boolean var2) {
- if (var1.bgImage != null && (!var1.bgLoaded || var2)) {
- if ((this.imageTracker.statusID(var1.imageNum, true) & 8) == 0) {
- if (this.imageTracker.isErrorID(var1.imageNum)) {
- this.raiseErr("Error loading " + var1.bgImageURL + ", skipping...");
- var1.bgLoaded = true;
- this.startTime = System.currentTimeMillis();
- return true;
- } else {
- ((Applet)this).showStatus("Loading background " + var1.bgImageURL + "...");
- return false;
- }
- } else {
- Image var3 = var1.bgImage;
- int var6 = var3.getWidth((ImageObserver)null);
- int var7 = var3.getHeight((ImageObserver)null);
- Graphics var8 = this.offBgImage.getGraphics();
- var8.clipRect(this.dOffset, this.dOffset, this.dWidth, this.dHeight);
- if (var6 > 0 && var7 > 0) {
- for(int var4 = this.dOffset; var4 < this.dWidth; var4 += var6) {
- for(int var5 = this.dOffset; var5 < this.dWidth; var5 += var7) {
- var8.drawImage(var3, var4, var5, this);
- }
- }
- }
-
- ((Applet)this).showStatus("");
- var1.bgLoaded = true;
- this.startTime = System.currentTimeMillis();
- return true;
- }
- } else {
- return false;
- }
- }
-
- private void drawBorder(Graphics var1) {
- if (this.borderWidth >= 1) {
- Dimension var2 = ((Component)this).size();
- int var3 = this.borderWidth;
- int var4 = 2 * var3;
- var1.clipRect(0, 0, var2.width, var2.height);
- drawRaisedRect(var1, 0, 0, var2.width - 1, var2.height - 1, var3, this.borderHilite, this.borderShadow, true);
- var1.setColor(this.borderColor);
- var1.fillRect(var3, var3, var2.width - var4, var2.height - var4);
- drawRaisedRect(var1, var4, var4, var2.width - var4 - 1, var2.height - var4 - 1, var4, this.borderHilite, this.borderShadow, false);
- }
- }
-
- private static void drawRaisedRect(Graphics var0, int var1, int var2, int var3, int var4, int var5, Color var6, Color var7, boolean var8) {
- for(int var9 = 0; var9 < var5; ++var9) {
- if (var8) {
- var0.setColor(var6);
- } else {
- var0.setColor(var7);
- }
-
- var0.drawLine(var1 + var9, var2 + var9, var3 - var9, var2 + var9);
- var0.drawLine(var1 + var9, var2 + var9, var1 + var9, var4 - var9);
- if (var8) {
- var0.setColor(var7);
- } else {
- var0.setColor(var6);
- }
-
- var0.drawLine(var3 - var9, var2 + var9, var3 - var9, var4 - var9);
- var0.drawLine(var1 + var9, var4 - var9, var3 - var9, var4 - var9);
- }
-
- }
-
- private void bgTransition(Graphics var1, Image var2, Color var3, String var4) {
- Dimension var5 = ((Component)this).size();
- Image var8 = ((Component)this).createImage(2 * var5.width, var5.height);
- Graphics var9 = var8.getGraphics();
- var9.drawImage(var2, var5.width, 0, this);
- if (var4.equals("out")) {
- for(double var10 = 0.9; var10 >= (double)0.0F; var10 -= 0.1) {
- this.shrink(var1, var8, var3, var5, var5.width, 10, (double)1.0F, var10);
- }
-
- } else {
- if (var4.equals("in")) {
- for(double var6 = 0.1; var6 <= 0.95; var6 += 0.1) {
- this.shrink(var1, var8, var3, var5, var5.width, 10, (double)1.0F, var6);
- }
-
- var1.drawImage(var2, 0, 0, this);
- }
-
- }
- }
-
- private void shrink(Graphics var1, Image var2, Color var3, Dimension var4, int var5, int var6, double var7, double var9) {
- Graphics var11 = var2.getGraphics();
- int var12 = 0;
- int var13 = 0;
- double var14 = ((double)1.0F - var7) / (double)(var4.height / var6);
- int var16 = (int)Math.round((double)var6 * var9);
- int var17 = (int)Math.round(((double)var4.height - (double)var4.height * var9) / (double)2.0F);
- int var18 = (int)Math.round((double)var5 * var7);
- int var19 = 0;
- var7 = (double)1.0F;
- var11.setColor(var3);
- var11.fillRect(0, 0, var4.width, var4.height);
-
- for(int var20 = 0; var20 < var4.height; var20 += var6) {
- var12 = 0;
-
- for(int var21 = var4.width; var21 < 2 * var4.width; var21 += var5) {
- var11.copyArea(var21, var20, var18, var16, var19 - var12 - var4.width, var17 - var13);
- var12 += var5 - var18;
- }
-
- var13 += var6 - var16;
- var7 -= var14;
- var19 = (int)Math.round(((double)var4.width - (double)var4.width * var7) / (double)2.0F);
- }
-
- var1.drawImage(var2, 0, 0, this);
-
- try {
- Thread.sleep(10L);
- } catch (InterruptedException var22) {
- }
- }
-
- private boolean parseParams() {
- Object var2 = null;
- this.separator = ((Applet)this).getParameter("separator");
- if (this.separator == null) {
- this.separator = "|";
- }
-
- String var5 = ((Applet)this).getParameter("messages");
- if (var5 == null) {
- var5 = "Banners";
- }
-
- this.msgFile = ((Applet)this).getParameter("msgFile");
- this.reloadInterval = this.convertTime("reloadInterval", ((Applet)this).getParameter("reloadInterval"), (double)0.0F);
- this.def.url = ((Applet)this).getParameter("url");
- this.def.urlTargetFrame = ((Applet)this).getParameter("urlTargetFrame");
- this.def.fontName = ((Applet)this).getParameter("font");
- if (this.def.fontName == null) {
- this.def.fontName = "TimesRoman";
- }
-
- this.def.size = this.convertInt("size", ((Applet)this).getParameter("size"), 36);
- this.def.style = this.convertStyle(((Applet)this).getParameter("style"));
- this.def.textColor = this.convertColor(((Applet)this).getParameter("textColor"));
- String var1 = ((Applet)this).getParameter("shadowColor");
- if (var1 == null) {
- this.def.shadowColor = null;
- } else {
- this.def.shadowColor = this.convertColor(var1);
- }
-
- this.def.shadowDepth = this.convertInt("shadowDepth", ((Applet)this).getParameter("shadowDepth"), 2);
- var1 = ((Applet)this).getParameter("bgColor");
- if (var1 == null) {
- this.def.bgColor = ((Component)this).getBackground();
- } else {
- this.def.bgColor = this.convertColor(var1);
- }
-
- this.def.bgImageURL = ((Applet)this).getParameter("bgImage");
- if (this.def.bgImageURL != null) {
- this.def.bgImage = ((Applet)this).getImage(((Applet)this).getDocumentBase(), this.def.bgImageURL);
- this.imageTracker.addImage(this.def.bgImage, 0);
- this.def.imageNum = 0;
- ++this.numImages;
- }
-
- this.def.bgEnter = this.convertBgAnimation(((Applet)this).getParameter("bgEnter"));
- this.def.bgExit = this.convertBgAnimation(((Applet)this).getParameter("bgExit"));
- this.def.fps = this.convertInt("fps", ((Applet)this).getParameter("fps"), 15);
- this.def.cpf = this.convertInt("cpf", ((Applet)this).getParameter("cpf"), 2);
- this.def.enter = this.convertAnimation(((Applet)this).getParameter("enter"));
- this.def.exit = this.convertAnimation(((Applet)this).getParameter("exit"));
- this.def.pause = this.convertTime("pause", ((Applet)this).getParameter("pause"), (double)0.0F);
- this.def.align = this.convertAlign(((Applet)this).getParameter("align"));
- this.def.effect = this.convertEffect(((Applet)this).getParameter("effect"));
- this.borderWidth = this.convertInt("borderWidth", ((Applet)this).getParameter("borderWidth"), 0);
- Dimension var3 = ((Component)this).size();
- if (this.borderWidth * 6 > var3.width || this.borderWidth * 6 > var3.height) {
- this.raiseErr("borderWidth too large, using 2...");
- this.borderWidth = 2;
- }
-
- this.borderColor = this.convertColor(((Applet)this).getParameter("borderColor"));
- this.def.emboss = this.convertEmboss(((Applet)this).getParameter("emboss"), this.def);
- if (this.msgFile != null) {
- var5 = this.getMsgsFromFile(this.msgFile);
- }
-
- this.parseMessages(this.def, var5);
- return true;
- }
-
- private synchronized String getMsgsFromFile(String var1) {
- Object var2 = null;
- Object var3 = null;
- ((Applet)this).showStatus("Getting messages");
-
- try {
- var10 = new URL(((Applet)this).getDocumentBase(), var1);
- } catch (MalformedURLException var7) {
- this.raiseErr("Unable to get msgFile '" + var1 + "' relative to '" + ((Applet)this).getDocumentBase() + "'");
- return null;
- }
-
- try {
- var9 = new DataInputStream(var10.openStream());
- } catch (IOException var6) {
- this.raiseErr("Unable to open msgfile '" + var10.toString() + "'");
- return null;
- }
-
- StringBuffer var4 = new StringBuffer();
-
- try {
- for(String var5 = var9.readLine(); var5 != null; var5 = var9.readLine()) {
- var4.append(var5);
- }
-
- ((FilterInputStream)var9).close();
- } catch (IOException var8) {
- this.raiseErr("Problem encountered while reading msgFile '" + var10.toString() + "'");
- return null;
- }
-
- ((Applet)this).showStatus("done");
- this.lastReloadTime = System.currentTimeMillis();
- return var4.toString();
- }
-
- private synchronized void parseMessages(BannersMsg var1, String var2) {
- if (var2 != null) {
- StringTokenizer var3 = new StringTokenizer(var2, this.separator);
- Object var4 = null;
- Object var5 = null;
- String var7 = null;
- Object var9 = null;
- if (this.firstMsg != null) {
- this.msg = this.firstMsg;
-
- for(BannersMsg var15 = this.msg.next; var15 != null; this.msg.next = null) {
- var15 = this.msg.next;
- }
-
- this.firstMsg = null;
- }
-
- for(this.msg = null; var3.hasMoreTokens(); ++this.field_0) {
- BannersMsg var16 = new BannersMsg();
- if (this.firstMsg == null) {
- this.firstMsg = var16;
- this.msg = var16;
- } else {
- this.msg.next = var16;
- this.msg = var16;
- }
-
- StringTokenizer var13 = new StringTokenizer(var3.nextToken(), "{");
- String var8 = new String(var13.nextToken());
- if (var8.indexOf(10) >= 0) {
- var8 = var8.replace('\n', ' ');
- }
-
- if (var8.indexOf(13) >= 0) {
- var8 = var8.replace('\r', ' ');
- }
-
- int var12 = var8.length();
- int var10 = 0;
- int var11 = var8.indexOf("\\n");
- this.msg.numLines = 1;
- if (var11 == -1) {
- this.msg.text[0] = var8;
- } else {
- if (var11 == 0) {
- this.msg.text[0] = "";
- } else {
- this.msg.text[0] = var8.substring(0, var11);
- }
-
- while(var11 >= 0 && var11 < var12) {
- var10 = var11 + 2;
- if (var10 >= var12) {
- this.msg.text[this.msg.numLines++] = "";
- break;
- }
-
- var11 = var8.indexOf("\\n", var10);
- if (var11 != -1) {
- if (var10 == var11) {
- this.msg.text[this.msg.numLines++] = "";
- } else {
- this.msg.text[this.msg.numLines++] = var8.substring(var10, var11);
- }
- } else {
- this.msg.text[this.msg.numLines++] = var8.substring(var10, var12);
- }
- }
- }
-
- this.msg.repeat = 1;
- this.msg.url = var1.url;
- this.msg.urlTargetFrame = var1.urlTargetFrame;
- this.msg.fontName = var1.fontName;
- this.msg.style = var1.style;
- this.msg.size = var1.size;
- this.msg.textColor = var1.textColor;
- this.msg.shadowColor = var1.shadowColor;
- this.msg.shadowDepth = var1.shadowDepth;
- this.msg.bgColor = var1.bgColor;
- this.msg.fps = var1.fps;
- this.msg.fps = var1.fps;
- this.msg.cpf = var1.cpf;
- this.msg.enter = var1.enter;
- this.msg.exit = var1.exit;
- this.msg.pause = var1.pause;
- this.msg.align = var1.align;
- this.msg.effect = var1.effect;
- this.msg.emboss = var1.emboss;
- this.msg.bgImage = var1.bgImage;
- this.msg.bgImageURL = var1.bgImageURL;
- this.msg.bgEnter = var1.bgEnter;
- this.msg.bgExit = var1.bgExit;
- this.msg.imageNum = var1.imageNum;
-
- while(var13.hasMoreTokens()) {
- StringTokenizer var14 = new StringTokenizer(var13.nextToken("{"));
- String var6 = var14.nextToken("=").trim().toLowerCase();
- if (var14.hasMoreTokens()) {
- var7 = var14.nextToken("}").trim();
- }
-
- if (var6.equals("url")) {
- this.msg.url = var7;
- } else if (var6.equals("urltargetframe")) {
- this.msg.urlTargetFrame = var7;
- } else if (var6.equals("enter")) {
- this.msg.enter = this.convertAnimation(var7);
- } else if (var6.equals("exit")) {
- this.msg.exit = this.convertAnimation(var7);
- } else if (var6.equals("pause")) {
- this.msg.pause = this.convertTime("pause", var7, (double)0.0F);
- } else if (var6.equals("repeat")) {
- this.msg.repeat = this.convertInt("repeat", var7, 0);
- } else if (var6.equals("font")) {
- this.msg.fontName = var7;
- } else if (var6.equals("size")) {
- this.msg.size = this.convertInt("size", var7, 36);
- } else if (var6.equals("style")) {
- this.msg.style = this.convertStyle(var7);
- } else if (var6.equals("textcolor")) {
- this.msg.textColor = this.convertColor(var7);
- } else if (var6.equals("shadowcolor")) {
- this.msg.shadowColor = this.convertColor(var7);
- } else if (var6.equals("shadowdepth")) {
- this.msg.shadowDepth = this.convertInt("shadowDepth", var7, 2);
- } else if (var6.equals("bgcolor")) {
- this.msg.bgColor = this.convertColor(var7);
- this.msg.bgImage = null;
- this.msg.bgImageURL = null;
- } else if (var6.equals("fps")) {
- this.msg.fps = this.convertInt("fps", var7, 15);
- } else if (var6.equals("cpf")) {
- this.msg.cpf = this.convertInt("cpf", var7, 2);
- } else if (var6.equals("align")) {
- this.msg.align = this.convertAlign(var7);
- } else if (var6.equals("effect")) {
- this.msg.effect = this.convertEffect(var7);
- } else if (var6.equals("emboss")) {
- this.msg.emboss = this.convertEmboss(var7, this.msg);
- } else if (var6.equals("bgimage")) {
- this.msg.bgImageURL = var7;
- this.msg.bgImage = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var7);
- this.imageTracker.addImage(this.msg.bgImage, this.numImages);
- this.msg.imageNum = this.numImages++;
- } else if (var6.equals("bgenter")) {
- this.msg.bgEnter = this.convertBgAnimation(var7);
- } else if (var6.equals("bgexit")) {
- this.msg.bgExit = this.convertBgAnimation(var7);
- } else {
- this.raiseErr("Message parameter '" + var6 + "' is invalid, ignoring...");
- }
- }
- }
-
- if (this.debug) {
- this.msg = this.firstMsg;
-
- for(this.field_0 = 0; this.msg != null; ++this.field_0) {
- this.msg = this.msg.next;
- }
- }
-
- this.msg = null;
- }
- }
-
- private int convertStyle(String var1) {
- if (var1 == null) {
- return 1;
- } else {
- var1 = var1.toLowerCase();
- if (var1.equals("plain")) {
- return 0;
- } else if (var1.equals("bold")) {
- return 1;
- } else if (var1.equals("italic")) {
- return 2;
- } else if (var1.equals("bolditalic")) {
- return 3;
- } else {
- this.raiseErr("Invalid style '" + var1 + "' - using Bold...");
- return 1;
- }
- }
- }
-
- private int convertInt(String var1, String var2, int var3) {
- if (var2 == null) {
- return var3;
- } else {
- int var4;
- try {
- var4 = Integer.parseInt(var2);
- } catch (NumberFormatException var5) {
- this.raiseErr("Invalid integer " + var2 + " for parameter '" + var1 + "', using " + var3);
- var4 = var3;
- }
-
- return var4;
- }
- }
-
- private int convertTime(String var1, String var2, double var3) {
- if (var2 == null) {
- return (int)(var3 * (double)1000.0F);
- } else {
- double var5;
- try {
- var5 = Double.valueOf(var2) * (double)1000.0F;
- } catch (NumberFormatException var7) {
- this.raiseErr("Invalid value " + var2 + " for parameter '" + var1 + "', using " + var3);
- var5 = var3 * (double)1000.0F;
- }
-
- return (int)var5;
- }
- }
-
- private int convertAnimation(String var1) {
- if (var1 == null) {
- return 1;
- } else {
- var1 = var1.toLowerCase();
- if (var1.equals("scrollleft")) {
- return 1;
- } else if (var1.equals("scrollright")) {
- return 2;
- } else if (var1.equals("scrollup")) {
- return 3;
- } else if (var1.equals("scrolldown")) {
- return 4;
- } else if (var1.equals("zoomin")) {
- return 5;
- } else if (var1.equals("zoomout")) {
- return 6;
- } else if (var1.equals("fade")) {
- return 7;
- } else if (var1.equals("wipeleft")) {
- return 8;
- } else if (var1.equals("wiperight")) {
- return 9;
- } else if (var1.equals("wipeup")) {
- return 10;
- } else if (var1.equals("wipedown")) {
- return 11;
- } else if (var1.equals("none")) {
- return 0;
- } else {
- this.raiseErr("Invalid animation '" + var1 + "' using 'scrollLeft'");
- return 1;
- }
- }
- }
-
- private int convertBgAnimation(String var1) {
- if (var1 == null) {
- return 0;
- } else {
- var1 = var1.toLowerCase();
- if (var1.equals("squeeze")) {
- return 1;
- } else if (var1.equals("none")) {
- return 0;
- } else {
- this.raiseErr("Invalid bg animation '" + var1 + "' using 'none'");
- return 0;
- }
- }
- }
-
- private int convertEffect(String var1) {
- if (var1 == null) {
- return 0;
- } else {
- var1 = var1.toLowerCase();
- if (var1.equals("color")) {
- return 1;
- } else if (var1.equals("none")) {
- return 0;
- } else {
- this.raiseErr("Invalid effect '" + var1 + "' - no effect used");
- return 0;
- }
- }
- }
-
- private int convertAlign(String var1) {
- if (var1 == null) {
- return 0;
- } else {
- var1 = var1.toLowerCase();
- if (!var1.equals("center") && !var1.equals("baseline")) {
- if (var1.equals("top")) {
- return 3;
- } else if (var1.equals("bottom")) {
- return 4;
- } else if (var1.equals("left")) {
- return 1;
- } else if (var1.equals("right")) {
- return 2;
- } else {
- this.raiseErr("Invalid align '" + var1 + "' using 'center'");
- return 0;
- }
- } else {
- return 0;
- }
- }
- }
-
- private boolean convertEmboss(String var1, BannersMsg var2) {
- if (var1 == null) {
- return false;
- } else {
- var1 = var1.toLowerCase();
- if (var1.equals("true")) {
- var2.shadowColor = Color.black;
- var2.shadowDepth = 1;
- return true;
- } else {
- return false;
- }
- }
- }
-
- private Color convertColor(String var1) {
- if (var1 == null) {
- return Color.black;
- } else {
- var1 = var1.toLowerCase().trim();
- if (var1.equals("black")) {
- return Color.black;
- } else if (var1.equals("blue")) {
- return Color.blue;
- } else if (var1.equals("cyan")) {
- return Color.cyan;
- } else if (var1.equals("darkgray")) {
- return Color.darkGray;
- } else if (var1.equals("gray")) {
- return Color.gray;
- } else if (var1.equals("green")) {
- return Color.green;
- } else if (var1.equals("lightgray")) {
- return Color.lightGray;
- } else if (var1.equals("magenta")) {
- return Color.magenta;
- } else if (var1.equals("orange")) {
- return Color.orange;
- } else if (var1.equals("pink")) {
- return Color.pink;
- } else if (var1.equals("red")) {
- return Color.red;
- } else if (var1.equals("white")) {
- return Color.white;
- } else if (var1.equals("yellow")) {
- return Color.yellow;
- } else {
- try {
- return new Color(Integer.parseInt(var1, 16));
- } catch (NumberFormatException var4) {
- String var2 = var1.substring(1);
-
- try {
- return new Color(Integer.parseInt(var2, 16));
- } catch (NumberFormatException var3) {
- this.raiseErr("Could not parse: '" + var1 + "' into a color, using black");
- return Color.black;
- }
- }
- }
- }
- }
-
- private Color fadeColor(Color var1, Color var2, int var3) {
- int var4 = var1.getRed();
- int var5 = var1.getGreen();
- int var6 = var1.getBlue();
- int var7 = var2.getRed();
- int var8 = var2.getGreen();
- int var9 = var2.getBlue();
- if (var4 == var7 && var5 == var8 && var6 == var9) {
- return null;
- } else {
- if (var4 > var7) {
- var4 -= var3;
- if (var4 < var7) {
- var4 = var7;
- }
- } else if (var4 < var7) {
- var4 += var3;
- if (var4 > var7) {
- var4 = var7;
- }
- }
-
- if (var5 > var8) {
- var5 -= var3;
- if (var5 < var8) {
- var5 = var8;
- }
- } else if (var5 < var8) {
- var5 += var3;
- if (var5 > var8) {
- var5 = var8;
- }
- }
-
- if (var6 > var9) {
- var6 -= var3;
- if (var6 < var9) {
- var6 = var9;
- }
- } else if (var6 < var9) {
- var6 += var3;
- if (var6 > var9) {
- var6 = var9;
- }
- }
-
- return new Color(var4, var5, var6);
- }
- }
-
- private void raiseErr(String var1) {
- ((Applet)this).showStatus("Banners: " + var1);
- System.out.println("Banners: " + var1);
- }
-
- private void dbg(String var1) {
- if (this.debug) {
- System.out.println("Debug: " + var1);
- System.out.flush();
- }
-
- }
- }
-