Skip to content

Commit

Permalink
Remove advanced setting to enable / disable fast blur algorithm (it's…
Browse files Browse the repository at this point in the history
… default now)
  • Loading branch information
MizzleDK committed Feb 1, 2016
1 parent f296c13 commit c54ea42
Show file tree
Hide file tree
Showing 7 changed files with 2 additions and 239 deletions.
10 changes: 2 additions & 8 deletions app/src/main/java/com/miz/functions/BlurTransformation.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import android.content.Context;
import android.graphics.Bitmap;
import android.preference.PreferenceManager;

import com.squareup.picasso.Transformation;

Expand All @@ -41,13 +40,8 @@ public String key() {

@Override
public Bitmap transform(Bitmap source) {
Bitmap blur;

if (PreferenceManager.getDefaultSharedPreferences(mContext).getBoolean(PreferenceKeys.USE_FAST_BLUR, true))
blur = MizLib.fastBlur(mContext, Bitmap.createScaledBitmap(source, source.getWidth() / 2, source.getHeight() / 2, true), mBlurRadius);
else
blur = MizLib.slowBlur(Bitmap.createScaledBitmap(source, source.getWidth() / 2, source.getHeight() / 2, true), mBlurRadius);

Bitmap blur = MizLib.fastBlur(mContext, Bitmap.createScaledBitmap(source,
source.getWidth() / 2, source.getHeight() / 2, true), mBlurRadius);
source.recycle();

return blur;
Expand Down
222 changes: 0 additions & 222 deletions app/src/main/java/com/miz/functions/MizLib.java
Original file line number Diff line number Diff line change
Expand Up @@ -793,228 +793,6 @@ public static Bitmap fastBlur(Context context, Bitmap originalBitmap, int radius
return originalBitmap;
}

/**
* Stack BlurUtil v1.0 from
http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html
Java Author: Mario Klingemann <mario at quasimondo.com>
http://incubator.quasimondo.com
created Feburary 29, 2004
Android port : Yahel Bouaziz <yahel at kayenko.com>
http://www.kayenko.com
ported april 5th, 2012
This is a compromise between Gaussian BlurUtil and Box blur
It creates much better looking blurs than Box BlurUtil, but is
7x faster than my Gaussian BlurUtil implementation.
I called it Stack BlurUtil because this describes best how this
filter works internally: it creates a kind of moving stack
of colors whilst scanning through the image. Thereby it
just has to add one new block of color to the right side
of the stack and remove the leftmost color. The remaining
colors on the topmost layer of the stack are either added on
or reduced by one, depending on if they are on the right or
on the left side of the stack.
If you are using this algorithm in your code please add
the following line:
Stack BlurUtil Algorithm by Mario Klingemann <[email protected]>
*/
public static Bitmap slowBlur(Bitmap originalBitmap, int radius) {
if (radius < 1) {
return (null);
}

int w = originalBitmap.getWidth();
int h = originalBitmap.getHeight();

int[] pix = new int[w * h];
originalBitmap.getPixels(pix, 0, w, 0, 0, w, h);

int wm = w - 1;
int hm = h - 1;
int wh = w * h;
int div = radius + radius + 1;

int r[] = new int[wh];
int g[] = new int[wh];
int b[] = new int[wh];
int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;
int vmin[] = new int[Math.max(w, h)];

int divsum = (div + 1) >> 1;
divsum *= divsum;
int dv[] = new int[256 * divsum];
for (i = 0; i < 256 * divsum; i++) {
dv[i] = (i / divsum);
}

yw = yi = 0;

int[][] stack = new int[div][3];
int stackpointer;
int stackstart;
int[] sir;
int rbs;
int r1 = radius + 1;
int routsum, goutsum, boutsum;
int rinsum, ginsum, binsum;

for (y = 0; y < h; y++) {
rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
for (i = -radius; i <= radius; i++) {
p = pix[yi + Math.min(wm, Math.max(i, 0))];
sir = stack[i + radius];
sir[0] = (p & 0xff0000) >> 16;
sir[1] = (p & 0x00ff00) >> 8;
sir[2] = (p & 0x0000ff);
rbs = r1 - Math.abs(i);
rsum += sir[0] * rbs;
gsum += sir[1] * rbs;
bsum += sir[2] * rbs;
if (i > 0) {
rinsum += sir[0];
ginsum += sir[1];
binsum += sir[2];
} else {
routsum += sir[0];
goutsum += sir[1];
boutsum += sir[2];
}
}
stackpointer = radius;

for (x = 0; x < w; x++) {

r[yi] = dv[rsum];
g[yi] = dv[gsum];
b[yi] = dv[bsum];

rsum -= routsum;
gsum -= goutsum;
bsum -= boutsum;

stackstart = stackpointer - radius + div;
sir = stack[stackstart % div];

routsum -= sir[0];
goutsum -= sir[1];
boutsum -= sir[2];

if (y == 0) {
vmin[x] = Math.min(x + radius + 1, wm);
}
p = pix[yw + vmin[x]];

sir[0] = (p & 0xff0000) >> 16;
sir[1] = (p & 0x00ff00) >> 8;
sir[2] = (p & 0x0000ff);

rinsum += sir[0];
ginsum += sir[1];
binsum += sir[2];

rsum += rinsum;
gsum += ginsum;
bsum += binsum;

stackpointer = (stackpointer + 1) % div;
sir = stack[(stackpointer) % div];

routsum += sir[0];
goutsum += sir[1];
boutsum += sir[2];

rinsum -= sir[0];
ginsum -= sir[1];
binsum -= sir[2];

yi++;
}
yw += w;
}
for (x = 0; x < w; x++) {
rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
yp = -radius * w;
for (i = -radius; i <= radius; i++) {
yi = Math.max(0, yp) + x;

sir = stack[i + radius];

sir[0] = r[yi];
sir[1] = g[yi];
sir[2] = b[yi];

rbs = r1 - Math.abs(i);

rsum += r[yi] * rbs;
gsum += g[yi] * rbs;
bsum += b[yi] * rbs;

if (i > 0) {
rinsum += sir[0];
ginsum += sir[1];
binsum += sir[2];
} else {
routsum += sir[0];
goutsum += sir[1];
boutsum += sir[2];
}

if (i < hm) {
yp += w;
}
}
yi = x;
stackpointer = radius;
for (y = 0; y < h; y++) {
// Preserve alpha channel: ( 0xff000000 & pix[yi] )
pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum];

rsum -= routsum;
gsum -= goutsum;
bsum -= boutsum;

stackstart = stackpointer - radius + div;
sir = stack[stackstart % div];

routsum -= sir[0];
goutsum -= sir[1];
boutsum -= sir[2];

if (x == 0) {
vmin[y] = Math.min(y + r1, hm) * w;
}
p = x + vmin[y];

sir[0] = r[p];
sir[1] = g[p];
sir[2] = b[p];

rinsum += sir[0];
ginsum += sir[1];
binsum += sir[2];

rsum += rinsum;
gsum += ginsum;
bsum += binsum;

stackpointer = (stackpointer + 1) % div;
sir = stack[stackpointer];

routsum += sir[0];
goutsum += sir[1];
boutsum += sir[2];

rinsum -= sir[0];
ginsum -= sir[1];
binsum -= sir[2];

yi += w;
}
}
originalBitmap.setPixels(pix, 0, w, 0, 0, w, h);

return originalBitmap;
}

public static boolean downloadFile(String url, String savePath) {
if (TextUtils.isEmpty(url))
return false;
Expand Down
1 change: 0 additions & 1 deletion app/src/main/java/com/miz/functions/PreferenceKeys.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,5 @@ private PreferenceKeys() {} // No instantiation
public static final String SHOW_FILE_LOCATION = "prefsShowFileLocation";
public static final String LANGUAGE_PREFERENCE = "prefsLanguagePreference";
public static final String CHROMECAST_BETA_SUPPORT = "prefsChromecastBeta";
public static final String USE_FAST_BLUR = "prefsUseFastBlur";

}
Binary file not shown.
Binary file not shown.
2 changes: 0 additions & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -452,8 +452,6 @@
<string name="all_episodes">All episodes</string>
<string name="watched_episodes">Watched episodes</string>
<string name="unwatched_episodes">Unwatched episodes</string>
<string name="use_fast_blur">Enable fast blur</string>
<string name="use_fast_blur_description">Use a fast blur algorithm. Unsupported on some low-end devices.</string>
<string name="selected">%1$d selected</string>
<string name="database_dump_title">Copy database</string>
<string name="database_dump_description">Creates a copy of the database in the application folder.</string>
Expand Down
6 changes: 0 additions & 6 deletions app/src/main/res/xml/advanced_prefs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,6 @@
android:key="prefsAlwaysDeleteFile"
android:summary="@string/alwaysDeleteFile"
android:title="@string/alwaysDeleteFileTitle" />
<CheckBoxPreference
android:defaultValue="true"
android:icon="@drawable/ic_blur_circular_white_24dp"
android:key="prefsUseFastBlur"
android:summary="@string/use_fast_blur_description"
android:title="@string/use_fast_blur" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/network" >
<ListPreference
Expand Down

0 comments on commit c54ea42

Please sign in to comment.