/* Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . microsoft . fluent ui . drawer Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Typed Array Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . support . v 7 . widget . LinearLayout Compat Ċ import Ġandroid . util . Attribute Set Ċ import Ġcom . microsoft . fluent ui . R Ċ Ċ internal Ġclass ĠDraw er View ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: ĠLinearLayout Compat ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRAD II _ SIZE Ġ= Ġ 8 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠBehavior Type Ġ{ ĊĠĠĠĠĠĠĠ ĠBOTTOM , ĠTOP , ĠRIGHT , ĠLEFT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġclip Path Ġ= ĠPath () ĊĠĠĠ Ġvar Ġbehavior Type : ĠBehavior Type ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa : ĠTyped Array Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Sheet Behavior Layout ) ĊĠĠĠĠĠĠĠ Ġbehavior Type Ġ= ĠBehavior Type . valueOf ( a . getString ( R . style able . Sheet Behavior Layout _ behavior Type ) Ġ?: Ġ" BOTTOM ") ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( width : ĠInt , Ġheight : ĠInt , Ġold Width : ĠInt , Ġold Height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( width , Ġheight , Ġold Width , Ġold Height ) ĊĠĠĠĠĠĠĠ Ġupdate Clip Path ( width . toFloat (), Ġheight . toFloat ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsave Ġ= Ġcanvas . save () ĊĠĠĠĠĠĠĠ Ġcanvas . clip Path ( clip Path ) ĊĠĠĠĠĠĠĠ Ġsuper . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġcanvas . restore To Count ( save ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Clip Path ( width : ĠFloat , Ġheight : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcorner Radius Ġ= Ġresources . get Dimension ( R . dim en . fluent ui _ drawer _ corner _ radius ) ĊĠĠĠĠĠĠĠ Ġval Ġrad ii Ġ= ĠFloat Array ( RAD II _ SIZE ){ 0 f } ĊĊĠĠĠĠĠĠĠ Ġwhen ( behavior Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBehavior Type . BOTTOM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtop Ġleft Ġcorner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii [ 0 ] Ġ= Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii [ 1 ] Ġ= Ġcorner Radius ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtop Ġright Ġcorner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii [ 2 ] Ġ= Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii [ 3 ] Ġ= Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBehavior Type . TOP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbottom Ġright Ġcorner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii [ 4 ] Ġ= Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii [ 5 ] Ġ= Ġcorner Radius ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbottom Ġleft Ġcorner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii [ 6 ] Ġ= Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrad ii [ 7 ] Ġ= Ġcorner Radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclip Path . reset () ĊĠĠĠĠĠĠĠ Ġclip Path . add Round Rect ( Rect F ( 0 f , Ġ 0 f , Ġwidth , Ġheight ), Ġrad ii , ĠPath . Direction . CW ) ĊĠĠĠĠĠĠĠ Ġclip Path . close () ĊĠĠĠ Ġ} Ċ }