/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// 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 Ġandroidx . we ar . compose . foundation Ċ Ċ import Ġandroidx . compose . foundation . layout . Row Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ Ċ /** Ċ Ġ* ĠA Ġlayout Ġcomp osable Ġthat Ġplaces Ġits Ġchildren Ġin Ġan Ġarc , Ġrot ating Ġthem Ġas Ġneeded . ĠThis Ġis Ċ Ġ* Ġsimilar Ġto Ġa Ġ[ Row ] Ġlayout , Ġthat Ġit 's Ġcur ved Ġinto Ġa Ġsegment Ġof Ġan Ġann ulus . Ċ Ġ* Ċ Ġ* ĠThe Ġthickness Ġof Ġthe Ġlayout Ġ( the Ġdifference Ġbetween Ġthe Ġouter Ġand Ġinner Ġradius ) Ġwill Ġbe Ġthe Ċ Ġ* Ġsame Ġas Ġthe Ġth ick est Ġchild , Ġand Ġthe Ġtotal Ġangle Ġtaken Ġis Ġthe Ġsum Ġof Ġthe Ġchildren 's Ġangles . Ċ Ġ* Ċ Ġ* ĠExample Ġusage : Ċ Ġ* Ġ@ sample Ġandroidx . we ar . compose . foundation . samples . Cur ved Row And Column Ċ Ġ* Ċ Ġ* Ġ@ param Ġradial Alignment ĠRad ial Ġalignment Ġspecifies Ġwhere Ġto Ġlay Ġdown Ġchildren Ġthat Ġare Ġth inner Ċ Ġ* Ġthan Ġthe ĠCur ved Row , Ġeither Ġcloser Ġto Ġthe Ġcenter Ġ( INNER ), Ġapart Ġfrom Ġthe Ġcenter Ġ( OUT ER ) Ġor Ġin Ġthe Ċ Ġ* Ġmiddle Ġpoint Ġ( CENTER ). ĠIf Ġunspecified , Ġthey Ġcan Ġchoose Ġfor Ġthemselves . Ċ Ġ* Ġ@ param Ġclock wise ĠSpecify Ġif Ġthe Ġchildren Ġare Ġla id Ġout Ġclock wise Ġ( the Ġdefault ) Ġor Ċ Ġ* Ġcounter - clock wise Ċ Ġ*/ Ċ public Ġfun ĠCur ved Scope . cur ved Row ( ĊĠĠĠ Ġradial Alignment : ĠCur ved Alignment . Rad ial ? Ġ= Ġnull , ĊĠĠĠ Ġclock wise : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcontent Builder : ĠCur ved Scope . () Ġ-> ĠUnit Ċ ) Ġ= Ġadd ( Cur ved Row Child ( clock wise , Ġradial Alignment , Ġcontent Builder )) Ċ Ċ internal Ġclass ĠCur ved Row Child ( ĊĠĠĠ Ġclock wise : ĠBoolean , ĊĠĠĠ Ġval Ġradial Alignment : ĠCur ved Alignment . Rad ial ?, ĊĠĠĠ Ġcontent Builder : ĠCur ved Scope . () Ġ-> ĠUnit Ċ ) Ġ: ĠContainer Child (! clock wise , Ġcontent Builder ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdo Estimate Thickness ( max Radius : ĠFloat ) Ġ= ĊĠĠĠĠĠĠĠ Ġchildren . max Of OrNull Ġ{ Ġit . estimate Thickness ( max Radius ) Ġ} Ġ?: Ġ 0 f ĊĊĠĠĠ Ġoverride Ġfun Ġdo Rad ial Position ( ĊĠĠĠĠĠĠĠ Ġparent Outer Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġparent Thickness : ĠFloat , ĊĠĠĠ Ġ): ĠPartial Layout Info Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġposition Ġchildren , Ġsum Ġangles . ĊĠĠĠĠĠĠĠ Ġvar Ġtotal Sweep Ġ= Ġchildren . sum Of Ġ{ Ġchild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchild Rad ial Position Ġ= Ġparent Outer Radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchild Thickness Ġ= Ġparent Thickness ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( radial Alignment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Rad ial Position Ġ= Ġparent Outer Radius Ġ- Ġradial Alignment . ratio Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( parent Thickness Ġ- Ġchild . estimated Thickness ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Thickness Ġ= Ġchild . estimated Thickness ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . radial Position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Rad ial Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Thickness ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . sweep Radians ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPartial Layout Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Sweep , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Outer Radius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Thickness , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Outer Radius Ġ- Ġparent Thickness Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Angular Position ( ĊĠĠĠĠĠĠĠ Ġparent Start Angle Radians : ĠFloat , ĊĠĠĠĠĠĠĠ Ġparent Sweep Radians : ĠFloat , ĊĠĠĠĠĠĠĠ Ġcenter Offset : ĠOffset ĊĠĠĠ Ġ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Start Angle Ġ= Ġparent Start Angle Radians ĊĠĠĠĠĠĠĠ Ġchildren In Layout Order . forEach Ġ{ Ġnode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . angular Position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Start Angle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . sweep Radians , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Start Angle Ġ+= Ġnode . sweep Radians ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġparent Start Angle Radians ĊĠĠĠ Ġ} Ċ } Ċ