* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + *
* http://www.apache.org/licenses/LICENSE-2.0 - * + *
* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -16,10 +16,10 @@ 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; + +import androidx.annotation.NonNull; +import jp.co.cyberagent.android.gpuimage.filter.GPUImageSepiaToneFilter; /** * Applies a simple sepia effect. @@ -39,25 +39,29 @@ public class SepiaFilterTransformation extends GPUFilterTransformation { } public SepiaFilterTransformation(float intensity) { - super(new GPUImageSepiaFilter()); + super(new GPUImageSepiaToneFilter()); this.intensity = intensity; - GPUImageSepiaFilter filter = getFilter(); + GPUImageSepiaToneFilter filter = getFilter(); filter.setIntensity(this.intensity); } - @Override public String toString() { + @Override + public String toString() { return "SepiaFilterTransformation(intensity=" + intensity + ")"; } - @Override public boolean equals(Object o) { + @Override + public boolean equals(Object o) { return o instanceof SepiaFilterTransformation; } - @Override public int hashCode() { + @Override + public int hashCode() { return ID.hashCode() + (int) (intensity * 10); } - @Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { messageDigest.update((ID + intensity).getBytes(CHARSET)); } } diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SketchFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SketchFilterTransformation.java index aa0b7f1..3c27329 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SketchFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SketchFilterTransformation.java @@ -16,10 +16,10 @@ 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; + +import androidx.annotation.NonNull; +import jp.co.cyberagent.android.gpuimage.filter.GPUImageSketchFilter; public class SketchFilterTransformation extends GPUFilterTransformation { @@ -31,19 +31,23 @@ public class SketchFilterTransformation extends GPUFilterTransformation { super(new GPUImageSketchFilter()); } - @Override public String toString() { + @Override + public String toString() { return "SketchFilterTransformation()"; } - @Override public boolean equals(Object o) { + @Override + public boolean equals(Object o) { return o instanceof SketchFilterTransformation; } - @Override public int hashCode() { + @Override + public int hashCode() { return ID.hashCode(); } - @Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { messageDigest.update((ID).getBytes(CHARSET)); } } diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SwirlFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SwirlFilterTransformation.java index 4419ccd..98e0179 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SwirlFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SwirlFilterTransformation.java @@ -17,10 +17,11 @@ 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; + +import androidx.annotation.NonNull; +import jp.co.cyberagent.android.gpuimage.filter.GPUImageSwirlFilter; /** * Creates a swirl distortion on the image. @@ -41,7 +42,7 @@ public class SwirlFilterTransformation extends GPUFilterTransformation { /** * @param radius from 0.0 to 1.0, default 0.5 - * @param angle minimum 0.0, default 1.0 + * @param angle minimum 0.0, default 1.0 * @param center default (0.5, 0.5) */ public SwirlFilterTransformation(float radius, float angle, PointF center) { @@ -55,23 +56,27 @@ public class SwirlFilterTransformation extends GPUFilterTransformation { filter.setCenter(this.center); } - @Override public String toString() { + @Override + public String toString() { return "SwirlFilterTransformation(radius=" + radius + ",angle=" + angle + ",center=" + center.toString() + ")"; } - @Override public boolean equals(Object o) { + @Override + public boolean equals(Object o) { return o instanceof SwirlFilterTransformation && ((SwirlFilterTransformation) o).radius == radius && ((SwirlFilterTransformation) o).angle == radius && ((SwirlFilterTransformation) o).center.equals(center.x, center.y); } - @Override public int hashCode() { + @Override + public int hashCode() { return ID.hashCode() + (int) (radius * 1000) + (int) (angle * 10) + center.hashCode(); } - @Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { messageDigest.update((ID + radius + angle + center.hashCode()).getBytes(CHARSET)); } } diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ToonFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ToonFilterTransformation.java index 0943ff9..6ae7d2c 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ToonFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ToonFilterTransformation.java @@ -16,10 +16,10 @@ 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; + +import androidx.annotation.NonNull; +import jp.co.cyberagent.android.gpuimage.filter.GPUImageToonFilter; /** * The threshold at which to apply the edges, default of 0.2. @@ -48,22 +48,26 @@ public class ToonFilterTransformation extends GPUFilterTransformation { filter.setQuantizationLevels(this.quantizationLevels); } - @Override public String toString() { + @Override + public String toString() { return "ToonFilterTransformation(threshold=" + threshold + ",quantizationLevels=" + quantizationLevels + ")"; } - @Override public boolean equals(Object o) { + @Override + public boolean equals(Object o) { return o instanceof ToonFilterTransformation && ((ToonFilterTransformation) o).threshold == threshold && ((ToonFilterTransformation) o).quantizationLevels == quantizationLevels; } - @Override public int hashCode() { + @Override + public int hashCode() { return ID.hashCode() + (int) (threshold * 1000) + (int) (quantizationLevels * 10); } - @Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { messageDigest.update((ID + threshold + quantizationLevels).getBytes(CHARSET)); } } diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/VignetteFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/VignetteFilterTransformation.java index 3fe3e3b..21fc9a8 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/VignetteFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/VignetteFilterTransformation.java @@ -17,11 +17,12 @@ 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; + +import androidx.annotation.NonNull; +import jp.co.cyberagent.android.gpuimage.filter.GPUImageVignetteFilter; /** * Performs a vignetting effect, fading out the image at the edges @@ -40,7 +41,7 @@ public class VignetteFilterTransformation extends GPUFilterTransformation { private float vignetteEnd; public VignetteFilterTransformation() { - this(new PointF(0.5f, 0.5f), new float[] { 0.0f, 0.0f, 0.0f }, 0.0f, 0.75f); + this(new PointF(0.5f, 0.5f), new float[]{0.0f, 0.0f, 0.0f}, 0.0f, 0.75f); } public VignetteFilterTransformation(PointF center, float[] color, float start, float end) { @@ -56,25 +57,29 @@ public class VignetteFilterTransformation extends GPUFilterTransformation { filter.setVignetteEnd(vignetteEnd); } - @Override public String toString() { + @Override + public String toString() { return "VignetteFilterTransformation(center=" + center.toString() + ",color=" + Arrays.toString( vignetteColor) + ",start=" + vignetteStart + ",end=" + vignetteEnd + ")"; } - @Override public boolean equals(Object o) { + @Override + public boolean equals(Object o) { 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; + ((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() { + @Override + public int hashCode() { return ID.hashCode() + center.hashCode() + Arrays.hashCode(vignetteColor) + (int) (vignetteStart * 100) + (int) (vignetteEnd * 10); } - @Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { messageDigest.update((ID + center + Arrays.hashCode(vignetteColor) + vignetteStart + vignetteEnd).getBytes(CHARSET)); } } diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/internal/SupportRSBlur.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/internal/SupportRSBlur.java index 254366e..78fddb8 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/internal/SupportRSBlur.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/internal/SupportRSBlur.java @@ -4,11 +4,11 @@ import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.os.Build; -import android.support.v8.renderscript.Allocation; -import android.support.v8.renderscript.Element; -import android.support.v8.renderscript.RSRuntimeException; -import android.support.v8.renderscript.RenderScript; -import android.support.v8.renderscript.ScriptIntrinsicBlur; +import android.renderscript.Allocation; +import android.renderscript.Element; +import android.renderscript.RSRuntimeException; +import android.renderscript.RenderScript; +import android.renderscript.ScriptIntrinsicBlur; /** * Copyright (C) 2018 Wasabeef @@ -28,43 +28,43 @@ import android.support.v8.renderscript.ScriptIntrinsicBlur; public class SupportRSBlur { - @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) - public static Bitmap blur(Context context, Bitmap bitmap, int radius) throws RSRuntimeException { - RenderScript rs = null; - Allocation input = null; - Allocation output = null; - ScriptIntrinsicBlur blur = null; - try { - rs = RenderScript.create(context); - rs.setMessageHandler(new RenderScript.RSMessageHandler()); - input = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE, - Allocation.USAGE_SCRIPT); - output = Allocation.createTyped(rs, input.getType()); - blur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); + @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) + public static Bitmap blur(Context context, Bitmap bitmap, int radius) throws RSRuntimeException { + RenderScript rs = null; + Allocation input = null; + Allocation output = null; + ScriptIntrinsicBlur blur = null; + try { + rs = RenderScript.create(context); + rs.setMessageHandler(new RenderScript.RSMessageHandler()); + input = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE, + Allocation.USAGE_SCRIPT); + output = Allocation.createTyped(rs, input.getType()); + blur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); - blur.setInput(input); - blur.setRadius(radius); - blur.forEach(output); - output.copyTo(bitmap); - } finally { - if (rs != null) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - RenderScript.releaseAllContexts(); - } else { - rs.destroy(); - } - } - if (input != null) { - input.destroy(); - } - if (output != null) { - output.destroy(); - } - if (blur != null) { - blur.destroy(); - } + blur.setInput(input); + blur.setRadius(radius); + blur.forEach(output); + output.copyTo(bitmap); + } finally { + if (rs != null) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + RenderScript.releaseAllContexts(); + } else { + rs.destroy(); } - - return bitmap; + } + if (input != null) { + input.destroy(); + } + if (output != null) { + output.destroy(); + } + if (blur != null) { + blur.destroy(); + } } + + return bitmap; + } }