package com.marshalchen.common.ui.roundedimageview;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.widget.ImageView;
//import com.squareup.picasso.Transformation;
public final class RoundedTransformationBuilder {
//private final Resources mResources;
private final DisplayMetrics mDisplayMetrics;
private float mCornerRadius = 0;
private boolean mOval = false;
private float mBorderWidth = 0;
private ColorStateList mBorderColor =
ColorStateList.valueOf(RoundedDrawable.DEFAULT_BORDER_COLOR);
private ImageView.ScaleType mScaleType = ImageView.ScaleType.FIT_CENTER;
public RoundedTransformationBuilder() {
mDisplayMetrics = Resources.getSystem().getDisplayMetrics();
}
public RoundedTransformationBuilder scaleType(ImageView.ScaleType scaleType) {
mScaleType = scaleType;
return this;
}
/**
* set corner radius in px
*/
public RoundedTransformationBuilder cornerRadius(float radiusPx) {
mCornerRadius = radiusPx;
return this;
}
/**
* set corner radius in dip
*/
public RoundedTransformationBuilder cornerRadiusDp(float radiusDp) {
mCornerRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, radiusDp, mDisplayMetrics);
return this;
}
/**
* set border width in px
*/
public RoundedTransformationBuilder borderWidth(float widthPx) {
mBorderWidth = widthPx;
return this;
}
/**
* set border width in dip
*/
public RoundedTransformationBuilder borderWidthDp(float widthDp) {
mBorderWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, widthDp, mDisplayMetrics);
return this;
}
/**
* set border color
*/
public RoundedTransformationBuilder borderColor(int color) {
mBorderColor = ColorStateList.valueOf(color);
return this;
}
public RoundedTransformationBuilder borderColor(ColorStateList colors) {
mBorderColor = colors;
return this;
}
public RoundedTransformationBuilder oval(boolean oval) {
mOval = oval;
return this;
}
// public Transformation build() {
// return new Transformation() {
// @Override public Bitmap transform(Bitmap source) {
// Bitmap transformed = RoundedDrawable.fromBitmap(source)
// .setScaleType(mScaleType)
// .setCornerRadius(mCornerRadius)
// .setBorderWidth(mBorderWidth)
// .setBorderColor(mBorderColor)
// .setOval(mOval)
// .toBitmap();
// if (!source.equals(transformed)) {
// source.recycle();
// }
// return transformed;
// }
//
// @Override public String key() {
// return "r:" + mCornerRadius
// + "b:" + mBorderWidth
// + "c:" + mBorderColor
// + "o:" + mOval;
// }
// };
// }
}