package Ġrac ra . compose . smooth _ corner _ rect _ library Ċ Ċ import Ġandroidx . compose . foundation . shape . Corner Based Shape Ċ import Ġandroidx . compose . foundation . shape . Corner Size Ċ import Ġandroidx . compose . ui . geometry .* Ċ import Ġandroidx . compose . ui . graphics . Outline Ċ import Ġandroidx . compose . ui . graphics . Path Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . Layout Direction Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġjava . lang . Math . to Radians Ċ import Ġkotlin . math .* Ċ Ċ /** Ċ Ġ* ĠA Ġshape Ġdescribing Ġa Ġrectangle Ġwith Ġsmooth Ġrounded Ġcorners Ġsometimes Ġcalled Ġa Ċ Ġ* ĠS qu ircle Ġor ĠSuper ellipse . Ċ Ġ* Ċ Ġ* ĠThis Ġshape Ġwill Ġnot Ġautomatically Ġmirror Ġthe Ġcorners Ġin Ġ[ Layout Direction . R tl ], Ġuse Ċ Ġ* ĠTODO Ġ[ Smooth Corner Shape ] Ġfor Ġthe Ġlayout Ġdirection Ġaware Ġversion Ġof Ġthis Ġshape . Ċ Ġ* Ċ Ġ* Ġ@ param Ġcorner Radius TL Ġthe Ġsize Ġof Ġthe Ġtop Ġleft Ġcorner Ċ Ġ* Ġ@ param Ġsmooth ness As Percent TL Ġa Ġpercentage Ġrepresenting Ġhow Ġsmooth Ġthe Ġtop Ġleft Ġcorner Ġwill Ġbe Ċ Ġ* Ġ@ param Ġcorner Radius TR Ġthe Ġsize Ġof Ġthe Ġtop Ġright Ġcorner Ċ Ġ* Ġ@ param Ġsmooth ness As Percent TR Ġa Ġpercentage Ġrepresenting Ġhow Ġsmooth Ġthe Ġtop Ġright Ġcorner Ġwill Ġbe Ċ Ġ* Ġ@ param Ġcorner Radius BR Ġthe Ġsize Ġof Ġthe Ġbottom Ġright Ġcorner Ċ Ġ* Ġ@ param Ġsmooth ness As Percent BR Ġa Ġpercentage Ġrepresenting Ġhow Ġsmooth Ġthe Ġbottom Ġright Ġcorner Ġwill Ġbe Ċ Ġ* Ġ@ param Ġcorner Radius BL Ġthe Ġsize Ġof Ġthe Ġbottom Ġleft Ġcorner Ċ Ġ* Ġ@ param Ġsmooth ness As Percent BL Ġa Ġpercentage Ġrepresenting Ġhow Ġsmooth Ġthe Ġbottom Ġleft Ġcorner Ġwill Ġbe Ċ Ġ*/ Ċ data Ġclass ĠAbsolute Smooth Corner Shape ( ĊĠĠĠ Ġprivate Ġval Ġcorner Radius TL : ĠD p Ġ= Ġ 0 . dp , ĊĠĠĠ Ġprivate Ġval Ġsmooth ness As Percent TL : ĠInt Ġ= Ġ 6 0 , ĊĠĠĠ Ġprivate Ġval Ġcorner Radius TR : ĠD p Ġ= Ġ 0 . dp , ĊĠĠĠ Ġprivate Ġval Ġsmooth ness As Percent TR : ĠInt Ġ= Ġ 6 0 , ĊĠĠĠ Ġprivate Ġval Ġcorner Radius BR : ĠD p Ġ= Ġ 0 . dp , ĊĠĠĠ Ġprivate Ġval Ġsmooth ness As Percent BR : ĠInt Ġ= Ġ 6 0 , ĊĠĠĠ Ġprivate Ġval Ġcorner Radius BL : ĠD p Ġ= Ġ 0 . dp , ĊĠĠĠ Ġprivate Ġval Ġsmooth ness As Percent BL : ĠInt Ġ= Ġ 6 0 Ċ ) Ġ: ĠCor ner Based Shape ( ĊĠĠĠ Ġtop Start Ġ= ĠCor ner Size ( corner Radius TL ), ĊĠĠĠ Ġtop End Ġ= ĠCor ner Size ( corner Radius TR ), ĊĠĠĠ Ġbottom End Ġ= ĠCor ner Size ( corner Radius BR ), ĊĠĠĠ Ġbottom Start Ġ= ĠCor ner Size ( corner Radius BL ) Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Outline ( ĊĠĠĠĠĠĠĠ Ġsize : ĠSize , ĊĠĠĠĠĠĠĠ Ġtop Start : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtop End : ĠFloat , ĊĠĠĠĠĠĠĠ Ġbottom End : ĠFloat , ĊĠĠĠĠĠĠĠ Ġbottom Start : ĠFloat , ĊĠĠĠĠĠĠĠ Ġlayout Direction : ĠLayout Direction ĊĠĠĠ Ġ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġtop Start Ġ+ Ġtop End Ġ+ Ġbottom End Ġ+ Ġbottom Start Ġ== Ġ 0 . 0 f Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOut line . Rectangle ( size . to Rect ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent TL Ġ+ Ġsmooth ness As Percent TR Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth ness As Percent BR Ġ+ Ġsmooth ness As Percent BL Ġ== Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOut line . Rounded ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRound Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Ġ= Ġsize . to Rect (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Left Ġ= ĠCor ner Radius ( top Start ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Right Ġ= ĠCor ner Radius ( top End ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Right Ġ= ĠCor ner Radius ( bottom End ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Left Ġ= ĠCor ner Radius ( bottom Start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOut line . Generic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Of Short est Side Ġ= Ġmin ( size . height , Ġsize . width ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsmooth C orners Map Ġ= Ġmutable Map Of < String , ĠSm ooth Corner >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġselected Smooth Corner Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth C orners Map [" $ top Start Ġ- Ġ$ smooth ness As Percent TL "] Ġ?: ĠSm ooth Corner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth ness As Percent TL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhalf Of Short est Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTop ĠLeft ĠCor ner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 1 . distance To F ur the st Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 2 . distance To F ur the st Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To Rad ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Ġ= ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġselected Smooth Corner . arc Section . radius Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġselected Smooth Corner . arc Section . radius Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle Radians Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( to Radians ( 1 8 0 . 0 ) Ġ+ Ġselected Smooth Corner . arc Section . arc Start Angle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsweep Angle Radians Ġ= Ġselected Smooth Corner . arc Section . arc Sweep Angle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce MoveTo Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 1 . distance To Closest Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth C orners Map [" $ top End Ġ- Ġ$ smooth ness As Percent TR "] Ġ?: ĠSm ooth Corner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop End , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth ness As Percent TR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhalf Of Short est Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . anchor Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 1 . distance To Closest Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTop ĠRight ĠCor ner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . control Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . control Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . anchor Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To Rad ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Ġ= ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġsize . width Ġ- Ġselected Smooth Corner . arc Section . radius Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġsize . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġselected Smooth Corner . arc Section . radius Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle Radians Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( to Radians ( 2 7 0 . 0 ) Ġ+ Ġselected Smooth Corner . arc Section . arc Start Angle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsweep Angle Radians Ġ= Ġselected Smooth Corner . arc Section . arc Sweep Angle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce MoveTo Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . control Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . control Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . anchor Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth C orners Map [" $ bottom End Ġ- Ġ$ smooth ness As Percent BR "] Ġ?: ĠSm ooth Corner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom End , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth ness As Percent BR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhalf Of Short est Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . anchor Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . anchor Point 1 . distance To F ur the st Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBottom ĠRight ĠCor ner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . control Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . control Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . control Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . control Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . anchor Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . anchor Point 2 . distance To F ur the st Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To Rad ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Ġ= ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġsize . height Ġ- Ġselected Smooth Corner . arc Section . radius Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġsize . width Ġ- Ġselected Smooth Corner . arc Section . radius Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġsize . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġsize . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle Radians Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( to Radians ( 0 . 0 ) Ġ+ Ġselected Smooth Corner . arc Section . arc Start Angle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsweep Angle Radians Ġ= Ġselected Smooth Corner . arc Section . arc Sweep Angle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce MoveTo Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . control Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . control Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . control Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . control Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . width Ġ- Ġselected Smooth Corner . anchor Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . anchor Point 1 . distance To Closest Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth C orners Map [" $ bottom Start Ġ- Ġ$ smooth ness As Percent BL "] Ġ?: ĠSm ooth Corner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmooth ness As Percent BL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhalf Of Short est Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . anchor Point 1 . distance To Closest Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBottom ĠLeft ĠCor ner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . control Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . control Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . anchor Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To Rad ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrect Ġ= ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġsize . height Ġ- Ġselected Smooth Corner . arc Section . radius Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġselected Smooth Corner . arc Section . radius Ġ* Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġsize . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Angle Radians Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( to Radians ( 9 0 . 0 ) Ġ+ Ġselected Smooth Corner . arc Section . arc Start Angle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsweep Angle Radians Ġ= Ġselected Smooth Corner . arc Section . arc Sweep Angle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġforce MoveTo Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcubic To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 2 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . control Point 2 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . control Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . control Point 1 . distance To F ur the st Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Smooth Corner . anchor Point 1 . distance To Closest Side , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize . height Ġ- Ġselected Smooth Corner . anchor Point 1 . distance To F ur the st Side ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcopy ( ĊĠĠĠĠĠĠĠ Ġtop Start : ĠCor ner Size , ĊĠĠĠĠĠĠĠ Ġtop End : ĠCor ner Size , ĊĠĠĠĠĠĠĠ Ġbottom End : ĠCor ner Size , ĊĠĠĠĠĠĠĠ Ġbottom Start : ĠCor ner Size ĊĠĠĠ Ġ) Ġ= ĠAbsolute Smooth Corner Shape ( ĊĠĠĠĠĠĠĠ Ġcorner Radius TL , ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent TL , ĊĠĠĠĠĠĠĠ Ġcorner Radius TR , ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent TR , ĊĠĠĠĠĠĠĠ Ġcorner Radius BR , ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent BR , ĊĠĠĠĠĠĠĠ Ġcorner Radius BL , ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent BL ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates ĠAbsolute Smooth Corner Shape Ġwith Ġthe Ġsame Ġcorner Ġradius Ġand Ġsmooth ness Ġapplied Ġfor Ċ Ġ* Ġall Ġfour Ġcorners . Ċ Ġ* Ċ Ġ* Ġ@ param Ġcorner Radius Ġthe Ġsize Ġof Ġthe Ġcorners Ġfor Ġthe Ġshape Ċ Ġ* Ġ@ param Ġsmooth ness As Percent Ġa Ġpercentage Ġrepresenting Ġhow Ġsmooth Ġthe Ġcorners Ġwill Ġbe Ċ Ġ*/ Ċ fun ĠAbsolute Smooth Corner Shape ( corner Radius : ĠD p , Ġsmooth ness As Percent : ĠInt ) Ġ= ĊĠĠĠ ĠAbsolute Smooth Corner Shape ( ĊĠĠĠĠĠĠĠ Ġcorner Radius TL Ġ= Ġcorner Radius , ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent TL Ġ= Ġsmooth ness As Percent , ĊĠĠĠĠĠĠĠ Ġcorner Radius TR Ġ= Ġcorner Radius , ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent TR Ġ= Ġsmooth ness As Percent , ĊĠĠĠĠĠĠĠ Ġcorner Radius BR Ġ= Ġcorner Radius , ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent BR Ġ= Ġsmooth ness As Percent , ĊĠĠĠĠĠĠĠ Ġcorner Radius BL Ġ= Ġcorner Radius , ĊĠĠĠĠĠĠĠ Ġsmooth ness As Percent BL Ġ= Ġsmooth ness As Percent ĊĠĠĠ Ġ)