package Ġjp . de ly . ko ach . overlay s . shapes Ċ Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroidx . annotation . Px Ċ import Ġjp . de ly . ko ach . IO ver lay Shape Ċ import Ġjp . de ly . ko ach . View Spec Ċ Ċ class ĠEl lipse Overlay Shape ( ĊĠĠĠ Ġ@ Px Ġprivate Ġval ĠmarginTop : ĠInt , ĊĠĠĠ Ġ@ Px Ġprivate Ġval ĠmarginBottom : ĠInt , ĊĠĠĠ Ġ@ Px Ġprivate Ġval ĠmarginLeft : ĠInt , ĊĠĠĠ Ġ@ Px Ġprivate Ġval ĠmarginRight : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġdirection : ĠDirection Ġ= ĠDirection . Horizontal Ċ ) Ġ: ĠI Overlay Shape Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠDirection Ġ{ ĊĠĠĠĠĠĠĠ ĠVertical , ĠHorizontal ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Px Ġmargin : ĠInt , ĊĠĠĠĠĠĠĠ Ġdirection : ĠDirection Ġ= ĠDirection . Horizontal ĊĠĠĠ Ġ) Ġ: Ġthis ( margin , Ġmargin , Ġmargin , Ġmargin , Ġdirection ) ĊĊĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas , Ġpaint : ĠPaint , Ġtarget View Spec : ĠView Spec ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Horizontal Ġ-> Ġdraw Horizontal ( canvas , Ġpaint , Ġtarget View Spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirection . Vertical Ġ-> Ġdraw Vertical ( canvas , Ġpaint , Ġtarget View Spec ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Horizontal ( canvas : ĠCanvas , Ġpaint : ĠPaint , Ġtarget View Spec : ĠView Spec ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Rect Ġ= Ġtarget View Spec . rect ĊĠĠĠĠĠĠĠ Ġval Ġhalf Height Ġ= Ġtarget Rect . height () Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġtarget Rect . height () Ġ/ Ġ 2 f Ġ+ Ġ( margin Top Ġ+ ĠmarginBottom ) Ġ/ Ġ 2 f ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . left Ġ+ Ġhalf Height Ġ- ĠmarginLeft , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . top Ġ+ Ġhalf Height , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . right Ġ- Ġhalf Height Ġ+ ĠmarginRight , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . top Ġ+ Ġhalf Height , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . left Ġ+ Ġhalf Height Ġ- ĠmarginLeft , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . top Ġ- ĠmarginTop . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . right Ġ- Ġhalf Height Ġ+ ĠmarginRight , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . bottom Ġ+ ĠmarginBottom . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Vertical ( canvas : ĠCanvas , Ġpaint : ĠPaint , Ġtarget View Spec : ĠView Spec ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Rect Ġ= Ġtarget View Spec . rect ĊĠĠĠĠĠĠĠ Ġval Ġhalf Width Ġ= Ġtarget Rect . width () Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġtarget Rect . width () Ġ/ Ġ 2 f Ġ+ Ġ( margin Left Ġ+ ĠmarginRight ) Ġ/ Ġ 2 f ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . left Ġ+ Ġhalf Width , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . top Ġ+ Ġhalf Width Ġ- ĠmarginTop , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . left Ġ+ Ġhalf Width , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . bottom Ġ- Ġhalf Width Ġ+ ĠmarginBottom , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġradius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . left Ġ- ĠmarginLeft . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . top Ġ+ Ġhalf Width Ġ- ĠmarginTop , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . right Ġ+ ĠmarginTop . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Rect . bottom Ġ- Ġhalf Width Ġ+ ĠmarginBottom , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaint ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }