Server/Client/src/main/java/org/runite/client/Font.java
Woah c1efb2a344 Renamed texture operations
Started separating out draw calls
2021-03-24 17:15:16 -04:00

980 lines
37 KiB
Java

package org.runite.client;
import org.rs09.client.Node;
import org.rs09.client.rendering.Toolkit;
import java.util.Objects;
import java.util.Random;
public abstract class Font extends Node {
private static final RSString[] aClass94Array3753 = new RSString[100];
private static final RSString aClass94_3745 = Unsorted.emptyString(100);
private static int anInt3746 = -1;
private static int anInt3747 = -1;
private static int anInt3748 = 0;
private static int anInt3749 = 0;
private static int anInt3750 = 256;
private static int anInt3751 = 256;
private static int anInt3752 = -1;
private static int anInt3754 = -1;
private static int anInt3755 = 0;
private static int anInt3756 = 0;
int[] anIntArray3709;
int[] anIntArray3721;
int anInt3727 = 0;
private int anInt3710;
private int[] anIntArray3719;
private int anInt3722;
private int[] anIntArray3723;
private int[] anIntArray3730;
private byte[] aByteArray3733;
private int[] anIntArray3736;
private AbstractIndexedSprite[] aClass109Array3740;
Font(byte[] var1, int[] var2, int[] var3, int[] var4, int[] var5) {
this.anIntArray3719 = var2;
this.anIntArray3730 = var3;
this.anIntArray3709 = var4;
this.anIntArray3721 = var5;
this.method700(var1);
int var6 = Integer.MAX_VALUE;
int var7 = Integer.MIN_VALUE;
for (int var8 = 0; var8 < 256; ++var8) {
if (this.anIntArray3730[var8] < var6 && this.anIntArray3721[var8] != 0) {
var6 = this.anIntArray3730[var8];
}
if (this.anIntArray3730[var8] + this.anIntArray3721[var8] > var7) {
var7 = this.anIntArray3730[var8] + this.anIntArray3721[var8];
}
}
this.anInt3722 = this.anInt3727 - var6;
this.anInt3710 = var7 - this.anInt3727;
}
Font(byte[] var1) {
this.method700(var1);
}
static RSString method686(RSString var0) {
int var1 = var0.length();
int var2 = 0;
int var4;
for (int var3 = 0; var3 < var1; ++var3) {
var4 = var0.charAt(var3, (byte) 50);
if (var4 == 60 || var4 == 62) {
var2 += 3;
}
}
RSString var6 = Unsorted.emptyString(var1 + var2);
for (var4 = 0; var4 < var1; ++var4) {
int var5 = var0.charAt(var4, (byte) -101);
if (var5 == 60) {
Objects.requireNonNull(var6).append(RSString.parse("<lt>"));
} else if (var5 == 62) {
Objects.requireNonNull(var6).append(RSString.parse("<gt>"));
} else {
Objects.requireNonNull(var6).appendCharacter(var5);
}
}
return var6;
}
private static int method694(byte[][] var0, byte[][] var1, int[] var2, int[] var3, int[] var4, int var5, int var6) {
int var7 = var2[var5];
int var8 = var7 + var4[var5];
int var9 = var2[var6];
int var10 = var9 + var4[var6];
int var11 = var7;
if (var9 > var7) {
var11 = var9;
}
int var12 = var8;
if (var10 < var8) {
var12 = var10;
}
int var13 = var3[var5];
if (var3[var6] < var13) {
var13 = var3[var6];
}
byte[] var14 = var1[var5];
byte[] var15 = var0[var6];
int var16 = var11 - var7;
int var17 = var11 - var9;
for (int var18 = var11; var18 < var12; ++var18) {
int var19 = var14[var16++] + var15[var17++];
if (var19 < var13) {
var13 = var19;
}
}
return -var13;
}
public final void method676(RSString var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) {
this.method693(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10);
}
private void method677(RSString var1, int var2, int var3) {
var3 -= this.anInt3727;
int var4 = -1;
int var5 = 0;
int var6 = var1.length();
for (int var7 = 0; var7 < var6; ++var7) {
int var8 = var1.charAt(var7, (byte) 72);
if (var8 == 60) {
var4 = var7;
} else {
int var10;
if (var8 == 62 && var4 != -1) {
RSString var9 = var1.substring(var4 + 1, var7, 0);
var4 = -1;
if (var9.equalsString(RSString.parse("lt"))) {
var8 = 60;
} else if (var9.equalsString(RSString.parse("gt"))) {
var8 = 62;
} else if (var9.equalsString(RSString.parse("nbsp"))) {
var8 = 160;
} else if (var9.equalsString(RSString.parse("shy"))) {
var8 = 173;
} else if (var9.equalsString(RSString.parse("times"))) {
var8 = 215;
} else if (var9.equalsString(RSString.parse("euro"))) {
var8 = 128;
} else if (var9.equalsString(RSString.parse("copy"))) {
var8 = 169;
} else {
if (!var9.equalsString(RSString.parse("reg"))) {
if (var9.startsWith(RSString.parse("img="))) {
try {//TODO: Chat image?...
var10 = var9.substring(4).parseInt();
AbstractIndexedSprite var15 = this.aClass109Array3740[var10];
int var12 = this.anIntArray3723 != null ? this.anIntArray3723[var10] : var15.anInt1467;
if (anInt3750 == 256) {
var15.method1667(var2, var3 + this.anInt3727 - var12);
} else {
var15.method1666(var2, var3 + this.anInt3727 - var12, anInt3750);
}
var2 += var15.anInt1469;
var5 = 0;
} catch (Exception var13) {
if (!var13.toString().contains("java.lang.ArrayIndexOutOfBoundsException")) {
// TODO Added by Tech to figure out the weird issue
System.out.println(var13.toString() + ", full string: '" + var9.toString() + "'");
var13.printStackTrace();
}
}
} else {
this.method685(var9);
}
continue;
}
var8 = 174;
}
}
if (var4 == -1) {
if (this.aByteArray3733 != null && var5 != 0) {
var2 += this.aByteArray3733[(var5 << 8) + var8];
}
int var14 = this.anIntArray3709[var8];
var10 = this.anIntArray3721[var8];
if (var8 != 32) {
if (anInt3750 == 256) {
if (anInt3754 != -1) {
this.method678(var8, var2 + this.anIntArray3719[var8] + 1, var3 + this.anIntArray3730[var8] + 1, var14, var10, anInt3754);
}
this.method678(var8, var2 + this.anIntArray3719[var8], var3 + this.anIntArray3730[var8], var14, var10, anInt3755);
} else {
if (anInt3754 != -1) {
this.method679(var8, var2 + this.anIntArray3719[var8] + 1, var3 + this.anIntArray3730[var8] + 1, var14, var10, anInt3754, anInt3750);
}
this.method679(var8, var2 + this.anIntArray3719[var8], var3 + this.anIntArray3730[var8], var14, var10, anInt3755, anInt3750);
}
} else if (anInt3756 > 0) {
anInt3748 += anInt3756;
var2 += anInt3748 >> 8;
anInt3748 &= 255;
}
int var11 = this.anIntArray3736[var8];
if (anInt3746 != -1) {
Toolkit.getActiveToolkit().drawHorizontalLine(var2, var3 + (int) ((double) this.anInt3727 * 0.7D), var11, anInt3746);
}
if (anInt3747 != -1) {
Toolkit.getActiveToolkit().drawHorizontalLine(var2, var3 + this.anInt3727 + 1, var11, anInt3747);
}
var2 += var11;
var5 = var8;
}
}
}
}
abstract void method678(int var1, int var2, int var3, int var4, int var5, int var6);
abstract void method679(int var1, int var2, int var3, int var4, int var5, int var6, int var7);
public final int method680(RSString var1, int var2) {
int var3 = this.method691(var1, new int[]{var2}, aClass94Array3753);
int var4 = 0;
for (int var5 = 0; var5 < var3; ++var5) {
int var6 = this.method682(aClass94Array3753[var5]);
if (var6 > var4) {
var4 = var6;
}
}
return var4;
}
public final void method681(RSString var1, int var2, int var3, int var4, int var5) {
if (var1 != null) {
this.method698(var4, var5);
this.method677(var1, var2, var3);
}
}
public final int method682(RSString var1) {
if (var1 == null) {
return 0;
} else {
int var2 = -1;
int var3 = 0;
int var4 = 0;
int var5 = var1.length();
for (int var6 = 0; var6 < var5; ++var6) {
int var7 = var1.charAt(var6, (byte) -45);
if (var7 == 60) {
var2 = var6;
} else {
if (var7 == 62 && var2 != -1) {
RSString var8 = var1.substring(var2 + 1, var6, 0);
var2 = -1;
if (var8.equalsString(RSString.parse("lt"))) {
var7 = 60;
} else if (var8.equalsString(RSString.parse("gt"))) {
var7 = 62;
} else if (var8.equalsString(RSString.parse("nbsp"))) {
var7 = 160;
} else if (var8.equalsString(RSString.parse("shy"))) {
var7 = 173;
} else if (var8.equalsString(RSString.parse("times"))) {
var7 = 215;
} else if (var8.equalsString(RSString.parse("euro"))) {
var7 = 128;
} else if (var8.equalsString(RSString.parse("copy"))) {
var7 = 169;
} else {
if (!var8.equalsString(RSString.parse("reg"))) {
if (var8.startsWith(RSString.parse("img="))) {
try {//No clue
int var9 = var8.substring(4).parseInt();
var4 += this.aClass109Array3740[var9].anInt1469;
var3 = 0;
} catch (Exception var10) {
}
}
continue;
}
var7 = 174;
}
}
if (var2 == -1) {
var4 += this.anIntArray3736[var7];
if (this.aByteArray3733 != null && var3 != 0) {
var4 += this.aByteArray3733[(var3 << 8) + var7];
}
var3 = var7;
}
}
}
return var4;
}
}
final int method683(RSString var1, int var2, int var3, Random var6, int var7) {
if (var1 == null) {
return 0;
} else {
var6.setSeed(var7);
this.method701(16777215, 0, 192 + (var6.nextInt() & 31));
int var8 = var1.length();
int[] var9 = new int[var8];
int var10 = 0;
for (int var11 = 0; var11 < var8; ++var11) {
var9[var11] = var10;
if ((var6.nextInt() & 3) == 0) {
++var10;
}
}
this.method703(var1, var2, var3, var9, null);
return var10;
}
}
public final int method684(RSString var1, int var2) {
return this.method691(var1, new int[]{var2}, aClass94Array3753);
}
private void method685(RSString var1) {
try {
if (var1.startsWith(RSString.parse("col="))) {
anInt3755 = var1.substring(4).parseInt(16);
} else if (var1.equalsString(RSString.parse(")4col"))) {
anInt3755 = anInt3749;
} else if (var1.startsWith(RSString.parse("trans="))) {
anInt3750 = var1.substring(6).parseInt();
} else if (var1.equalsString(RSString.parse(")4trans"))) {
anInt3750 = anInt3751;
} else if (var1.startsWith(RSString.parse("str="))) {
anInt3746 = var1.substring(4).parseInt(16);
} else if (var1.equalsString(RSString.parse("str"))) {
anInt3746 = 8388608;
} else if (var1.equalsString(RSString.parse(")4str"))) {
anInt3746 = -1;
} else if (var1.startsWith(RSString.parse("u="))) {
anInt3747 = var1.substring(2).parseInt(16);
} else if (var1.equalsString(RSString.parse("u"))) {
anInt3747 = 0;
} else if (var1.equalsString(RSString.parse(")4u"))) {
anInt3747 = -1;
} else if (var1.startsWith(RSString.parse("shad="))) {
anInt3754 = var1.substring(5).parseInt(16);
} else if (var1.equalsString(RSString.parse("shad"))) {
anInt3754 = 0;
} else if (var1.equalsString(RSString.parse(")4shad"))) {
anInt3754 = anInt3752;
} else if (var1.equalsString(RSString.parse("br"))) {
this.method701(anInt3749, anInt3752, anInt3751);
}
} catch (Exception var3) {
}
}
private int method687(int var1) {
return this.anIntArray3736[var1 & 0xFF];
}
final void drawStringRightAnchor(RSString var1, int var2, int var3, int var4, int var5) {
if (var1 != null) {
this.method698(var4, var5);
this.method677(var1, var2 - this.method682(var1), var3);
}
}
private void method690(RSString var1, int var2) {
int var3 = 0;
boolean var4 = false;
int var5 = var1.length();
for (int var6 = 0; var6 < var5; ++var6) {
int var7 = var1.charAt(var6, (byte) 75);
if (var7 == 60) {
var4 = true;
} else if (var7 == 62) {
var4 = false;
} else if (!var4 && var7 == 32) {
++var3;
}
}
if (var3 > 0) {
anInt3756 = (var2 - this.method682(var1) << 8) / var3;
}
}
final int method691(RSString var1, int[] var2, RSString[] var3) {
if (var1 == null) {
return 0;
} else {
aClass94_3745.method1553(0);
int var4 = 0;
int var5 = 0;
int var6 = -1;
int var7 = 0;
byte var8 = 0;
int var9 = -1;
int var10 = 0;
int var11 = 0;
int var12 = var1.length();
for (int var13 = 0; var13 < var12; ++var13) {
int var14 = var1.charAt(var13, (byte) -30);
if (var14 == 60) {
var9 = var13;
} else {
if (var14 == 62 && var9 != -1) {
RSString var15 = var1.substring(var9 + 1, var13, 0);
var9 = -1;
aClass94_3745.appendCharacter(60);
aClass94_3745.append(var15);
aClass94_3745.appendCharacter(62);
if (var15.equalsString(RSString.parse("br"))) {
if (var3[var11] == null) {
var3[var11] = aClass94_3745.method1563(101).substring(var5, aClass94_3745.length(), 0);
} else {
var3[var11].method1553(0);
var3[var11].method1542(aClass94_3745, var5, aClass94_3745.length());
}
++var11;
var5 = aClass94_3745.length();
var4 = 0;
var6 = -1;
var10 = 0;
} else if (var15.equalsString(RSString.parse("lt"))) {
var4 += this.method687(60);
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + 60];
}
var10 = 60;
} else if (var15.equalsString(RSString.parse("gt"))) {
var4 += this.method687(62);
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + 62];
}
var10 = 62;
} else if (var15.equalsString(RSString.parse("nbsp"))) {
var4 += this.method687(160);
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + 160];
}
var10 = 160;
} else if (var15.equalsString(RSString.parse("shy"))) {
var4 += this.method687(173);
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + 173];
}
var10 = 173;
} else if (var15.equalsString(RSString.parse("times"))) {
var4 += this.method687(215);
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + 215];
}
var10 = 215;
} else if (var15.equalsString(RSString.parse("euro"))) {
var4 += this.method687(128);
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + 128];
}
var10 = 128;
} else if (var15.equalsString(RSString.parse("copy"))) {
var4 += this.method687(169);
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + 169];
}
var10 = 169;
} else if (var15.equalsString(RSString.parse("reg"))) {
var4 += this.method687(174);
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + 174];
}
var10 = 174;
} else if (var15.startsWith(RSString.parse("img="))) {
try {
int var16 = var15.substring(4).parseInt();
var4 += this.aClass109Array3740[var16].anInt1469;
var10 = 0;
} catch (Exception var17) {
}
}
var14 = 0;
}
if (var9 == -1) {
if (var14 != 0) {
aClass94_3745.appendCharacter(var14);
var4 += this.anIntArray3736[var14];
if (this.aByteArray3733 != null && var10 != 0) {
var4 += this.aByteArray3733[(var10 << 8) + var14];
}
var10 = var14;
}
if (var14 == 32) {
var6 = aClass94_3745.length();
var7 = var4;
var8 = 1;
}
if (var2 != null && var4 > var2[var11 < var2.length ? var11 : var2.length - 1] && var6 >= 0) {
if (var3[var11] == null) {
var3[var11] = aClass94_3745.method1563(88).substring(var5, var6 - var8, 0);
} else {
var3[var11].method1553(0);
var3[var11] = var3[var11].method1542(aClass94_3745, var5, var6 - var8);
}
++var11;
var5 = var6;
var6 = -1;
var4 -= var7;
var10 = 0;
}
if (var14 == 45) {
var6 = aClass94_3745.length();
var7 = var4;
var8 = 0;
}
}
}
}
if (aClass94_3745.length() > var5) {
if (var3[var11] == null) {
var3[var11] = aClass94_3745.method1563(94).substring(var5, aClass94_3745.length(), 0);
} else {
var3[var11].method1553(0);
var3[var11] = var3[var11].method1542(aClass94_3745, var5, aClass94_3745.length());
}
++var11;
}
return var11;
}
}
final void method692(RSString var1, int var2, int var3, int var4, int var6, int var7) {
if (var1 != null) {
this.method698(var4, 0);
double var8 = 7.0D - (double) var7 / 8.0D;
if (var8 < 0.0D) {
var8 = 0.0D;
}
int var10 = var1.length();
int[] var11 = new int[var10];
for (int var12 = 0; var12 < var10; ++var12) {
var11[var12] = (int) (Math.sin((double) var12 / 1.5D + (double) var6 / 1.0D) * var8);
}
this.method703(var1, var2 - this.method682(var1) / 2, var3, null, var11);
}
}
public final int method693(RSString var1, int var2, int var3, int var4, int var5, int var6, int var7, int var9, int var10, int var11) {
if (var1 == null) {
return 0;
} else {
this.method701(var6, var7, 256);
if (var11 == 0) {
var11 = this.anInt3727;
}
int[] var12 = new int[]{var4};
if (var5 < this.anInt3722 + this.anInt3710 + var11 && var5 < var11 + var11) {
var12 = null;
}
int var13 = this.method691(var1, var12, aClass94Array3753);
if (var10 == 3 && var13 == 1) {
var10 = 1;
}
int var14;
int var15;
if (var10 == 0) {
var14 = var3 + this.anInt3722;
} else if (var10 == 1) {
var14 = var3 + this.anInt3722 + (var5 - this.anInt3722 - this.anInt3710 - (var13 - 1) * var11) / 2;
} else if (var10 == 2) {
var14 = var3 + var5 - this.anInt3710 - (var13 - 1) * var11;
} else {
var15 = (var5 - this.anInt3722 - this.anInt3710 - (var13 - 1) * var11) / (var13 + 1);
if (var15 < 0) {
var15 = 0;
}
var14 = var3 + this.anInt3722 + var15;
var11 += var15;
}
for (var15 = 0; var15 < var13; ++var15) {
if (var9 == 0) {
this.method677(aClass94Array3753[var15], var2, var14);
} else if (var9 == 1) {
this.method677(aClass94Array3753[var15], var2 + (var4 - this.method682(aClass94Array3753[var15])) / 2, var14);
} else if (var9 == 2) {
this.method677(aClass94Array3753[var15], var2 + var4 - this.method682(aClass94Array3753[var15]), var14);
} else if (var15 == var13 - 1) {
this.method677(aClass94Array3753[var15], var2, var14);
} else {
this.method690(aClass94Array3753[var15], var4);
this.method677(aClass94Array3753[var15], var2, var14);
anInt3756 = 0;
}
var14 += var11;
}
return var13;
}
}
final void method695(RSString var1, int var2, int var3, int var4, int var6) {
if (var1 != null) {
this.method698(var4, 0);
int var7 = var1.length();
int[] var8 = new int[var7];
int[] var9 = new int[var7];
for (int var10 = 0; var10 < var7; ++var10) {
var8[var10] = (int) (Math.sin((double) var10 / 5.0D + (double) var6 / 5.0D) * 5.0D);
var9[var10] = (int) (Math.sin((double) var10 / 3.0D + (double) var6 / 5.0D) * 5.0D);
}
this.method703(var1, var2 - this.method682(var1) / 2, var3, var8, var9);
}
}
final void method696(RSString var1, int var2, int var3, int var4, int var6) {
if (var1 != null) {
this.method698(var4, 0);
int var7 = var1.length();
int[] var8 = new int[var7];
for (int var9 = 0; var9 < var7; ++var9) {
var8[var9] = (int) (Math.sin((double) var9 / 2.0D + (double) var6 / 5.0D) * 5.0D);
}
this.method703(var1, var2 - this.method682(var1) / 2, var3, null, var8);
}
}
final void method697(AbstractIndexedSprite[] var1, int[] var2) {
if (var2 == null || var2.length == var1.length) {
this.aClass109Array3740 = var1;
this.anIntArray3723 = var2;
} else {
throw new IllegalArgumentException();
}
}
private void method698(int var1, int var2) {
anInt3746 = -1;
anInt3747 = -1;
anInt3752 = var2;
anInt3754 = var2;
anInt3749 = var1;
anInt3755 = var1;
anInt3751 = 256;
anInt3750 = 256;
anInt3756 = 0;
anInt3748 = 0;
}
final void method699(RSString var1, int var2, int var3, int var4, int var5) {
if (var1 != null) {
this.method698(var4, var5);
this.method677(var1, var2 - this.method682(var1) / 2, var3);
}
}
private void method700(byte[] var1) {
this.anIntArray3736 = new int[256];
int var2;
if (var1.length == 257) {
for (var2 = 0; var2 < this.anIntArray3736.length; ++var2) {
this.anIntArray3736[var2] = var1[var2] & 0xFF;
}
this.anInt3727 = var1[256] & 0xFF;
} else {
var2 = 0;
for (int var3 = 0; var3 < 256; ++var3) {
this.anIntArray3736[var3] = var1[var2++] & 0xFF;
}
int[] var10 = new int[256];
int[] var4 = new int[256];
int var5;
for (var5 = 0; var5 < 256; ++var5) {
var10[var5] = var1[var2++] & 0xFF;
}
for (var5 = 0; var5 < 256; ++var5) {
var4[var5] = var1[var2++] & 0xFF;
}
byte[][] var12 = new byte[256][];
int var8;
for (int var6 = 0; var6 < 256; ++var6) {
var12[var6] = new byte[var10[var6]];
byte var7 = 0;
for (var8 = 0; var8 < var12[var6].length; ++var8) {
var7 += var1[var2++];
var12[var6][var8] = var7;
}
}
byte[][] var11 = new byte[256][];
int var13;
for (var13 = 0; var13 < 256; ++var13) {
var11[var13] = new byte[var10[var13]];
byte var14 = 0;
for (int var9 = 0; var9 < var11[var13].length; ++var9) {
var14 += var1[var2++];
var11[var13][var9] = var14;
}
}
this.aByteArray3733 = new byte[65536];
for (var13 = 0; var13 < 256; ++var13) {
if (var13 != 32 && var13 != 160) {
for (var8 = 0; var8 < 256; ++var8) {
if (var8 != 32 && var8 != 160) {
this.aByteArray3733[(var13 << 8) + var8] = (byte) method694(var12, var11, var4, this.anIntArray3736, var10, var13, var8);
}
}
}
}
this.anInt3727 = var4[32] + var10[32];
}
}
private void method701(int var1, int var2, int var3) {
anInt3746 = -1;
anInt3747 = -1;
anInt3752 = var2;
anInt3754 = var2;
anInt3749 = var1;
anInt3755 = var1;
anInt3751 = var3;
anInt3750 = var3;
anInt3756 = 0;
anInt3748 = 0;
}
final void method702(RSString var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, Random var10, int var11, int[] var12) {
if (var1 == null) return;
var10.setSeed(var11);
this.method701(var6, var7, 192 + (var10.nextInt() & 31));
int var13 = var1.length();
int[] var14 = new int[var13];
int var15 = 0;
int var16;
for (var16 = 0; var16 < var13; ++var16) {
var14[var16] = var15;
if ((var10.nextInt() & 3) == 0) {
++var15;
}
}
var16 = var2;
int var17 = var3 + this.anInt3722;
int var18 = -1;
if (var9 == 1) {
var17 += (var5 - this.anInt3722 - this.anInt3710) / 2;
} else if (var9 == 2) {
var17 = var3 + var5 - this.anInt3710;
}
if (var8 == 1) {
var18 = this.method682(var1) + var15;
var16 = var2 + (var4 - var18) / 2;
} else if (var8 == 2) {
var18 = this.method682(var1) + var15;
var16 = var2 + (var4 - var18);
}
this.method703(var1, var16, var17, var14, null);
if (var12 != null) {
if (var18 == -1) {
var18 = this.method682(var1) + var15;
}
var12[0] = var16;
var12[1] = var17 - this.anInt3722;
var12[2] = var18;
var12[3] = this.anInt3722 + this.anInt3710;
}
}
private void method703(RSString var1, int var2, int var3, int[] var4, int[] var5) {
var3 -= this.anInt3727;
int var6 = -1;
int var7 = 0;
int var8 = 0;
int var9 = var1.length();
for (int var10 = 0; var10 < var9; ++var10) {
int var11 = var1.charAt(var10, (byte) 95);
if (var11 == 60) {
var6 = var10;
} else {
int var13;
int var14;
int var15;
if (var11 == 62 && var6 != -1) {
RSString var12 = var1.substring(var6 + 1, var10, 0);
var6 = -1;
if (var12.equalsString(RSString.parse("lt"))) {
var11 = 60;
} else if (var12.equalsString(RSString.parse("gt"))) {
var11 = 62;
} else if (var12.equalsString(RSString.parse("nbsp"))) {
var11 = 160;
} else if (var12.equalsString(RSString.parse("shy"))) {
var11 = 173;
} else if (var12.equalsString(RSString.parse("times"))) {
var11 = 215;
} else if (var12.equalsString(RSString.parse("euro"))) {
var11 = 128;
} else if (var12.equalsString(RSString.parse("copy"))) {
var11 = 169;
} else {
if (!var12.equalsString(RSString.parse("reg"))) {
if (var12.startsWith(RSString.parse("img="))) {
try {
if (var4 == null) {
var13 = 0;
} else {
var13 = var4[var8];
}
if (var5 == null) {
var14 = 0;
} else {
var14 = var5[var8];
}
++var8;
var15 = var12.substring(4).parseInt();
AbstractIndexedSprite var20 = this.aClass109Array3740[var15];
int var17 = this.anIntArray3723 != null ? this.anIntArray3723[var15] : var20.anInt1467;
if (anInt3750 == 256) {
var20.method1667(var2 + var13, var3 + this.anInt3727 - var17 + var14);
} else {
var20.method1666(var2 + var13, var3 + this.anInt3727 - var17 + var14, anInt3750);
}
var2 += var20.anInt1469;
var7 = 0;
} catch (Exception var18) {
}
} else {
this.method685(var12);
}
continue;
}
var11 = 174;
}
}
if (var6 == -1) {
if (this.aByteArray3733 != null && var7 != 0) {
var2 += this.aByteArray3733[(var7 << 8) + var11];
}
int var19 = this.anIntArray3709[var11];
var13 = this.anIntArray3721[var11];
if (var4 == null) {
var14 = 0;
} else {
var14 = var4[var8];
}
if (var5 == null) {
var15 = 0;
} else {
var15 = var5[var8];
}
++var8;
if (var11 != 32) {
if (anInt3750 == 256) {
if (anInt3754 != -1) {
this.method678(var11, var2 + this.anIntArray3719[var11] + 1 + var14, var3 + this.anIntArray3730[var11] + 1 + var15, var19, var13, anInt3754);
}
this.method678(var11, var2 + this.anIntArray3719[var11] + var14, var3 + this.anIntArray3730[var11] + var15, var19, var13, anInt3755);
} else {
if (anInt3754 != -1) {
this.method679(var11, var2 + this.anIntArray3719[var11] + 1 + var14, var3 + this.anIntArray3730[var11] + 1 + var15, var19, var13, anInt3754, anInt3750);
}
this.method679(var11, var2 + this.anIntArray3719[var11] + var14, var3 + this.anIntArray3730[var11] + var15, var19, var13, anInt3755, anInt3750);
}
} else if (anInt3756 > 0) {
anInt3748 += anInt3756;
var2 += anInt3748 >> 8;
anInt3748 &= 255;
}
int var16 = this.anIntArray3736[var11];
if (anInt3746 != -1) {
Toolkit.getActiveToolkit().drawHorizontalLine(var2, var3 + (int) ((double) this.anInt3727 * 0.7D), var16, anInt3746);
}
if (anInt3747 != -1) {
Toolkit.getActiveToolkit().drawHorizontalLine(var2, var3 + this.anInt3727, var16, anInt3747);
}
var2 += var16;
var7 = var11;
}
}
}
}
}