Rabbit-R1/android (non root)/java/sources/com/google/android/material/internal/TextDrawableHelper.java

138 lines
4.7 KiB
Java
Raw Normal View History

2024-05-21 16:08:36 -05:00
package com.google.android.material.internal;
import android.content.Context;
import android.graphics.Typeface;
import android.text.TextPaint;
import com.google.android.material.resources.TextAppearance;
import com.google.android.material.resources.TextAppearanceFontCallback;
import java.lang.ref.WeakReference;
/* loaded from: classes2.dex */
public class TextDrawableHelper {
private TextAppearance textAppearance;
private float textHeight;
private float textWidth;
private final TextPaint textPaint = new TextPaint(1);
private final TextAppearanceFontCallback fontCallback = new TextAppearanceFontCallback() { // from class: com.google.android.material.internal.TextDrawableHelper.1
@Override // com.google.android.material.resources.TextAppearanceFontCallback
public void onFontRetrieved(Typeface typeface, boolean z) {
if (z) {
return;
}
TextDrawableHelper.this.textSizeDirty = true;
TextDrawableDelegate textDrawableDelegate = (TextDrawableDelegate) TextDrawableHelper.this.delegate.get();
if (textDrawableDelegate != null) {
textDrawableDelegate.onTextSizeChange();
}
}
@Override // com.google.android.material.resources.TextAppearanceFontCallback
public void onFontRetrievalFailed(int i) {
TextDrawableHelper.this.textSizeDirty = true;
TextDrawableDelegate textDrawableDelegate = (TextDrawableDelegate) TextDrawableHelper.this.delegate.get();
if (textDrawableDelegate != null) {
textDrawableDelegate.onTextSizeChange();
}
}
};
private boolean textSizeDirty = true;
private WeakReference<TextDrawableDelegate> delegate = new WeakReference<>(null);
/* loaded from: classes2.dex */
public interface TextDrawableDelegate {
int[] getState();
boolean onStateChange(int[] iArr);
void onTextSizeChange();
}
public TextAppearance getTextAppearance() {
return this.textAppearance;
}
public TextPaint getTextPaint() {
return this.textPaint;
}
public boolean isTextWidthDirty() {
return this.textSizeDirty;
}
public void setTextSizeDirty(boolean z) {
this.textSizeDirty = z;
}
public void setTextWidthDirty(boolean z) {
this.textSizeDirty = z;
}
public TextDrawableHelper(TextDrawableDelegate textDrawableDelegate) {
setDelegate(textDrawableDelegate);
}
public void setDelegate(TextDrawableDelegate textDrawableDelegate) {
this.delegate = new WeakReference<>(textDrawableDelegate);
}
private void refreshTextDimens(String str) {
this.textWidth = calculateTextWidth(str);
this.textHeight = calculateTextHeight(str);
this.textSizeDirty = false;
}
public float getTextWidth(String str) {
if (!this.textSizeDirty) {
return this.textWidth;
}
refreshTextDimens(str);
return this.textWidth;
}
private float calculateTextWidth(CharSequence charSequence) {
if (charSequence == null) {
return 0.0f;
}
return this.textPaint.measureText(charSequence, 0, charSequence.length());
}
public float getTextHeight(String str) {
if (!this.textSizeDirty) {
return this.textHeight;
}
refreshTextDimens(str);
return this.textHeight;
}
private float calculateTextHeight(String str) {
if (str == null) {
return 0.0f;
}
return Math.abs(this.textPaint.getFontMetrics().ascent);
}
public void setTextAppearance(TextAppearance textAppearance, Context context) {
if (this.textAppearance != textAppearance) {
this.textAppearance = textAppearance;
if (textAppearance != null) {
textAppearance.updateMeasureState(context, this.textPaint, this.fontCallback);
TextDrawableDelegate textDrawableDelegate = this.delegate.get();
if (textDrawableDelegate != null) {
this.textPaint.drawableState = textDrawableDelegate.getState();
}
textAppearance.updateDrawState(context, this.textPaint, this.fontCallback);
this.textSizeDirty = true;
}
TextDrawableDelegate textDrawableDelegate2 = this.delegate.get();
if (textDrawableDelegate2 != null) {
textDrawableDelegate2.onTextSizeChange();
textDrawableDelegate2.onStateChange(textDrawableDelegate2.getState());
}
}
}
public void updateTextPaintDrawState(Context context) {
this.textAppearance.updateDrawState(context, this.textPaint, this.fontCallback);
}
}