home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- 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.util.StringTokenizer;
- import java.util.Vector;
-
- public class FunScrollAnimate {
- static final int START = 0;
- static final int SHOW = 1;
- static final int END = 2;
- static final int DONE = 3;
- int state;
- FunScroll appl;
- FunScrollAttr attr;
- String imageName;
- Image image;
- boolean imageLoaded = false;
- int imageWidth;
- int imageHeight;
- Image bgImage;
- String bgText;
- boolean bgImageLoaded = false;
- int bgImageWidth;
- int bgImageHeight;
- MediaTracker mediaTracker;
- FunScrollFade startFadeTrans;
- FunScrollFade endFadeTrans;
- String unparsedText;
- String[] lines;
- protected int[] lineWidths;
- int noOfLines = 1;
- char[] chars;
- int noOfChars;
- int[] xPos;
- int[] yPos;
- boolean[] visible;
- int typedCount;
- int currLineIndex;
- int linePos;
- int delayCount;
- int margin;
- int offsetX;
- int offsetY;
- int width;
- int height;
- int scrollWidth;
- int scrollHeight;
- int textHeight;
- int lineHeight;
- // $FF: renamed from: bg java.awt.Color
- Color field_0;
- // $FF: renamed from: fg java.awt.Color
- Color field_1;
- Color darkBg;
- Color lightDarkBg;
- Color brightBg;
- Color brightFg;
- Font font;
- FontMetrics fontMetrics;
- int ascent;
- int descent;
- int leading;
- int maxWidth;
- int sinDegree;
- int xStart = -1;
- int yStart = -1;
- // $FF: renamed from: dx int
- int field_2;
- // $FF: renamed from: dy int
- int field_3;
-
- public FunScrollAnimate(FunScroll var1, String var2, Font var3, Color var4, Color var5, int var6, int var7, String var8) {
- this.appl = var1;
- this.font = var3;
- this.field_1 = var4;
- this.field_0 = var5;
- this.field_2 = var6;
- this.field_3 = var7;
- this.unparsedText = var2;
- this.attr = new FunScrollAttr(var2, var8);
- if (this.attr.type() == 1) {
- (new StringBuffer()).append(" msg:").append(this.attr.param()).toString();
- } else {
- (new StringBuffer()).append(" image:").append(this.attr.param()).toString();
- }
-
- (new StringBuffer()).append(" startScroll:").append(this.attr.startScroll()).toString();
- (new StringBuffer()).append(" endScroll:").append(this.attr.endScroll()).toString();
- (new StringBuffer()).append(" showDelay:").append(this.attr.showDelay()).toString();
- (new StringBuffer()).append(" endDelay:").append(this.attr.endDelay()).toString();
- (new StringBuffer()).append(" style:").append(this.attr.style()).toString();
- (new StringBuffer()).append(" drawStyle:").append(this.attr.drawStyle()).toString();
- (new StringBuffer()).append(" color:").append(this.attr.color()).toString();
- (new StringBuffer()).append(" bgImage:").append(this.attr.bgImage()).toString();
- (new StringBuffer()).append(" bgText:").append(this.attr.bgText()).toString();
- (new StringBuffer()).append(" bgOffsetX:").append(this.attr.bgOffsetX()).toString();
- (new StringBuffer()).append(" bgOffsetY:").append(this.attr.bgOffsetY()).toString();
- (new StringBuffer()).append(" offsetX:").append(this.attr.offsetX()).toString();
- (new StringBuffer()).append(" offsetY:").append(this.attr.offsetY()).toString();
- (new StringBuffer()).append("dy:").append(var7).append(" dx:").append(var6).toString();
- if (this.attr.color() != null) {
- this.field_1 = var1.readColor(this.attr.color(), var4);
- }
-
- (new StringBuffer()).append(" color:").append(var4).toString();
- this.fontMetrics = ((Component)var1).getFontMetrics(var3);
- this.ascent = this.fontMetrics.getAscent();
- this.descent = this.fontMetrics.getDescent();
- this.leading = this.fontMetrics.getLeading();
- this.lineHeight = this.fontMetrics.getHeight();
- if (this.attr.type() == 1) {
- this.initText();
- } else {
- this.initImage();
- }
- }
-
- void reset() {
- int var1 = this.attr.offsetX();
- int var2 = this.attr.offsetY();
- int var3 = this.appl.size().width;
- int var4 = this.appl.size().height;
- int var5 = this.appl.getMargin();
- if (this.offsetX != var1 || this.offsetY != var2 || this.width != var3 || this.height != var4) {
- this.startFadeTrans = null;
- this.endFadeTrans = null;
- }
-
- this.offsetX = var1;
- this.offsetY = var2;
- this.width = var3;
- this.height = var4;
- this.margin = var5;
- this.scrollWidth = var3 - 2 * var5 - var1;
- this.scrollHeight = var4 - 2 * var5 - var2;
- if (this.startFadeTrans != null) {
- this.startFadeTrans.resetFrameIndex();
- }
-
- if (this.endFadeTrans != null) {
- this.endFadeTrans.resetFrameIndex();
- }
-
- if (this.attr.type() == 1) {
- this.resetText();
- } else {
- this.resetImage();
- }
-
- this.initBgImage();
- }
-
- boolean update(Graphics var1) {
- var1.setFont(this.font);
- var1.setColor(this.field_1);
- if (this.attr.type() == 1) {
- this.animateText();
- } else {
- this.animateImage();
- }
-
- if (this.state == 3 && this.delayCount <= 0) {
- return true;
- } else {
- if (this.bgImage != null) {
- this.paintBgImage(var1);
- }
-
- if (this.offsetX != 0 || this.offsetY != 0) {
- var1.clipRect(this.margin + this.offsetX, this.margin + this.offsetY, this.width - 2 * this.margin - this.offsetX, this.height - 2 * this.margin - this.offsetY);
- }
-
- if (this.attr.type() == 1) {
- this.paintText(var1);
- } else {
- this.paintImage(var1);
- }
-
- return false;
- }
- }
-
- void initBgImage() {
- if (this.bgImage == null) {
- this.bgImage = null;
- if (this.attr.bgImage() == null) {
- if (this.attr.bgText() != null) {
- this.bgText = this.attr.bgText();
- this.bgImage = this.imageCreateEmpty(this.getBgTextSize().width, this.getBgTextSize().height);
- }
- } else {
- this.bgImage = this.appl.getImage(this.appl.getCodeBase(), this.attr.bgImage());
- }
-
- if (this.bgImage != null) {
- this.imageLoad(this.bgImage, 0);
- this.bgImageWidth = 0;
- this.bgImageHeight = 0;
- this.bgImageLoaded = false;
- this.checkBgImage();
- }
-
- }
- }
-
- boolean checkBgImage() {
- if (!this.imageCheck(0)) {
- return false;
- } else {
- this.bgImageLoaded = true;
- this.bgImageWidth = this.bgImage.getWidth((ImageObserver)null);
- this.bgImageHeight = this.bgImage.getHeight((ImageObserver)null);
- if (this.bgText != null) {
- this.imageDrawString(this.bgImage, this.bgText, 0, 0);
- }
-
- return true;
- }
- }
-
- Dimension getBgTextSize() {
- int var1 = this.fontMetrics.stringWidth(this.bgText);
- int var2 = this.lineHeight;
- return new Dimension(var1, var2);
- }
-
- void paintBgImage(Graphics var1) {
- if (!this.bgImageLoaded) {
- this.checkBgImage();
- }
-
- if (this.bgImageLoaded) {
- int var2 = (this.width - this.bgImageWidth) / 2;
- int var3 = (this.height - this.bgImageHeight) / 2;
- if (this.attr.bgOffsetX() != 0) {
- var2 = this.attr.bgOffsetX();
- }
-
- if (this.attr.bgOffsetY() != 0) {
- var3 = this.attr.bgOffsetY();
- }
-
- var1.drawImage(this.bgImage, var2, var3, (ImageObserver)null);
- }
-
- }
-
- void initText() {
- this.lines = this.getLines(this.attr.param());
- this.noOfLines = this.lines.length;
- this.lineWidths = this.getLineWidths(this.lines);
- this.noOfChars = 0;
-
- for(int var1 = 0; var1 < this.noOfLines; ++var1) {
- this.noOfChars += this.lines[var1].length();
- }
-
- this.chars = new char[this.noOfChars];
- this.xPos = new int[this.noOfChars];
- this.yPos = new int[this.noOfChars];
- this.visible = new boolean[this.noOfChars];
- int var2 = 0;
- int var3 = this.ascent;
- this.textHeight = 0;
- this.maxWidth = 0;
-
- for(int var4 = 0; var4 < this.noOfLines; ++var4) {
- int var5 = this.lines[var4].length();
- int var6 = var2;
-
- for(int var7 = 0; var7 < var5; ++var7) {
- this.chars[var2] = this.lines[var4].charAt(var7);
- this.xPos[var2] = var7 == 0 ? 0 : this.fontMetrics.charsWidth(this.chars, var6, var7);
- this.yPos[var2] = var3;
- ++var2;
- }
-
- this.maxWidth = Math.max(this.maxWidth, this.xPos[var2 - 1]);
- this.textHeight += this.lineHeight;
- var3 += this.lineHeight;
- }
-
- if (this.attr.style() == 1 || this.attr.style() == 2) {
- this.textHeight += 4;
- }
-
- }
-
- String[] parseLines(String var1) {
- Vector var2 = new Vector();
- StringTokenizer var3 = new StringTokenizer(var1, "\\n\n", true);
- boolean var4 = false;
- boolean var5 = false;
- String var6 = new String();
- Object var7 = null;
-
- while(var3.hasMoreTokens()) {
- String var11 = var3.nextToken();
- if (var11.equals("\\")) {
- var4 = true;
- } else if (var11.equals("n") && var4) {
- var5 = true;
- var4 = false;
- } else if (var11.equals("\n")) {
- var5 = true;
- } else {
- if (var4) {
- var6 = var6 + "\\";
- }
-
- var6 = var6 + var11;
- }
-
- if (var5) {
- var2.addElement(var6);
- var6 = new String();
- Object var12 = null;
- var5 = false;
- }
- }
-
- if (var6.length() > 0) {
- var2.addElement(var6);
- }
-
- int var8 = var2.size();
- String[] var9 = new String[var8];
-
- for(int var10 = 0; var10 < var8; ++var10) {
- var9[var10] = (String)var2.elementAt(var10);
- }
-
- return var9;
- }
-
- void resetTextX() {
- int var1 = 0;
-
- for(int var2 = 0; var2 < this.noOfLines; ++var2) {
- int var3 = this.lines[var2].length();
- int var4 = var1;
-
- for(int var5 = 0; var5 < var3; ++var5) {
- this.xPos[var1] = var5 == 0 ? 0 : this.fontMetrics.charsWidth(this.chars, var4, var5);
- ++var1;
- }
- }
-
- }
-
- void resetText() {
- int var1 = this.attr.startScroll();
- switch (var1) {
- case 0:
- case 5:
- case 8:
- this.xStart = (this.scrollWidth - this.maxWidth) / 2;
- this.yStart = (this.scrollHeight - this.textHeight) / 2;
- break;
- case 1:
- this.xStart = this.scrollWidth - this.field_2 - this.margin;
- this.yStart = (this.scrollHeight - this.textHeight) / 2;
- break;
- case 2:
- this.xStart = this.field_2 + this.margin - this.maxWidth;
- this.yStart = (this.scrollHeight - this.textHeight) / 2;
- break;
- case 3:
- this.xStart = (this.scrollWidth - this.maxWidth) / 2;
- this.yStart = this.scrollHeight - this.descent - this.margin;
- break;
- case 4:
- this.xStart = (this.scrollWidth - this.maxWidth) / 2;
- this.yStart = -this.textHeight + this.margin;
- case 6:
- case 7:
- default:
- break;
- case 9:
- this.xStart = (this.scrollWidth - this.maxWidth) / 2;
- this.yStart = this.scrollHeight - this.descent - this.margin;
- }
-
- this.xStart += this.offsetX;
- this.yStart += this.offsetY;
- this.linePos = this.yStart;
- this.resetTextX();
- this.currLineIndex = 0;
- this.typedCount = 0;
- this.state = 0;
- }
-
- public String getUnparsedTextLine() {
- return this.unparsedText;
- }
-
- void animateText() {
- boolean var1 = false;
- int var2 = 0;
- switch (this.state) {
- case 0:
- var2 = this.attr.startScroll();
- if (var2 == 0) {
- var1 = true;
- } else if (var2 == 8) {
- if (this.startFadeTrans != null && this.startFadeTrans.done()) {
- var1 = true;
- }
- } else if (this.textDisplayed(var2)) {
- var1 = true;
- if (var2 == 9) {
- this.yStart = this.margin + this.offsetY + this.leading;
- }
- }
-
- if (!var1) {
- this.moveText(var2);
- this.updateVisible(var2);
- return;
- }
-
- this.updateVisible(var2);
- this.state = 1;
- this.delayCount = this.attr.showDelay();
- case 1:
- if (--this.delayCount >= 0) {
- break;
- }
-
- this.state = 2;
- case 2:
- if (this.attr.endScroll() != 8) {
- if (this.updateVisible(this.attr.endScroll()) != 0 && this.attr.endScroll() != 0) {
- this.moveText(this.attr.endScroll());
- return;
- }
-
- this.state = 3;
- this.delayCount = this.attr.endDelay();
- return;
- }
-
- if (this.endFadeTrans != null && this.endFadeTrans.done()) {
- this.state = 3;
- this.delayCount = this.attr.endDelay();
- return;
- }
- break;
- case 3:
- --this.delayCount;
- return;
- }
-
- }
-
- boolean textDisplayed(int var1) {
- switch (var1) {
- case 1:
- if (this.maxWidth > this.scrollWidth) {
- if (this.maxWidth + this.xStart < this.scrollWidth - 4 * this.field_2) {
- return true;
- }
- } else {
- int var5 = this.scrollWidth / 2;
- int var6 = this.xStart + this.maxWidth / 2;
- if (var6 <= var5) {
- return true;
- }
- }
- break;
- case 2:
- if (this.maxWidth > this.scrollWidth) {
- if (this.xPos[0] + this.xStart > 4 * this.field_2) {
- return true;
- }
- } else {
- int var4 = this.scrollWidth / 2;
- int var3 = this.xStart + this.maxWidth / 2;
- if (var3 >= var4) {
- return true;
- }
- }
- break;
- case 3:
- if (this.yStart <= (this.scrollHeight - this.textHeight) / 2 + this.margin) {
- return true;
- }
- break;
- case 4:
- if (this.yStart >= (this.scrollHeight - this.textHeight) / 2 + this.margin) {
- return true;
- }
- break;
- case 5:
- if (this.typedCount > this.noOfChars) {
- return true;
- }
- case 6:
- case 7:
- case 8:
- default:
- break;
- case 9:
- if (this.currLineIndex >= this.noOfLines) {
- return true;
- }
-
- if (this.currLineIndex == this.noOfLines - 1) {
- int var2 = this.margin + this.offsetY + this.ascent + this.leading + this.lineHeight * this.currLineIndex;
- if (this.linePos <= var2) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- int updateVisible(int var1) {
- int var2 = 0;
- boolean var3 = false;
- if (this.state == 0 && var1 == 5) {
- var3 = true;
- }
-
- boolean var4 = false;
- int var5 = 0;
- if (this.state == 0 && var1 == 9) {
- var4 = true;
-
- for(int var6 = 0; var6 <= this.currLineIndex && var6 < this.noOfLines; ++var6) {
- var5 += this.lines[var6].length();
- }
- }
-
- for(int var7 = 0; var7 < this.noOfChars; ++var7) {
- if (var3) {
- this.visible[var7] = var7 <= this.typedCount;
- } else if (var4) {
- this.visible[var7] = var7 < var5;
- } else {
- this.visible[var7] = this.xPos[var7] + this.xStart > this.margin && this.xPos[var7] + this.xStart < this.width - this.margin && this.yPos[var7] + this.yStart + this.lineHeight > this.margin && this.yPos[var7] + this.yStart - this.lineHeight < this.height - this.margin;
- }
-
- if (this.visible[var7]) {
- ++var2;
- }
- }
-
- if (var1 == 10 && var2 <= this.noOfLines * 4) {
- var2 = 0;
- }
-
- return var2;
- }
-
- void moveText(int var1) {
- switch (var1) {
- case 1:
- this.xStart -= this.field_2;
- return;
- case 2:
- this.xStart += this.field_2;
- return;
- case 3:
- this.yStart -= this.field_3;
- return;
- case 4:
- this.yStart += this.field_3;
- return;
- case 5:
- ++this.typedCount;
- return;
- case 9:
- if (this.currLineIndex < this.noOfLines) {
- int var2 = this.margin + this.offsetY + this.ascent + this.leading + this.lineHeight * this.currLineIndex;
- if (this.linePos <= var2) {
- ++this.currLineIndex;
- this.linePos = this.yStart;
- return;
- }
-
- this.linePos -= this.field_3;
- return;
- }
- case 6:
- case 7:
- case 8:
- default:
- return;
- case 10:
- this.moveExplodeText();
- }
- }
-
- void moveExplodeText() {
- int var1 = this.updateVisible(this.attr.endScroll());
- int var2 = this.noOfChars / 2;
- int var3 = this.maxWidth / 20;
- double var4 = 1.1;
- if ((double)(var1 / this.noOfChars) < 0.2) {
- var4 = (double)2.0F;
- } else if ((double)(var1 / this.noOfChars) < (double)0.5F) {
- var4 = (double)1.5F;
- }
-
- for(int var6 = var2 - 1; var6 >= 0; --var6) {
- int var7 = (int)((double)(var2 - var6) * var4);
- var7 = Math.min(var3, var7);
- int[] var10000 = this.xPos;
- var10000[var6] -= var7;
- }
-
- for(int var10 = var2; var10 < this.noOfChars; ++var10) {
- int var8 = (int)((double)(var10 - var2 + 1) * var4);
- if (var8 == 0) {
- var8 = 1;
- }
-
- var8 = Math.min(var3, var8);
- int[] var12 = this.xPos;
- var12[var10] += var8;
- }
-
- }
-
- void paintText(Graphics var1) {
- if (this.state == 2 || this.state == 3) {
- if (this.state == 2 && this.attr.endScroll() == 10) {
- this.paintExplode(var1);
- return;
- }
-
- if (this.attr.endScroll() == 8) {
- if (this.endFadeTrans != null) {
- this.endFadeTrans.drawFrame(var1);
- return;
- }
-
- this.endFadeTrans = new FunScrollFade(this.appl, this.width + this.margin, this.height + this.margin);
- this.endFadeTrans.initToImage(this.appl.getOffImage());
- }
- }
-
- if (this.state == 0 && this.attr.startScroll() == 8) {
- if (this.startFadeTrans == null) {
- this.startFadeTrans = new FunScrollFade(this.appl, this.width + this.margin, this.height + this.margin);
- this.startFadeTrans.initFromImage(this.appl.getOffImage());
- Image var2 = this.imageCreateEmpty(this.width + this.margin, this.height + this.margin);
- Graphics var3 = var2.getGraphics();
- Image var4 = this.startFadeTrans.getFromImage();
- var3.drawImage(var4, 0, 0, (ImageObserver)null);
- var3.setFont(this.font);
- var3.setColor(this.field_1);
- this.paintNormal(var3);
- this.startFadeTrans.initToImage(var2);
- var3.dispose();
- Object var5 = null;
- }
-
- this.startFadeTrans.drawFrame(var1);
- } else {
- var1.setColor(this.field_1);
- switch (this.attr.style()) {
- case 1:
- this.paintNervous(var1);
- break;
- case 2:
- this.paintSineWave(var1);
- break;
- default:
- this.paintNormal(var1);
- }
-
- if (this.state == 2 && this.attr.endScroll() == 8 && this.endFadeTrans != null) {
- this.endFadeTrans.initFromImage(this.appl.getOffImage());
- }
-
- }
- }
-
- void paintExplode(Graphics var1) {
- for(int var2 = 0; var2 < this.noOfChars; ++var2) {
- if (this.visible[var2]) {
- this.drawNormalChar(var1, var2);
- }
- }
-
- }
-
- void paintNormal(Graphics var1) {
- switch (this.attr.drawStyle()) {
- case 0:
- for(int var2 = 0; var2 < this.noOfLines; ++var2) {
- this.drawAlignedString(var1, var2, this.xStart, this.yStart + this.ascent + this.lineHeight * var2);
- }
-
- return;
- case 1:
- case 2:
- this.paintEmbossEngrave(var1);
- return;
- case 3:
- this.paintShadow(var1);
- return;
- default:
- }
- }
-
- void paintEmbossEngrave(Graphics var1) {
- if (this.darkBg == null) {
- Color var2 = this.field_0;
- this.darkBg = FunScrollColorSupport.darker(var2, (double)0.5F);
- var2 = this.field_0;
- this.lightDarkBg = FunScrollColorSupport.darker(var2, (double)0.25F);
- var2 = this.field_0;
- this.brightBg = FunScrollColorSupport.brighter(var2, (double)0.5F);
- }
-
- int var9 = this.attr.drawStyle();
- Color var3 = var9 == 2 ? this.darkBg : this.brightBg;
- Color var4 = var9 == 2 ? this.brightBg : this.darkBg;
- Color var5 = var9 == 2 ? this.lightDarkBg : this.field_0;
-
- for(int var6 = 0; var6 < this.noOfLines; ++var6) {
- this.drawAlignedString(var1, var6, this.xStart, this.yStart + this.ascent + this.lineHeight * var6);
- var1.setColor(var3);
- this.drawAlignedString(var1, var6, this.xStart, this.yStart + this.ascent + this.lineHeight * var6 - 1);
- var1.setColor(var4);
- this.drawAlignedString(var1, var6, this.xStart + 2, this.yStart + this.ascent + this.lineHeight * var6 + 1);
- var1.setColor(var5);
- this.drawAlignedString(var1, var6, this.xStart + 1, this.yStart + this.ascent + this.lineHeight * var6);
- }
-
- }
-
- void paintShadow(Graphics var1) {
- if (this.brightFg == null) {
- Color var2 = this.field_1;
- this.brightFg = FunScrollColorSupport.brighter(var2, (double)0.75F);
- }
-
- for(int var3 = 0; var3 < this.noOfLines; ++var3) {
- var1.setColor(this.brightFg);
- this.drawAlignedString(var1, var3, this.xStart + 4, this.yStart + this.ascent + this.lineHeight * var3 + 4);
- var1.setColor(this.field_1);
- this.drawAlignedString(var1, var3, this.xStart, this.yStart + this.ascent + this.lineHeight * var3);
- }
-
- }
-
- void drawAlignedString(Graphics var1, int var2, int var3, int var4) {
- switch (this.attr.align()) {
- case 0:
- var3 += (this.maxWidth - this.lineWidths[var2]) / 2;
- case 1:
- default:
- break;
- case 2:
- var3 = this.width - var3 - this.lineWidths[var2];
- }
-
- if (this.state == 0 && this.attr.startScroll() == 5) {
- this.drawTypedString(var1, var2, var3, var4);
- } else if (this.state == 0 && this.attr.startScroll() == 9) {
- this.drawLineByLine(var1, var2, var3, var4);
- } else {
- var1.drawString(this.lines[var2], var3, var4);
- }
- }
-
- void drawTypedString(Graphics var1, int var2, int var3, int var4) {
- int var5 = 0;
-
- for(int var6 = 0; var6 < var2; ++var6) {
- var5 += this.lines[var6].length();
- }
-
- int var7 = this.lines[var2].length();
- if (var5 + var7 < this.typedCount) {
- var1.drawString(this.lines[var2], var3, var4);
- } else {
- int var8 = this.typedCount - var5;
- if (var8 > 0) {
- String var9 = this.lines[var2].substring(0, var8);
- var1.drawString(var9, var3, var4);
- }
-
- }
- }
-
- void drawLineByLine(Graphics var1, int var2, int var3, int var4) {
- if (var2 < this.currLineIndex) {
- int var5 = this.margin + this.offsetY + this.ascent + this.leading + this.lineHeight * var2;
- var1.drawString(this.lines[var2], var3, var5);
- } else {
- if (var2 == this.currLineIndex) {
- var1.drawString(this.lines[var2], var3, this.linePos);
- }
-
- }
- }
-
- void paintSineWave(Graphics var1) {
- int var2 = this.noOfChars > 0 ? this.yPos[0] : 0;
- int var3 = this.sinDegree;
-
- for(int var4 = this.noOfChars - 1; var4 >= 0; --var4) {
- if (var2 != this.yPos[var4]) {
- var2 = this.yPos[var4];
- var3 = this.sinDegree;
- }
-
- if (this.visible[var4]) {
- int var5 = this.lineHeight / 3;
- int var6 = (int)(Math.sin((double)var3 * 3.1414 / (double)180.0F) * (double)var5);
- this.drawChar(var1, var4, this.xPos[var4] + this.xStart, this.yPos[var4] + this.yStart + var6);
- }
-
- var3 -= 15;
- if (var3 <= 0) {
- var3 = 360;
- }
- }
-
- this.sinDegree -= 15;
- if (this.sinDegree <= 0) {
- this.sinDegree = 360;
- }
-
- }
-
- void paintNervous(Graphics var1) {
- for(int var2 = 0; var2 < this.noOfChars; ++var2) {
- if (this.visible[var2]) {
- this.drawNervousChar(var1, var2);
- }
- }
-
- }
-
- void drawNervousChar(Graphics var1, int var2) {
- int var3 = (int)(Math.random() * (double)2.0F) + this.xPos[var2];
- int var4 = (int)(Math.random() * (double)4.0F) + this.yPos[var2];
- this.drawChar(var1, var2, var3 + this.xStart, var4 + this.yStart);
- }
-
- void drawNormalChar(Graphics var1, int var2) {
- this.drawChar(var1, var2, this.xPos[var2] + this.xStart, this.yPos[var2] + this.yStart);
- }
-
- void drawChar(Graphics var1, int var2, int var3, int var4) {
- if (this.state == 0 && this.attr.startScroll() == 9) {
- int var5 = 0;
- int var6 = 0;
-
- for(int var7 = 0; var7 <= this.currLineIndex && var7 < this.noOfLines; ++var7) {
- var6 += this.lines[var7].length();
- if (var7 < this.currLineIndex) {
- var5 = var6;
- }
- }
-
- if (var2 >= var5 && var2 < var6) {
- int var8 = var4 - this.yStart;
- var4 = var8 + (this.linePos - var8);
- }
- }
-
- int var9 = this.attr.drawStyle();
- if (var9 != 0 && var9 != 3) {
- if (this.darkBg == null) {
- Color var11 = this.field_0;
- this.darkBg = FunScrollColorSupport.darker(var11, (double)0.5F);
- var11 = this.field_0;
- this.lightDarkBg = FunScrollColorSupport.darker(var11, (double)0.25F);
- var11 = this.field_0;
- this.brightBg = FunScrollColorSupport.brighter(var11, (double)0.5F);
- }
-
- Color var14 = var9 == 2 ? this.darkBg : this.brightBg;
- Color var15 = var9 == 2 ? this.brightBg : this.darkBg;
- Color var16 = var9 == 2 ? this.lightDarkBg : this.field_0;
- var1.setColor(var14);
- var1.drawChars(this.chars, var2, 1, var3, var4 - 1);
- var1.setColor(var15);
- var1.drawChars(this.chars, var2, 1, var3 + 2, var4 + 1);
- var1.setColor(var16);
- var1.drawChars(this.chars, var2, 1, var3 + 1, var4);
- } else {
- if (var9 == 3) {
- if (this.brightFg == null) {
- Color var10 = this.field_1;
- this.brightFg = FunScrollColorSupport.brighter(var10, (double)0.75F);
- }
-
- var1.setColor(this.brightFg);
- var1.drawChars(this.chars, var2, 1, var3 + 4, var4 + 4);
- }
-
- var1.setColor(this.field_1);
- var1.drawChars(this.chars, var2, 1, var3, var4);
- }
- }
-
- void initImage() {
- String var1 = this.attr.param();
- (new StringBuffer()).append("get image:").append(var1).toString();
- this.image = this.appl.getImage(this.appl.getCodeBase(), var1);
- this.imageLoad(this.image, 1);
- this.imageWidth = 0;
- this.imageHeight = 0;
- this.imageLoaded = false;
- this.checkImage();
- }
-
- boolean checkImage() {
- if (!this.imageCheck(1)) {
- return false;
- } else {
- this.imageLoaded = true;
- this.imageWidth = this.image.getWidth((ImageObserver)null);
- this.imageHeight = this.image.getHeight((ImageObserver)null);
- return true;
- }
- }
-
- void resetImage() {
- if (this.imageLoaded) {
- int var1 = this.attr.startScroll();
- switch (var1) {
- case 0:
- case 8:
- this.xStart = (this.scrollWidth - this.imageWidth) / 2;
- this.yStart = (this.scrollHeight - this.imageHeight) / 2;
- break;
- case 1:
- this.xStart = this.scrollWidth - this.field_2 - this.margin;
- this.yStart = (this.scrollHeight - this.imageHeight) / 2;
- break;
- case 2:
- this.xStart = this.field_2 + this.margin - this.imageWidth;
- this.yStart = (this.scrollHeight - this.imageHeight) / 2;
- break;
- case 3:
- this.xStart = (this.scrollWidth - this.imageWidth) / 2;
- this.yStart = this.scrollHeight - this.margin;
- break;
- case 4:
- this.xStart = (this.scrollWidth - this.imageWidth) / 2;
- this.yStart = -this.imageHeight + this.margin;
- case 5:
- case 6:
- case 7:
- }
-
- this.xStart += this.offsetX;
- this.yStart += this.offsetY;
- this.state = 0;
- }
- }
-
- void animateImage() {
- if (!this.imageLoaded) {
- if (!this.checkImage()) {
- this.state = 3;
- return;
- }
-
- this.resetImage();
- }
-
- boolean var1 = false;
- int var2 = 0;
- switch (this.state) {
- case 0:
- var2 = this.attr.startScroll();
- if (var2 == 0) {
- var1 = true;
- } else if (var2 == 8) {
- if (this.startFadeTrans != null && this.startFadeTrans.done()) {
- var1 = true;
- }
- } else if (this.imageDisplayed(var2)) {
- var1 = true;
- }
-
- if (!var1) {
- this.moveImage(var2);
- return;
- }
-
- this.state = 1;
- this.delayCount = this.attr.showDelay();
- case 1:
- if (--this.delayCount >= 0) {
- break;
- }
-
- this.state = 2;
- case 2:
- if (this.attr.endScroll() != 8) {
- if (this.imageVisible(this.attr.endScroll()) && this.attr.endScroll() != 0) {
- this.moveImage(this.attr.endScroll());
- return;
- }
-
- this.state = 3;
- this.delayCount = this.attr.endDelay();
- return;
- }
-
- if (this.endFadeTrans != null && this.endFadeTrans.done()) {
- this.state = 3;
- this.delayCount = this.attr.endDelay();
- return;
- }
- break;
- case 3:
- --this.delayCount;
- return;
- }
-
- }
-
- void moveImage(int var1) {
- switch (var1) {
- case 1:
- this.xStart -= this.field_2;
- return;
- case 2:
- this.xStart += this.field_2;
- return;
- case 3:
- this.yStart -= this.field_3;
- return;
- case 4:
- this.yStart += this.field_3;
- return;
- default:
- }
- }
-
- boolean imageDisplayed(int var1) {
- switch (var1) {
- case 1:
- if (this.imageWidth > this.width) {
- if (this.imageWidth + this.xStart < this.width - 4 * this.field_2) {
- return true;
- }
- } else {
- int var4 = this.width / 2;
- int var5 = this.xStart + this.imageWidth / 2;
- if (var5 <= var4) {
- return true;
- }
- }
- break;
- case 2:
- if (this.imageWidth > this.width) {
- if (this.xPos[0] + this.xStart > 4 * this.field_2) {
- return true;
- }
- } else {
- int var2 = this.width / 2;
- int var3 = this.xStart + this.imageWidth / 2;
- if (var3 >= var2) {
- return true;
- }
- }
- break;
- case 3:
- if (this.yStart <= (this.height - this.imageHeight) / 2 - this.descent) {
- return true;
- }
- break;
- case 4:
- if (this.yStart >= (this.height - this.imageHeight) / 2 - this.descent) {
- return true;
- }
- }
-
- return false;
- }
-
- boolean imageVisible(int var1) {
- boolean var2 = this.xStart + this.imageWidth > this.margin && this.xStart < this.width - this.margin && this.yStart + this.imageHeight > this.margin && this.yStart < this.height - this.margin;
- return var2;
- }
-
- void paintImage(Graphics var1) {
- if (this.imageWidth != 0) {
- int var2 = this.xStart;
- int var3 = this.yStart;
- if ((this.state == 2 || this.state == 3) && this.attr.endScroll() == 8) {
- if (this.endFadeTrans != null) {
- this.endFadeTrans.drawFrame(var1);
- return;
- }
-
- this.endFadeTrans = new FunScrollFade(this.appl, this.width + this.margin, this.height + this.margin);
- this.endFadeTrans.initToImage(this.appl.getOffImage());
- }
-
- if (this.state == 0 && this.attr.startScroll() == 8) {
- if (this.startFadeTrans == null) {
- this.startFadeTrans = new FunScrollFade(this.appl, this.width + this.margin, this.height + this.margin);
- this.startFadeTrans.initFromImage(this.appl.getOffImage());
- Image var4 = this.imageCreateEmpty(this.width + this.margin, this.height + this.margin);
- Graphics var5 = var4.getGraphics();
- Image var6 = this.startFadeTrans.getFromImage();
- var5.drawImage(var6, 0, 0, (ImageObserver)null);
- var5.drawImage(this.image, var2, var3, (ImageObserver)null);
- this.startFadeTrans.initToImage(var4);
- var5.dispose();
- Object var7 = null;
- }
-
- this.startFadeTrans.drawFrame(var1);
- } else {
- switch (this.attr.style()) {
- case 1:
- var2 = (int)(Math.random() * (double)2.0F) + this.xStart;
- var3 = (int)(Math.random() * (double)4.0F) + this.yStart;
- break;
- case 2:
- this.sinDegree -= 15;
- if (this.sinDegree <= 0) {
- this.sinDegree = 360;
- }
-
- var3 += (int)(Math.sin((double)this.sinDegree * 3.1414 / (double)180.0F) * (double)this.imageHeight / (double)4.0F);
- }
-
- var1.drawImage(this.image, var2, var3, (ImageObserver)null);
- if (this.state == 2 && this.attr.endScroll() == 8 && this.endFadeTrans != null) {
- this.endFadeTrans.initFromImage(this.appl.getOffImage());
- }
-
- }
- }
- }
-
- void imageLoad(Image var1, int var2) {
- if (this.mediaTracker == null) {
- this.mediaTracker = new MediaTracker(this.appl);
- }
-
- this.mediaTracker.addImage(var1, var2);
- }
-
- boolean imageCheck(int var1) {
- if (!this.mediaTracker.checkID(var1, true)) {
- return false;
- } else {
- return !this.mediaTracker.isErrorID(var1);
- }
- }
-
- Image imageCreateEmpty(int var1, int var2) {
- return this.appl.createImage(var1, var2);
- }
-
- void imageDrawString(Image var1, String var2, int var3, int var4) {
- Graphics var5 = this.bgImage.getGraphics();
- var5.setColor(this.field_0);
- this.imageWidth = var1.getWidth((ImageObserver)null);
- this.imageHeight = var1.getHeight((ImageObserver)null);
- var5.fillRect(0, 0, this.imageWidth, this.imageHeight);
- var5.setColor(this.field_1);
- var5.setFont(this.font);
- var5.drawString(var2, var3, var4 + this.ascent);
- var5.dispose();
- }
-
- String[] getLines(String var1) {
- Vector var2 = new Vector();
- StringTokenizer var3 = new StringTokenizer(var1, "\\n\n", true);
- boolean var4 = false;
- boolean var5 = false;
- String var6 = new String();
- Object var7 = null;
-
- while(var3.hasMoreTokens()) {
- String var11 = var3.nextToken();
- if (var11.equals("\\")) {
- var4 = true;
- } else if (var11.equals("n") && var4) {
- var5 = true;
- var4 = false;
- } else if (var11.equals("\n")) {
- var5 = true;
- } else {
- if (var4) {
- var6 = var6 + "\\";
- }
-
- var6 = var6 + var11;
- }
-
- if (var5) {
- var2.addElement(var6);
- var6 = new String();
- Object var12 = null;
- var5 = false;
- }
- }
-
- if (var6.length() > 0) {
- var2.addElement(var6);
- }
-
- int var8 = var2.size();
- String[] var9 = new String[var8];
-
- for(int var10 = 0; var10 < var8; ++var10) {
- var9[var10] = (String)var2.elementAt(var10);
- }
-
- return var9;
- }
-
- int[] getLineWidths(String[] var1) {
- int var2 = var1.length;
- int[] var3 = new int[var2];
-
- for(int var4 = 0; var4 < var2; ++var4) {
- var3[var4] = this.fontMetrics.stringWidth(var1[var4]);
- }
-
- return var3;
- }
- }
-