Sub Process_Globals
Dim mStringUtils As StringUtils
End Sub
Sub SetTextSize(lbl As Label, txt As String)
Dim dt As Float
Dim limit = 0.5 As Float
Dim h As Int
Dim TopPadding As Int = getPaddingTop(lbl)
Dim BottomPadding As Int = getPaddingBottom(lbl)
Dim HiddenLabelPart As Int = lbl.Height * .15
If lbl Is Label Then
HiddenLabelPart = 0
End If
Dim TotalToExclude As Int = TopPadding + BottomPadding - HiddenLabelPart
lbl.Text = txt
lbl.TextSize = 72
dt = lbl.TextSize
h = mStringUtils.MeasureMultilineTextHeight(lbl, txt) + TotalToExclude
Do While dt > limit Or h > lbl.Height
dt = dt / 2
h = mStringUtils.MeasureMultilineTextHeight(lbl, txt) + TotalToExclude
If h > lbl.Height Then
lbl.TextSize = lbl.TextSize - dt
Else
lbl.TextSize = lbl.TextSize + dt
End If
Loop
End Sub
'Gets the Top padding of the given view
Sub getPaddingTop(v As View) As Int
Dim jo = v As JavaObject
Return jo.RunMethod("getPaddingTop", Null)
End Sub
'Gets the Bottom padding of the given view
Sub getPaddingBottom(v As View) As Int
Dim jo = v As JavaObject
Return jo.RunMethod("getPaddingBottom", Null)
End Sub