1da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Juddpackage com.bumptech.glide.request.target; 2da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 3da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Juddimport android.annotation.TargetApi; 4da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Juddimport android.graphics.Canvas; 5da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Juddimport android.graphics.ColorFilter; 6da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Juddimport android.graphics.PorterDuff; 7da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Juddimport android.graphics.Rect; 8da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Juddimport android.graphics.drawable.Drawable; 9e7319b67364bd0ac6306bc7470a43d4a31600c1aRobert Pappimport android.os.Build; 10da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 115c3697fff7866246e107030b8c92359d4ebc1cf3Sam Juddimport com.bumptech.glide.load.resource.drawable.GlideDrawable; 125c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd 13da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd/** 14da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd * A wrapper drawable to square the wrapped drawable so that it expands to fill a square with exactly the given side 15da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd * length. The goal of this drawable is to ensure that square thumbnail drawables always match the size of the view 16da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd * they will be displayed in to avoid a costly requestLayout call. This class should not be used with views or drawables 17da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd * that are not square. 18da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd */ 195c3697fff7866246e107030b8c92359d4ebc1cf3Sam Juddpublic class SquaringDrawable extends GlideDrawable { 205c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd private final GlideDrawable wrapped; 215c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd private final int side; 22da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 235c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd public SquaringDrawable(GlideDrawable wrapped, int side) { 24da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd this.wrapped = wrapped; 25da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd this.side = side; 26da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 27da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 28da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 29da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void setBounds(int left, int top, int right, int bottom) { 30da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd super.setBounds(left, top, right, bottom); 31da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.setBounds(left, top, right, bottom); 32da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 33da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 34da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 35da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void setBounds(Rect bounds) { 36da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd super.setBounds(bounds); 37da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.setBounds(bounds); 38da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 39ead25618fdd9d1befa76a2ea1dbd66f9741c9af6Robert Papp 40ead25618fdd9d1befa76a2ea1dbd66f9741c9af6Robert Papp @Override 41da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void setChangingConfigurations(int configs) { 42da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.setChangingConfigurations(configs); 43da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 44da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 45da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 46da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public int getChangingConfigurations() { 47da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.getChangingConfigurations(); 48da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 49da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 50da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 51da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void setDither(boolean dither) { 52da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.setDither(dither); 53da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 54da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 55da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 56da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void setFilterBitmap(boolean filter) { 57da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.setFilterBitmap(filter); 58da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 59da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 60e7319b67364bd0ac6306bc7470a43d4a31600c1aRobert Papp @TargetApi(Build.VERSION_CODES.HONEYCOMB) 61da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 62da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public Callback getCallback() { 63da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.getCallback(); 64da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 65da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 66e7319b67364bd0ac6306bc7470a43d4a31600c1aRobert Papp @TargetApi(Build.VERSION_CODES.KITKAT) 67da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 68da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public int getAlpha() { 69da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.getAlpha(); 70da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 71da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 72da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 73da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void setColorFilter(int color, PorterDuff.Mode mode) { 74da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.setColorFilter(color, mode); 75da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 76da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 77da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 78da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void clearColorFilter() { 79da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.clearColorFilter(); 80da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 81da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 82da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 83da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public Drawable getCurrent() { 84da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.getCurrent(); 85da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 86da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 87da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 88da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public boolean setVisible(boolean visible, boolean restart) { 89da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.setVisible(visible, restart); 90da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 91da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 92da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 93da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public int getIntrinsicWidth() { 94da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return side; 95da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 96da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 97da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 98da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public int getIntrinsicHeight() { 99da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return side; 100da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 101da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 102da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 103da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public int getMinimumWidth() { 104da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.getMinimumWidth(); 105da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 106da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 107da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 108da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public int getMinimumHeight() { 109da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.getMinimumHeight(); 110da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 111da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 112da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 113da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public boolean getPadding(Rect padding) { 114da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.getPadding(padding); 115da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 116da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 117da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 118da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void invalidateSelf() { 119fe090f50f3040f4d478143a3e0ffa8cdf813fefcSam Judd super.invalidateSelf(); 120da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.invalidateSelf(); 121da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 122da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 123da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 124da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void unscheduleSelf(Runnable what) { 125fe090f50f3040f4d478143a3e0ffa8cdf813fefcSam Judd super.unscheduleSelf(what); 126da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.unscheduleSelf(what); 127da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 128da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 129da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 130da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void scheduleSelf(Runnable what, long when) { 131fe090f50f3040f4d478143a3e0ffa8cdf813fefcSam Judd super.scheduleSelf(what, when); 132da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.scheduleSelf(what, when); 133da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 134da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 135da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 136da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void draw(Canvas canvas) { 137da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.draw(canvas); 138da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 139da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 140da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 141da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void setAlpha(int i) { 142da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.setAlpha(i); 143da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 144da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 145da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 146da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public void setColorFilter(ColorFilter colorFilter) { 147da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd wrapped.setColorFilter(colorFilter); 148da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 149da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd 150da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd @Override 151da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd public int getOpacity() { 152da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd return wrapped.getOpacity(); 153da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd } 1545c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd 1555c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd @Override 1565c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd public boolean isAnimated() { 1575c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd return wrapped.isAnimated(); 1585c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd } 1595c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd 1605c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd @Override 1615c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd public void setLoopCount(int loopCount) { 1625c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd wrapped.setLoopCount(loopCount); 1635c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd } 1645c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd 1655c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd @Override 1665c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd public void start() { 1675c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd wrapped.start(); 1685c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd } 1695c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd 1705c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd @Override 1715c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd public void stop() { 1725c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd wrapped.stop(); 1735c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd } 1745c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd 1755c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd @Override 1765c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd public boolean isRunning() { 1775c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd return wrapped.isRunning(); 1785c3697fff7866246e107030b8c92359d4ebc1cf3Sam Judd } 179da4ce795221e0fd9a3d11c84f018b3b5d6a10421Sam Judd} 180