package com.ptrprograms.iconcolorization.utility; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.PorterDuff; import android.graphics.drawable.BitmapDrawable; import com.squareup.picasso.Transformation; /** * Created by paulruiz on 8/22/14. */ public class ColorTransformation implements Transformation { private int color = 0; public ColorTransformation() { } public ColorTransformation( int color ) { setColor( color ); } public void setColor( int color ) { this.color = color; } public void setColorFromRes( Context context, int colorResId ) { setColor( context.getResources().getColor( colorResId ) ); } public int getColor() { return color; } @Override public Bitmap transform(Bitmap source) { if( color == 0 ) { return source; } BitmapDrawable drawable = new BitmapDrawable(Resources.getSystem(), source ); Bitmap result = Bitmap.createBitmap( drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888 ); Canvas canvas = new Canvas( result ); drawable.setBounds( 0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight() ); drawable.setColorFilter( color, PorterDuff.Mode.SRC_IN ); drawable.draw(canvas); drawable.setColorFilter(null); drawable.setCallback(null); if( result != source ) { source.recycle(); } return result; } @Override public String key() { return "DrawableColor:" + color; } }