/* Ċ Ġ* ĠCopyright Ġ( c ) ĠMeta ĠPlatform s , ĠInc . Ġand Ġaffiliates . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . facebook . l ith o . kotlin . widget Ċ Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . graphics . Path Dash Path Effect Ċ import Ġandroidx . annotation . Color Int Ċ import Ġcom . facebook . l ith o . Border Ċ import Ġcom . facebook . l ith o . Dim en Ċ import Ġcom . facebook . l ith o . Resource Resolver Ċ import Ġcom . facebook . l ith o . Resources Scope Ċ import Ġcom . facebook . y oga . Y oga Edge Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġborder Ġstyle Ġto Ġbe Ġapplied Ġto Ġa Ġcomponent Ċ Ġ* Ċ Ġ* Ġ@ param Ġedge All Ġsets Ġthe Ġprops Ġfor Ġall Ġedges . Ċ Ġ* Ċ Ġ* Ġ@ param Ġedge Horizontal Ġcustom ises Ġboth Ġhorizontal Ġedges . Ċ Ġ* Ġ@ param Ġedge Vertical Ġcustom ises Ġboth Ġvertical Ġedges . Ċ Ġ* Ġ@ param Ġedge Start Ġcustom ises Ġthe Ġstart Ġedge , Ġfrom Ġtop Ġto Ġbottom . Ċ Ġ* Ġ@ param Ġedge End Ġcustom ises Ġend Ġedge , Ġfrom Ġtop Ġto Ġbottom . Ċ Ġ* Ċ Ġ* Ġ@ param Ġedge Top Ġcustom ises Ġthe Ġtop Ġedge Ġof Ġthe Ġborder . Ċ Ġ* Ġ@ param Ġedge Bottom Ġcustom ises Ġthe Ġbottom Ġedge Ġof Ġthe Ġborder . Ċ Ġ* Ġ@ param Ġedge Left Ġcustom ises Ġthe Ġleft Ġedge Ġof Ġthe Ġborder . Ċ Ġ* Ġ@ param Ġedge Right Ġcustom ises Ġfor Ġthe Ġright Ġedge Ġof Ġthe Ġborder . Ċ Ġ* Ċ Ġ* Ġ@ param Ġradius Ġcustom ises Ġeach Ġcorner Ġradius . Ċ Ġ* Ċ Ġ* Ġ@ param Ġeffect Ġapplies Ġan Ġeffect Ġto Ġthe Ġborder . Ċ Ġ*/ Ċ inline Ġfun ĠResources Scope . Border ( ĊĠĠĠ Ġ// Ġseparate Ġedge Ġproperties ĊĠĠĠ Ġedge All : ĠBorder Edge ? Ġ= Ġnull , ĊĊĠĠĠ Ġ// Ġmisc ĊĠĠĠ Ġedge Horizontal : ĠBorder Edge ? Ġ= Ġnull , ĊĠĠĠ Ġedge Vertical : ĠBorder Edge ? Ġ= Ġnull , ĊĠĠĠ Ġedge Start : ĠBorder Edge ? Ġ= Ġnull , ĊĠĠĠ Ġedge End : ĠBorder Edge ? Ġ= Ġnull , ĊĊĠĠĠ Ġ// Ġstandard Ġedges ĊĠĠĠ Ġedge Top : ĠBorder Edge ? Ġ= Ġnull , ĊĠĠĠ Ġedge Bottom : ĠBorder Edge ? Ġ= Ġnull , ĊĠĠĠ Ġedge Left : ĠBorder Edge ? Ġ= Ġnull , ĊĠĠĠ Ġedge Right : ĠBorder Edge ? Ġ= Ġnull , ĊĊĠĠĠ Ġ// Ġradius Ġproperties ĊĠĠĠ Ġradius : ĠBorder Radius ? Ġ= Ġnull , ĊĊĠĠĠ Ġ// Ġextra Ġpath Ġeffects ĊĠĠĠ Ġeffect : ĠBorder Effect ? Ġ= Ġnull Ċ ): ĠBorder Ġ= ĊĠĠĠ ĠBorder . create ( context ) ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġedge All ?. let Ġ{ Ġit . apply ( Y oga Edge . ALL , Ġthis , Ġresource Resolver ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġedge Horizontal ?. let Ġ{ Ġit . apply ( Y oga Edge . VERTICAL , Ġthis , Ġresource Resolver ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġedge Vertical ?. let Ġ{ Ġit . apply ( Y oga Edge . HORIZONTAL , Ġthis , Ġresource Resolver ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġedge Start ?. let Ġ{ Ġit . apply ( Y oga Edge . START , Ġthis , Ġresource Resolver ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġedge End ?. let Ġ{ Ġit . apply ( Y oga Edge . END , Ġthis , Ġresource Resolver ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġedge Top ?. let Ġ{ Ġit . apply ( Y oga Edge . TOP , Ġthis , Ġresource Resolver ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġedge Bottom ?. let Ġ{ Ġit . apply ( Y oga Edge . BOTTOM , Ġthis , Ġresource Resolver ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġedge Left ?. let Ġ{ Ġit . apply ( Y oga Edge . LEFT , Ġthis , Ġresource Resolver ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġedge Right ?. let Ġ{ Ġit . apply ( Y oga Edge . RIGHT , Ġthis , Ġresource Resolver ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġradius ?. let Ġ{ Ġit . apply ( this , Ġresource Resolver ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġeffect ?. let Ġ{ Ġit . apply ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. build () Ċ Ċ /** Ċ Ġ* ĠStores Ġproperties Ġthat Ġare Ġused Ġto Ġcustom ise Ġborder Ġedges Ċ Ġ* Ċ Ġ* Ġ@ param Ġcolor Ġthe Ġcolour Ġto Ġbe Ġapplied Ġto Ġthe Ġedge Ċ Ġ* Ġ@ param Ġwidth Ġthe Ġwidth Ġof Ġthe Ġedge Ċ Ġ*/ Ċ class ĠBorder Edge (@ Color Int Ġval Ġcolor : ĠInt ? Ġ= Ġnull , Ġval Ġwidth : ĠDim en ? Ġ= Ġnull ) Ġ{ ĊĊĠ Ġ@ Published Api ĊĠ Ġinternal Ġinline Ġfun Ġapply ( ĊĠĠĠĠĠ Ġedge : ĠY oga Edge , ĊĠĠĠĠĠ Ġbuilder : ĠBorder . Builder , ĊĠĠĠĠĠ Ġresource Resolver : ĠResource Resolver ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġcolor ?. let Ġ{ Ġbuilder . color ( edge , Ġit ) Ġ} ĊĠĠĠ Ġwidth ?. let Ġ{ Ġbuilder . width Px ( edge , Ġit . to Pixels ( resource Resolver )) Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠStores Ġproperties Ġthat Ġare Ġused Ġto Ġcustom ise Ġthe Ġborder Ġrad ii Ċ Ġ* Ċ Ġ* Ġ@ param Ġall Ġthe Ġradius Ġto Ġbe Ġapplied Ġto Ġall Ġcorners Ċ Ġ* Ġ@ param Ġtop Left Ġthe Ġradius Ġto Ġbe Ġapplied Ġto Ġthe Ġtop Ġleft Ġcorner Ċ Ġ* Ġ@ param Ġtop Right Ġthe Ġradius Ġto Ġbe Ġapplied Ġto Ġthe Ġtop Ġright Ġcorner Ċ Ġ* Ġ@ param Ġbottom Left Ġthe Ġradius Ġto Ġbe Ġapplied Ġto Ġthe Ġbottom Ġleft Ġcorner Ċ Ġ* Ċ Ġ* Ġ@ param Ġbottom Right Ġthe Ġradius Ġto Ġbe Ġapplied Ġto Ġthe Ġbottom Ġright Ġcorner Ċ Ġ*/ Ċ class ĠBorder Radius ( ĊĠĠĠ Ġval Ġall : ĠDim en ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġtop Left : ĠDim en ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġtop Right : ĠDim en ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġbottom Left : ĠDim en ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġbottom Right : ĠDim en ? Ġ= Ġnull , Ċ ) Ġ{ ĊĠ Ġ@ Published Api ĊĠ Ġinternal Ġinline Ġfun Ġapply ( builder : ĠBorder . Builder , Ġresource Resolver : ĠResource Resolver ) Ġ{ ĊĠĠĠ Ġall ?. let Ġ{ Ġbuilder . radius Px ( it . to Pixels ( resource Resolver )) Ġ} ĊĠĠĠ Ġtop Left ?. let Ġ{ Ġbuilder . radius Px ( Border . Corner . TOP _ LEFT , Ġit . to Pixels ( resource Resolver )) Ġ} ĊĠĠĠ Ġtop Right ?. let Ġ{ Ġbuilder . radius Px ( Border . Corner . TOP _ RIGHT , Ġit . to Pixels ( resource Resolver )) Ġ} ĊĠĠĠ Ġbottom Left ?. let Ġ{ Ġbuilder . radius Px ( Border . Corner . BOTTOM _ LEFT , Ġit . to Pixels ( resource Resolver )) Ġ} ĊĠĠĠ Ġbottom Right ?. let Ġ{ Ġbuilder . radius Px ( Border . Corner . BOTTOM _ RIGHT , Ġit . to Pixels ( resource Resolver )) Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠStores Ġproperties Ġthat Ġare Ġused Ġto Ġcustom ise Ġan Ġeffect Ġthat Ġis Ġapplied Ġto Ġthe Ġborder . Ċ Ġ* Ċ Ġ* Ġ@ see ĠBorder Effect . path Ċ Ġ* Ġ@ see ĠBorder Effect . das hed Ċ Ġ* Ġ@ see ĠBorder Effect . discrete Ċ Ġ*/ Ċ class ĠBorder Effect Ġ{ ĊĊĠ Ġ// Ġshared Ġproperties ĊĠ Ġvar Ġphase : ĠFloat ? Ġ= Ġnull ĊĊĠ Ġ// Ġdash Ġproperties ĊĠ Ġvar Ġintervals : ĠFloat Array ? Ġ= Ġnull ĊĊĠ Ġ// Ġpath Ġproperties ĊĠ Ġvar Ġpath Shape : ĠPath ? Ġ= Ġnull ĊĠ Ġvar Ġpath Advance : ĠFloat ? Ġ= Ġnull ĊĠ Ġvar Ġpath Style : ĠPath Dash Path Effect . Style ? Ġ= Ġnull ĊĊĠ Ġ// Ġdiscrete Ġeffect Ġproperties ĊĠ Ġvar Ġsegment Length : ĠFloat ? Ġ= Ġnull ĊĠ Ġvar Ġdeviation : ĠFloat ? Ġ= Ġnull ĊĊĠ Ġprivate Ġconstructor ( intervals : ĠFloat Array , Ġphase : ĠFloat ) Ġ{ ĊĠĠĠ Ġthis . intervals Ġ= Ġintervals ĊĠĠĠ Ġthis . phase Ġ= Ġphase ĊĠ Ġ} ĊĊĠ Ġprivate Ġconstructor ( ĊĠĠĠĠĠ Ġpath Shape : ĠPath , ĊĠĠĠĠĠ Ġpath Advance : ĠFloat , ĊĠĠĠĠĠ Ġpath Phase : ĠFloat , ĊĠĠĠĠĠ Ġpath Style : ĠPath Dash Path Effect . Style ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġthis . path Shape Ġ= Ġpath Shape ĊĠĠĠ Ġthis . path Advance Ġ= Ġpath Advance ĊĠĠĠ Ġthis . phase Ġ= Ġpath Phase ĊĠĠĠ Ġthis . path Style Ġ= Ġpath Style ĊĠ Ġ} ĊĊĠ Ġprivate Ġconstructor ( segment Length : ĠFloat , Ġdeviation : ĠFloat ) Ġ{ ĊĠĠĠ Ġthis . segment Length Ġ= Ġsegment Length ĊĠĠĠ Ġthis . dev iation Ġ= Ġdeviation ĊĠ Ġ} ĊĊĠ Ġ@ Published Api ĊĠ Ġinternal Ġinline Ġfun Ġapply ( builder : ĠBorder . Builder ) Ġ{ ĊĠĠĠ Ġ// Ġapply Ġdas hed Ġborder Ġeffect . ĊĠĠĠ Ġif Ġ( this . intervals Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġbuilder . dash Effect ( intervals , Ġphase Ġ?: Ġ 0 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġapply Ġpath Ġborder Ġeffect . ĊĠĠĠ Ġif Ġ( this . path Shape Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġbuilder . path Dash Effect ( path Shape , Ġpath Advance Ġ?: Ġ 0 f , Ġphase Ġ?: Ġ 0 f , Ġpath Style ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġapply Ġdiscrete Ġpath Ġborder Ġeffect . ĊĠĠĠ Ġif Ġ( this . segment Length Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġbuilder . discrete Effect ( segment Length Ġ?: Ġ 0 f , Ġdeviation Ġ?: Ġ 0 f ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplies Ġa Ġpath Ġdash Ġeffect Ġto Ġthe Ġborder ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠBorder . Builder . path Dash Effect ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpath ( ĊĠĠĠĠĠĠĠ Ġshape : ĠPath , ĊĠĠĠĠĠĠĠ Ġadvance : ĠFloat , ĊĠĠĠĠĠĠĠ Ġphase : ĠFloat , ĊĠĠĠĠĠĠĠ Ġstyle : ĠPath Dash Path Effect . Style ĊĠĠĠ Ġ): ĠBorder Effect Ġ{ ĊĠĠĠĠĠ Ġreturn ĠBorder Effect ( shape , Ġadvance , Ġphase , Ġstyle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplies Ġa Ġdash Ġeffect Ġto Ġthe Ġborder . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠBorder . Builder . dash Effect ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdas hed ( intervals : ĠFloat Array , Ġphase : ĠFloat ): ĠBorder Effect Ġ{ ĊĠĠĠĠĠ Ġreturn ĠBorder Effect ( intervals , Ġphase ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApplies Ġa Ġdiscrete Ġeffect Ġto Ġthe Ġborder . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠBorder . Builder . discrete Effect ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdiscrete ( segment Length : ĠFloat , Ġdeviation : ĠFloat ): ĠBorder Effect Ġ{ ĊĠĠĠĠĠ Ġreturn ĠBorder Effect ( segment Length , Ġdeviation ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ