1package com.bumptech.glide.request.target; 2 3/** 4 * A simple {@link com.bumptech.glide.request.target.Target} base class with default (usually noop) implementations 5 * of non essential methods that allows the caller to specify an exact width/height. Typicaly use cases look something 6 * like this: 7 * <pre> 8 * <code> 9 * Glide.load("http://somefakeurl.com/fakeImage.jpeg") 10 * .asBitmap() 11 * .fitCenter() 12 * .into(new SimpleTarget<Bitmap>(250, 250) { 13 * 14 * {@literal @Override} 15 * public void onResourceReady(Bitmap resource, GlideAnimation<Bitmap> glideAnimation) { 16 * // Do something with bitmap here. 17 * } 18 * 19 * }); 20 * } 21 * </code> 22 * </pre> 23 * 24 * @param <Z> The type of resource that this target will receive. 25 */ 26public abstract class SimpleTarget<Z> extends BaseTarget<Z> { 27 private final int width; 28 private final int height; 29 30 /** 31 * Constructor for the target that assumes you will have called 32 * {@link com.bumptech.glide.GenericRequestBuilder#override(int, int)} on the request builder this target is given 33 * to. 34 * 35 * <p> 36 * Requests that load into this target will throw an {@link java.lang.IllegalArgumentException} if 37 * {@link com.bumptech.glide.GenericRequestBuilder#override(int, int)} was not called on the request builder. 38 * </p> 39 */ 40 public SimpleTarget() { 41 this(-1, -1); 42 } 43 44 /** 45 * Constructor for the target that takes the desired dimensions of the decoded and/or transformed resource. 46 * 47 * @param width The width in pixels of the desired resource. 48 * @param height The height in pixels of the desired resource. 49 */ 50 public SimpleTarget(int width, int height) { 51 this.width = width; 52 this.height = height; 53 } 54 55 /** 56 * Immediately calls the given callback with the sizes given in the constructor. 57 * 58 * @param cb {@inheritDoc} 59 */ 60 @Override 61 public final void getSize(SizeReadyCallback cb) { 62 if (width <= 0 || height <= 0) { 63 throw new IllegalArgumentException("Width and height must both be > 0, but given width: " + width + " and" 64 + " height: " + height + ", either provide dimensions in the constructor or call override()"); 65 } 66 cb.onSizeReady(width, height); 67 } 68} 69