mirror of
https://gitlab.com/2009scape/rt4-client.git
synced 2026-08-16 16:05:13 -06:00
225 lines
8 KiB
Java
225 lines
8 KiB
Java
package rt4;
|
|
|
|
import org.openrs2.deob.annotation.OriginalArg;
|
|
import org.openrs2.deob.annotation.OriginalClass;
|
|
import org.openrs2.deob.annotation.OriginalMember;
|
|
import org.openrs2.deob.annotation.Pc;
|
|
|
|
@OriginalClass("client!dd")
|
|
public final class SoftwareFont extends Font {
|
|
|
|
@OriginalMember(owner = "client!dd", name = "Eb", descriptor = "[[B")
|
|
private byte[][] pixels = new byte[256][];
|
|
|
|
@OriginalMember(owner = "client!dd", name = "<init>", descriptor = "([B)V")
|
|
public SoftwareFont(@OriginalArg(0) byte[] arg0) {
|
|
super(arg0);
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dd", name = "<init>", descriptor = "([B[I[I[I[I[[B)V")
|
|
public SoftwareFont(@OriginalArg(0) byte[] arg0, @OriginalArg(1) int[] arg1, @OriginalArg(2) int[] arg2, @OriginalArg(3) int[] arg3, @OriginalArg(4) int[] arg4, @OriginalArg(5) byte[][] arg5) {
|
|
super(arg0, arg1, arg2, arg3, arg4);
|
|
this.pixels = arg5;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dd", name = "a", descriptor = "([I[BIIIIIII)V")
|
|
public static void blit(@OriginalArg(0) int[] arg0, @OriginalArg(1) byte[] arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) int arg8) {
|
|
@Pc(4) int local4 = -(arg5 >> 2);
|
|
@Pc(9) int local9 = -(arg5 & 0x3);
|
|
for (@Pc(12) int local12 = -arg6; local12 < 0; local12++) {
|
|
@Pc(16) int local16;
|
|
for (local16 = local4; local16 < 0; local16++) {
|
|
if (arg1[arg3++] == 0) {
|
|
arg4++;
|
|
} else {
|
|
arg0[arg4++] = arg2;
|
|
}
|
|
if (arg1[arg3++] == 0) {
|
|
arg4++;
|
|
} else {
|
|
arg0[arg4++] = arg2;
|
|
}
|
|
if (arg1[arg3++] == 0) {
|
|
arg4++;
|
|
} else {
|
|
arg0[arg4++] = arg2;
|
|
}
|
|
if (arg1[arg3++] == 0) {
|
|
arg4++;
|
|
} else {
|
|
arg0[arg4++] = arg2;
|
|
}
|
|
}
|
|
for (local16 = local9; local16 < 0; local16++) {
|
|
if (arg1[arg3++] == 0) {
|
|
arg4++;
|
|
} else {
|
|
arg0[arg4++] = arg2;
|
|
}
|
|
}
|
|
arg4 += arg7;
|
|
arg3 += arg8;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dd", name = "a", descriptor = "([I[BIIIIIIIII[I[I)V")
|
|
public static void blitMasked(@OriginalArg(0) int[] arg0, @OriginalArg(1) byte[] arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) int arg8, @OriginalArg(9) int arg9, @OriginalArg(10) int arg10, @OriginalArg(11) int[] arg11, @OriginalArg(12) int[] arg12) {
|
|
@Pc(3) int local3 = arg2 - SoftwareRaster.clipLeft;
|
|
@Pc(7) int local7 = arg3 - SoftwareRaster.clipTop;
|
|
for (@Pc(9) int local9 = local7; local9 < local7 + arg5; local9++) {
|
|
@Pc(18) int local18 = arg11[local9];
|
|
@Pc(22) int local22 = arg12[local9];
|
|
@Pc(24) int local24 = arg4;
|
|
@Pc(31) int local31;
|
|
if (local3 > local18) {
|
|
local31 = local3 - local18;
|
|
if (local31 >= local22) {
|
|
arg7 += arg4 + arg10;
|
|
arg8 += arg4 + arg9;
|
|
continue;
|
|
}
|
|
local22 -= local31;
|
|
} else {
|
|
local31 = local18 - local3;
|
|
if (local31 >= arg4) {
|
|
arg7 += arg4 + arg10;
|
|
arg8 += arg4 + arg9;
|
|
continue;
|
|
}
|
|
arg7 += local31;
|
|
local24 = arg4 - local31;
|
|
arg8 += local31;
|
|
}
|
|
local31 = 0;
|
|
if (local24 < local22) {
|
|
local22 = local24;
|
|
} else {
|
|
local31 = local24 - local22;
|
|
}
|
|
for (@Pc(99) int local99 = -local22; local99 < 0; local99++) {
|
|
if (arg1[arg7++] == 0) {
|
|
arg8++;
|
|
} else {
|
|
SoftwareRaster.pixels[arg8++] = arg6;
|
|
}
|
|
}
|
|
arg7 += local31 + arg10;
|
|
arg8 += local31 + arg9;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dd", name = "a", descriptor = "([I[BIIIIIIII)V")
|
|
public static void blitTransparent(@OriginalArg(0) int[] arg0, @OriginalArg(1) byte[] arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) int arg8, @OriginalArg(9) int arg9) {
|
|
@Pc(17) int local17 = ((arg2 & 0xFF00FF) * arg9 & 0xFF00FF00) + ((arg2 & 0xFF00) * arg9 & 0xFF0000) >> 8;
|
|
@Pc(21) int local21 = 256 - arg9;
|
|
for (@Pc(24) int local24 = -arg6; local24 < 0; local24++) {
|
|
for (@Pc(29) int local29 = -arg5; local29 < 0; local29++) {
|
|
if (arg1[arg3++] == 0) {
|
|
arg4++;
|
|
} else {
|
|
@Pc(40) int local40 = arg0[arg4];
|
|
arg0[arg4++] = (((local40 & 0xFF00FF) * local21 & 0xFF00FF00) + ((local40 & 0xFF00) * local21 & 0xFF0000) >> 8) + local17;
|
|
}
|
|
}
|
|
arg4 += arg7;
|
|
arg3 += arg8;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!jh", name = "a", descriptor = "(IILclient!ve;Lclient!ve;I)Lclient!dd;")
|
|
public static SoftwareFont method2412(@OriginalArg(0) int arg0, @OriginalArg(2) Js5 arg1, @OriginalArg(3) Js5 arg2) {
|
|
return SpriteLoader.decode(arg2, 0, arg0) ? method4635(arg1.getFile(arg0, 0)) : null;
|
|
}
|
|
|
|
@OriginalMember(owner = "client!j", name = "a", descriptor = "([BI)Lclient!dd;")
|
|
public static SoftwareFont method4635(@OriginalArg(0) byte[] arg0) {
|
|
if (arg0 == null) {
|
|
return null;
|
|
} else {
|
|
@Pc(22) SoftwareFont local22 = new SoftwareFont(arg0, SpriteLoader.xOffsets, SpriteLoader.yOffsets, SpriteLoader.innerWidths, SpriteLoader.innerHeights, SpriteLoader.pixels);
|
|
SpriteLoader.clear();
|
|
return local22;
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dd", name = "a", descriptor = "(IIIIIIIZ)V")
|
|
@Override
|
|
protected final void renderGlyphTransparent(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6) {
|
|
@Pc(5) int local5 = arg1 + arg2 * SoftwareRaster.width;
|
|
@Pc(9) int local9 = SoftwareRaster.width - arg3;
|
|
@Pc(11) int local11 = 0;
|
|
@Pc(13) int local13 = 0;
|
|
@Pc(20) int local20;
|
|
if (arg2 < SoftwareRaster.clipTop) {
|
|
local20 = SoftwareRaster.clipTop - arg2;
|
|
arg4 -= local20;
|
|
arg2 = SoftwareRaster.clipTop;
|
|
local13 = local20 * arg3;
|
|
local5 += local20 * SoftwareRaster.width;
|
|
}
|
|
if (arg2 + arg4 > SoftwareRaster.clipBottom) {
|
|
arg4 -= arg2 + arg4 - SoftwareRaster.clipBottom;
|
|
}
|
|
if (arg1 < SoftwareRaster.clipLeft) {
|
|
local20 = SoftwareRaster.clipLeft - arg1;
|
|
arg3 -= local20;
|
|
arg1 = SoftwareRaster.clipLeft;
|
|
local13 += local20;
|
|
local5 += local20;
|
|
local11 = local20;
|
|
local9 += local20;
|
|
}
|
|
if (arg1 + arg3 > SoftwareRaster.clipRight) {
|
|
local20 = arg1 + arg3 - SoftwareRaster.clipRight;
|
|
arg3 -= local20;
|
|
local11 += local20;
|
|
local9 += local20;
|
|
}
|
|
if (arg3 > 0 && arg4 > 0) {
|
|
blitTransparent(SoftwareRaster.pixels, this.pixels[arg0], arg5, local13, local5, arg3, arg4, local9, local11, arg6);
|
|
}
|
|
}
|
|
|
|
@OriginalMember(owner = "client!dd", name = "a", descriptor = "(IIIIIIZ)V")
|
|
@Override
|
|
protected final void renderGlyph(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5) {
|
|
@Pc(5) int local5 = arg1 + arg2 * SoftwareRaster.width;
|
|
@Pc(9) int local9 = SoftwareRaster.width - arg3;
|
|
@Pc(11) int local11 = 0;
|
|
@Pc(13) int local13 = 0;
|
|
@Pc(20) int local20;
|
|
if (arg2 < SoftwareRaster.clipTop) {
|
|
local20 = SoftwareRaster.clipTop - arg2;
|
|
arg4 -= local20;
|
|
arg2 = SoftwareRaster.clipTop;
|
|
local13 = local20 * arg3;
|
|
local5 += local20 * SoftwareRaster.width;
|
|
}
|
|
if (arg2 + arg4 > SoftwareRaster.clipBottom) {
|
|
arg4 -= arg2 + arg4 - SoftwareRaster.clipBottom;
|
|
}
|
|
if (arg1 < SoftwareRaster.clipLeft) {
|
|
local20 = SoftwareRaster.clipLeft - arg1;
|
|
arg3 -= local20;
|
|
arg1 = SoftwareRaster.clipLeft;
|
|
local13 += local20;
|
|
local5 += local20;
|
|
local11 = local20;
|
|
local9 += local20;
|
|
}
|
|
if (arg1 + arg3 > SoftwareRaster.clipRight) {
|
|
local20 = arg1 + arg3 - SoftwareRaster.clipRight;
|
|
arg3 -= local20;
|
|
local11 += local20;
|
|
local9 += local20;
|
|
}
|
|
if (arg3 <= 0 || arg4 <= 0) {
|
|
return;
|
|
}
|
|
if (SoftwareRaster.anIntArray295 == null) {
|
|
blit(SoftwareRaster.pixels, this.pixels[arg0], arg5, local13, local5, arg3, arg4, local9, local11);
|
|
} else {
|
|
blitMasked(SoftwareRaster.pixels, this.pixels[arg0], arg1, arg2, arg3, arg4, arg5, local13, local5, local9, local11, SoftwareRaster.anIntArray295, SoftwareRaster.anIntArray296);
|
|
}
|
|
}
|
|
}
|