From e5d4695c346cb14e5627d657cd23cb0ffd5bc9d5 Mon Sep 17 00:00:00 2001 From: Sohan Reddy Atukula Date: Fri, 20 Dec 2024 13:33:59 +0530 Subject: [PATCH] NTP-18357 | Sohan Reddy | SC Renderer Optimization (#659) --- .../navi/uitron/render/ScratchCardRenderer.kt | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/ScratchCardRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/ScratchCardRenderer.kt index c6140a9..6409960 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/ScratchCardRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/ScratchCardRenderer.kt @@ -131,7 +131,21 @@ class ScratchCardRenderer( uiTronViewModel: UiTronViewModel, ) { - var overlayImage by remember { mutableStateOf(null) } + val uiTronProvider = remember { UiTronSdkManager.getDependencyProvider() } + val isImagePresentLocally by + remember(property.iconUrl) { + mutableStateOf(uiTronProvider.getIconResourceId(property.iconUrl)) + } + val context = LocalContext.current + val localImageBitmap by remember { + mutableStateOf( + AppCompatResources.getDrawable(context, isImagePresentLocally ?: 0) + ?.toBitmap() + ?.copy(Bitmap.Config.ARGB_8888, true) + ?.asImageBitmap() + ) + } + var overlayImage by remember { mutableStateOf(localImageBitmap) } fun updateOuterImageBitmap(state: AsyncImagePainter.State) { when (state) { @@ -145,28 +159,16 @@ class ScratchCardRenderer( else -> Unit } } - 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() + if (overlayImage == null) { + rememberAsyncImagePainter( + model = + ImageRequest.Builder(LocalContext.current) + .data(property.iconUrl) + .size(Size.ORIGINAL) + .build(), + onState = ::updateOuterImageBitmap + ) } - ?: 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 @@ -237,9 +239,10 @@ class ScratchCardRenderer( ImageBitmap(width = scratchCardSize.width, height = scratchCardSize.height, it) } - val nativeCanvas = bitmap?.let { androidx.compose.ui.graphics.Canvas(it) } + val nativeCanvas = + remember(bitmap) { bitmap?.let { androidx.compose.ui.graphics.Canvas(it) } } - val totalArea = scratchCardSize.width * scratchCardSize.height + val totalArea = remember { scratchCardSize.width * scratchCardSize.height } val pathState = remember { mutableStateOf(ScratchPath(path = Path())) }