diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/BrightnessFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/BrightnessFilterTransformation.java index 9180f9f..3fed732 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/BrightnessFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/BrightnessFilterTransformation.java @@ -17,24 +17,15 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageBrightnessFilter; /** * brightness value ranges from -1.0 to 1.0, with 0.0 as the normal level */ -public class BrightnessFilterTransformation implements Transformation { +public class BrightnessFilterTransformation extends GPUFilterTransformation { - private Context mContext; - private BitmapPool mBitmapPool; - - private GPUImageBrightnessFilter mFilter = new GPUImageBrightnessFilter(); private float mBrightness; public BrightnessFilterTransformation(Context context) { @@ -50,24 +41,10 @@ public class BrightnessFilterTransformation implements Transformation { } public BrightnessFilterTransformation(Context context, BitmapPool pool, float brightness) { - mContext = context; - mBitmapPool = pool; + super(context, pool, new GPUImageBrightnessFilter()); mBrightness = brightness; - mFilter.setBrightness(mBrightness); - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(mFilter); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + GPUImageBrightnessFilter filter = getFilter(); + filter.setBrightness(mBrightness); } @Override public String getId() { diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ContrastFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ContrastFilterTransformation.java index 95c907d..fa00fe0 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ContrastFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ContrastFilterTransformation.java @@ -17,24 +17,15 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageContrastFilter; /** * contrast value ranges from 0.0 to 4.0, with 1.0 as the normal level */ -public class ContrastFilterTransformation implements Transformation { +public class ContrastFilterTransformation extends GPUFilterTransformation { - private Context mContext; - private BitmapPool mBitmapPool; - - private GPUImageContrastFilter mFilter = new GPUImageContrastFilter(); private float mContrast; public ContrastFilterTransformation(Context context) { @@ -50,24 +41,10 @@ public class ContrastFilterTransformation implements Transformation { } public ContrastFilterTransformation(Context context, BitmapPool pool, float contrast) { - mContext = context; - mBitmapPool = pool; + super(context, pool, new GPUImageContrastFilter()); mContrast = contrast; - mFilter.setContrast(mContrast); - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(mFilter); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + GPUImageContrastFilter filter = getFilter(); + filter.setContrast(mContrast); } @Override public String getId() { diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/GPUFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/GPUFilterTransformation.java new file mode 100644 index 0000000..ff6ce45 --- /dev/null +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/GPUFilterTransformation.java @@ -0,0 +1,65 @@ +package jp.wasabeef.glide.transformations.gpu; + +/** + * Copyright (C) 2015 Wasabeef + * + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import android.content.Context; +import android.graphics.Bitmap; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.Transformation; +import com.bumptech.glide.load.engine.Resource; +import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; +import com.bumptech.glide.load.resource.bitmap.BitmapResource; +import jp.co.cyberagent.android.gpuimage.GPUImage; +import jp.co.cyberagent.android.gpuimage.GPUImageFilter; + +public class GPUFilterTransformation implements Transformation { + + private Context mContext; + private BitmapPool mBitmapPool; + + private GPUImageFilter mFilter; + + public GPUFilterTransformation(Context context, GPUImageFilter filter) { + this(context, Glide.get(context).getBitmapPool(), filter); + } + + public GPUFilterTransformation(Context context, BitmapPool pool, GPUImageFilter filter) { + mContext = context.getApplicationContext(); + mBitmapPool = pool; + mFilter = filter; + } + + @Override + public Resource transform(Resource resource, int outWidth, int outHeight) { + Bitmap source = resource.get(); + GPUImage gpuImage = new GPUImage(mContext); + gpuImage.setImage(source); + gpuImage.setFilter(mFilter); + + Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); + + return BitmapResource.obtain(bitmap, mBitmapPool); + } + + @Override public String getId() { + return getClass().getSimpleName(); + } + + @SuppressWarnings("unchecked") public T getFilter() { + return (T) mFilter; + } +} diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/InvertFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/InvertFilterTransformation.java index 2650a68..33549b6 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/InvertFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/InvertFilterTransformation.java @@ -17,44 +17,21 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageColorInvertFilter; /** * Invert all the colors in the image. */ -public class InvertFilterTransformation implements Transformation { - - private Context mContext; - private BitmapPool mBitmapPool; +public class InvertFilterTransformation extends GPUFilterTransformation { public InvertFilterTransformation(Context context) { this(context, Glide.get(context).getBitmapPool()); } public InvertFilterTransformation(Context context, BitmapPool pool) { - mContext = context; - mBitmapPool = pool; - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(new GPUImageColorInvertFilter()); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + super(context, pool, new GPUImageColorInvertFilter()); } @Override public String getId() { diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/KuwaharaFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/KuwaharaFilterTransformation.java index 511b7a4..f26cdbb 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/KuwaharaFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/KuwaharaFilterTransformation.java @@ -17,13 +17,8 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageKuwaharaFilter; /** @@ -32,12 +27,8 @@ import jp.co.cyberagent.android.gpuimage.GPUImageKuwaharaFilter; * The radius to sample from when creating the brush-stroke effect, with a default of 25. * The larger the radius, the slower the filter. */ -public class KuwaharaFilterTransformation implements Transformation { +public class KuwaharaFilterTransformation extends GPUFilterTransformation { - private Context mContext; - private BitmapPool mBitmapPool; - - private GPUImageKuwaharaFilter mFilter = new GPUImageKuwaharaFilter(); private int mRadius; public KuwaharaFilterTransformation(Context context) { @@ -53,24 +44,10 @@ public class KuwaharaFilterTransformation implements Transformation { } public KuwaharaFilterTransformation(Context context, BitmapPool pool, int radius) { - mContext = context; - mBitmapPool = pool; + super(context, pool, new GPUImageKuwaharaFilter()); mRadius = radius; - mFilter.setRadius(mRadius); - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(mFilter); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + GPUImageKuwaharaFilter filter = getFilter(); + filter.setRadius(mRadius); } @Override public String getId() { diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/PixelationFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/PixelationFilterTransformation.java index 4fe787c..15e891e 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/PixelationFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/PixelationFilterTransformation.java @@ -17,13 +17,8 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImagePixelationFilter; /** @@ -31,12 +26,8 @@ import jp.co.cyberagent.android.gpuimage.GPUImagePixelationFilter; * * The pixel with a default of 10.0. */ -public class PixelationFilterTransformation implements Transformation { +public class PixelationFilterTransformation extends GPUFilterTransformation { - private Context mContext; - private BitmapPool mBitmapPool; - - private GPUImagePixelationFilter mFilter = new GPUImagePixelationFilter(); private float mPixel; public PixelationFilterTransformation(Context context) { @@ -52,24 +43,10 @@ public class PixelationFilterTransformation implements Transformation { } public PixelationFilterTransformation(Context context, BitmapPool pool, float pixel) { - mContext = context; - mBitmapPool = pool; + super(context, pool, new GPUImagePixelationFilter()); mPixel = pixel; - mFilter.setPixel(mPixel); - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(mFilter); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + GPUImagePixelationFilter filter = getFilter(); + filter.setPixel(mPixel); } @Override public String getId() { diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SepiaFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SepiaFilterTransformation.java index 4f532e3..0323238 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SepiaFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SepiaFilterTransformation.java @@ -17,13 +17,8 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageSepiaFilter; /** @@ -31,12 +26,8 @@ import jp.co.cyberagent.android.gpuimage.GPUImageSepiaFilter; * * The intensity with a default of 1.0. */ -public class SepiaFilterTransformation implements Transformation { +public class SepiaFilterTransformation extends GPUFilterTransformation { - private Context mContext; - private BitmapPool mBitmapPool; - - private GPUImageSepiaFilter mFilter = new GPUImageSepiaFilter(); private float mIntensity; public SepiaFilterTransformation(Context context) { @@ -52,24 +43,10 @@ public class SepiaFilterTransformation implements Transformation { } public SepiaFilterTransformation(Context context, BitmapPool pool, float intensity) { - mContext = context; - mBitmapPool = pool; + super(context, pool, new GPUImageSepiaFilter()); mIntensity = intensity; - mFilter.setIntensity(mIntensity); - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(mFilter); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + GPUImageSepiaFilter filter = getFilter(); + filter.setIntensity(mIntensity); } @Override public String getId() { 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 942d9ec..cee0157 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SketchFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/SketchFilterTransformation.java @@ -17,41 +17,18 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageSketchFilter; -public class SketchFilterTransformation implements Transformation { - - private Context mContext; - private BitmapPool mBitmapPool; +public class SketchFilterTransformation extends GPUFilterTransformation { public SketchFilterTransformation(Context context) { this(context, Glide.get(context).getBitmapPool()); } public SketchFilterTransformation(Context context, BitmapPool pool) { - mContext = context; - mBitmapPool = pool; - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(new GPUImageSketchFilter()); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + super(context, pool, new GPUImageSketchFilter()); } @Override public String getId() { 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 99a3887..35d8c87 100644 --- 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,25 +17,16 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import android.graphics.PointF; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageSwirlFilter; /** * Creates a swirl distortion on the image. */ -public class SwirlFilterTransformation implements Transformation { +public class SwirlFilterTransformation extends GPUFilterTransformation { - private Context mContext; - private BitmapPool mBitmapPool; - - private GPUImageSwirlFilter mFilter = new GPUImageSwirlFilter(); private float mRadius; private float mAngle; private PointF mCenter; @@ -59,28 +50,14 @@ public class SwirlFilterTransformation implements Transformation { */ public SwirlFilterTransformation(Context context, BitmapPool pool, float radius, float angle, PointF center) { - mContext = context; - mBitmapPool = pool; + super(context, pool, new GPUImageSwirlFilter()); mRadius = radius; mAngle = angle; mCenter = center; - mFilter.setRadius(mRadius); - mFilter.setAngle(mAngle); - mFilter.setCenter(mCenter); - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(mFilter); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + GPUImageSwirlFilter filter = getFilter(); + filter.setRadius(mRadius); + filter.setAngle(mAngle); + filter.setCenter(mCenter); } @Override public String getId() { 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 c03ef13..15ba0bc 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ToonFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/gpu/ToonFilterTransformation.java @@ -17,13 +17,8 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageToonFilter; /** @@ -31,12 +26,8 @@ import jp.co.cyberagent.android.gpuimage.GPUImageToonFilter; * The levels of quantization for the posterization of colors within the scene, * with a default of 10.0. */ -public class ToonFilterTransformation implements Transformation { +public class ToonFilterTransformation extends GPUFilterTransformation { - private Context mContext; - private BitmapPool mBitmapPool; - - private GPUImageToonFilter mFilter = new GPUImageToonFilter(); private float mThreshold; private float mQuantizationLevels; @@ -54,26 +45,12 @@ public class ToonFilterTransformation implements Transformation { public ToonFilterTransformation(Context context, BitmapPool pool, float threshold, float quantizationLevels) { - mContext = context; - mBitmapPool = pool; + super(context, pool, new GPUImageToonFilter()); mThreshold = threshold; mQuantizationLevels = quantizationLevels; - mFilter.setThreshold(mThreshold); - mFilter.setQuantizationLevels(mQuantizationLevels); - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(mFilter); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + GPUImageToonFilter filter = getFilter(); + filter.setThreshold(mThreshold); + filter.setQuantizationLevels(mQuantizationLevels); } @Override public String getId() { 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 f8342cf..6eca63d 100644 --- 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,15 +17,10 @@ package jp.wasabeef.glide.transformations.gpu; */ import android.content.Context; -import android.graphics.Bitmap; import android.graphics.PointF; import com.bumptech.glide.Glide; -import com.bumptech.glide.load.Transformation; -import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; -import com.bumptech.glide.load.resource.bitmap.BitmapResource; import java.util.Arrays; -import jp.co.cyberagent.android.gpuimage.GPUImage; import jp.co.cyberagent.android.gpuimage.GPUImageVignetteFilter; /** @@ -33,12 +28,8 @@ import jp.co.cyberagent.android.gpuimage.GPUImageVignetteFilter; * The directional intensity of the vignetting, * with a default of x = 0.5, y = 0.5, start = 0, end = 0.75 */ -public class VignetteFilterTransformation implements Transformation { +public class VignetteFilterTransformation extends GPUFilterTransformation { - private Context mContext; - private BitmapPool mBitmapPool; - - private GPUImageVignetteFilter mFilter = new GPUImageVignetteFilter(); private PointF mCenter; private float[] mVignetteColor; private float mVignetteStart; @@ -59,30 +50,16 @@ public class VignetteFilterTransformation implements Transformation { public VignetteFilterTransformation(Context context, BitmapPool pool, PointF center, float[] color, float start, float end) { - mContext = context; - mBitmapPool = pool; + super(context, pool, new GPUImageVignetteFilter()); mCenter = center; mVignetteColor = color; mVignetteStart = start; mVignetteEnd = end; - mFilter.setVignetteCenter(mCenter); - mFilter.setVignetteColor(mVignetteColor); - mFilter.setVignetteStart(mVignetteStart); - mFilter.setVignetteEnd(mVignetteEnd); - } - - @Override - public Resource transform(Resource resource, int outWidth, int outHeight) { - Bitmap source = resource.get(); - - GPUImage gpuImage = new GPUImage(mContext); - gpuImage.setImage(source); - gpuImage.setFilter(mFilter); - Bitmap bitmap = gpuImage.getBitmapWithFilterApplied(); - - source.recycle(); - - return BitmapResource.obtain(bitmap, mBitmapPool); + GPUImageVignetteFilter filter = getFilter(); + filter.setVignetteCenter(mCenter); + filter.setVignetteColor(mVignetteColor); + filter.setVignetteStart(mVignetteStart); + filter.setVignetteEnd(mVignetteEnd); } @Override public String getId() {