1b71bf819c59c4b8ea5e6a8b0929f5057ba6a01e1Sam Juddpackage com.bumptech.glide.util;
21060a63023f1e07fd579d0edd94256560f0eab7dSam Judd
3fcca8d79a3a04e71924d06799de2af46c923a84eSam Juddimport android.annotation.TargetApi;
4a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Juddimport android.graphics.Bitmap;
5a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Juddimport android.os.Build;
6a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd
71060a63023f1e07fd579d0edd94256560f0eab7dSam Juddpublic class Util {
896006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    private static final char[] hexArray = "0123456789abcdef".toCharArray();
996006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    private static final char[] sha256Chars = new char[64]; //32 bytes from sha-256 -> 64 hex chars
101060a63023f1e07fd579d0edd94256560f0eab7dSam Judd
1196006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    public static String sha256BytesToHex(byte[] bytes) {
1296006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd        return bytesToHex(bytes, sha256Chars);
1396006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    }
1496006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd
1596006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    // Taken from:
1696006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    // http://stackoverflow.com/questions/9655181/convert-from-byte-array-to-hex-string-in-java/9655275#9655275
1796006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    private static String bytesToHex(byte[] bytes, char[] hexChars) {
1896006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd        int v;
1996006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd        for ( int j = 0; j < bytes.length; j++ ) {
2096006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd            v = bytes[j] & 0xFF;
2196006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd            hexChars[j * 2] = hexArray[v >>> 4];
2296006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
231060a63023f1e07fd579d0edd94256560f0eab7dSam Judd        }
2496006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd        return new String(hexChars);
251060a63023f1e07fd579d0edd94256560f0eab7dSam Judd    }
26a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd
27a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd    /**
28a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd     * Returns the in memory size of the given {@link Bitmap}.
29a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd     */
30fcca8d79a3a04e71924d06799de2af46c923a84eSam Judd    @TargetApi(19)
31a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd    public static int getSize(Bitmap bitmap) {
32a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd        if (Build.VERSION.SDK_INT >= 19) {
33a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd            return bitmap.getAllocationByteCount();
34a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd        } else {
35a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd            return bitmap.getHeight() * bitmap.getRowBytes();
36a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd        }
37a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd    }
38a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd
391060a63023f1e07fd579d0edd94256560f0eab7dSam Judd}
40