package Ġmo e . f eng . dan ma qua . ui . common . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Outline Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Outline Provider Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġkotlin . math . min ĊĊ Ċ class ĠCircle ImageView Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠAppCompat ImageView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbounds Rect : ĠRect F Ġ= ĠRect F () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġclip To Outline Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġoutline Provider Ġ= ĠCircle Outline Provider () ĊĊĠĠĠĠĠĠĠ Ġupdate Bounds () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĠĠĠĠĠĠĠ Ġupdate Bounds () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Padding ( left : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Padding ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġupdate Bounds () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Padding Relative ( start : ĠInt , Ġtop : ĠInt , Ġend : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Padding Relative ( start , Ġtop , Ġend , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġupdate Bounds () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Bounds () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġavailable Width Ġ= Ġwidth Ġ- Ġpadding Left Ġ- Ġpadding Right ĊĠĠĠĠĠĠĠ Ġval Ġavailable Height Ġ= Ġheight Ġ- Ġpadding Top Ġ- Ġpadding Bottom ĊĠĠĠĠĠĠĠ Ġval Ġside Length Ġ= Ġmin ( available Width , Ġavailable Height ) ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġpadding Left Ġ+ Ġ( available Width Ġ- Ġside Length ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġpadding Top Ġ+ Ġ( available Height Ġ- Ġside Length ) Ġ/ Ġ 2 f ĊĊĠĠĠĠĠĠĠ Ġbounds Rect . set ( left , Ġtop , Ġleft Ġ+ Ġside Length , Ġtop Ġ+ Ġside Length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠCircle Outline Provider Ġ: ĠView Outline Provider () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Outline ( view : ĠView , Ġoutline : ĠOut line ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= ĠRect (). also ( bounds Rect :: round Out ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutline . set Round Rect ( bounds , Ġbounds . width () Ġ/ Ġ 2 F ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }