jimu-decompiled/sources/com/squareup/leakcanary/internal/SquigglySpan.java
2025-05-13 19:24:51 +02:00

70 lines
3.3 KiB
Java

package com.squareup.leakcanary.internal;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.text.SpannableStringBuilder;
import android.text.style.ReplacementSpan;
import android.text.style.UnderlineSpan;
import com.squareup.leakcanary.R;
/* loaded from: classes.dex */
class SquigglySpan extends ReplacementSpan {
private final float amplitude;
private final float halfStrokeWidth;
private final float halfWaveHeight;
private final Path path;
private final float periodDegrees;
private final int referenceColor;
private final Paint squigglyPaint = new Paint(1);
private int width;
SquigglySpan(Resources resources) {
this.squigglyPaint.setStyle(Paint.Style.STROKE);
this.squigglyPaint.setColor(resources.getColor(R.color.leak_canary_leak));
float dimensionPixelSize = resources.getDimensionPixelSize(R.dimen.leak_canary_squiggly_span_stroke_width);
this.squigglyPaint.setStrokeWidth(dimensionPixelSize);
this.halfStrokeWidth = dimensionPixelSize / 2.0f;
this.amplitude = resources.getDimensionPixelSize(R.dimen.leak_canary_squiggly_span_amplitude);
this.periodDegrees = resources.getDimensionPixelSize(R.dimen.leak_canary_squiggly_span_period_degrees);
this.path = new Path();
this.halfWaveHeight = ((this.amplitude * 2.0f) + dimensionPixelSize) / 2.0f;
this.referenceColor = resources.getColor(R.color.leak_canary_reference);
}
public static void replaceUnderlineSpans(SpannableStringBuilder spannableStringBuilder, Resources resources) {
for (UnderlineSpan underlineSpan : (UnderlineSpan[]) spannableStringBuilder.getSpans(0, spannableStringBuilder.length(), UnderlineSpan.class)) {
int spanStart = spannableStringBuilder.getSpanStart(underlineSpan);
int spanEnd = spannableStringBuilder.getSpanEnd(underlineSpan);
spannableStringBuilder.removeSpan(underlineSpan);
spannableStringBuilder.setSpan(new SquigglySpan(resources), spanStart, spanEnd, 0);
}
}
private static void squigglyHorizontalPath(Path path, float f, float f2, float f3, float f4, float f5) {
path.reset();
path.moveTo(f, f3);
float f6 = (float) (6.283185307179586d / f5);
for (float f7 = 0.0f; f7 <= f2 - f; f7 += 1.0f) {
path.lineTo(f + f7, (float) ((f4 * Math.sin((f6 * f7) + 40.0f)) + f3));
}
}
@Override // android.text.style.ReplacementSpan
public void draw(Canvas canvas, CharSequence charSequence, int i, int i2, float f, int i3, int i4, int i5, Paint paint) {
Path path = this.path;
float f2 = this.halfStrokeWidth;
squigglyHorizontalPath(path, f + f2, (this.width + f) - f2, i5 - this.halfWaveHeight, this.amplitude, this.periodDegrees);
canvas.drawPath(this.path, this.squigglyPaint);
paint.setColor(this.referenceColor);
canvas.drawText(charSequence, i, i2, f, i4, paint);
}
@Override // android.text.style.ReplacementSpan
public int getSize(Paint paint, CharSequence charSequence, int i, int i2, Paint.FontMetricsInt fontMetricsInt) {
this.width = (int) paint.measureText(charSequence, i, i2);
return this.width;
}
}