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