Files
runelite/runescape-client/src/main/java/IndexedSprite.java
2022-02-09 13:21:03 +01:00

275 lines
7.7 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
@ObfuscatedName("pg")
@Implements("IndexedSprite")
public final class IndexedSprite extends Rasterizer2D {
@ObfuscatedName("c")
@Export("pixels")
public byte[] pixels;
@ObfuscatedName("l")
@Export("palette")
public int[] palette;
@ObfuscatedName("s")
@Export("subWidth")
public int subWidth;
@ObfuscatedName("e")
@Export("subHeight")
public int subHeight;
@ObfuscatedName("r")
@Export("xOffset")
public int xOffset;
@ObfuscatedName("o")
@Export("yOffset")
public int yOffset;
@ObfuscatedName("i")
@Export("width")
public int width;
@ObfuscatedName("w")
@Export("height")
public int height;
@ObfuscatedName("c")
@Export("normalize")
public void normalize() {
if (this.subWidth != this.width || this.subHeight != this.height) { // L: 18
byte[] var1 = new byte[this.width * this.height]; // L: 19
int var2 = 0; // L: 20
for (int var3 = 0; var3 < this.subHeight; ++var3) { // L: 21
for (int var4 = 0; var4 < this.subWidth; ++var4) { // L: 22
var1[var4 + (var3 + this.yOffset) * this.width + this.xOffset] = this.pixels[var2++]; // L: 23
}
}
this.pixels = var1; // L: 26
this.subWidth = this.width; // L: 27
this.subHeight = this.height; // L: 28
this.xOffset = 0; // L: 29
this.yOffset = 0; // L: 30
}
} // L: 31
@ObfuscatedName("l")
@Export("shiftColors")
public void shiftColors(int var1, int var2, int var3) {
for (int var4 = 0; var4 < this.palette.length; ++var4) { // L: 34
int var5 = this.palette[var4] >> 16 & 255; // L: 35
var5 += var1; // L: 36
if (var5 < 0) { // L: 37
var5 = 0;
} else if (var5 > 255) { // L: 38
var5 = 255;
}
int var6 = this.palette[var4] >> 8 & 255; // L: 39
var6 += var2; // L: 40
if (var6 < 0) { // L: 41
var6 = 0;
} else if (var6 > 255) { // L: 42
var6 = 255;
}
int var7 = this.palette[var4] & 255; // L: 43
var7 += var3; // L: 44
if (var7 < 0) { // L: 45
var7 = 0;
} else if (var7 > 255) { // L: 46
var7 = 255;
}
this.palette[var4] = var7 + (var6 << 8) + (var5 << 16); // L: 47
}
} // L: 49
@ObfuscatedName("s")
@Export("drawAt")
public void drawAt(int var1, int var2) {
var1 += this.xOffset; // L: 52
var2 += this.yOffset; // L: 53
int var3 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; // L: 54
int var4 = 0; // L: 55
int var5 = this.subHeight; // L: 56
int var6 = this.subWidth; // L: 57
int var7 = Rasterizer2D.Rasterizer2D_width - var6; // L: 58
int var8 = 0; // L: 59
int var9;
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) { // L: 60
var9 = Rasterizer2D.Rasterizer2D_yClipStart - var2; // L: 61
var5 -= var9; // L: 62
var2 = Rasterizer2D.Rasterizer2D_yClipStart; // L: 63
var4 += var9 * var6; // L: 64
var3 += var9 * Rasterizer2D.Rasterizer2D_width; // L: 65
}
if (var5 + var2 > Rasterizer2D.Rasterizer2D_yClipEnd) { // L: 67
var5 -= var5 + var2 - Rasterizer2D.Rasterizer2D_yClipEnd;
}
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) { // L: 68
var9 = Rasterizer2D.Rasterizer2D_xClipStart - var1; // L: 69
var6 -= var9; // L: 70
var1 = Rasterizer2D.Rasterizer2D_xClipStart; // L: 71
var4 += var9; // L: 72
var3 += var9; // L: 73
var8 += var9; // L: 74
var7 += var9; // L: 75
}
if (var6 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { // L: 77
var9 = var6 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; // L: 78
var6 -= var9; // L: 79
var8 += var9; // L: 80
var7 += var9; // L: 81
}
if (var6 > 0 && var5 > 0) { // L: 83
IndexedSprite_two(Rasterizer2D.Rasterizer2D_pixels, this.pixels, this.palette, var4, var3, var6, var5, var7, var8); // L: 84
}
} // L: 85
@ObfuscatedName("r")
public void method7753(int var1, int var2, int var3, int var4) {
int var5 = this.subWidth; // L: 116
int var6 = this.subHeight; // L: 117
int var7 = 0; // L: 118
int var8 = 0; // L: 119
int var9 = this.width; // L: 120
int var10 = this.height; // L: 121
int var11 = (var9 << 16) / var3; // L: 122
int var12 = (var10 << 16) / var4; // L: 123
int var13;
if (this.xOffset > 0) { // L: 124
var13 = (var11 + (this.xOffset << 16) - 1) / var11; // L: 125
var1 += var13; // L: 126
var7 += var13 * var11 - (this.xOffset << 16); // L: 127
}
if (this.yOffset > 0) { // L: 129
var13 = (var12 + (this.yOffset << 16) - 1) / var12; // L: 130
var2 += var13; // L: 131
var8 += var13 * var12 - (this.yOffset << 16); // L: 132
}
if (var5 < var9) { // L: 134
var3 = (var11 + ((var5 << 16) - var7) - 1) / var11;
}
if (var6 < var10) { // L: 135
var4 = (var12 + ((var6 << 16) - var8) - 1) / var12;
}
var13 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; // L: 136
int var14 = Rasterizer2D.Rasterizer2D_width - var3; // L: 137
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { // L: 138
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd;
}
int var15;
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) { // L: 139
var15 = Rasterizer2D.Rasterizer2D_yClipStart - var2; // L: 140
var4 -= var15; // L: 141
var13 += var15 * Rasterizer2D.Rasterizer2D_width; // L: 142
var8 += var12 * var15; // L: 143
}
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { // L: 145
var15 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; // L: 146
var3 -= var15; // L: 147
var14 += var15; // L: 148
}
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) { // L: 150
var15 = Rasterizer2D.Rasterizer2D_xClipStart - var1; // L: 151
var3 -= var15; // L: 152
var13 += var15; // L: 153
var7 += var11 * var15; // L: 154
var14 += var15; // L: 155
}
IndexedSprite_something(Rasterizer2D.Rasterizer2D_pixels, this.pixels, this.palette, var7, var8, var13, var14, var3, var4, var11, var12, var5); // L: 157
} // L: 158
@ObfuscatedName("e")
@Export("IndexedSprite_two")
static void IndexedSprite_two(int[] var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8) {
int var9 = -(var5 >> 2); // L: 88
var5 = -(var5 & 3); // L: 89
for (int var10 = -var6; var10 < 0; ++var10) { // L: 90
int var11;
byte var12;
for (var11 = var9; var11 < 0; ++var11) { // L: 91
var12 = var1[var3++]; // L: 92
if (var12 != 0) {
var0[var4++] = var2[var12 & 255]; // L: 93
} else {
++var4; // L: 94
}
var12 = var1[var3++]; // L: 95
if (var12 != 0) { // L: 96
var0[var4++] = var2[var12 & 255];
} else {
++var4; // L: 97
}
var12 = var1[var3++]; // L: 98
if (var12 != 0) { // L: 99
var0[var4++] = var2[var12 & 255];
} else {
++var4; // L: 100
}
var12 = var1[var3++]; // L: 101
if (var12 != 0) { // L: 102
var0[var4++] = var2[var12 & 255];
} else {
++var4; // L: 103
}
}
for (var11 = var5; var11 < 0; ++var11) { // L: 105
var12 = var1[var3++]; // L: 106
if (var12 != 0) { // L: 107
var0[var4++] = var2[var12 & 255];
} else {
++var4; // L: 108
}
}
var4 += var7; // L: 110
var3 += var8; // L: 111
}
} // L: 113
@ObfuscatedName("o")
@Export("IndexedSprite_something")
static void IndexedSprite_something(int[] var0, byte[] var1, int[] var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10, int var11) {
int var12 = var3; // L: 161
for (int var13 = -var8; var13 < 0; ++var13) { // L: 162
int var14 = var11 * (var4 >> 16); // L: 163
for (int var15 = -var7; var15 < 0; ++var15) { // L: 164
byte var16 = var1[(var3 >> 16) + var14]; // L: 165
if (var16 != 0) { // L: 166
var0[var5++] = var2[var16 & 255];
} else {
++var5; // L: 167
}
var3 += var9; // L: 168
}
var4 += var10; // L: 170
var3 = var12; // L: 171
var5 += var6; // L: 172
}
} // L: 174
}