aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/glide
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/glide')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/glide/GlideUtils.kt27
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt41
2 files changed, 68 insertions, 0 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/glide/GlideUtils.kt b/app/src/main/kotlin/com/pitchedapps/frost/glide/GlideUtils.kt
new file mode 100644
index 00000000..6d2b3cda
--- /dev/null
+++ b/app/src/main/kotlin/com/pitchedapps/frost/glide/GlideUtils.kt
@@ -0,0 +1,27 @@
+package com.pitchedapps.frost.glide
+
+import com.bumptech.glide.RequestBuilder
+import com.bumptech.glide.load.MultiTransformation
+import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
+import com.bumptech.glide.load.resource.bitmap.CircleCrop
+import com.bumptech.glide.request.RequestOptions
+
+/**
+ * Created by Allan Wang on 28/12/17.
+ *
+ * Collection of transformations
+ * Each caller will generate a new one upon request
+ */
+object FrostGlide {
+ val roundCorner
+ get() = RoundCornerTransformation()
+ val circleCrop
+ get() = CircleCrop()
+}
+
+fun <T> RequestBuilder<T>.transform(vararg transformation: BitmapTransformation): RequestBuilder<T> =
+ when (transformation.size) {
+ 0 -> this
+ 1 -> apply(RequestOptions.bitmapTransform(transformation[0]))
+ else -> apply(RequestOptions.bitmapTransform(MultiTransformation(*transformation)))
+ }
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