alexandroid/decompiled/jadx/sources/com/google/android/material/shadow/ShadowRenderer.java
KaKi87 a47fad5135 📦 Add decompiled Alexa 2.2.730155.0 (jadx, apktool, Hermes strings)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:04:16 +01:00

154 lines
5.3 KiB
Java

package com.google.android.material.shadow;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RadialGradient;
import android.graphics.RectF;
import android.graphics.Region;
import android.graphics.Shader;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.core.graphics.ColorUtils;
import androidx.core.view.ViewCompat;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
/* loaded from: classes7.dex */
public class ShadowRenderer {
private static final int COLOR_ALPHA_END = 0;
private static final int COLOR_ALPHA_MIDDLE = 20;
private static final int COLOR_ALPHA_START = 68;
@NonNull
private final Paint cornerShadowPaint;
@NonNull
private final Paint edgeShadowPaint;
private final Path scratch;
private int shadowEndColor;
private int shadowMiddleColor;
@NonNull
private final Paint shadowPaint;
private int shadowStartColor;
private final Paint transparentPaint;
private static final int[] edgeColors = new int[3];
private static final float[] edgePositions = {0.0f, 0.5f, 1.0f};
private static final int[] cornerColors = new int[4];
private static final float[] cornerPositions = {0.0f, 0.0f, 0.5f, 1.0f};
public ShadowRenderer(int i) {
this.scratch = new Path();
Paint paint = new Paint();
this.transparentPaint = paint;
this.shadowPaint = new Paint();
setShadowColor(i);
paint.setColor(0);
Paint paint2 = new Paint(4);
this.cornerShadowPaint = paint2;
paint2.setStyle(Paint.Style.FILL);
this.edgeShadowPaint = new Paint(paint2);
}
public void drawCornerShadow(@NonNull Canvas canvas, @Nullable Matrix matrix, @NonNull RectF rectF, int i, float f, float f2) {
float f3;
boolean z = f2 < 0.0f;
Path path = this.scratch;
if (z) {
int[] iArr = cornerColors;
iArr[0] = 0;
iArr[1] = this.shadowEndColor;
iArr[2] = this.shadowMiddleColor;
iArr[3] = this.shadowStartColor;
f3 = f;
} else {
path.rewind();
path.moveTo(rectF.centerX(), rectF.centerY());
f3 = f;
path.arcTo(rectF, f3, f2);
path.close();
float f4 = -i;
rectF.inset(f4, f4);
int[] iArr2 = cornerColors;
iArr2[0] = 0;
iArr2[1] = this.shadowStartColor;
iArr2[2] = this.shadowMiddleColor;
iArr2[3] = this.shadowEndColor;
}
float width = rectF.width() / 2.0f;
if (width <= 0.0f) {
return;
}
float f5 = 1.0f - (i / width);
float[] fArr = cornerPositions;
fArr[1] = f5;
fArr[2] = ((1.0f - f5) / 2.0f) + f5;
this.cornerShadowPaint.setShader(new RadialGradient(rectF.centerX(), rectF.centerY(), width, cornerColors, fArr, Shader.TileMode.CLAMP));
canvas.save();
canvas.concat(matrix);
canvas.scale(1.0f, rectF.height() / rectF.width());
if (!z) {
canvas.clipPath(path, Region.Op.DIFFERENCE);
canvas.drawPath(path, this.transparentPaint);
}
canvas.drawArc(rectF, f3, f2, true, this.cornerShadowPaint);
canvas.restore();
}
public void drawEdgeShadow(@NonNull Canvas canvas, @Nullable Matrix matrix, @NonNull RectF rectF, int i) {
rectF.bottom += i;
rectF.offset(0.0f, -i);
int[] iArr = edgeColors;
iArr[0] = this.shadowEndColor;
iArr[1] = this.shadowMiddleColor;
iArr[2] = this.shadowStartColor;
Paint paint = this.edgeShadowPaint;
float f = rectF.left;
paint.setShader(new LinearGradient(f, rectF.top, f, rectF.bottom, iArr, edgePositions, Shader.TileMode.CLAMP));
canvas.save();
canvas.concat(matrix);
canvas.drawRect(rectF, this.edgeShadowPaint);
canvas.restore();
}
public void drawInnerCornerShadow(@NonNull Canvas canvas, @Nullable Matrix matrix, @NonNull RectF rectF, int i, float f, float f2, @NonNull float[] fArr) {
if (f2 > 0.0f) {
f += f2;
f2 = -f2;
}
float f3 = f;
float f4 = f2;
drawCornerShadow(canvas, matrix, rectF, i, f3, f4);
Path path = this.scratch;
path.rewind();
path.moveTo(fArr[0], fArr[1]);
path.arcTo(rectF, f3, f4);
path.close();
canvas.save();
canvas.concat(matrix);
canvas.scale(1.0f, rectF.height() / rectF.width());
canvas.drawPath(path, this.transparentPaint);
canvas.drawPath(path, this.shadowPaint);
canvas.restore();
}
@NonNull
public Paint getShadowPaint() {
return this.shadowPaint;
}
public void setShadowColor(int i) {
this.shadowStartColor = ColorUtils.setAlphaComponent(i, 68);
this.shadowMiddleColor = ColorUtils.setAlphaComponent(i, 20);
this.shadowEndColor = ColorUtils.setAlphaComponent(i, 0);
this.shadowPaint.setColor(this.shadowStartColor);
}
public ShadowRenderer() {
this(ViewCompat.MEASURED_STATE_MASK);
}
}