/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . example . android dev challenge Ċ Ċ import Ġandroidx . compose . animation . core . Linear E asing Ċ import Ġandroidx . compose . animation . core . Repeat Mode Ċ import Ġandroidx . compose . animation . core . animate Float Ċ import Ġandroidx . compose . animation . core . animate Float As State Ċ import Ġandroidx . compose . animation . core . animate Int As State Ċ import Ġandroidx . compose . animation . core . infinite Repeat able Ċ import Ġandroidx . compose . animation . core . remember Infinite Transition Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . foundation . Canvas Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Box Scope Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . fill Max Height Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . layout . size Ċ import Ġandroidx . compose . foundation . shape . Circle Shape Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled . Cancel Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Disposable Effect Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . runtime . setValue Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . shadow Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . geometry . Size Ċ import Ġandroidx . compose . ui . graphics . Brush Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Color Filter Ċ import Ġandroidx . compose . ui . graphics . draw scope . Fill Ċ import Ġandroidx . compose . ui . graphics . draw scope . Stroke Ċ import Ġandroidx . compose . ui . text . font . Font Family Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . Text Unit Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . example . android dev challenge . H MS Font Info . Companion . H MS Ċ import Ġcom . example . android dev challenge . H MS Font Info . Companion . MS Ċ import Ġcom . example . android dev challenge . H MS Font Info . Companion . S Ċ import Ġcom . example . android dev challenge . ui . theme . purple 2 0 0 Ċ import Ġcom . example . android dev challenge . ui . theme . teal 2 0 0 Ċ import Ġcom . example . android dev challenge . ui . theme . typography Ċ Ċ @ Composable Ċ fun ĠCount Down Screen ( ĊĠĠĠ Ġtime In Sec : ĠInt , ĊĠĠĠ Ġon Cancel : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġtrigger Ġby Ġremember Ġ{ Ġmutable State Of ( time In Sec ) Ġ} ĊĊĠĠĠ Ġval Ġelapsed Ġby Ġanimate Int As State ( ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġtrigger Ġ* Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( time In Sec Ġ* Ġ 1 0 0 0 , Ġeasing Ġ= ĠLinear E asing ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠDis posable Effect ( Unit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrigger Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġon Dispose Ġ{ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 1 0 . dp , Ġend Ġ= Ġ 1 0 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 3 0 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Timer ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Center , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠBox Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Elapsed Time ( elapsed ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Circle Canvas ( elapsed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . size ( 5 5 . dp )) ĊĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center H orizontally ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 7 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shadow ( 3 0 . dp , Ġshape Ġ= ĠCircle Shape ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ Ġon Cancel () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Cancel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Filter Ġ= ĠColor Filter . tint ( Material Theme . colors . primary ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠBox Scope . Animation Elapsed Time ( elapsed : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġ( hou , Ġmin , Ġsec ) Ġ= Ġremember ( elapsed Ġ/ Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelapsed In Sec Ġ= Ġelapsed Ġ/ Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġh ou Ġ= Ġelapsed In Sec Ġ/ Ġ 3 6 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġelapsed In Sec Ġ/ Ġ 6 0 Ġ- Ġh ou Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval Ġsec Ġ= Ġelapsed In Sec Ġ% Ġ 6 0 ĊĠĠĠĠĠĠĠ ĠTrip le ( hou , Ġmin , Ġsec ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġm ills Ġ= Ġremember ( elapsed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelapsed Ġ% Ġ 1 0 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġonly Sec Ġ= Ġremember ( hou , Ġmin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġh ou Ġ== Ġ 0 Ġ&& Ġmin Ġ== Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtransition Ġ= Ġremember Infinite Transition () ĊĊĠĠĠ Ġval Ġanimated Font Ġby Ġtransition . animate Float ( ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= Ġ 1 . 5 f , ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġ 0 . 8 f , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( t ween ( 5 0 0 ), ĠRepeat Mode . Reverse ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġ( size , Ġlabel Size , Ġpadding ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġh ou Ġ> Ġ 0 Ġ-> ĠH MS ĊĠĠĠĠĠĠĠ Ġmin Ġ> Ġ 0 Ġ-> ĠMS ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠS ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġpadding , Ġend Ġ= Ġpadding , Ġtop Ġ= Ġ 1 0 . dp , Ġbottom Ġ= Ġ 1 0 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( hou Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Time ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ou . format Time (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" h ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġsize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Size Ġ= Ġlabel Size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( min Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Time ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin . format Time (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" m ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġsize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Size Ġ= Ġlabel Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDisplay Time ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( only Sec ) Ġsec . toString () Ġelse Ġsec . format Time (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( only Sec ) Ġ"" Ġelse Ġ" s ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġsize Ġ* Ġ( if Ġ( only Sec Ġ&& Ġsec Ġ< Ġ 1 0 Ġ&& Ġm ills Ġ!= Ġ 0 ) Ġanimated Font Ġelse Ġ 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Size Ġ= Ġlabel Size , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= Ġif Ġ( only Sec ) ĠText Align . Center Ġelse ĠText Align . End ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ". ${ ( m ills Ġ/ Ġ 1 0 ). format Time () }", ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Bottom Center ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( bottom Ġ= Ġ 8 0 . dp ), ĊĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 3 0 . sp , ĊĠĠĠĠĠĠĠ ĠfontFamily Ġ= ĠFont Family . Cur s ive , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= Ġty pography . subtitle 1 , ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . primary ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠBox Scope . Animation Circle Canvas ( duration M ills : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġtransition Ġ= Ġremember Infinite Transition () ĊĠĠĠ Ġvar Ġtrigger Ġby Ġremember Ġ{ Ġmutable State Of ( 0 f ) Ġ} ĊĠĠĠ Ġvar Ġis Finished Ġby Ġremember Ġ{ Ġmutable State Of ( false ) Ġ} ĊĊĠĠĠ Ġval Ġanimate Tween Ġby Ġanimate Float As State ( ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġtrigger , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( duration Millis Ġ= Ġduration M ills , Ġeasing Ġ= ĠLinear E asing ), ĊĠĠĠĠĠĠĠ Ġfinished Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Finished Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġanimated Restart Ġby Ġtransition . animate Float ( ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġ 3 6 0 f , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( t ween ( 1 0 0 0 ), ĠRepeat Mode . Restart ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġanimated Reverse Ġby Ġtransition . animate Float ( ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= Ġ 1 . 0 5 f , ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġ 0 . 9 5 f , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( t ween ( 2 0 0 0 ), ĠRepeat Mode . Reverse ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠDis posable Effect ( Unit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrigger Ġ= Ġ 3 6 0 f ĊĠĠĠĠĠĠĠ Ġon Dispose Ġ{ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġstroke Restart Ġ= ĠSt roke ( 1 5 f ) ĊĠĠĠ Ġval Ġstroke Reverse Ġ= ĠSt roke ( 1 0 f ) ĊĠĠĠ Ġval Ġcolor Ġ= ĠMaterial Theme . colors . primary ĊĠĠĠ Ġval Ġsecond Color Ġ= ĠMaterial Theme . colors . secondary ĊĠĠĠ ĠCanvas ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( 3 5 0 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiameter Ġ= Ġsize . min Dimension ĊĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġdiameter Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġtop Left Offset Ġ= ĠOffset ( 0 f , Ġ 3 0 f ) ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠSize ( radius Ġ* Ġ 2 , Ġradius Ġ* Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Finished ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Arc ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcolor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle Ġ= Ġanimated Restart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsweep Angle Ġ= Ġ 1 5 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Left Ġ= Ġtop Left Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġsize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Center Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġstroke Restart ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdraw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġsecond Color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġstroke Reverse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius Ġ= Ġradius Ġ* Ġif Ġ( is Finished ) Ġ 1 f Ġelse Ġanimated Reverse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdraw Arc ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle Ġ= Ġ 2 7 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsweep Angle Ġ= Ġanimate Tween , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrush Ġ= ĠBr ush . radial Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġradius Ġ= Ġradius , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpur ple 2 0 0 . copy ( 0 . 3 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġte al 2 0 0 . copy ( 0 . 2 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . White . copy ( 0 . 3 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Center Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠFill , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview Ċ @ Composable Ċ fun ĠDis Play Preview () Ġ{ ĊĠĠĠ ĠCount Down Screen ( 1 0 0 0 ) Ġ{} Ċ } Ċ Ċ private Ġfun ĠInt . format Time () Ġ= ĠString . format ("% 0 2 d ", Ġthis ) Ċ Ċ private Ġdata Ġclass ĠH MS Font Info ( val ĠfontSize : ĠText Unit , Ġval Ġlab Size : ĠText Unit , Ġval Ġpadding : ĠD p ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠH MS Ġ= ĠH MS Font Info ( 5 0 . sp , Ġ 2 0 . sp , Ġ 4 0 . dp ) ĊĠĠĠĠĠĠĠ Ġval ĠMS Ġ= ĠH MS Font Info ( 8 5 . sp , Ġ 3 0 . sp , Ġ 5 0 . dp ) ĊĠĠĠĠĠĠĠ Ġval ĠS Ġ= ĠH MS Font Info ( 1 5 0 . sp , Ġ 5 0 . sp , Ġ 5 5 . dp ) ĊĠĠĠ Ġ} Ċ } Ċ