aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt41
1 files changed, 41 insertions, 0 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt b/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt
new file mode 100644
index 00000000..5eded159
--- /dev/null
+++ b/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt
@@ -0,0 +1,41 @@
+package com.pitchedapps.frost.glide
+
+import android.graphics.*
+import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool
+import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
+import com.pitchedapps.frost.utils.Prefs
+import java.security.MessageDigest
+
+
+/**
+ * Created by Allan Wang on 27/12/17.
+ */
+class RoundCornerTransformation : BitmapTransformation() {
+
+ override fun updateDiskCacheKey(messageDigest: MessageDigest) {
+ messageDigest.update("FrostRoundCornerTransform-${Prefs.showRoundedIcons}".toByteArray())
+ }
+
+ override fun transform(pool: BitmapPool, toTransform: Bitmap, outWidth: Int, outHeight: Int): Bitmap {
+
+ val width = toTransform.width
+ val height = toTransform.height
+
+ val bitmap = pool.get(width, height, Bitmap.Config.ARGB_8888)
+ bitmap.setHasAlpha(true)
+
+ val radius = Math.min(width, height).toFloat() /
+ (if (Prefs.showRoundedIcons) 2f else 10f)
+
+ val canvas = Canvas(bitmap)
+ val paint = Paint()
+ paint.isAntiAlias = true
+ paint.shader = BitmapShader(toTransform, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
+ canvas.drawRoundRect(RectF(0f, 0f, width.toFloat(), height.toFloat()),
+ radius, radius, paint)
+
+ return bitmap
+ }
+
+
+} \ No newline at end of file