diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/SpannableTextRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/SpannableTextRenderer.kt index f54c088..c9b2330 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/SpannableTextRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/SpannableTextRenderer.kt @@ -281,12 +281,14 @@ class SpannableTextRenderer : Renderer { fontWeight = uiTronDependencyProvider.getFontWeight(textProperty.fontWeight), fontSize = textProperty.fontSize?.sp ?: 14.sp, brush = - getBrush( - animatedProperties = animatedProperties, - brushData = brushData, - height = textHeight?.toFloat(), - width = textWidth?.toFloat() - ), + brushData?.let { + getBrush( + animatedProperties = animatedProperties, + brushData = it, + height = textHeight?.toFloat(), + width = textWidth?.toFloat() + ) + }, textDecoration = getTextDecoration(textProperty.textDecoration), letterSpacing = textProperty.letterSpacing?.sp ?: 0.sp, ) diff --git a/navi-uitron/src/main/java/com/navi/uitron/utils/Ext.kt b/navi-uitron/src/main/java/com/navi/uitron/utils/Ext.kt index 487b9e0..c887ca9 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/utils/Ext.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/utils/Ext.kt @@ -499,35 +499,35 @@ fun getTileMode(tileMode: String?): TileMode { } fun getBrush( - brushData: BrushData?, + brushData: BrushData, height: Float? = Float.POSITIVE_INFINITY, width: Float? = Float.POSITIVE_INFINITY, animatedProperties: AnimatedProperties? = null ): Brush { - brushData ?: return Brush.horizontalGradient(colorStops = emptyArray()) + val colorStops: Array>? = + brushData.colorStops?.map { Pair(it.first, it.second.hexToComposeColor) }?.toTypedArray() - val colorStops = - brushData.colorStops?.map { it.first to it.second.hexToComposeColor }?.toTypedArray() - ?: emptyArray() + val finalColorStops = colorStops as Array> return when (brushData.brushType) { BrushType.HORIZONTAL.name -> - horizontalBrush(colorStops, width, animatedProperties, brushData) + horizontalBrush(finalColorStops, width, animatedProperties, brushData) BrushType.LINEAR.name -> - linearBrush(colorStops, width, height, animatedProperties, brushData) - BrushType.RADIAL.name -> radialBrush(colorStops, brushData) - BrushType.SWEEP.name -> sweepBrush(colorStops, brushData) - BrushType.VERTICAL.name -> verticalBrush(colorStops, height, animatedProperties, brushData) + linearBrush(finalColorStops, width, height, animatedProperties, brushData) + BrushType.RADIAL.name -> radialBrush(finalColorStops, brushData) + BrushType.SWEEP.name -> sweepBrush(finalColorStops, brushData) + BrushType.VERTICAL.name -> + verticalBrush(finalColorStops, height, animatedProperties, brushData) else -> Brush.verticalGradient( - colorStops = emptyArray(), + colorStops = finalColorStops, tileMode = getTileMode(brushData.tileMode) ) } } private fun horizontalBrush( - colorStops: Array>, + colorStops: Array>, width: Float?, animatedProperties: AnimatedProperties?, brushData: BrushData? @@ -543,7 +543,7 @@ private fun horizontalBrush( } private fun verticalBrush( - colorStops: Array>, + colorStops: Array>, height: Float?, animatedProperties: AnimatedProperties?, brushData: BrushData? @@ -559,7 +559,7 @@ private fun verticalBrush( } private fun linearBrush( - colorStops: Array>, + colorStops: Array>, width: Float?, height: Float?, animatedProperties: AnimatedProperties?, @@ -595,7 +595,7 @@ private fun linearBrush( ) } -private fun radialBrush(colorStops: Array>, brushData: BrushData?): Brush { +private fun radialBrush(colorStops: Array>, brushData: BrushData?): Brush { return Brush.radialGradient( colorStops = colorStops, tileMode = getTileMode(brushData?.tileMode), @@ -605,7 +605,7 @@ private fun radialBrush(colorStops: Array>, brushData: BrushD ) } -private fun sweepBrush(colorStops: Array>, brushData: BrushData?): Brush { +private fun sweepBrush(colorStops: Array>, brushData: BrushData?): Brush { return Brush.sweepGradient( colorStops = colorStops, center =