UIS-3 | Kamalesh | Added icon code functionality in Scratch Card (#502)

This commit is contained in:
Kamalesh Garnayak
2024-07-16 14:45:32 +05:30
committed by GitHub
parent efbe420ca2
commit a2f219f896

View File

@@ -9,6 +9,7 @@ package com.navi.uitron.render
import android.graphics.Bitmap
import android.view.MotionEvent
import androidx.appcompat.content.res.AppCompatResources
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.spring
import androidx.compose.foundation.Canvas
@@ -39,6 +40,7 @@ import androidx.compose.ui.graphics.asAndroidBitmap
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.drawscope.clipPath
import androidx.compose.ui.input.pointer.pointerInteropFilter
import androidx.compose.ui.layout.layoutId
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.IntSize
@@ -47,6 +49,7 @@ import coil.compose.AsyncImagePainter
import coil.compose.rememberAsyncImagePainter
import coil.request.ImageRequest
import coil.size.Size
import com.navi.uitron.UiTronSdkManager
import com.navi.uitron.model.action.MvelAction
import com.navi.uitron.model.data.ScratchCardData
import com.navi.uitron.model.data.ScratchPath
@@ -54,6 +57,7 @@ import com.navi.uitron.model.data.UiTronData
import com.navi.uitron.model.ui.ScratchCardProperty
import com.navi.uitron.model.ui.UiTronView
import com.navi.uitron.utils.BitmapFacade
import com.navi.uitron.utils.EMPTY
import com.navi.uitron.utils.KEY_MVEL_ACTION
import com.navi.uitron.utils.KEY_PROPERTY
import com.navi.uitron.utils.KEY_UI_TRON_DATA
@@ -62,6 +66,7 @@ import com.navi.uitron.utils.orFalse
import com.navi.uitron.utils.orTrue
import com.navi.uitron.utils.orValue
import com.navi.uitron.utils.setHeight
import com.navi.uitron.utils.setTag
import com.navi.uitron.utils.setWidth
import com.navi.uitron.viewmodel.UiTronViewModel
@@ -140,19 +145,32 @@ class ScratchCardRenderer(
else -> Unit
}
}
rememberAsyncImagePainter(
model =
ImageRequest.Builder(LocalContext.current)
.data(property.iconUrl)
.size(Size.ORIGINAL)
.build(),
onState = ::updateOuterImageBitmap
)
val uiTronProvider = remember { UiTronSdkManager.getDependencyProvider() }
val isImagePresentLocally by
remember(property.iconUrl) {
mutableStateOf(uiTronProvider.getIconResourceId(property.iconUrl))
}
isImagePresentLocally?.let {
overlayImage =
AppCompatResources.getDrawable(LocalContext.current, it)
?.toBitmap()
?.copy(Bitmap.Config.ARGB_8888, true)
?.asImageBitmap()
}
?: run {
rememberAsyncImagePainter(
model =
ImageRequest.Builder(LocalContext.current)
.data(property.iconUrl)
.size(Size.ORIGINAL)
.build(),
onState = ::updateOuterImageBitmap
)
}
var imageScale by remember { mutableFloatStateOf(1f) }
val imageScaleAnimation by
animateFloatAsState(targetValue = imageScale, animationSpec = spring(), label = "")
animateFloatAsState(targetValue = imageScale, animationSpec = spring(), label = EMPTY)
if (property.visible.orTrue()) {
overlayImage?.let {
@@ -169,11 +187,13 @@ class ScratchCardRenderer(
modifier =
Modifier.setWidth(property.width)
.setHeight(property.height)
.scale(imageScaleAnimation),
.scale(imageScaleAnimation)
.setTag(property)
.layoutId(property.layoutId.orEmpty()),
currentPathThickness = property.pathThickness ?: 150f,
property = property
) {
childrenComposeViews.forEachIndexed() { _, it ->
childrenComposeViews.forEachIndexed { _, it ->
if (it.data.isNullOrEmpty()) {
uiTronRenderer.Render(composeViews = listOf(it))
} else {