Full port of the CW/Morse decoder from Morse Expert 1.15 (com.ve3nea.morse_expert), preserving obfuscated class names and logic. Ads (gms.ads), billing (BillingClient), and library code were removed per user; SettingsActivity deferred to Compose integration. Ported modules: - pas.*: decoder engine interface + JNI (libnativedecoderjni.so, armeabi-v7a) - k3.*: FFT library (pseudo-enum q rewritten from smali; sun.misc stubs for Unsafe/Cleaner since Android lacks them; FFT path uses float[] branch) - i3.*, g3.*, j3.*, s.*, d1.AbstractC1518b: DSP/sin-cos tables (long[] tables f/f11589g restored from smali) - H2.a/b: audio capture + decode control core (jadx catch-block illusions cleaned per smali; recording try/catch restored around write block) - J2.a/b: waterfall OpenGL renderer + palette (r10 = anchor color per smali) - E2.g: waterfall touch frequency picker (height = ScaleView per smali) - B0.b/B.RunnableC0001b: status-bar + decoded-text UI runnables (real constructors recovered from smali) - MainActivity → controller class (Activity injected; immersive status bar inlined); C1646n trimmed to view holder; D.n keeps waterfall texture case - F2.a: text selection menu (Save/Share) Verified: :feature:cw:compileDebugJavaWithJavac BUILD SUCCESSFUL.
46 lines
1.5 KiB
Java
46 lines
1.5 KiB
Java
package J2;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class a {
|
|
|
|
/* renamed from: b, reason: collision with root package name */
|
|
public static final int[] f726b = {16, 17749, 65535, 16776960, 16711680};
|
|
|
|
/* renamed from: a, reason: collision with root package name */
|
|
public final int[] f727a;
|
|
|
|
public a() {
|
|
int[] iArr = new int[256];
|
|
this.f727a = iArr;
|
|
int i4 = 4;
|
|
float f = 255.0f / 4;
|
|
int[] iArr2 = f726b;
|
|
int i5 = 0;
|
|
int i6 = -16777216;
|
|
iArr[0] = iArr2[0] | (-16777216);
|
|
int i7 = 1;
|
|
while (i7 <= i4) {
|
|
int round = Math.round(i7 * f);
|
|
iArr[round] = iArr2[i7] | i6;
|
|
int i8 = round - i5;
|
|
int i9 = iArr[i5];
|
|
int i10 = (i9 >> 16) & 255;
|
|
int i11 = (i9 >> 8) & 255;
|
|
int i12 = i9 & 255;
|
|
float f4 = i8;
|
|
// r10 = iArr2[i7] (下一个锚点色, smali: aget v10, v4, v8)
|
|
float f5 = (((iArr2[i7] >> 16) & 255) - i10) / f4;
|
|
float f6 = (((iArr2[i7] >> 8) & 255) - i11) / f4;
|
|
float f7 = ((iArr2[i7] & 255) - i12) / f4;
|
|
for (int i13 = 1; i13 < i8; i13++) {
|
|
float f8 = i13;
|
|
iArr[i5 + i13] = ((Math.round(f5 * f8) + i10) << 16) | (-16777216) | ((Math.round(f6 * f8) + i11) << 8) | (Math.round(f8 * f7) + i12);
|
|
}
|
|
i7++;
|
|
i5 = round;
|
|
i4 = 4;
|
|
i6 = -16777216;
|
|
}
|
|
}
|
|
}
|