323 lines
12 KiB
Java
323 lines
12 KiB
Java
package com.github.mmin18.widget;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.content.ContextWrapper;
|
|
import android.content.res.TypedArray;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.Paint;
|
|
import android.graphics.Rect;
|
|
import android.util.AttributeSet;
|
|
import android.util.TypedValue;
|
|
import android.view.View;
|
|
import android.view.ViewTreeObserver;
|
|
import c.h.a.a.c;
|
|
import c.h.a.a.d;
|
|
import c.h.a.a.e;
|
|
import com.github.mmin18.realtimeblurview.R;
|
|
public class RealtimeBlurView extends View {
|
|
public static int i;
|
|
public static int j;
|
|
public static b k = new b(null);
|
|
public float l;
|
|
public int m;
|
|
public float n;
|
|
public final c o = getBlurImpl();
|
|
public boolean p;
|
|
public Bitmap q;
|
|
public Bitmap r;
|
|
|
|
/* renamed from: s reason: collision with root package name */
|
|
public Canvas f2201s;
|
|
public boolean t;
|
|
public Paint u;
|
|
public final Rect v = new Rect();
|
|
public final Rect w = new Rect();
|
|
|
|
/* renamed from: x reason: collision with root package name */
|
|
public View f2202x;
|
|
|
|
/* renamed from: y reason: collision with root package name */
|
|
public boolean f2203y;
|
|
|
|
/* renamed from: z reason: collision with root package name */
|
|
public final ViewTreeObserver.OnPreDrawListener f2204z = new a();
|
|
|
|
public class a implements ViewTreeObserver.OnPreDrawListener {
|
|
public a() {
|
|
}
|
|
|
|
/* JADX WARNING: Removed duplicated region for block: B:35:0x009b */
|
|
@Override // android.view.ViewTreeObserver.OnPreDrawListener
|
|
public boolean onPreDraw() {
|
|
boolean z2;
|
|
RealtimeBlurView realtimeBlurView;
|
|
Bitmap bitmap;
|
|
int[] iArr = new int[2];
|
|
RealtimeBlurView realtimeBlurView2 = RealtimeBlurView.this;
|
|
Bitmap bitmap2 = realtimeBlurView2.r;
|
|
View view = realtimeBlurView2.f2202x;
|
|
if (view != null && realtimeBlurView2.isShown()) {
|
|
RealtimeBlurView realtimeBlurView3 = RealtimeBlurView.this;
|
|
float f = realtimeBlurView3.n;
|
|
if (f == 0.0f) {
|
|
realtimeBlurView3.b();
|
|
} else {
|
|
float f2 = realtimeBlurView3.l;
|
|
float f3 = f / f2;
|
|
if (f3 > 25.0f) {
|
|
f2 = (f2 * f3) / 25.0f;
|
|
f3 = 25.0f;
|
|
}
|
|
int width = realtimeBlurView3.getWidth();
|
|
int height = realtimeBlurView3.getHeight();
|
|
int max = Math.max(1, (int) (((float) width) / f2));
|
|
int max2 = Math.max(1, (int) (((float) height) / f2));
|
|
boolean z3 = realtimeBlurView3.p;
|
|
if (realtimeBlurView3.f2201s == null || (bitmap = realtimeBlurView3.r) == null || bitmap.getWidth() != max || realtimeBlurView3.r.getHeight() != max2) {
|
|
realtimeBlurView3.c();
|
|
try {
|
|
Bitmap createBitmap = Bitmap.createBitmap(max, max2, Bitmap.Config.ARGB_8888);
|
|
realtimeBlurView3.q = createBitmap;
|
|
if (createBitmap != null) {
|
|
realtimeBlurView3.f2201s = new Canvas(realtimeBlurView3.q);
|
|
Bitmap createBitmap2 = Bitmap.createBitmap(max, max2, Bitmap.Config.ARGB_8888);
|
|
realtimeBlurView3.r = createBitmap2;
|
|
if (createBitmap2 != null) {
|
|
z3 = true;
|
|
}
|
|
}
|
|
} catch (OutOfMemoryError unused) {
|
|
}
|
|
realtimeBlurView3.b();
|
|
}
|
|
if (z3) {
|
|
if (realtimeBlurView3.o.b(realtimeBlurView3.getContext(), realtimeBlurView3.q, f3)) {
|
|
realtimeBlurView3.p = false;
|
|
}
|
|
}
|
|
z2 = true;
|
|
if (z2) {
|
|
boolean z4 = RealtimeBlurView.this.r != bitmap2;
|
|
view.getLocationOnScreen(iArr);
|
|
RealtimeBlurView.this.getLocationOnScreen(iArr);
|
|
int i = (-iArr[0]) + iArr[0];
|
|
int i2 = (-iArr[1]) + iArr[1];
|
|
RealtimeBlurView realtimeBlurView4 = RealtimeBlurView.this;
|
|
realtimeBlurView4.q.eraseColor(realtimeBlurView4.m & 16777215);
|
|
int save = RealtimeBlurView.this.f2201s.save();
|
|
RealtimeBlurView realtimeBlurView5 = RealtimeBlurView.this;
|
|
realtimeBlurView5.t = true;
|
|
RealtimeBlurView.i++;
|
|
try {
|
|
realtimeBlurView5.f2201s.scale((((float) realtimeBlurView5.q.getWidth()) * 1.0f) / ((float) RealtimeBlurView.this.getWidth()), (((float) RealtimeBlurView.this.q.getHeight()) * 1.0f) / ((float) RealtimeBlurView.this.getHeight()));
|
|
RealtimeBlurView.this.f2201s.translate((float) (-i), (float) (-i2));
|
|
if (view.getBackground() != null) {
|
|
view.getBackground().draw(RealtimeBlurView.this.f2201s);
|
|
}
|
|
view.draw(RealtimeBlurView.this.f2201s);
|
|
RealtimeBlurView.this.t = false;
|
|
RealtimeBlurView.a();
|
|
realtimeBlurView = RealtimeBlurView.this;
|
|
} catch (b unused2) {
|
|
RealtimeBlurView.this.t = false;
|
|
RealtimeBlurView.a();
|
|
realtimeBlurView = RealtimeBlurView.this;
|
|
} catch (Throwable th) {
|
|
RealtimeBlurView.this.t = false;
|
|
RealtimeBlurView.a();
|
|
RealtimeBlurView.this.f2201s.restoreToCount(save);
|
|
throw th;
|
|
}
|
|
realtimeBlurView.f2201s.restoreToCount(save);
|
|
RealtimeBlurView realtimeBlurView6 = RealtimeBlurView.this;
|
|
realtimeBlurView6.o.a(realtimeBlurView6.q, realtimeBlurView6.r);
|
|
if (z4 || RealtimeBlurView.this.f2203y) {
|
|
RealtimeBlurView.this.invalidate();
|
|
}
|
|
}
|
|
}
|
|
z2 = false;
|
|
if (z2) {
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public static class b extends RuntimeException {
|
|
public b(a aVar) {
|
|
}
|
|
}
|
|
|
|
public RealtimeBlurView(Context context, AttributeSet attributeSet) {
|
|
super(context, null);
|
|
TypedArray obtainStyledAttributes = context.obtainStyledAttributes((AttributeSet) null, R.a.RealtimeBlurView);
|
|
this.n = obtainStyledAttributes.getDimension(R.a.RealtimeBlurView_realtimeBlurRadius, TypedValue.applyDimension(1, 10.0f, context.getResources().getDisplayMetrics()));
|
|
this.l = obtainStyledAttributes.getFloat(R.a.RealtimeBlurView_realtimeDownsampleFactor, 4.0f);
|
|
this.m = obtainStyledAttributes.getColor(R.a.RealtimeBlurView_realtimeOverlayColor, -1426063361);
|
|
obtainStyledAttributes.recycle();
|
|
this.u = new Paint();
|
|
}
|
|
|
|
public static /* synthetic */ int a() {
|
|
int i2 = i;
|
|
i = i2 - 1;
|
|
return i2;
|
|
}
|
|
|
|
public void b() {
|
|
c();
|
|
this.o.release();
|
|
}
|
|
|
|
public final void c() {
|
|
Bitmap bitmap = this.q;
|
|
if (bitmap != null) {
|
|
bitmap.recycle();
|
|
this.q = null;
|
|
}
|
|
Bitmap bitmap2 = this.r;
|
|
if (bitmap2 != null) {
|
|
bitmap2.recycle();
|
|
this.r = null;
|
|
}
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public void draw(Canvas canvas) {
|
|
if (this.t) {
|
|
throw k;
|
|
} else if (i <= 0) {
|
|
super.draw(canvas);
|
|
}
|
|
}
|
|
|
|
public View getActivityDecorView() {
|
|
Context context = getContext();
|
|
for (int i2 = 0; i2 < 4 && context != null && !(context instanceof Activity) && (context instanceof ContextWrapper); i2++) {
|
|
context = ((ContextWrapper) context).getBaseContext();
|
|
}
|
|
if (context instanceof Activity) {
|
|
return ((Activity) context).getWindow().getDecorView();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public c getBlurImpl() {
|
|
if (j == 0) {
|
|
try {
|
|
c.h.a.a.a aVar = new c.h.a.a.a();
|
|
Bitmap createBitmap = Bitmap.createBitmap(4, 4, Bitmap.Config.ARGB_8888);
|
|
aVar.b(getContext(), createBitmap, 4.0f);
|
|
aVar.release();
|
|
createBitmap.recycle();
|
|
j = 3;
|
|
} catch (Throwable unused) {
|
|
}
|
|
}
|
|
if (j == 0) {
|
|
try {
|
|
getClass().getClassLoader().loadClass("androidx.renderscript.RenderScript");
|
|
c.h.a.a.b bVar = new c.h.a.a.b();
|
|
Bitmap createBitmap2 = Bitmap.createBitmap(4, 4, Bitmap.Config.ARGB_8888);
|
|
bVar.b(getContext(), createBitmap2, 4.0f);
|
|
bVar.release();
|
|
createBitmap2.recycle();
|
|
j = 1;
|
|
} catch (Throwable unused2) {
|
|
}
|
|
}
|
|
if (j == 0) {
|
|
try {
|
|
getClass().getClassLoader().loadClass("androidx.renderscript.RenderScript");
|
|
e eVar = new e();
|
|
Bitmap createBitmap3 = Bitmap.createBitmap(4, 4, Bitmap.Config.ARGB_8888);
|
|
eVar.b(getContext(), createBitmap3, 4.0f);
|
|
eVar.release();
|
|
createBitmap3.recycle();
|
|
j = 2;
|
|
} catch (Throwable unused3) {
|
|
}
|
|
}
|
|
if (j == 0) {
|
|
j = -1;
|
|
}
|
|
int i2 = j;
|
|
return i2 != 1 ? i2 != 2 ? i2 != 3 ? new d() : new c.h.a.a.a() : new e() : new c.h.a.a.b();
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public void onAttachedToWindow() {
|
|
super.onAttachedToWindow();
|
|
View activityDecorView = getActivityDecorView();
|
|
this.f2202x = activityDecorView;
|
|
boolean z2 = false;
|
|
if (activityDecorView != null) {
|
|
activityDecorView.getViewTreeObserver().addOnPreDrawListener(this.f2204z);
|
|
if (this.f2202x.getRootView() != getRootView()) {
|
|
z2 = true;
|
|
}
|
|
this.f2203y = z2;
|
|
if (z2) {
|
|
this.f2202x.postInvalidate();
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
this.f2203y = false;
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public void onDetachedFromWindow() {
|
|
View view = this.f2202x;
|
|
if (view != null) {
|
|
view.getViewTreeObserver().removeOnPreDrawListener(this.f2204z);
|
|
}
|
|
b();
|
|
super.onDetachedFromWindow();
|
|
}
|
|
|
|
@Override // android.view.View
|
|
public void onDraw(Canvas canvas) {
|
|
super.onDraw(canvas);
|
|
Bitmap bitmap = this.r;
|
|
int i2 = this.m;
|
|
if (bitmap != null) {
|
|
this.v.right = bitmap.getWidth();
|
|
this.v.bottom = bitmap.getHeight();
|
|
this.w.right = getWidth();
|
|
this.w.bottom = getHeight();
|
|
canvas.drawBitmap(bitmap, this.v, this.w, (Paint) null);
|
|
}
|
|
this.u.setColor(i2);
|
|
canvas.drawRect(this.w, this.u);
|
|
}
|
|
|
|
public void setBlurRadius(float f) {
|
|
if (this.n != f) {
|
|
this.n = f;
|
|
this.p = true;
|
|
invalidate();
|
|
}
|
|
}
|
|
|
|
public void setDownsampleFactor(float f) {
|
|
if (f <= 0.0f) {
|
|
throw new IllegalArgumentException("Downsample factor must be greater than 0.");
|
|
} else if (this.l != f) {
|
|
this.l = f;
|
|
this.p = true;
|
|
c();
|
|
invalidate();
|
|
}
|
|
}
|
|
|
|
public void setOverlayColor(int i2) {
|
|
if (this.m != i2) {
|
|
this.m = i2;
|
|
invalidate();
|
|
}
|
|
}
|
|
}
|