mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
174 lines
7.1 KiB
Java
174 lines
7.1 KiB
Java
package com.google.android.material.carousel;
|
|
|
|
import android.content.Context;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.Rect;
|
|
import android.graphics.RectF;
|
|
import android.util.AttributeSet;
|
|
import android.view.MotionEvent;
|
|
import android.widget.FrameLayout;
|
|
import androidx.core.math.MathUtils;
|
|
import com.google.android.material.animation.AnimationUtils;
|
|
import com.google.android.material.canvas.CanvasCompat;
|
|
import com.google.android.material.shape.AbsoluteCornerSize;
|
|
import com.google.android.material.shape.ClampedCornerSize;
|
|
import com.google.android.material.shape.CornerSize;
|
|
import com.google.android.material.shape.ShapeAppearanceModel;
|
|
import com.google.android.material.shape.Shapeable;
|
|
import com.google.android.material.shape.ShapeableDelegate;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class MaskableFrameLayout extends FrameLayout implements Maskable, Shapeable {
|
|
private static final int NOT_SET = -1;
|
|
private final RectF maskRect;
|
|
private float maskXPercentage;
|
|
private OnMaskChangedListener onMaskChangedListener;
|
|
private Boolean savedForceCompatClippingEnabled;
|
|
private ShapeAppearanceModel shapeAppearanceModel;
|
|
private final ShapeableDelegate shapeableDelegate;
|
|
|
|
@Override // com.google.android.material.carousel.Maskable
|
|
public RectF getMaskRectF() {
|
|
return this.maskRect;
|
|
}
|
|
|
|
@Override // com.google.android.material.carousel.Maskable
|
|
@Deprecated
|
|
public float getMaskXPercentage() {
|
|
return this.maskXPercentage;
|
|
}
|
|
|
|
@Override // com.google.android.material.shape.Shapeable
|
|
public ShapeAppearanceModel getShapeAppearanceModel() {
|
|
return this.shapeAppearanceModel;
|
|
}
|
|
|
|
@Override // com.google.android.material.carousel.Maskable
|
|
public void setOnMaskChangedListener(OnMaskChangedListener onMaskChangedListener) {
|
|
this.onMaskChangedListener = onMaskChangedListener;
|
|
}
|
|
|
|
public MaskableFrameLayout(Context context) {
|
|
this(context, null);
|
|
}
|
|
|
|
public MaskableFrameLayout(Context context, AttributeSet attributeSet) {
|
|
this(context, attributeSet, 0);
|
|
}
|
|
|
|
public MaskableFrameLayout(Context context, AttributeSet attributeSet, int i) {
|
|
super(context, attributeSet, i);
|
|
this.maskXPercentage = -1.0f;
|
|
this.maskRect = new RectF();
|
|
this.shapeableDelegate = ShapeableDelegate.create(this);
|
|
this.savedForceCompatClippingEnabled = null;
|
|
setShapeAppearanceModel(ShapeAppearanceModel.builder(context, attributeSet, i, 0, 0).build());
|
|
}
|
|
|
|
@Override // android.view.View
|
|
protected void onSizeChanged(int i, int i2, int i3, int i4) {
|
|
super.onSizeChanged(i, i2, i3, i4);
|
|
if (this.maskXPercentage != -1.0f) {
|
|
updateMaskRectForMaskXPercentage();
|
|
}
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public void getFocusedRect(Rect rect) {
|
|
rect.set((int) this.maskRect.left, (int) this.maskRect.top, (int) this.maskRect.right, (int) this.maskRect.bottom);
|
|
}
|
|
|
|
@Override // android.view.ViewGroup, android.view.View
|
|
protected void onAttachedToWindow() {
|
|
super.onAttachedToWindow();
|
|
Boolean bool = this.savedForceCompatClippingEnabled;
|
|
if (bool != null) {
|
|
this.shapeableDelegate.setForceCompatClippingEnabled(this, bool.booleanValue());
|
|
}
|
|
}
|
|
|
|
@Override // android.view.ViewGroup, android.view.View
|
|
protected void onDetachedFromWindow() {
|
|
this.savedForceCompatClippingEnabled = Boolean.valueOf(this.shapeableDelegate.isForceCompatClippingEnabled());
|
|
this.shapeableDelegate.setForceCompatClippingEnabled(this, true);
|
|
super.onDetachedFromWindow();
|
|
}
|
|
|
|
@Override // com.google.android.material.shape.Shapeable
|
|
public void setShapeAppearanceModel(ShapeAppearanceModel shapeAppearanceModel) {
|
|
ShapeAppearanceModel withTransformedCornerSizes = shapeAppearanceModel.withTransformedCornerSizes(new ShapeAppearanceModel.CornerSizeUnaryOperator() { // from class: com.google.android.material.carousel.MaskableFrameLayout$$ExternalSyntheticLambda1
|
|
@Override // com.google.android.material.shape.ShapeAppearanceModel.CornerSizeUnaryOperator
|
|
public final CornerSize apply(CornerSize cornerSize) {
|
|
return MaskableFrameLayout.lambda$setShapeAppearanceModel$0(cornerSize);
|
|
}
|
|
});
|
|
this.shapeAppearanceModel = withTransformedCornerSizes;
|
|
this.shapeableDelegate.onShapeAppearanceChanged(this, withTransformedCornerSizes);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public static /* synthetic */ CornerSize lambda$setShapeAppearanceModel$0(CornerSize cornerSize) {
|
|
return cornerSize instanceof AbsoluteCornerSize ? ClampedCornerSize.createFromCornerSize((AbsoluteCornerSize) cornerSize) : cornerSize;
|
|
}
|
|
|
|
@Override // com.google.android.material.carousel.Maskable
|
|
@Deprecated
|
|
public void setMaskXPercentage(float f) {
|
|
float clamp = MathUtils.clamp(f, 0.0f, 1.0f);
|
|
if (this.maskXPercentage != clamp) {
|
|
this.maskXPercentage = clamp;
|
|
updateMaskRectForMaskXPercentage();
|
|
}
|
|
}
|
|
|
|
private void updateMaskRectForMaskXPercentage() {
|
|
if (this.maskXPercentage != -1.0f) {
|
|
float lerp = AnimationUtils.lerp(0.0f, getWidth() / 2.0f, 0.0f, 1.0f, this.maskXPercentage);
|
|
setMaskRectF(new RectF(lerp, 0.0f, getWidth() - lerp, getHeight()));
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.material.carousel.Maskable
|
|
public void setMaskRectF(RectF rectF) {
|
|
this.maskRect.set(rectF);
|
|
onMaskChanged();
|
|
}
|
|
|
|
private void onMaskChanged() {
|
|
this.shapeableDelegate.onMaskChanged(this, this.maskRect);
|
|
OnMaskChangedListener onMaskChangedListener = this.onMaskChangedListener;
|
|
if (onMaskChangedListener != null) {
|
|
onMaskChangedListener.onMaskChanged(this.maskRect);
|
|
}
|
|
}
|
|
|
|
public void setForceCompatClipping(boolean z) {
|
|
this.shapeableDelegate.setForceCompatClippingEnabled(this, z);
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public boolean onTouchEvent(MotionEvent motionEvent) {
|
|
if (!this.maskRect.isEmpty() && motionEvent.getAction() == 0) {
|
|
if (!this.maskRect.contains(motionEvent.getX(), motionEvent.getY())) {
|
|
return false;
|
|
}
|
|
}
|
|
return super.onTouchEvent(motionEvent);
|
|
}
|
|
|
|
@Override // android.view.ViewGroup, android.view.View
|
|
protected void dispatchDraw(Canvas canvas) {
|
|
this.shapeableDelegate.maybeClip(canvas, new CanvasCompat.CanvasOperation() { // from class: com.google.android.material.carousel.MaskableFrameLayout$$ExternalSyntheticLambda0
|
|
@Override // com.google.android.material.canvas.CanvasCompat.CanvasOperation
|
|
public final void run(Canvas canvas2) {
|
|
MaskableFrameLayout.this.m5486x418c47c0(canvas2);
|
|
}
|
|
});
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* renamed from: lambda$dispatchDraw$1$com-google-android-material-carousel-MaskableFrameLayout, reason: not valid java name */
|
|
public /* synthetic */ void m5486x418c47c0(Canvas canvas) {
|
|
super.dispatchDraw(canvas);
|
|
}
|
|
}
|