Rabbit-R1/android (non root)/java/sources/com/google/android/material/tooltip/TooltipDrawable.java
2024-05-21 17:08:36 -04:00

286 lines
12 KiB
Java

package com.google.android.material.tooltip;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import androidx.core.graphics.ColorUtils;
import com.google.android.material.R;
import com.google.android.material.animation.AnimationUtils;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.internal.TextDrawableHelper;
import com.google.android.material.internal.ThemeEnforcement;
import com.google.android.material.resources.MaterialResources;
import com.google.android.material.resources.TextAppearance;
import com.google.android.material.shape.EdgeTreatment;
import com.google.android.material.shape.MarkerEdgeTreatment;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.shape.OffsetEdgeTreatment;
/* loaded from: classes2.dex */
public class TooltipDrawable extends MaterialShapeDrawable implements TextDrawableHelper.TextDrawableDelegate {
private static final int DEFAULT_STYLE = R.style.Widget_MaterialComponents_Tooltip;
private static final int DEFAULT_THEME_ATTR = R.attr.tooltipStyle;
private int arrowSize;
private final View.OnLayoutChangeListener attachedViewLayoutChangeListener;
private final Context context;
private final Rect displayFrame;
private final Paint.FontMetrics fontMetrics;
private float labelOpacity;
private int layoutMargin;
private int locationOnScreenX;
private int minHeight;
private int minWidth;
private int padding;
private CharSequence text;
private final TextDrawableHelper textDrawableHelper;
private final float tooltipPivotX;
private float tooltipPivotY;
private float tooltipScaleX;
private float tooltipScaleY;
public int getLayoutMargin() {
return this.layoutMargin;
}
public int getMinHeight() {
return this.minHeight;
}
public int getMinWidth() {
return this.minWidth;
}
public CharSequence getText() {
return this.text;
}
public int getTextPadding() {
return this.padding;
}
public static TooltipDrawable createFromAttributes(Context context, AttributeSet attributeSet, int i, int i2) {
TooltipDrawable tooltipDrawable = new TooltipDrawable(context, attributeSet, i, i2);
tooltipDrawable.loadFromAttributes(attributeSet, i, i2);
return tooltipDrawable;
}
public static TooltipDrawable createFromAttributes(Context context, AttributeSet attributeSet) {
return createFromAttributes(context, attributeSet, DEFAULT_THEME_ATTR, DEFAULT_STYLE);
}
public static TooltipDrawable create(Context context) {
return createFromAttributes(context, null, DEFAULT_THEME_ATTR, DEFAULT_STYLE);
}
private TooltipDrawable(Context context, AttributeSet attributeSet, int i, int i2) {
super(context, attributeSet, i, i2);
this.fontMetrics = new Paint.FontMetrics();
TextDrawableHelper textDrawableHelper = new TextDrawableHelper(this);
this.textDrawableHelper = textDrawableHelper;
this.attachedViewLayoutChangeListener = new View.OnLayoutChangeListener() { // from class: com.google.android.material.tooltip.TooltipDrawable.1
@Override // android.view.View.OnLayoutChangeListener
public void onLayoutChange(View view, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) {
TooltipDrawable.this.updateLocationOnScreen(view);
}
};
this.displayFrame = new Rect();
this.tooltipScaleX = 1.0f;
this.tooltipScaleY = 1.0f;
this.tooltipPivotX = 0.5f;
this.tooltipPivotY = 0.5f;
this.labelOpacity = 1.0f;
this.context = context;
textDrawableHelper.getTextPaint().density = context.getResources().getDisplayMetrics().density;
textDrawableHelper.getTextPaint().setTextAlign(Paint.Align.CENTER);
}
private void loadFromAttributes(AttributeSet attributeSet, int i, int i2) {
TypedArray obtainStyledAttributes = ThemeEnforcement.obtainStyledAttributes(this.context, attributeSet, R.styleable.Tooltip, i, i2, new int[0]);
this.arrowSize = this.context.getResources().getDimensionPixelSize(R.dimen.mtrl_tooltip_arrowSize);
setShapeAppearanceModel(getShapeAppearanceModel().toBuilder().setBottomEdge(createMarkerEdge()).build());
setText(obtainStyledAttributes.getText(R.styleable.Tooltip_android_text));
TextAppearance textAppearance = MaterialResources.getTextAppearance(this.context, obtainStyledAttributes, R.styleable.Tooltip_android_textAppearance);
if (textAppearance != null && obtainStyledAttributes.hasValue(R.styleable.Tooltip_android_textColor)) {
textAppearance.setTextColor(MaterialResources.getColorStateList(this.context, obtainStyledAttributes, R.styleable.Tooltip_android_textColor));
}
setTextAppearance(textAppearance);
setFillColor(ColorStateList.valueOf(obtainStyledAttributes.getColor(R.styleable.Tooltip_backgroundTint, MaterialColors.layer(ColorUtils.setAlphaComponent(MaterialColors.getColor(this.context, android.R.attr.colorBackground, TooltipDrawable.class.getCanonicalName()), 229), ColorUtils.setAlphaComponent(MaterialColors.getColor(this.context, R.attr.colorOnBackground, TooltipDrawable.class.getCanonicalName()), 153)))));
setStrokeColor(ColorStateList.valueOf(MaterialColors.getColor(this.context, R.attr.colorSurface, TooltipDrawable.class.getCanonicalName())));
this.padding = obtainStyledAttributes.getDimensionPixelSize(R.styleable.Tooltip_android_padding, 0);
this.minWidth = obtainStyledAttributes.getDimensionPixelSize(R.styleable.Tooltip_android_minWidth, 0);
this.minHeight = obtainStyledAttributes.getDimensionPixelSize(R.styleable.Tooltip_android_minHeight, 0);
this.layoutMargin = obtainStyledAttributes.getDimensionPixelSize(R.styleable.Tooltip_android_layout_margin, 0);
obtainStyledAttributes.recycle();
}
public void setTextResource(int i) {
setText(this.context.getResources().getString(i));
}
public void setText(CharSequence charSequence) {
if (TextUtils.equals(this.text, charSequence)) {
return;
}
this.text = charSequence;
this.textDrawableHelper.setTextWidthDirty(true);
invalidateSelf();
}
public TextAppearance getTextAppearance() {
return this.textDrawableHelper.getTextAppearance();
}
public void setTextAppearanceResource(int i) {
setTextAppearance(new TextAppearance(this.context, i));
}
public void setTextAppearance(TextAppearance textAppearance) {
this.textDrawableHelper.setTextAppearance(textAppearance, this.context);
}
public void setMinWidth(int i) {
this.minWidth = i;
invalidateSelf();
}
public void setMinHeight(int i) {
this.minHeight = i;
invalidateSelf();
}
public void setTextPadding(int i) {
this.padding = i;
invalidateSelf();
}
public void setLayoutMargin(int i) {
this.layoutMargin = i;
invalidateSelf();
}
public void setRevealFraction(float f) {
this.tooltipPivotY = 1.2f;
this.tooltipScaleX = f;
this.tooltipScaleY = f;
this.labelOpacity = AnimationUtils.lerp(0.0f, 1.0f, 0.19f, 1.0f, f);
invalidateSelf();
}
public void setRelativeToView(View view) {
if (view == null) {
return;
}
updateLocationOnScreen(view);
view.addOnLayoutChangeListener(this.attachedViewLayoutChangeListener);
}
public void detachView(View view) {
if (view == null) {
return;
}
view.removeOnLayoutChangeListener(this.attachedViewLayoutChangeListener);
}
@Override // android.graphics.drawable.Drawable
public int getIntrinsicWidth() {
return (int) Math.max((this.padding * 2) + getTextWidth(), this.minWidth);
}
@Override // android.graphics.drawable.Drawable
public int getIntrinsicHeight() {
return (int) Math.max(this.textDrawableHelper.getTextPaint().getTextSize(), this.minHeight);
}
@Override // com.google.android.material.shape.MaterialShapeDrawable, android.graphics.drawable.Drawable
public void draw(Canvas canvas) {
canvas.save();
float calculatePointerOffset = calculatePointerOffset();
float f = (float) (-((this.arrowSize * Math.sqrt(2.0d)) - this.arrowSize));
canvas.scale(this.tooltipScaleX, this.tooltipScaleY, getBounds().left + (getBounds().width() * 0.5f), getBounds().top + (getBounds().height() * this.tooltipPivotY));
canvas.translate(calculatePointerOffset, f);
super.draw(canvas);
drawText(canvas);
canvas.restore();
}
/* JADX INFO: Access modifiers changed from: protected */
@Override // com.google.android.material.shape.MaterialShapeDrawable, android.graphics.drawable.Drawable
public void onBoundsChange(Rect rect) {
super.onBoundsChange(rect);
setShapeAppearanceModel(getShapeAppearanceModel().toBuilder().setBottomEdge(createMarkerEdge()).build());
}
@Override // com.google.android.material.shape.MaterialShapeDrawable, android.graphics.drawable.Drawable, com.google.android.material.internal.TextDrawableHelper.TextDrawableDelegate
public boolean onStateChange(int[] iArr) {
return super.onStateChange(iArr);
}
@Override // com.google.android.material.internal.TextDrawableHelper.TextDrawableDelegate
public void onTextSizeChange() {
invalidateSelf();
}
/* JADX INFO: Access modifiers changed from: private */
public void updateLocationOnScreen(View view) {
int[] iArr = new int[2];
view.getLocationOnScreen(iArr);
this.locationOnScreenX = iArr[0];
view.getWindowVisibleDisplayFrame(this.displayFrame);
}
private float calculatePointerOffset() {
int i;
if (((this.displayFrame.right - getBounds().right) - this.locationOnScreenX) - this.layoutMargin < 0) {
i = ((this.displayFrame.right - getBounds().right) - this.locationOnScreenX) - this.layoutMargin;
} else {
if (((this.displayFrame.left - getBounds().left) - this.locationOnScreenX) + this.layoutMargin <= 0) {
return 0.0f;
}
i = ((this.displayFrame.left - getBounds().left) - this.locationOnScreenX) + this.layoutMargin;
}
return i;
}
private EdgeTreatment createMarkerEdge() {
float f = -calculatePointerOffset();
float width = ((float) (getBounds().width() - (this.arrowSize * Math.sqrt(2.0d)))) / 2.0f;
return new OffsetEdgeTreatment(new MarkerEdgeTreatment(this.arrowSize), Math.min(Math.max(f, -width), width));
}
private void drawText(Canvas canvas) {
if (this.text == null) {
return;
}
int calculateTextOriginAndAlignment = (int) calculateTextOriginAndAlignment(getBounds());
if (this.textDrawableHelper.getTextAppearance() != null) {
this.textDrawableHelper.getTextPaint().drawableState = getState();
this.textDrawableHelper.updateTextPaintDrawState(this.context);
this.textDrawableHelper.getTextPaint().setAlpha((int) (this.labelOpacity * 255.0f));
}
CharSequence charSequence = this.text;
canvas.drawText(charSequence, 0, charSequence.length(), r0.centerX(), calculateTextOriginAndAlignment, this.textDrawableHelper.getTextPaint());
}
private float getTextWidth() {
CharSequence charSequence = this.text;
if (charSequence == null) {
return 0.0f;
}
return this.textDrawableHelper.getTextWidth(charSequence.toString());
}
private float calculateTextOriginAndAlignment(Rect rect) {
return rect.centerY() - calculateTextCenterFromBaseline();
}
private float calculateTextCenterFromBaseline() {
this.textDrawableHelper.getTextPaint().getFontMetrics(this.fontMetrics);
return (this.fontMetrics.descent + this.fontMetrics.ascent) / 2.0f;
}
}