package Ġo vh . pl r apps . widgets . ui . widgets Ċ Ċ import Ġandroidx . compose . animation . core .* Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . rotate Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Solid Color Ċ import Ġandroidx . compose . ui . graphics . vector . Path Ċ import Ġandroidx . compose . ui . graphics . vector . add Path Nodes Ċ import Ġandroidx . compose . ui . graphics . vector . remember Vector Painter Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġo vh . pl r apps . widgets . utils . lerp Ċ Ċ @ Composable Ċ fun ĠLand Mark ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġis Static : ĠBoolean Ċ ) Ġ= ĠMarker ( ĊĠĠĠ Ġmodifier , ĊĠĠĠ ĠbackgroundColor Ġ= ĠColor ( 0 xFF 9 C 2 7 B 0 ), ĊĠĠĠ Ġstroke Color Ġ= ĠColor ( 0 xFF 4 A 1 4 8 C ), ĊĠĠĠ Ġis Static Ġ= Ġis Static Ċ ) Ċ Ċ @ Composable Ċ fun ĠMarker ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ ĠbackgroundColor : ĠColor Ġ= ĠColor ( 0 xFF F 1 6 1 5 7 ), ĊĠĠĠ Ġstroke Color : ĠColor Ġ= ĠColor ( 0 xFF B 6 3 9 2 F ), ĊĠĠĠ Ġanimation Duration Ms : ĠInt Ġ= Ġ 5 0 0 , ĊĠĠĠ Ġis Static : ĠBoolean Ġ= Ġtrue Ċ ) Ġ{ ĊĠĠĠ Ġval Ġanimated Progress Ġ= Ġanimate Float As State ( ĊĠĠĠĠĠĠĠ Ġif Ġ( is Static ) Ġ 0 f Ġelse Ġ 1 f , ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( animation Duration Ms ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠSurface ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMarker Shape ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Color Ġ= Ġstroke Color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt Ġ= Ġanimated Progress . value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( animated Progress . value Ġ== Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfinite Transition Ġ= Ġremember Infinite Transition () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġangle Ġby Ġinfinite Transition . animate Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Value Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġ 3 6 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġinfinite Repeat able ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Ġ= Ġt ween ( 2 0 0 0 , Ġeasing Ġ= ĠLinear E asing ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠRepeat Mode . Restart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAr rows Shape ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= Ġstroke Color , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġangle Ġ= Ġangle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠMarker Shape ( ĊĠĠĠ Ġmodifier : ĠModifier , ĊĠĠĠ ĠbackgroundColor : ĠColor , ĊĠĠĠ Ġstroke Color : ĠColor , ĊĠĠĠ Ġt : ĠFloat Ċ ) Ġ{ ĊĠĠĠ Ġval Ġstatic Path Ġ= ĊĠĠĠĠĠĠĠ Ġremember Ġ{ Ġadd Path Nodes (" M 1 2 , 1 1 . 5 c - 1 . 3 8 1 , 0 - 2 . 5 - 1 . 1 1 9 - 2 . 5 - 2 . 5 s 1 . 1 1 9 - 2 . 5 , 2 . 5 - 2 . 5 s 2 . 5 , 1 . 1 1 9 , 2 . 5 , 2 . 5 s - 1 . 1 1 9 , 2 . 5 ,- 2 . 5 , 2 . 5 ĠM 1 2 , 2 c - 3 . 8 6 6 , 0 ,- 7 , 3 . 1 3 4 ,- 7 , 7 c 0 , 5 . 2 5 , 7 , 1 3 , 7 , 1 3 s 7 - 7 . 7 5 , 7 - 1 3 c 0 ,- 3 . 6 8 6 ,- 3 . 3 1 4 ,- 7 ,- 7 ,- 7 z ") Ġ} ĊĠĠĠ Ġval Ġdynamic Path Ġ= ĊĠĠĠĠĠĠĠ Ġremember Ġ{ Ġadd Path Nodes (" M 1 2 , 2 6 . 5 c - 1 . 3 8 1 , 0 - 2 . 5 - 1 . 1 1 9 - 2 . 5 - 2 . 5 s 1 . 1 1 9 - 2 . 5 , 2 . 5 - 2 . 5 s 2 . 5 , 1 . 1 1 9 , 2 . 5 , 2 . 5 s - 1 . 1 1 9 , 2 . 5 ,- 2 . 5 , 2 . 5 ĠM 1 2 , 1 7 c - 3 . 8 6 6 , 0 ,- 7 , 3 . 1 3 4 ,- 7 , 7 c 0 , 3 . 8 6 6 , 3 . 3 1 4 , 7 , 7 , 7 s 7 - 3 . 3 1 4 , 7 - 7 c 0 ,- 3 . 6 8 6 ,- 3 . 3 1 4 ,- 7 ,- 7 ,- 7 z ") Ġ} ĊĊĠĠĠ Ġval Ġpath Nodes Ġ= Ġl erp ( static Path , Ġdynamic Path , Ġt ) ĊĊĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠ Ġpainter Ġ= Ġremember Vector Painter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Width Ġ= Ġ 2 4 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Height Ġ= Ġ 4 8 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewport Width Ġ= Ġ 2 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewport Height Ġ= Ġ 4 8 f ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Data Ġ= Ġpath Nodes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= ĠSolid Color ( backgroundColor ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstroke Ġ= ĠSolid Color ( stroke Color ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstroke LineWidth Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠAr rows Shape ( ĊĠĠĠ Ġmodifier : ĠModifier , ĊĠĠĠ ĠbackgroundColor : ĠColor , ĊĠĠĠ Ġangle : ĠFloat Ċ ) Ġ{ ĊĠĠĠ Ġval Ġleft Arrow Path Ġ= Ġremember Ġ{ Ġadd Path Nodes (" M Ġ 3 , 2 6 Ġv Ġ- 4 Ġl Ġ- 3 , 2 ĠZ ") Ġ} ĊĠĠĠ Ġval Ġright Arrow Path Ġ= Ġremember Ġ{ Ġadd Path Nodes (" M Ġ 2 1 , 2 6 Ġv Ġ- 4 Ġl Ġ 3 , 2 ĠZ ") Ġ} ĊĠĠĠ Ġval Ġtop Arrow Path Ġ= Ġremember Ġ{ Ġadd Path Nodes (" M Ġ 1 0 , 1 5 Ġh Ġ 4 Ġl Ġ- 2 ,- 3 ĠZ ") Ġ} ĊĠĠĠ Ġval Ġbottom Arrow Path Ġ= Ġremember Ġ{ Ġadd Path Nodes (" M Ġ 1 0 , 3 3 Ġh Ġ 4 Ġl Ġ- 2 , 3 ĠZ ") Ġ} ĊĊĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠ Ġpainter Ġ= Ġremember Vector Painter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Width Ġ= Ġ 2 4 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Height Ġ= Ġ 4 8 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewport Width Ġ= Ġ 2 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviewport Height Ġ= Ġ 4 8 f ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Data Ġ= Ġleft Arrow Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= ĠSolid Color ( backgroundColor ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Data Ġ= Ġright Arrow Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= ĠSolid Color ( backgroundColor ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Data Ġ= Ġtop Arrow Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= ĠSolid Color ( backgroundColor ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Data Ġ= Ġbottom Arrow Path , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill Ġ= ĠSolid Color ( backgroundColor ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier . rotate ( angle ), ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull ĊĠĠĠ Ġ) Ċ }