Initial commit
This commit is contained in:
69
sources/com/squareup/leakcanary/internal/SquigglySpan.java
Normal file
69
sources/com/squareup/leakcanary/internal/SquigglySpan.java
Normal file
@@ -0,0 +1,69 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user