1 package com.bumptech.glide.provider; 2 3 import com.bumptech.glide.load.Encoder; 4 import com.bumptech.glide.load.ResourceDecoder; 5 import com.bumptech.glide.load.ResourceEncoder; 6 import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; 7 import com.bumptech.glide.load.model.ModelLoader; 8 9 import java.io.InputStream; 10 11 public class ChildLoadProvider<A, T, Z, R> implements LoadProvider<A, T, Z, R> { 12 private LoadProvider<A, T, Z, R> parent; 13 private ResourceDecoder<InputStream, Z> cacheDecoder; 14 private ResourceDecoder<T, Z> sourceDecoder; 15 private ResourceEncoder<Z> encoder; 16 private ResourceTranscoder<Z, R> transcoder; 17 private Encoder<T> sourceEncoder; 18 19 public ChildLoadProvider(LoadProvider<A, T, Z, R> parent) { 20 this.parent = parent; 21 } 22 23 @Override 24 public ModelLoader<A, T> getModelLoader() { 25 return parent.getModelLoader(); 26 } 27 28 public void setCacheDecoder(ResourceDecoder<InputStream, Z> cacheDecoder) { 29 this.cacheDecoder = cacheDecoder; 30 } 31 32 public void setSourceDecoder(ResourceDecoder<T, Z> sourceDecoder) { 33 this.sourceDecoder = sourceDecoder; 34 } 35 36 public void setEncoder(ResourceEncoder<Z> encoder) { 37 this.encoder = encoder; 38 } 39 40 public void setTranscoder(ResourceTranscoder<Z, R> transcoder) { 41 this.transcoder = transcoder; 42 } 43 44 public void setSourceEncoder(Encoder<T> sourceEncoder) { 45 this.sourceEncoder = sourceEncoder; 46 } 47 48 @Override 49 public ResourceDecoder<InputStream, Z> getCacheDecoder() { 50 if (cacheDecoder != null) { 51 return cacheDecoder; 52 } else { 53 return parent.getCacheDecoder(); 54 } 55 } 56 57 @Override 58 public ResourceDecoder<T, Z> getSourceDecoder() { 59 if (sourceDecoder != null) { 60 return sourceDecoder; 61 } else { 62 return parent.getSourceDecoder(); 63 } 64 } 65 66 @Override 67 public Encoder<T> getSourceEncoder() { 68 if (sourceEncoder != null) { 69 return sourceEncoder; 70 } else { 71 return parent.getSourceEncoder(); 72 } 73 } 74 75 @Override 76 public ResourceEncoder<Z> getEncoder() { 77 if (encoder != null) { 78 return encoder; 79 } else { 80 return parent.getEncoder(); 81 } 82 } 83 84 @Override 85 public ResourceTranscoder<Z, R> getTranscoder() { 86 if (transcoder != null) { 87 return transcoder; 88 } else { 89 return parent.getTranscoder(); 90 } 91 } 92 93 } 94