annotate app/src/main/java/com/bartsent/simpleresizer/lib/getScaledInstance.kt @ 7:9374d044a132 concur

Concurrency attempt, NOT WORKING.
author David Barts <n5jrn@me.com>
date Wed, 17 Feb 2021 07:24:26 -0800
parents e8059b166de1
children 884092efe31a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
1 package com.bartsent.simpleresizer.lib
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
2
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
3 import android.graphics.Bitmap
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
4 import android.graphics.Canvas
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
5 import android.graphics.Matrix
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
6
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
7 private data class IndexWeight(var index: Int, var weight: Double)
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
8
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
9 fun Bitmap.getScaledInstance(newWidth: Int, newHeight: Int, kernel: ScalingKernel = LanczosKernel): Bitmap {
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
10 if (newWidth <= 0)
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
11 throw IllegalArgumentException("invalid width: $newWidth")
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
12 if (newHeight <= 0)
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
13 throw IllegalArgumentException("invalid height: $newHeight")
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
14 if (width == newWidth && height == newHeight)
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
15 return Bitmap.createBitmap(this)
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
16 val input = if (config == Bitmap.Config.ARGB_8888)
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
17 this
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
18 else {
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
19 Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888).also {
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
20 Canvas(it).drawBitmap(this, Matrix(), null)
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
21 }
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
22 }
7
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
23 Resizer().use { resize ->
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
24 if (width != newWidth) {
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
25 if (height != newHeight)
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
26 return resize.vertical(resize.horizontal(input, newWidth, kernel), newHeight, kernel)
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
27 else
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
28 return resize.horizontal(input, newWidth, kernel)
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
29 } else {
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
30 return resize.vertical(input, newHeight, kernel)
9374d044a132 Concurrency attempt, NOT WORKING.
David Barts <n5jrn@me.com>
parents: 6
diff changeset
31 }
6
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
32 }
e8059b166de1 Lanczos works, but is painfully slow.
David Barts <n5jrn@me.com>
parents:
diff changeset
33 }