CrackMe.apk
Download file
package com.google.android.material.textfield;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.view.View;
import com.google.android.material.shape.MaterialShapeDrawable;
import com.google.android.material.shape.ShapeAppearanceModel;
class CutoutDrawable extends MaterialShapeDrawable {
private final RectF cutoutBounds;
private final Paint cutoutPaint;
private int savedLayer;
CutoutDrawable() {
this((ShapeAppearanceModel) null);
}
/* JADX INFO: super call moved to the top of the method (can break code semantics) */
CutoutDrawable(ShapeAppearanceModel shapeAppearanceModel) {
super(shapeAppearanceModel == null ? new ShapeAppearanceModel() : shapeAppearanceModel);
this.cutoutPaint = new Paint(1);
setPaintStyles();
this.cutoutBounds = new RectF();
}
private void setPaintStyles() {
this.cutoutPaint.setStyle(Paint.Style.FILL_AND_STROKE);
this.cutoutPaint.setColor(-1);
this.cutoutPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
}
/* access modifiers changed from: package-private */
public boolean hasCutout() {
return !this.cutoutBounds.isEmpty();
}
/* access modifiers changed from: package-private */
public void setCutout(float f, float f2, float f3, float f4) {
if (f != this.cutoutBounds.left || f2 != this.cutoutBounds.top || f3 != this.cutoutBounds.right || f4 != this.cutoutBounds.bottom) {
this.cutoutBounds.set(f, f2, f3, f4);
invalidateSelf();
}
}
/* access modifiers changed from: package-private */
public void setCutout(RectF rectF) {
setCutout(rectF.left, rectF.top, rectF.right, rectF.bottom);
}
/* access modifiers changed from: package-private */
public void removeCutout() {
setCutout(0.0f, 0.0f, 0.0f, 0.0f);
}
public void draw(Canvas canvas) {
preDraw(canvas);
super.draw(canvas);
canvas.drawRect(this.cutoutBounds, this.cutoutPaint);
postDraw(canvas);
}
private void preDraw(Canvas canvas) {
Drawable.Callback callback = getCallback();
if (useHardwareLayer(callback)) {
View view = (View) callback;
if (view.getLayerType() != 2) {
view.setLayerType(2, (Paint) null);
return;
}
return;
}
saveCanvasLayer(canvas);
}
private void saveCanvasLayer(Canvas canvas) {
if (Build.VERSION.SDK_INT >= 21) {
this.savedLayer = canvas.saveLayer(0.0f, 0.0f, (float) canvas.getWidth(), (float) canvas.getHeight(), (Paint) null);
return;
}
this.savedLayer = canvas.saveLayer(0.0f, 0.0f, (float) canvas.getWidth(), (float) canvas.getHeight(), (Paint) null, 31);
}
private void postDraw(Canvas canvas) {
if (!useHardwareLayer(getCallback())) {
canvas.restoreToCount(this.savedLayer);
}
}
private boolean useHardwareLayer(Drawable.Callback callback) {
return callback instanceof View;
}
}
Download file