1
0
mirror of https://github.com/wasabeef/glide-transformations.git synced 2025-08-08 12:39:34 +08:00
* fixed #119

* update gradle files

* rename

* add sample of SupportRSBlur

* update libs

* bump up 3.3.0
This commit is contained in:
Daichi Furiya 2018-04-23 05:08:05 +09:00 committed by GitHub
parent 8c72ad64b9
commit 4818373fc5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 183 additions and 114 deletions

View File

@ -1,6 +1,21 @@
Change Log
==========
Version 3.3.0 *(2018-04-23)*
----------------------------
Update:
- Support Library 27.1.0 -> 27.1.1
- Glide 4.6.1 -> 4.7.1
Feature:
- SupportRSBlurTransformation [#125](https://github.com/wasabeef/glide-transformations/pull/125)
it's using RenderScript support mode but can you choose to use or not.
Thank you [@fougere-mike](https://github.com/fougere-mike)
Bug Fix:
- Set detail of Cache key [#119](https://github.com/wasabeef/glide-transformations/issues/119)
Version 3.2.0 *(2018-04-10)*
----------------------------

View File

@ -32,7 +32,7 @@ repositories {
}
dependencies {
implementation 'jp.wasabeef:glide-transformations:3.2.0'
implementation 'jp.wasabeef:glide-transformations:3.3.0'
// If you want to use the GPU Filters
implementation 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'
}
@ -61,6 +61,21 @@ Glide.with(this).load(R.drawable.demo)
.into((ImageView) findViewById(R.id.image));
```
# Step 4
If you are using `SupportRSBlurTransformation`.
```groovy
android {
...
defaultConfig {
...
renderscriptTargetApi YOUR_TARGET_SDK_VERSION as int
renderscriptSupportModeEnabled true
}
}
```
## Transformations
### Crop

View File

@ -6,7 +6,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'com.novoda:bintray-release:0.8.1'
}
}

View File

@ -9,6 +9,9 @@ android {
targetSdkVersion TARGET_SDK_VERSION as int
versionCode "git rev-list origin/master --count".execute().text.toInteger()
versionName VERSION_NAME
renderscriptTargetApi TARGET_SDK_VERSION as int
renderscriptSupportModeEnabled true
}
signingConfigs {
@ -59,5 +62,5 @@ dependencies {
implementation "jp.co.cyberagent.android.gpuimage:gpuimage-library:${GPUIMAGE_VERSION}"
implementation "com.android.support:appcompat-v7:${SUPPORT_PACKAGE_VERSION}"
implementation "com.android.support:recyclerview-v7:${SUPPORT_PACKAGE_VERSION}"
implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta4'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
}

View File

@ -29,6 +29,7 @@ public class MainActivity extends AppCompatActivity {
dataSet.add(Type.Grayscale);
dataSet.add(Type.RoundedCorners);
dataSet.add(Type.Blur);
dataSet.add(Type.SupportRSBlur);
dataSet.add(Type.Toon);
dataSet.add(Type.Sepia);
dataSet.add(Type.Contrast);

View File

@ -9,10 +9,13 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import java.util.List;
import jp.wasabeef.glide.transformations.BlurTransformation;
import jp.wasabeef.glide.transformations.ColorFilterTransformation;
import jp.wasabeef.glide.transformations.CropCircleTransformation;
@ -22,6 +25,7 @@ import jp.wasabeef.glide.transformations.CropTransformation.CropType;
import jp.wasabeef.glide.transformations.GrayscaleTransformation;
import jp.wasabeef.glide.transformations.MaskTransformation;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import jp.wasabeef.glide.transformations.SupportRSBlurTransformation;
import jp.wasabeef.glide.transformations.gpu.BrightnessFilterTransformation;
import jp.wasabeef.glide.transformations.gpu.ContrastFilterTransformation;
import jp.wasabeef.glide.transformations.gpu.InvertFilterTransformation;
@ -56,6 +60,7 @@ public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
Grayscale,
RoundedCorners,
Blur,
SupportRSBlur,
Toon,
Sepia,
Contrast,
@ -163,6 +168,12 @@ public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
.apply(bitmapTransform(new BlurTransformation(25)))
.into(holder.image);
break;
case SupportRSBlur:
Glide.with(context)
.load(R.drawable.check)
.apply(bitmapTransform(new SupportRSBlurTransformation(25, 10)))
.into(holder.image);
break;
case Toon:
Glide.with(context)
.load(R.drawable.demo)

View File

@ -1,4 +1,4 @@
VERSION_NAME=3.2.0
VERSION_NAME=3.3.0
GROUP=jp.wasabeef
ARTIFACT_ID=glide-transformations
@ -21,6 +21,6 @@ POM_DEVELOPER_EMAIL=dadadada.chop@gmail.com
POM_DEVELOPER_URL=wasabeef.jp
ISSUE_URL=https://github.com/wasabeef/glide-transformations/issues
SUPPORT_PACKAGE_VERSION=27.1.0
GLIDE_VERSION=4.6.1
SUPPORT_PACKAGE_VERSION=27.1.1
GLIDE_VERSION=4.7.1
GPUIMAGE_VERSION=1.4.1

Binary file not shown.

View File

@ -1,6 +1,5 @@
#Tue Apr 10 02:12:33 JST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-bin.zip

View File

@ -31,9 +31,10 @@ import java.security.MessageDigest;
public abstract class BitmapTransformation implements Transformation<Bitmap> {
@NonNull
@Override
public final Resource<Bitmap> transform(Context context, Resource<Bitmap> resource, int outWidth,
int outHeight) {
public final Resource<Bitmap> transform(@NonNull Context context, @NonNull Resource<Bitmap> resource,
int outWidth, int outHeight) {
if (!Util.isValidDimensions(outWidth, outHeight)) {
throw new IllegalArgumentException(
"Cannot apply transformation on width: " + outWidth + " or height: " + outHeight
@ -57,7 +58,7 @@ public abstract class BitmapTransformation implements Transformation<Bitmap> {
protected abstract Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
@NonNull Bitmap toTransform, int outWidth, int outHeight);
@Override public abstract void updateDiskCacheKey(MessageDigest messageDigest);
@Override public abstract void updateDiskCacheKey(@NonNull MessageDigest messageDigest);
@Override public abstract boolean equals(Object o);

View File

@ -33,7 +33,6 @@ public class BlurTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.BlurTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private static int MAX_RADIUS = 25;
private static int DEFAULT_DOWN_SAMPLING = 1;
@ -80,14 +79,16 @@ public class BlurTransformation extends BitmapTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof BlurTransformation;
return o instanceof BlurTransformation &&
((BlurTransformation) o).radius == radius &&
((BlurTransformation) o).sampling == sampling;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + radius * 1000 + sampling * 10;
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + radius + sampling).getBytes(CHARSET));
}
}

View File

@ -31,7 +31,6 @@ public class ColorFilterTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.ColorFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private int color;
@ -62,14 +61,15 @@ public class ColorFilterTransformation extends BitmapTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof ColorFilterTransformation;
return o instanceof ColorFilterTransformation &&
((ColorFilterTransformation) o).color == color;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + color * 10;
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + color).getBytes(CHARSET));
}
}

View File

@ -33,7 +33,6 @@ public class CropCircleTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.CropCircleTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
@Override protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
@NonNull Bitmap toTransform, int outWidth, int outHeight) {
@ -52,7 +51,7 @@ public class CropCircleTransformation extends BitmapTransformation {
return ID.hashCode();
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID).getBytes(CHARSET));
}
}

View File

@ -28,7 +28,6 @@ public class CropSquareTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.CropSquareTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private int size;
@ -43,14 +42,14 @@ public class CropSquareTransformation extends BitmapTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof CropSquareTransformation;
return o instanceof CropSquareTransformation && ((CropSquareTransformation) o).size == size;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + size * 10;
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + size).getBytes(CHARSET));
}
}

View File

@ -28,7 +28,6 @@ public class CropTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID = "jp.wasabeef.glide.transformations.CropTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
public enum CropType {
TOP,
@ -79,23 +78,6 @@ public class CropTransformation extends BitmapTransformation {
return bitmap;
}
@Override public String toString() {
return "CropTransformation(width=" + width + ", height=" + height + ", cropType=" + cropType
+ ")";
}
@Override public boolean equals(Object o) {
return o instanceof CropTransformation;
}
@Override public int hashCode() {
return ID.hashCode();
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
}
private float getTop(float scaledHeight) {
switch (cropType) {
case TOP:
@ -108,4 +90,23 @@ public class CropTransformation extends BitmapTransformation {
return 0;
}
}
@Override public String toString() {
return "CropTransformation(width=" + width + ", height=" + height + ", cropType=" + cropType + ")";
}
@Override public boolean equals(Object o) {
return o instanceof CropTransformation &&
((CropTransformation) o).width == width &&
((CropTransformation) o).height == height &&
((CropTransformation) o).cropType == cropType;
}
@Override public int hashCode() {
return ID.hashCode() + width * 100000 + height * 1000 + cropType.ordinal() * 10;
}
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + width + height + cropType).getBytes(CHARSET));
}
}

View File

@ -31,7 +31,6 @@ public class GrayscaleTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.GrayscaleTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
@Override protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
@NonNull Bitmap toTransform, int outWidth, int outHeight) {
@ -64,7 +63,7 @@ public class GrayscaleTransformation extends BitmapTransformation {
return ID.hashCode();
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID).getBytes(CHARSET));
}
}

View File

@ -33,7 +33,6 @@ public class MaskTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.MaskTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private static Paint paint = new Paint();
private int maskId;
@ -74,14 +73,15 @@ public class MaskTransformation extends BitmapTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof MaskTransformation;
return o instanceof MaskTransformation &&
((MaskTransformation) o).maskId == maskId;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + maskId * 10;
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + maskId).getBytes(CHARSET));
}
}

View File

@ -32,7 +32,6 @@ public class RoundedCornersTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID = "jp.wasabeef.glide.transformations.RoundedCornersTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
public enum CornerType {
ALL,
@ -238,14 +237,18 @@ public class RoundedCornersTransformation extends BitmapTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof RoundedCornersTransformation;
return o instanceof RoundedCornersTransformation &&
((RoundedCornersTransformation) o).radius == radius &&
((RoundedCornersTransformation) o).diameter == diameter &&
((RoundedCornersTransformation) o).margin == margin &&
((RoundedCornersTransformation) o).cornerType == cornerType;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + radius * 10000 + diameter * 1000 + margin * 100 + cornerType.ordinal() * 10;
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + radius + diameter + margin + cornerType).getBytes(CHARSET));
}
}

View File

@ -28,12 +28,11 @@ import java.security.MessageDigest;
import jp.wasabeef.glide.transformations.internal.FastBlur;
import jp.wasabeef.glide.transformations.internal.SupportRSBlur;
public class SupportBlurTransformation extends BitmapTransformation {
public class SupportRSBlurTransformation extends BitmapTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.SupportBlurTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
"jp.wasabeef.glide.transformations.SupportRSBlurTransformation." + VERSION;
private static int MAX_RADIUS = 25;
private static int DEFAULT_DOWN_SAMPLING = 1;
@ -41,15 +40,15 @@ public class SupportBlurTransformation extends BitmapTransformation {
private int radius;
private int sampling;
public SupportBlurTransformation() {
public SupportRSBlurTransformation() {
this(MAX_RADIUS, DEFAULT_DOWN_SAMPLING);
}
public SupportBlurTransformation(int radius) {
public SupportRSBlurTransformation(int radius) {
this(radius, DEFAULT_DOWN_SAMPLING);
}
public SupportBlurTransformation(int radius, int sampling) {
public SupportRSBlurTransformation(int radius, int sampling) {
this.radius = radius;
this.sampling = sampling;
}
@ -84,18 +83,20 @@ public class SupportBlurTransformation extends BitmapTransformation {
}
@Override public String toString() {
return "SupportBlurTransformation(radius=" + radius + ", sampling=" + sampling + ")";
return "SupportRSBlurTransformation(radius=" + radius + ", sampling=" + sampling + ")";
}
@Override public boolean equals(Object o) {
return o instanceof SupportBlurTransformation;
return o instanceof SupportRSBlurTransformation &&
((SupportRSBlurTransformation) o).radius == radius &&
((SupportRSBlurTransformation) o).sampling == sampling;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + radius * 1000 + sampling * 10;
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + radius + sampling).getBytes(CHARSET));
}
}

View File

@ -16,6 +16,8 @@ package jp.wasabeef.glide.transformations.gpu;
* limitations under the License.
*/
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImageBrightnessFilter;
@ -27,7 +29,6 @@ public class BrightnessFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.BrightnessFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private float brightness;
@ -47,14 +48,15 @@ public class BrightnessFilterTransformation extends GPUFilterTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof BrightnessFilterTransformation;
return o instanceof BrightnessFilterTransformation &&
((BrightnessFilterTransformation) o).brightness == brightness;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + (int) ((brightness + 1.0f) * 10);
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + brightness).getBytes(CHARSET));
}
}

View File

@ -16,6 +16,8 @@ package jp.wasabeef.glide.transformations.gpu;
* limitations under the License.
*/
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImageContrastFilter;
@ -27,7 +29,6 @@ public class ContrastFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.ContrastFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private float contrast;
@ -51,10 +52,10 @@ public class ContrastFilterTransformation extends GPUFilterTransformation {
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + (int) (contrast * 10);
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + contrast).getBytes(CHARSET));
}
}

View File

@ -63,7 +63,7 @@ public class GPUFilterTransformation extends BitmapTransformation {
return ID.hashCode();
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
}
}

View File

@ -16,6 +16,8 @@ package jp.wasabeef.glide.transformations.gpu;
* limitations under the License.
*/
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImageColorInvertFilter;
@ -27,7 +29,6 @@ public class InvertFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.InvertFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
public InvertFilterTransformation() {
super(new GPUImageColorInvertFilter());
@ -45,7 +46,7 @@ public class InvertFilterTransformation extends GPUFilterTransformation {
return ID.hashCode();
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID).getBytes(CHARSET));
}
}

View File

@ -16,6 +16,8 @@ package jp.wasabeef.glide.transformations.gpu;
* limitations under the License.
*/
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImageKuwaharaFilter;
@ -30,7 +32,6 @@ public class KuwaharaFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.KuwaharaFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private int radius;
@ -54,10 +55,10 @@ public class KuwaharaFilterTransformation extends GPUFilterTransformation {
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + radius * 10;
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + radius).getBytes(CHARSET));
}
}

View File

@ -16,6 +16,8 @@ package jp.wasabeef.glide.transformations.gpu;
* limitations under the License.
*/
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImagePixelationFilter;
@ -29,7 +31,6 @@ public class PixelationFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.PixelationFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private float pixel;
@ -53,10 +54,10 @@ public class PixelationFilterTransformation extends GPUFilterTransformation {
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + (int) (pixel * 10);
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + pixel).getBytes(CHARSET));
}
}

View File

@ -16,6 +16,8 @@ package jp.wasabeef.glide.transformations.gpu;
* limitations under the License.
*/
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImageSepiaFilter;
@ -29,7 +31,6 @@ public class SepiaFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.SepiaFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private float intensity;
@ -53,10 +54,10 @@ public class SepiaFilterTransformation extends GPUFilterTransformation {
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + (int) (intensity * 10);
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + intensity).getBytes(CHARSET));
}
}

View File

@ -16,6 +16,8 @@ package jp.wasabeef.glide.transformations.gpu;
* limitations under the License.
*/
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImageSketchFilter;
@ -24,7 +26,6 @@ public class SketchFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.SketchFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
public SketchFilterTransformation() {
super(new GPUImageSketchFilter());
@ -42,7 +43,7 @@ public class SketchFilterTransformation extends GPUFilterTransformation {
return ID.hashCode();
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID).getBytes(CHARSET));
}
}

View File

@ -17,6 +17,8 @@ package jp.wasabeef.glide.transformations.gpu;
*/
import android.graphics.PointF;
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImageSwirlFilter;
@ -28,7 +30,6 @@ public class SwirlFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.SwirlFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private float radius;
private float angle;
@ -60,14 +61,17 @@ public class SwirlFilterTransformation extends GPUFilterTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof SwirlFilterTransformation;
return o instanceof SwirlFilterTransformation &&
((SwirlFilterTransformation) o).radius == radius &&
((SwirlFilterTransformation) o).angle == radius &&
((SwirlFilterTransformation) o).center.equals(center.x, center.y);
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + (int) (radius * 1000) + (int) (angle * 10) + center.hashCode();
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + radius + angle + center.hashCode()).getBytes(CHARSET));
}
}

View File

@ -16,6 +16,8 @@ package jp.wasabeef.glide.transformations.gpu;
* limitations under the License.
*/
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import jp.co.cyberagent.android.gpuimage.GPUImageToonFilter;
@ -29,7 +31,6 @@ public class ToonFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.ToonFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private float threshold;
private float quantizationLevels;
@ -53,14 +54,16 @@ public class ToonFilterTransformation extends GPUFilterTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof ToonFilterTransformation;
return o instanceof ToonFilterTransformation &&
((ToonFilterTransformation) o).threshold == threshold &&
((ToonFilterTransformation) o).quantizationLevels == quantizationLevels;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + (int) (threshold * 1000) + (int) (quantizationLevels * 10);
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + threshold + quantizationLevels).getBytes(CHARSET));
}
}

View File

@ -17,6 +17,8 @@ package jp.wasabeef.glide.transformations.gpu;
*/
import android.graphics.PointF;
import android.support.annotation.NonNull;
import java.security.MessageDigest;
import java.util.Arrays;
import jp.co.cyberagent.android.gpuimage.GPUImageVignetteFilter;
@ -31,7 +33,6 @@ public class VignetteFilterTransformation extends GPUFilterTransformation {
private static final int VERSION = 1;
private static final String ID =
"jp.wasabeef.glide.transformations.gpu.VignetteFilterTransformation." + VERSION;
private static final byte[] ID_BYTES = ID.getBytes(CHARSET);
private PointF center;
private float[] vignetteColor;
@ -61,14 +62,19 @@ public class VignetteFilterTransformation extends GPUFilterTransformation {
}
@Override public boolean equals(Object o) {
return o instanceof VignetteFilterTransformation;
return o instanceof VignetteFilterTransformation &&
((VignetteFilterTransformation) o).center.equals(center.x, center.y) &&
Arrays.equals(((VignetteFilterTransformation) o).vignetteColor, vignetteColor) &&
((VignetteFilterTransformation) o).vignetteStart == vignetteStart &&
((VignetteFilterTransformation) o).vignetteEnd == vignetteEnd;
}
@Override public int hashCode() {
return ID.hashCode();
return ID.hashCode() + center.hashCode() + Arrays.hashCode(vignetteColor) +
(int) (vignetteStart * 100) + (int) (vignetteEnd * 10);
}
@Override public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(ID_BYTES);
@Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
messageDigest.update((ID + center + Arrays.hashCode(vignetteColor) + vignetteStart + vignetteEnd).getBytes(CHARSET));
}
}