Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package com.koushikdutta.ion;
 
 import  android.graphics.Bitmap;
 import  android.graphics.Canvas;
 import  android.graphics.Paint;
 import  android.graphics.RectF;
 
 
class DefaultTransform implements Transform {
    final ScaleMode scaleMode;
    final int resizeWidth;
    final int resizeHeight;
    public DefaultTransform(int widthint heightScaleMode scaleMode) {
         = width;
         = height;
        // fixup ScaleMode to sane values.
        // no scale mode means that we are stretching, disregarding aspect ratio
        if (scaleMode == null)
            this. = .;
        else
            this. = scaleMode;
    }
    final static Paint bilinearSamplingPaint = new Paint(Paint.FILTER_BITMAP_FLAG);
    @Override
    public Bitmap transform(Bitmap b) {
        Bitmap.Config config = b.getConfig();
        if (config == null)
            config = Bitmap.Config.ARGB_8888;
        int resizeWidth = this.;
        int resizeHeight = this.;
        if (resizeWidth <= 0) {
            float ratio = (float)b.getWidth() / (float)b.getHeight();
            resizeWidth = (int)(ratio * resizeHeight);
        }
        else if (resizeHeight <= 0) {
            float ratio = (float)b.getHeight() / (float)b.getWidth();
            resizeHeight = (int)(ratio * resizeWidth);
        }
        RectF destination = new RectF(0, 0, resizeWidthresizeHeight);
        ScaleMode scaleMode = this.;
        if (scaleMode == .) {
            // center inside, but bitmap bounds exceed the resize dimensions...
            // so change it to fit center.
            if (resizeWidth <= b.getWidth() || resizeHeight <= b.getHeight())
                scaleMode = .;
        }
        if (scaleMode == .) {
            float marginx = (resizeWidth - b.getWidth()) / 2f;
            float marginy = (resizeHeight - b.getHeight()) / 2f;
            destination.set(marginxmarginymarginx + b.getWidth(), marginy + b.getHeight());
        }
        else if (scaleMode != .) {
            float ratio;
            float xratio = (float)resizeWidth / (float)b.getWidth();
            float yratio = (float)resizeHeight / (float)b.getHeight();
            if (scaleMode == .)
                ratio = Math.max(xratioyratio);
            else
                ratio = Math.min(xratioyratio);
            if (ratio == 0) return b;
            float postWidth = b.getWidth() * ratio;
            float postHeight = b.getHeight() * ratio;
            float transx = (resizeWidth - postWidth) / 2;
            float transy = (resizeHeight - postHeight) / 2;
            destination.set(transxtransyresizeWidth - transxresizeHeight - transy);
        }
        if (destination.width() == b.getWidth() && destination.height() == b.getHeight()
            && destination.top == 0 && destination.left == 0) {
            return b;
        }
        Bitmap ret = Bitmap.createBitmap(resizeWidthresizeHeightconfig);
        Canvas canvas = new Canvas(ret);
        canvas.drawBitmap(bnulldestination);
        return ret;
    }
    @Override
    public String key() {
        return .name() +   + "x" + ;
    }
New to GrepCode? Check out our FAQ X