Added fix for ticketShape which was causing it to break when using an… (#224)
This commit is contained in:
committed by
GitHub
parent
5508755fde
commit
05c8d7a368
@@ -361,7 +361,16 @@ data class Cuts(
|
||||
val right: List<Cut>? = null,
|
||||
val bottom: List<Cut>? = null,
|
||||
val left: List<Cut>? = null
|
||||
)
|
||||
): Cloneable {
|
||||
public override fun clone(): Cuts {
|
||||
return Cuts(
|
||||
top = top?.map { it.copy() },
|
||||
right = right?.map { it.copy() },
|
||||
bottom = bottom?.map { it.copy() },
|
||||
left = left?.map { it.copy() }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
data class Cut(
|
||||
val centerRatio: Float,
|
||||
|
||||
@@ -81,7 +81,7 @@ object ShapeUtil {
|
||||
cornerRadiusBottom = shape.cornerRadiusBottom?.dp?.toPx() ?: 0.dp.toPx(),
|
||||
ticketSplitRatio = shape.ticketSplitRatio ?: 0.0f,
|
||||
ticketSplitRadius = shape.ticketSplitRadius?.dp?.toPx() ?: 0.dp.toPx(),
|
||||
cuts = convertRadii(shape.cuts)
|
||||
cuts = shape.cuts
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.navi.uitron.utils.shapes
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.geometry.Rect
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.graphics.Outline
|
||||
@@ -10,7 +9,6 @@ import androidx.compose.ui.unit.Density
|
||||
import androidx.compose.ui.unit.LayoutDirection
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.navi.uitron.model.ui.Cuts
|
||||
import toPx
|
||||
|
||||
class TicketShape(private val cornerRadius: Float,private val cornerRadiusTop:Float,private val cornerRadiusBottom:Float, private val ticketSplitRatio: Float, private val ticketSplitRadius: Float, private val cuts: Cuts? = null) :
|
||||
Shape {
|
||||
@@ -20,32 +18,47 @@ class TicketShape(private val cornerRadius: Float,private val cornerRadiusTop:Fl
|
||||
density: Density
|
||||
): Outline {
|
||||
return Outline.Generic(
|
||||
path = drawTicket(size = size, cornerRadius = cornerRadius,cornerRadiusTop=cornerRadiusTop,cornerRadiusBottom=cornerRadiusBottom, ticketSplitRatio = ticketSplitRatio, ticketSplitRadius = ticketSplitRadius, cuts = cuts)
|
||||
path = drawTicket(
|
||||
size = size,
|
||||
cornerRadius = cornerRadius,
|
||||
cornerRadiusTop = cornerRadiusTop,
|
||||
cornerRadiusBottom = cornerRadiusBottom,
|
||||
ticketSplitRatio = ticketSplitRatio,
|
||||
ticketSplitRadius = ticketSplitRadius,
|
||||
cuts = convertRadii(cuts?.clone(), density)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun convertRadii(cuts: Cuts?): Cuts?{
|
||||
fun convertRadii(cuts: Cuts?, density: Density): Cuts?{
|
||||
cuts?.let {
|
||||
it.top?.forEach {cut ->
|
||||
cut.radius = cut.radius.dp.toPx()
|
||||
cut.radius = with(density) { cut.radius.dp.toPx() }
|
||||
}
|
||||
it.bottom?.forEach {cut ->
|
||||
cut.radius = cut.radius.dp.toPx()
|
||||
cut.radius = with(density) { cut.radius.dp.toPx() }
|
||||
}
|
||||
it.left?.forEach {cut ->
|
||||
cut.radius = cut.radius.dp.toPx()
|
||||
cut.radius = with(density) { cut.radius.dp.toPx() }
|
||||
}
|
||||
it.right?.forEach {cut ->
|
||||
cut.radius = cut.radius.dp.toPx()
|
||||
cut.radius = with(density) { cut.radius.dp.toPx() }
|
||||
}
|
||||
return cuts
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun drawTicket(size: Size, cornerRadius: Float,cornerRadiusTop: Float,cornerRadiusBottom: Float, ticketSplitRatio: Float, ticketSplitRadius: Float, cuts: Cuts?): Path {
|
||||
fun drawTicket(
|
||||
size: Size,
|
||||
cornerRadius: Float,
|
||||
cornerRadiusTop: Float,
|
||||
cornerRadiusBottom: Float,
|
||||
ticketSplitRatio: Float,
|
||||
ticketSplitRadius: Float,
|
||||
cuts: Cuts?
|
||||
): Path {
|
||||
var ticketCornerRadiusTop = cornerRadiusTop
|
||||
var ticketCornerRadiusBottom = cornerRadiusBottom
|
||||
if (cornerRadiusTop == 0f && cornerRadiusBottom == 0f) {
|
||||
|
||||
Reference in New Issue
Block a user