package Ġio . github . pel men star 1 . range calendar Ċ Ċ import Ġandroid . graphics .* Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . annotation . Color Long Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . core . graphics . is S rgb Ċ import Ġio . github . pel men star 1 . range calendar . utils . as S rgb Unsafe Ċ import Ġio . github . pel men star 1 . range calendar . utils . pack Color Compat Ċ Ċ /** Ċ Ġ* ĠRepresents Ġinformation Ġneeded Ġfor Ġdrawing Ġborder Ġaround Ġsome Ġshape . Ċ Ġ*/ Ċ class ĠBorder Ġ{ ĊĠĠĠ Ġ@ Color Long ĊĠĠĠ Ġprivate Ġval Ġconverted Color Internal : ĠLong ĊĊĠĠĠ Ġ@ Color Long ĊĠĠĠ Ġprivate Ġval Ġout Color Internal : ĠLong ĊĊĠĠĠ Ġprivate Ġvar Ġpath Effect : ĠDash Path Effect ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSt roke Ġwidth Ġof Ġborder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġwidth : ĠFloat ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠArray Ġwith Ġeven Ġlength Ġof Ġfloats Ġspecifying Ġ" on " Ġand Ġ" off " Ġlength Ġintervals Ġof Ġdas hes ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdash Path Intervals : ĠFloat Array ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġoffset Ġinto Ġthe Ġ[ dash Path Intervals ] Ġarray Ġ( mod Ġthe Ġsum Ġof Ġall Ġof Ġthe Ġintervals ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġdash Path Phase : ĠFloat ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠColor Ġof Ġborder Ġexpressed Ġby Ġcolor Ġint . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġborder Ġcolor Ġis Ġinitially Ġspecified Ġby Ġcolor Ġlong , Ġcolor Ġis Ġconverted Ġto Ġs RGB Ġcolor Ġspace ĊĠĠĠĠ Ġ* Ġand Ġit Ġcauses Ġadditional Ġallocations . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ get : Color Int ĊĠĠĠ Ġval Ġcolor : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ< Ġ 2 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġconverted Color Internal Ġis Ġ* always * Ġs RGB Ġif ĠAPI Ġlevel Ġis Ġless Ġthan Ġ 2 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconverted Color Internal . as S rgb Unsafe () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor . to Argb ( out Color Internal ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠColor Ġof Ġborder Ġexpressed Ġby Ġcolor Ġlong . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSupported Ġwhen ĠAPI Ġlevel Ġis Ġ 2 6 Ġand Ġhigher . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ get : Requires Api ( 2 6 ) ĊĠĠĠ Ġ@ get : Color Long ĊĠĠĠ Ġval Ġcolor Long : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġout Color Internal ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġ[ Border ] Ġinstance Ġusing Ġcolor Ġspecified Ġby Ġcolor Ġint Ġand Ġstroke Ġwidth . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġcolor Ġof Ġthe Ġborder . ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth Ġstroke Ġwidth Ġof Ġthe Ġborder Ġin Ġpixels . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor (@ Color Int Ġcolor : ĠInt , Ġwidth : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout Color Internal Ġ= Ġcolor . pack Color Compat () ĊĠĠĠĠĠĠĠ Ġconverted Color Internal Ġ= Ġout Color Internal ĊĊĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġdash Path Intervals Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdash Path Phase Ġ= Ġ 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġ[ Border ] Ġinstance Ġusing Ġcolor Ġspecified Ġby Ġcolor Ġlong Ġand Ġstroke Ġwidth . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSupported Ġwhen ĠAPI Ġlevel Ġis Ġ 2 6 Ġand Ġhigher , ĊĠĠĠĠ Ġ* Ġbut Ġactually Ġcolor Ġlong s Ġare Ġused Ġwhen ĠAPI Ġlevel Ġis Ġ 2 9 Ġor Ġhigher Ġbecause ĊĠĠĠĠ Ġ* Ġcolor Ġlong Ġsupport Ġwas Ġadded Ġto Ġ[ Paint ] Ġin ĠAndroid Ġ 1 0 Ġ( API Ġlevel Ġ 2 9 ). ĊĠĠĠĠ Ġ* ĠSo Ġbefore Ġit , Ġ[ color ] Ġis Ġconverted Ġto Ġcolor Ġint Ġand Ġused Ġas Ġsuch . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġcolor Ġof Ġthe Ġborder . ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth Ġstroke Ġwidth Ġof Ġthe Ġborder Ġin Ġpixels . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Api ( 2 6 ) ĊĠĠĠ Ġconstructor (@ Color Long Ġcolor : ĠLong , Ġwidth : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout Color Internal Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġconverted Color Internal Ġ= Ġconvert Color ( color ) ĊĊĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġdash Path Intervals Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdash Path Phase Ġ= Ġ 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġ[ Border ] Ġinstance Ġwith Ġdas hed Ġline . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġcolor Ġof Ġthe Ġborder . ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth Ġstroke Ġwidth Ġof Ġthe Ġborder . ĊĠĠĠĠ Ġ* Ġ@ param Ġdash Path Intervals Ġarray Ġwith Ġeven Ġlength Ġof Ġfloats Ġspecifying Ġ" on " Ġand Ġ" off " Ġlength Ġintervals Ġof Ġdas hes ĊĠĠĠĠ Ġ* Ġ@ param Ġdash Path Phase Ġan Ġoffset Ġinto Ġthe Ġ[ dash Path Intervals ] Ġarray Ġ( mod Ġthe Ġsum Ġof Ġall Ġof Ġthe Ġintervals ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Color Int Ġcolor : ĠInt , ĊĠĠĠĠĠĠĠ Ġwidth : ĠFloat , ĊĠĠĠĠĠĠĠ Ġdash Path Intervals : ĠFloat Array , ĊĠĠĠĠĠĠĠ Ġdash Path Phase : ĠFloat ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout Color Internal Ġ= Ġcolor . pack Color Compat () ĊĠĠĠĠĠĠĠ Ġconverted Color Internal Ġ= Ġout Color Internal ĊĊĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġthis . dash Path Intervals Ġ= Ġdash Path Intervals ĊĠĠĠĠĠĠĠ Ġthis . dash Path Phase Ġ= Ġdash Path Phase ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġ[ Border ] Ġinstance Ġwith Ġdas hed Ġline . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSupported Ġwhen ĠAPI Ġlevel Ġis Ġ 2 6 Ġand Ġhigher , ĊĠĠĠĠ Ġ* Ġbut Ġactually Ġcolor Ġlong s Ġare Ġused Ġwhen ĠAPI Ġlevel Ġis Ġ 2 9 Ġor Ġhigher Ġbecause ĊĠĠĠĠ Ġ* Ġcolor Ġlong Ġsupport Ġwas Ġadded Ġto Ġ[ Paint ] Ġin ĠAndroid Ġ 1 0 Ġ( API Ġlevel Ġ 2 9 ). ĊĠĠĠĠ Ġ* ĠSo Ġbefore Ġit , Ġ[ color ] Ġis Ġconverted Ġto Ġcolor Ġint Ġand Ġused Ġas Ġsuch . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġcolor Ġof Ġthe Ġborder . ĊĠĠĠĠ Ġ* Ġ@ param Ġwidth Ġstroke Ġwidth Ġof Ġthe Ġborder . ĊĠĠĠĠ Ġ* Ġ@ param Ġdash Path Intervals Ġarray Ġwith Ġeven Ġlength Ġof Ġfloats Ġspecifying Ġ" on " Ġand Ġ" off " Ġlength Ġintervals Ġof Ġdas hes ĊĠĠĠĠ Ġ* Ġ@ param Ġdash Path Phase Ġan Ġoffset Ġinto Ġthe Ġ[ dash Path Intervals ] Ġarray Ġ( mod Ġthe Ġsum Ġof Ġall Ġof Ġthe Ġintervals ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Api ( 2 6 ) ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Color Long Ġcolor : ĠLong , ĊĠĠĠĠĠĠĠ Ġwidth : ĠFloat , ĊĠĠĠĠĠĠĠ Ġdash Path Intervals : ĠFloat Array , ĊĠĠĠĠĠĠĠ Ġdash Path Phase : ĠFloat ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout Color Internal Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġconverted Color Internal Ġ= Ġconvert Color ( color ) ĊĊĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġthis . dash Path Intervals Ġ= Ġdash Path Intervals ĊĠĠĠĠĠĠĠ Ġthis . dash Path Phase Ġ= Ġdash Path Phase ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMut ates Ġ[ Paint ] Ġinstance Ġto Ġapply Ġ[ Border ] Ġto Ġthe Ġpaint Ġsetting Ġits Ġstyle , Ġstroke Ġwidth , Ġcolor , Ġand Ġpath Ġeffect . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġapply To Paint ( paint : ĠPaint ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( path Effect Ġ== Ġnull Ġ&& Ġdash Path Intervals Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath Effect Ġ= ĠDash Path Effect ( dash Path Intervals , Ġdash Path Phase ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġconverted Color Internal Ġis Ġ* always * Ġs RGB Ġwhen ĠAPI Ġlevel Ġis Ġless Ġthan Ġ 2 9 . ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< Ġ 2 9 Ġ|| Ġconverted Color Internal . is S rgb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġconverted Color Internal . as S rgb Unsafe () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint . setColor ( converted Color Internal ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpaint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġpaint . stroke Width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġpaint . path Effect Ġ= Ġpath Effect ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Color Long ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( 2 6 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġconvert Color (@ Color Long Ġcolor : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 9 Ġ|| Ġcolor . is S rgb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . pack ( Color . to Argb ( color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠRect F . adjust For Border ( stroke Width : ĠFloat ) Ġ{ ĊĠĠĠ Ġval Ġhalf Ġ= ĠstrokeWidth Ġ* Ġ 0 . 5 f ĊĊĠĠĠ Ġleft Ġ+= Ġhalf ĊĠĠĠ Ġtop Ġ+= Ġhalf ĊĠĠĠ Ġright Ġ-= Ġhalf ĊĠĠĠ Ġbottom Ġ-= Ġhalf Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġall Ġthe Ġsupported Ġanimation Ġtypes Ġfor Ġborder Ċ Ġ*/ Ċ enum Ġclass ĠBorder Animation Type Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOnly Ġinternal Ġshape Ġof Ġborder Ġis Ġanimated , Ġstroke Ġwidth Ġis Ġnot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠONLY _ SHAPE , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOnly Ġstroke Ġwidth Ġof Ġborder Ġis Ġanimated , Ġinternal Ġshape Ġis Ġnot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠONLY _ WIDTH , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBoth Ġinternal Ġshape Ġof Ġborder Ġand Ġstroke Ġwidth Ġare Ġanimated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠSHA PE _ AND _ WIDTH Ċ }