Files
runelite/runescape-client/src/main/java/Decimator.java
Lucwousin f6c2b4ac11 rev187
2019-12-16 18:40:02 +01:00

137 lines
3.0 KiB
Java

import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("dr")
@Implements("Decimator")
public class Decimator {
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = -2103215085
)
@Export("inputRate")
int inputRate;
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = 643968559
)
@Export("outputRate")
int outputRate;
@ObfuscatedName("b")
@Export("table")
int[][] table;
public Decimator(int var1, int var2) {
if (var2 != var1) {
int var3 = class179.method3580(var1, var2);
var1 /= var3;
var2 /= var3;
this.inputRate = var1;
this.outputRate = var2;
this.table = new int[var1][14];
for (int var4 = 0; var4 < var1; ++var4) {
int[] var5 = this.table[var4];
double var6 = 6.0D + (double)var4 / (double)var1;
int var8 = (int)Math.floor(var6 - 7.0D + 1.0D);
if (var8 < 0) {
var8 = 0;
}
int var9 = (int)Math.ceil(7.0D + var6);
if (var9 > 14) {
var9 = 14;
}
for (double var10 = (double)var2 / (double)var1; var8 < var9; ++var8) {
double var12 = ((double)var8 - var6) * 3.141592653589793D;
double var14 = var10;
if (var12 < -1.0E-4D || var12 > 1.0E-4D) {
var14 = var10 * (Math.sin(var12) / var12);
}
var14 *= 0.54D + 0.46D * Math.cos(0.2243994752564138D * ((double)var8 - var6));
var5[var8] = (int)Math.floor(var14 * 65536.0D + 0.5D);
}
}
}
}
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "([BI)[B",
garbageValue = "-1964001548"
)
@Export("resample")
byte[] resample(byte[] var1) {
if (this.table != null) {
int var2 = (int)((long)var1.length * (long)this.outputRate / (long)this.inputRate) + 14;
int[] var3 = new int[var2];
int var4 = 0;
int var5 = 0;
int var6;
for (var6 = 0; var6 < var1.length; ++var6) {
byte var7 = var1[var6];
int[] var8 = this.table[var5];
int var9;
for (var9 = 0; var9 < 14; ++var9) {
var3[var9 + var4] += var8[var9] * var7;
}
var5 += this.outputRate;
var9 = var5 / this.inputRate;
var4 += var9;
var5 -= var9 * this.inputRate;
}
var1 = new byte[var2];
for (var6 = 0; var6 < var2; ++var6) {
int var10 = var3[var6] + 32768 >> 16;
if (var10 < -128) {
var1[var6] = -128;
} else if (var10 > 127) {
var1[var6] = 127;
} else {
var1[var6] = (byte)var10;
}
}
}
return var1;
}
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "(II)I",
garbageValue = "-1093845583"
)
@Export("scaleRate")
int scaleRate(int var1) {
if (this.table != null) {
var1 = (int)((long)var1 * (long)this.outputRate / (long)this.inputRate);
}
return var1;
}
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "(II)I",
garbageValue = "1063686920"
)
@Export("scalePosition")
int scalePosition(int var1) {
if (this.table != null) {
var1 = (int)((long)var1 * (long)this.outputRate / (long)this.inputRate) + 6;
}
return var1;
}
}