From 027d702a365a4c3f6eb51187e40ac9abca8934a1 Mon Sep 17 00:00:00 2001 From: Hitesh Kumar Date: Thu, 15 Feb 2024 15:27:09 +0530 Subject: [PATCH] TP-56907 add include font padding property in text renderer (#330) --- ...avi.uitron.render_TextRendererTest_test.png | Bin 9249 -> 129 bytes .../model/ui/OutlinedTextFieldProperty.kt | 3 ++- .../navi/uitron/model/ui/SpannableProperty.kt | 3 ++- .../com/navi/uitron/model/ui/TextProperty.kt | 4 +++- .../uitron/render/CustomTextFieldRenderer.kt | 6 +++++- .../navi/uitron/render/JackpotRendererV2.kt | 6 +++++- .../com/navi/uitron/render/OtpBoxRenderer.kt | 6 +++++- .../uitron/render/OutlinedTextFieldRenderer.kt | 6 +++++- .../uitron/render/SlideToActButtonRenderer.kt | 6 +++++- .../uitron/render/SpannableTextRenderer.kt | 11 +++++++++-- .../com/navi/uitron/render/TextRenderer.kt | 4 ++++ .../src/main/java/com/navi/uitron/utils/Ext.kt | 6 +++++- 12 files changed, 50 insertions(+), 11 deletions(-) diff --git a/app/src/test/snapshots/images/com.navi.uitron.render_TextRendererTest_test.png b/app/src/test/snapshots/images/com.navi.uitron.render_TextRendererTest_test.png index e02c9d18a1b46c43ecf20739354e03389c87b4b2..506ca14e88a2ad30e3f882749495321cc2e8ee8d 100644 GIT binary patch literal 129 zcmWN?%MrpL5CG6SRnUNe-SAB}%L2lTN=7gTtJimVS9#AqUb3xq&O@ntU$;k{+yC}S z8;_@&XJK`L7(L6`2(3G+DZn{}>`VySqpQX+VAPJ0kTb-xGob;rxO+%8N5iC3NP);! M5VL=ajM@kB1G#o5B>(^b literal 9249 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 diff --git a/navi-uitron/src/main/java/com/navi/uitron/model/ui/OutlinedTextFieldProperty.kt b/navi-uitron/src/main/java/com/navi/uitron/model/ui/OutlinedTextFieldProperty.kt index f9bd547..8b99428 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/model/ui/OutlinedTextFieldProperty.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/model/ui/OutlinedTextFieldProperty.kt @@ -59,7 +59,8 @@ data class OutlinedTextFieldTextStyle( val color: String? = null, val fontFamily: String? = null, val fontWeight: String? = null, - val textAlign: String? = null + val textAlign: String? = null, + var includeFontPadding: Boolean? = null ) data class OutlinedTextFieldColors( diff --git a/navi-uitron/src/main/java/com/navi/uitron/model/ui/SpannableProperty.kt b/navi-uitron/src/main/java/com/navi/uitron/model/ui/SpannableProperty.kt index 4599f07..a596022 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/model/ui/SpannableProperty.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/model/ui/SpannableProperty.kt @@ -2,7 +2,8 @@ package com.navi.uitron.model.ui data class SpannableProperty( var textAlign: String? = null, - val spanProperty: List + val spanProperty: List, + var includeFontPadding: Boolean? = null ) : BaseProperty() data class SpanProperty( diff --git a/navi-uitron/src/main/java/com/navi/uitron/model/ui/TextProperty.kt b/navi-uitron/src/main/java/com/navi/uitron/model/ui/TextProperty.kt index 2630c0b..6d2acf8 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/model/ui/TextProperty.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/model/ui/TextProperty.kt @@ -26,7 +26,8 @@ data class TextProperty( var maxLines : Int? = null, var textBrushData: BrushData? = null, var valueTransformation: OutlinedTextFieldValueTransformation? = null, - var textShadow: TextShadow? = null + var textShadow: TextShadow? = null, + var includeFontPadding: Boolean? = null ) : BaseProperty() { override fun copyNonNullFrom(property: BaseProperty?) { super.copyNonNullFrom(property) @@ -45,6 +46,7 @@ data class TextProperty( textProperty?.maxLines?.let { maxLines = it } textProperty?.textBrushData?.let { textBrushData = it } textProperty?.valueTransformation?.let { valueTransformation = it } + textProperty?.includeFontPadding?.let { includeFontPadding = it } } data class TextShadow( diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/CustomTextFieldRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/CustomTextFieldRenderer.kt index f29bb34..9da20d7 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/CustomTextFieldRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/CustomTextFieldRenderer.kt @@ -41,6 +41,7 @@ import androidx.compose.ui.platform.LocalTextToolbar import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.TextToolbar import androidx.compose.ui.platform.TextToolbarStatus +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp @@ -287,7 +288,10 @@ class CustomTextFieldRenderer( fontFamily = UiTronSdkManager.getDependencyProvider() .getFontFamily(property.inputTextProperty?.textStyle?.fontFamily), fontWeight = UiTronSdkManager.getDependencyProvider() - .getFontWeight(property.inputTextProperty?.textStyle?.fontWeight) + .getFontWeight(property.inputTextProperty?.textStyle?.fontWeight), + platformStyle = PlatformTextStyle( + includeFontPadding = property.inputTextProperty?.textStyle?.includeFontPadding.orTrue() + ) ), keyboardOptions = KeyboardOptions( capitalization = KeyboardUtil.getKeyboardCapitalization(property.keyboardOptions?.capitalization), diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/JackpotRendererV2.kt b/navi-uitron/src/main/java/com/navi/uitron/render/JackpotRendererV2.kt index 3e9d1b7..77b41b0 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/JackpotRendererV2.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/JackpotRendererV2.kt @@ -31,6 +31,7 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.layoutId import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp @@ -212,7 +213,10 @@ class JackpotTextRendererV2 : Renderer { textDecoration = getTextDecoration(property.textProperty?.textDecoration), letterSpacing = property.textProperty?.letterSpacing?.sp ?: 0.sp, style = TextStyle( - textAlign = TextAlign.Center + textAlign = TextAlign.Center, + platformStyle = PlatformTextStyle( + includeFontPadding = property.textProperty?.includeFontPadding.orTrue() + ) ), modifier = Modifier .widthIn( diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/OtpBoxRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/OtpBoxRenderer.kt index c4a4086..868a27b 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/OtpBoxRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/OtpBoxRenderer.kt @@ -40,6 +40,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextAlign @@ -344,7 +345,10 @@ class OtpBoxRenderer : Renderer { .getFontFamily(property.inputTextProperty?.textStyle?.fontFamily), fontWeight = UiTronSdkManager.getDependencyProvider() .getFontWeight(property.inputTextProperty?.textStyle?.fontWeight), - textAlign = TextAlign.Center + textAlign = TextAlign.Center, + platformStyle = PlatformTextStyle( + includeFontPadding = property.inputTextProperty?.textStyle?.includeFontPadding.orTrue() + ) ), keyboardOptions = KeyboardOptions( capitalization = KeyboardUtil.getKeyboardCapitalization(property.keyboardOptions?.capitalization), diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/OutlinedTextFieldRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/OutlinedTextFieldRenderer.kt index c9d21b8..a202608 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/OutlinedTextFieldRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/OutlinedTextFieldRenderer.kt @@ -24,6 +24,7 @@ import androidx.compose.ui.layout.layoutId import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp @@ -149,7 +150,10 @@ class OutlinedTextFieldRenderer( fontFamily = UiTronSdkManager.getDependencyProvider() .getFontFamily(property.textStyle.fontFamily), fontWeight = UiTronSdkManager.getDependencyProvider() - .getFontWeight(property.textStyle.fontWeight) + .getFontWeight(property.textStyle.fontWeight), + platformStyle = PlatformTextStyle( + includeFontPadding = property.textStyle.includeFontPadding.orTrue() + ) ), keyboardOptions = KeyboardOptions( capitalization = KeyboardUtil.getKeyboardCapitalization(property.keyboardOptions?.capitalization), diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/SlideToActButtonRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/SlideToActButtonRenderer.kt index 3460557..b096917 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/SlideToActButtonRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/SlideToActButtonRenderer.kt @@ -47,6 +47,7 @@ import androidx.compose.ui.layout.layoutId import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.IntSize @@ -368,7 +369,10 @@ class SlideToActButtonRenderer( .layoutId(property.layoutId.orEmpty()) .alpha(visibility), style = TextStyle( - brush = shimmerBrush(showShimmer = showShimmer, property.shimmerColors) + brush = shimmerBrush(showShimmer = showShimmer, property.shimmerColors), + platformStyle = PlatformTextStyle( + includeFontPadding = property.textProperty?.includeFontPadding.orTrue() + ) ) ) AnimatedVisibility( 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 ec11a69..df41e71 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 @@ -10,6 +10,7 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.layoutId import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.buildAnnotatedString @@ -172,7 +173,10 @@ class SpannableTextRenderer : Renderer { id = property.layoutId.orEmpty() )}, style = TextStyle( - textAlign = getTextAlignment(property.textAlign) + textAlign = getTextAlignment(property.textAlign), + platformStyle = PlatformTextStyle( + includeFontPadding = property.includeFontPadding.orTrue() + ) ) ) } ?: run { @@ -197,7 +201,10 @@ class SpannableTextRenderer : Renderer { .alpha(property.alpha ?: 1.0f) }, style = TextStyle( - textAlign = getTextAlignment(property.textAlign) + textAlign = getTextAlignment(property.textAlign), + platformStyle = PlatformTextStyle( + includeFontPadding = property.includeFontPadding.orTrue() + ) ), onClick = { offset -> spannableData?.spanData?.forEach { spanData -> diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/TextRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/TextRenderer.kt index ae642c2..61695b5 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/TextRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/TextRenderer.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.layout.layoutId import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.TextUnit @@ -123,6 +124,9 @@ class TextRenderer : Renderer { dpToPx(property.textShadow?.offset?.y.orZero()) ), blurRadius = dpToPx(property.textShadow?.blurRadius.orZero()) + ), + platformStyle = PlatformTextStyle( + includeFontPadding = property.includeFontPadding.orTrue() ) ), modifier = 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 d9ecb0c..fef12e1 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 @@ -40,6 +40,7 @@ import androidx.compose.ui.layout.boundsInWindow import androidx.compose.ui.layout.onGloballyPositioned import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextDecoration @@ -709,7 +710,10 @@ fun getTextStyle(textStyle: OutlinedTextFieldTextStyle): TextStyle { color = textStyle.color?.hexToComposeColor ?: Color.Black, fontFamily = UiTronSdkManager.getDependencyProvider().getFontFamily(textStyle.fontFamily), fontWeight = UiTronSdkManager.getDependencyProvider().getFontWeight(textStyle.fontWeight), - textAlign = getTextAlignment(textStyle.textAlign) + textAlign = getTextAlignment(textStyle.textAlign), + platformStyle = PlatformTextStyle( + includeFontPadding = textStyle.includeFontPadding.orTrue() + ) ) }