alexandroid/decompiled/jadx/sources/com/google/android/material/shape/ShapeableDelegate.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

84 lines
2.8 KiB
Java

package com.google.android.material.shape;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.RectF;
import android.os.Build;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import com.google.android.material.canvas.CanvasCompat;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
/* loaded from: classes7.dex */
public abstract class ShapeableDelegate {
@Nullable
ShapeAppearanceModel shapeAppearanceModel;
boolean forceCompatClippingEnabled = false;
boolean offsetZeroCornerEdgeBoundsEnabled = false;
RectF maskBounds = new RectF();
final Path shapePath = new Path();
@NonNull
public static ShapeableDelegate create(@NonNull View view) {
return Build.VERSION.SDK_INT >= 33 ? new ShapeableDelegateV33(view) : new ShapeableDelegateV22(view);
}
private boolean isMaskBoundsValid() {
RectF rectF = this.maskBounds;
return rectF.left <= rectF.right && rectF.top <= rectF.bottom;
}
private void updateShapePath() {
if (!isMaskBoundsValid() || this.shapeAppearanceModel == null) {
return;
}
ShapeAppearancePathProvider.getInstance().calculatePath(this.shapeAppearanceModel, 1.0f, this.maskBounds, this.shapePath);
}
public abstract void invalidateClippingMethod(@NonNull View view);
public boolean isForceCompatClippingEnabled() {
return this.forceCompatClippingEnabled;
}
public void maybeClip(@NonNull Canvas canvas, @NonNull CanvasCompat.CanvasOperation canvasOperation) {
if (!shouldUseCompatClipping() || this.shapePath.isEmpty()) {
canvasOperation.run(canvas);
return;
}
canvas.save();
canvas.clipPath(this.shapePath);
canvasOperation.run(canvas);
canvas.restore();
}
public void onMaskChanged(@NonNull View view, @NonNull RectF rectF) {
this.maskBounds = rectF;
updateShapePath();
invalidateClippingMethod(view);
}
public void onShapeAppearanceChanged(@NonNull View view, @NonNull ShapeAppearanceModel shapeAppearanceModel) {
this.shapeAppearanceModel = shapeAppearanceModel;
updateShapePath();
invalidateClippingMethod(view);
}
public void setForceCompatClippingEnabled(@NonNull View view, boolean z) {
if (z != this.forceCompatClippingEnabled) {
this.forceCompatClippingEnabled = z;
invalidateClippingMethod(view);
}
}
public void setOffsetZeroCornerEdgeBoundsEnabled(@NonNull View view, boolean z) {
this.offsetZeroCornerEdgeBoundsEnabled = z;
invalidateClippingMethod(view);
}
public abstract boolean shouldUseCompatClipping();
}