discord-jadx/app/src/main/java/androidx/core/text/TextDirectionHeuristicsComp...

168 lines
5.9 KiB
Java

package androidx.core.text;
import java.nio.CharBuffer;
import java.util.Locale;
public final class TextDirectionHeuristicsCompat {
public static final TextDirectionHeuristicCompat ANYRTL_LTR = new TextDirectionHeuristicInternal(AnyStrong.INSTANCE_RTL, false);
public static final TextDirectionHeuristicCompat FIRSTSTRONG_LTR;
public static final TextDirectionHeuristicCompat FIRSTSTRONG_RTL;
public static final TextDirectionHeuristicCompat LOCALE = TextDirectionHeuristicLocale.INSTANCE;
public static final TextDirectionHeuristicCompat LTR = new TextDirectionHeuristicInternal(null, false);
public static final TextDirectionHeuristicCompat RTL = new TextDirectionHeuristicInternal(null, true);
private static final int STATE_FALSE = 1;
private static final int STATE_TRUE = 0;
private static final int STATE_UNKNOWN = 2;
public static class AnyStrong implements TextDirectionAlgorithm {
public static final AnyStrong INSTANCE_RTL = new AnyStrong(true);
private final boolean mLookForRtl;
private AnyStrong(boolean z2) {
this.mLookForRtl = z2;
}
@Override // androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionAlgorithm
public int checkRtl(CharSequence charSequence, int i, int i2) {
int i3 = i2 + i;
boolean z2 = false;
while (i < i3) {
int isRtlText = TextDirectionHeuristicsCompat.isRtlText(Character.getDirectionality(charSequence.charAt(i)));
if (isRtlText != 0) {
if (isRtlText != 1) {
continue;
i++;
} else if (!this.mLookForRtl) {
return 1;
}
} else if (this.mLookForRtl) {
return 0;
}
z2 = true;
i++;
}
if (z2) {
return this.mLookForRtl ? 1 : 0;
}
return 2;
}
}
public static class FirstStrong implements TextDirectionAlgorithm {
public static final FirstStrong INSTANCE = new FirstStrong();
private FirstStrong() {
}
@Override // androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionAlgorithm
public int checkRtl(CharSequence charSequence, int i, int i2) {
int i3 = i2 + i;
int i4 = 2;
while (i < i3 && i4 == 2) {
i4 = TextDirectionHeuristicsCompat.isRtlTextOrFormat(Character.getDirectionality(charSequence.charAt(i)));
i++;
}
return i4;
}
}
public interface TextDirectionAlgorithm {
int checkRtl(CharSequence charSequence, int i, int i2);
}
public static abstract class TextDirectionHeuristicImpl implements TextDirectionHeuristicCompat {
private final TextDirectionAlgorithm mAlgorithm;
public TextDirectionHeuristicImpl(TextDirectionAlgorithm textDirectionAlgorithm) {
this.mAlgorithm = textDirectionAlgorithm;
}
private boolean doCheck(CharSequence charSequence, int i, int i2) {
int checkRtl = this.mAlgorithm.checkRtl(charSequence, i, i2);
if (checkRtl == 0) {
return true;
}
if (checkRtl != 1) {
return defaultIsRtl();
}
return false;
}
public abstract boolean defaultIsRtl();
@Override // androidx.core.text.TextDirectionHeuristicCompat
public boolean isRtl(CharSequence charSequence, int i, int i2) {
if (charSequence != null && i >= 0 && i2 >= 0 && charSequence.length() - i2 >= i) {
return this.mAlgorithm == null ? defaultIsRtl() : doCheck(charSequence, i, i2);
}
throw new IllegalArgumentException();
}
@Override // androidx.core.text.TextDirectionHeuristicCompat
public boolean isRtl(char[] cArr, int i, int i2) {
return isRtl(CharBuffer.wrap(cArr), i, i2);
}
}
public static class TextDirectionHeuristicInternal extends TextDirectionHeuristicImpl {
private final boolean mDefaultIsRtl;
public TextDirectionHeuristicInternal(TextDirectionAlgorithm textDirectionAlgorithm, boolean z2) {
super(textDirectionAlgorithm);
this.mDefaultIsRtl = z2;
}
@Override // androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionHeuristicImpl
public boolean defaultIsRtl() {
return this.mDefaultIsRtl;
}
}
public static class TextDirectionHeuristicLocale extends TextDirectionHeuristicImpl {
public static final TextDirectionHeuristicLocale INSTANCE = new TextDirectionHeuristicLocale();
public TextDirectionHeuristicLocale() {
super(null);
}
@Override // androidx.core.text.TextDirectionHeuristicsCompat.TextDirectionHeuristicImpl
public boolean defaultIsRtl() {
return TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == 1;
}
}
static {
FirstStrong firstStrong = FirstStrong.INSTANCE;
FIRSTSTRONG_LTR = new TextDirectionHeuristicInternal(firstStrong, false);
FIRSTSTRONG_RTL = new TextDirectionHeuristicInternal(firstStrong, true);
}
private TextDirectionHeuristicsCompat() {
}
public static int isRtlText(int i) {
if (i != 0) {
return (i == 1 || i == 2) ? 0 : 2;
}
return 1;
}
public static int isRtlTextOrFormat(int i) {
if (i != 0) {
if (i == 1 || i == 2) {
return 0;
}
switch (i) {
case 14:
case 15:
break;
case 16:
case 17:
return 0;
default:
return 2;
}
}
return 1;
}
}