181 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.cardview.widget;
 | |
| 
 | |
| import android.content.res.ColorStateList;
 | |
| import android.graphics.Canvas;
 | |
| import android.graphics.ColorFilter;
 | |
| import android.graphics.Outline;
 | |
| import android.graphics.Paint;
 | |
| import android.graphics.PorterDuff;
 | |
| import android.graphics.PorterDuffColorFilter;
 | |
| import android.graphics.Rect;
 | |
| import android.graphics.RectF;
 | |
| import android.graphics.drawable.Drawable;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class RoundRectDrawable extends Drawable {
 | |
|     private ColorStateList mBackground;
 | |
|     private final RectF mBoundsF;
 | |
|     private final Rect mBoundsI;
 | |
|     private float mPadding;
 | |
|     private float mRadius;
 | |
|     private ColorStateList mTint;
 | |
|     private PorterDuffColorFilter mTintFilter;
 | |
|     private boolean mInsetForPadding = false;
 | |
|     private boolean mInsetForRadius = true;
 | |
|     private PorterDuff.Mode mTintMode = PorterDuff.Mode.SRC_IN;
 | |
|     private final Paint mPaint = new Paint(5);
 | |
| 
 | |
|     public ColorStateList getColor() {
 | |
|         return this.mBackground;
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     public int getOpacity() {
 | |
|         return -3;
 | |
|     }
 | |
| 
 | |
|     float getPadding() {
 | |
|         return this.mPadding;
 | |
|     }
 | |
| 
 | |
|     public float getRadius() {
 | |
|         return this.mRadius;
 | |
|     }
 | |
| 
 | |
|     RoundRectDrawable(ColorStateList colorStateList, float f) {
 | |
|         this.mRadius = f;
 | |
|         setBackground(colorStateList);
 | |
|         this.mBoundsF = new RectF();
 | |
|         this.mBoundsI = new Rect();
 | |
|     }
 | |
| 
 | |
|     private void setBackground(ColorStateList colorStateList) {
 | |
|         if (colorStateList == null) {
 | |
|             colorStateList = ColorStateList.valueOf(0);
 | |
|         }
 | |
|         this.mBackground = colorStateList;
 | |
|         this.mPaint.setColor(colorStateList.getColorForState(getState(), this.mBackground.getDefaultColor()));
 | |
|     }
 | |
| 
 | |
|     void setPadding(float f, boolean z, boolean z2) {
 | |
|         if (f == this.mPadding && this.mInsetForPadding == z && this.mInsetForRadius == z2) {
 | |
|             return;
 | |
|         }
 | |
|         this.mPadding = f;
 | |
|         this.mInsetForPadding = z;
 | |
|         this.mInsetForRadius = z2;
 | |
|         updateBounds(null);
 | |
|         invalidateSelf();
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     public void draw(Canvas canvas) {
 | |
|         boolean z;
 | |
|         Paint paint = this.mPaint;
 | |
|         if (this.mTintFilter == null || paint.getColorFilter() != null) {
 | |
|             z = false;
 | |
|         } else {
 | |
|             paint.setColorFilter(this.mTintFilter);
 | |
|             z = true;
 | |
|         }
 | |
|         RectF rectF = this.mBoundsF;
 | |
|         float f = this.mRadius;
 | |
|         canvas.drawRoundRect(rectF, f, f, paint);
 | |
|         if (z) {
 | |
|             paint.setColorFilter(null);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void updateBounds(Rect rect) {
 | |
|         if (rect == null) {
 | |
|             rect = getBounds();
 | |
|         }
 | |
|         this.mBoundsF.set(rect.left, rect.top, rect.right, rect.bottom);
 | |
|         this.mBoundsI.set(rect);
 | |
|         if (this.mInsetForPadding) {
 | |
|             this.mBoundsI.inset((int) Math.ceil(RoundRectDrawableWithShadow.calculateHorizontalPadding(this.mPadding, this.mRadius, this.mInsetForRadius)), (int) Math.ceil(RoundRectDrawableWithShadow.calculateVerticalPadding(this.mPadding, this.mRadius, this.mInsetForRadius)));
 | |
|             this.mBoundsF.set(this.mBoundsI);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     protected void onBoundsChange(Rect rect) {
 | |
|         super.onBoundsChange(rect);
 | |
|         updateBounds(rect);
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     public void getOutline(Outline outline) {
 | |
|         outline.setRoundRect(this.mBoundsI, this.mRadius);
 | |
|     }
 | |
| 
 | |
|     void setRadius(float f) {
 | |
|         if (f == this.mRadius) {
 | |
|             return;
 | |
|         }
 | |
|         this.mRadius = f;
 | |
|         updateBounds(null);
 | |
|         invalidateSelf();
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     public void setAlpha(int i) {
 | |
|         this.mPaint.setAlpha(i);
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     public void setColorFilter(ColorFilter colorFilter) {
 | |
|         this.mPaint.setColorFilter(colorFilter);
 | |
|     }
 | |
| 
 | |
|     public void setColor(ColorStateList colorStateList) {
 | |
|         setBackground(colorStateList);
 | |
|         invalidateSelf();
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     public void setTintList(ColorStateList colorStateList) {
 | |
|         this.mTint = colorStateList;
 | |
|         this.mTintFilter = createTintFilter(colorStateList, this.mTintMode);
 | |
|         invalidateSelf();
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     public void setTintMode(PorterDuff.Mode mode) {
 | |
|         this.mTintMode = mode;
 | |
|         this.mTintFilter = createTintFilter(this.mTint, mode);
 | |
|         invalidateSelf();
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     protected boolean onStateChange(int[] iArr) {
 | |
|         PorterDuff.Mode mode;
 | |
|         ColorStateList colorStateList = this.mBackground;
 | |
|         int colorForState = colorStateList.getColorForState(iArr, colorStateList.getDefaultColor());
 | |
|         boolean z = colorForState != this.mPaint.getColor();
 | |
|         if (z) {
 | |
|             this.mPaint.setColor(colorForState);
 | |
|         }
 | |
|         ColorStateList colorStateList2 = this.mTint;
 | |
|         if (colorStateList2 == null || (mode = this.mTintMode) == null) {
 | |
|             return z;
 | |
|         }
 | |
|         this.mTintFilter = createTintFilter(colorStateList2, mode);
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     @Override // android.graphics.drawable.Drawable
 | |
|     public boolean isStateful() {
 | |
|         ColorStateList colorStateList;
 | |
|         ColorStateList colorStateList2 = this.mTint;
 | |
|         return (colorStateList2 != null && colorStateList2.isStateful()) || ((colorStateList = this.mBackground) != null && colorStateList.isStateful()) || super.isStateful();
 | |
|     }
 | |
| 
 | |
|     private PorterDuffColorFilter createTintFilter(ColorStateList colorStateList, PorterDuff.Mode mode) {
 | |
|         if (colorStateList == null || mode == null) {
 | |
|             return null;
 | |
|         }
 | |
|         return new PorterDuffColorFilter(colorStateList.getColorForState(getState(), 0), mode);
 | |
|     }
 | |
| }
 |