package com.github.florent37.glidepalette;
import android.graphics.Bitmap;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.TextView;
import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
public class GlidePalette<ModelType, TranscodeType> extends BitmapPalette implements RequestListener<ModelType, TranscodeType> {
protected RequestListener<ModelType, TranscodeType> callback;
protected GlidePalette() {
}
public static GlidePalette with(String url) {
GlidePalette glidePalette = new GlidePalette();
glidePalette.url = url;
return glidePalette;
}
public GlidePalette use(@Profile int paletteProfile) {
super.use(paletteProfile);
return this;
}
public GlidePalette<ModelType, TranscodeType> intoBackground(View view) {
return this.intoBackground(view, Swatch.RGB);
}
@Override
public GlidePalette<ModelType, TranscodeType> intoBackground(View view, @Swatch int paletteSwatch) {
super.intoBackground(view, paletteSwatch);
return this;
}
public GlidePalette<ModelType, TranscodeType> intoTextColor(TextView textView) {
return this.intoTextColor(textView, Swatch.TITLE_TEXT_COLOR);
}
@Override
public GlidePalette<ModelType, TranscodeType> intoTextColor(TextView textView, @Swatch int paletteSwatch) {
super.intoTextColor(textView, paletteSwatch);
return this;
}
@Override
public GlidePalette<ModelType, TranscodeType> crossfade(boolean crossfade) {
super.crossfade(crossfade);
return this;
}
@Override
public GlidePalette<ModelType, TranscodeType> crossfade(boolean crossfade, int crossfadeSpeed) {
super.crossfade(crossfade, crossfadeSpeed);
return this;
}
public GlidePalette<ModelType, TranscodeType> setGlideListener(RequestListener<ModelType, TranscodeType> listener) {
this.callback = listener;
return this;
}
@Override
public GlidePalette<ModelType, TranscodeType> intoCallBack(GlidePalette.CallBack callBack) {
super.intoCallBack(callBack);
return this;
}
@Override
public GlidePalette<ModelType, TranscodeType> setPaletteBuilderInterceptor(PaletteBuilderInterceptor interceptor) {
super.setPaletteBuilderInterceptor(interceptor);
return this;
}
@Override
public GlidePalette<ModelType, TranscodeType> skipPaletteCache(boolean skipCache) {
super.skipPaletteCache(skipCache);
return this;
}
@Override
public boolean onException(Exception e, ModelType model, Target<TranscodeType> target, boolean isFirstResource) {
return this.callback != null && this.callback.onException(e, model, target, isFirstResource);
}
@Override
public boolean onResourceReady(TranscodeType resource, ModelType model, Target<TranscodeType> target, boolean isFromMemoryCache, boolean isFirstResource) {
boolean callbackResult = this.callback != null && this.callback.onResourceReady(resource, model, target, isFromMemoryCache, isFirstResource);
Bitmap b = null;
if (resource instanceof Bitmap) {
b = (Bitmap) resource;
} else if (resource instanceof GlideBitmapDrawable) {
b = ((GlideBitmapDrawable) resource).getBitmap();
} else if (target instanceof BitmapHolder) {
b = ((BitmapHolder) target).getBitmap();
}
if (b != null) {
start(b);
}
return callbackResult;
}
public interface BitmapHolder {
@Nullable
Bitmap getBitmap();
}
}