blob: 2ead0476455bed8c1a875aff8780eea92d3d9d00 [file] [log] [blame]
package com.android.gallery3d.filtershow.filters;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
public class ImageFilterParametricBorder extends ImageFilter {
private int mBorderColor = Color.WHITE;
private int mBorderSize = 10;
private int mBorderCornerRadius = 10;
public ImageFilterParametricBorder() {
mName = "Border";
}
public ImageFilterParametricBorder(int color, int size, int radius) {
setBorder(color, size, radius);
}
@Override
public ImageFilter clone() throws CloneNotSupportedException {
ImageFilterParametricBorder filter = (ImageFilterParametricBorder) super.clone();
filter.setBorder(mBorderColor, mBorderSize, mBorderCornerRadius);
return filter;
}
@Override
public boolean same(ImageFilter filter) {
boolean isBorderFilter = super.same(filter);
if (!isBorderFilter) {
return false;
}
ImageFilterParametricBorder borderFilter = (ImageFilterParametricBorder) filter;
if (borderFilter.mBorderColor != mBorderColor) {
return false;
}
if (borderFilter.mBorderSize != mBorderSize) {
return false;
}
if (borderFilter.mBorderCornerRadius != mBorderCornerRadius) {
return false;
}
return true;
}
public void setBorder(int color, int size, int radius) {
mBorderColor = color;
mBorderSize = size;
mBorderCornerRadius = radius;
}
@Override
public Bitmap apply(Bitmap bitmap, float scaleFactor, boolean highQuality) {
Canvas canvas = new Canvas(bitmap);
Path border = new Path();
border.moveTo(0, 0);
int w = bitmap.getWidth();
int h = bitmap.getHeight();
float bs = mBorderSize * scaleFactor;
float r = mBorderCornerRadius * scaleFactor;
border.lineTo(0, h);
border.lineTo(w, h);
border.lineTo(w, 0);
border.lineTo(0, 0);
border.addRoundRect(new RectF(bs, bs, w - bs, h - bs),
r, r, Path.Direction.CW);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(mBorderColor);
canvas.drawPath(border, paint);
return bitmap;
}
}