package com.boardgamegeek.util; import android.graphics.Bitmap; import android.support.v7.graphics.Palette; import com.squareup.picasso.Transformation; import java.util.Map; import java.util.WeakHashMap; /** * Used to get Picasso and Palette to play well with each other. */ public final class PaletteTransformation implements Transformation { private static final PaletteTransformation INSTANCE = new PaletteTransformation(); private static final Map<Bitmap, Palette> CACHE = new WeakHashMap<>(); private PaletteTransformation() { } public static PaletteTransformation instance() { return INSTANCE; } public static Palette getPalette(Bitmap bitmap) { return CACHE.get(bitmap); } @Override public Bitmap transform(Bitmap source) { Palette palette = Palette.from(source).generate(); CACHE.put(source, palette); return source; } @Override public String key() { return ""; // Stable key for all requests. An unfortunate requirement. } }