Skip to content

Commit 549548f

Browse files
committed
remove unnecessary lateinit and add TODO
1 parent 7175325 commit 549548f

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

slider/src/main/java/io/monstarlab/mosaic/slider/FragmentedLinearDistribution.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package io.monstarlab.mosaic.slider
22

3+
//TODO refactor code to not use builder
34
public class FragmentedLinearDistribution private constructor(
45
equationMap: Map<Float, LinearEquation>,
56
) : SliderValueDistribution {
67
private var _equationList: MutableList<RangedLinearEquation> = mutableListOf()
78
public val equationList: List<RangedLinearEquation> get() = _equationList.toList()
89

9-
private lateinit var valueRange: ClosedFloatingPointRange<Float>
10+
private var valueRange: ClosedFloatingPointRange<Float>
1011

1112
init {
1213
var previous: Pair<Float, LinearEquation>? = null
@@ -48,10 +49,11 @@ public class FragmentedLinearDistribution private constructor(
4849

4950
private fun valueFromOffset(offset: Float): Float =
5051
_equationList.firstOrNull { offset in it.offsetRange }?.equation?.valueFromOffset(offset)
51-
?: 0f
52+
?: if (offset > 1f) 1f else 0f
5253

5354
private fun offsetFromValue(value: Float): Float =
54-
_equationList.firstOrNull { value in it.valueRange }?.equation?.offsetFromValue(value) ?: 0f
55+
_equationList.firstOrNull { value in it.valueRange }?.equation?.offsetFromValue(value)
56+
?: if (value > 1f) 1f else 0f
5557

5658

5759
public class Builder {
@@ -73,20 +75,19 @@ public class FragmentedLinearDistribution private constructor(
7375
offsetRangeStart: Float,
7476
offsetRangeEnd: Float,
7577
initialSensitivity: Float
76-
) {
78+
): Builder = apply {
7779
rangeStart = offsetRangeStart
7880
rangeEnd = offsetRangeEnd
7981
sliceAt(initialSensitivity, fractionalValue(rangeStart))
8082
}
8183

82-
8384
private fun fractionalValue(value: Float) = value.valueToFraction(rangeStart, rangeEnd)
8485

8586
public fun sliceAt(
8687
sensitivity: Float,
8788
position: Float,
8889
): Builder = apply {
89-
val relativePosition = fractionalValue(position)
90+
val relativePosition = fractionalValue(position)
9091
if (equationRangeStartMap.isEmpty() && relativePosition != 0f) {
9192
throw FirstValueNotZeroException()
9293
}
@@ -125,4 +126,5 @@ public class FragmentedLinearDistribution private constructor(
125126

126127
public class OverlappingRangeException :
127128
Exception("can't add overlapping ranges with different sensitivity")
129+
128130
}

0 commit comments

Comments
 (0)