package com.koushikdutta.ion;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.RectF;
import com.koushikdutta.ion.bitmap.Transform;
import java.io.FileOutputStream;
class DefaultTransform implements Transform {
ScaleMode scaleMode;
int resizeWidth;
int resizeHeight;
public DefaultTransform(int width, int height, ScaleMode scaleMode) {
resizeWidth = width;
resizeHeight = height;
this.scaleMode = scaleMode;
}
@Override
public Bitmap transform(Bitmap b) {
Bitmap.Config config = b.getConfig();
if (config == null)
config = Bitmap.Config.ARGB_8888;
Bitmap ret = Bitmap.createBitmap(resizeWidth, resizeHeight, config);
Canvas canvas = new Canvas(ret);
RectF destination = new RectF(0, 0, resizeWidth, resizeHeight);
if (scaleMode != ScaleMode.FitXY) {
float ratio;
float xratio = (float)resizeWidth / (float)b.getWidth();
float yratio = (float)resizeHeight / (float)b.getHeight();
if (scaleMode == ScaleMode.CenterCrop)
ratio = Math.max(xratio, yratio);
else
ratio = Math.min(xratio, yratio);
float postWidth = b.getWidth() * ratio;
float postHeight = b.getHeight() * ratio;
float transx = (resizeWidth - postWidth) / 2;
float transy = (resizeHeight - postHeight) / 2;
destination.set(transx, transy, resizeWidth - transx, resizeHeight - transy);
}
canvas.drawBitmap(b, null, destination, null);
return ret;
}
@Override
public String key() {
return scaleMode.name() + resizeWidth + "x" + resizeHeight;
}
}