/* Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 , ĠSales force . com , Ġinc . Ċ Ġ* ĠAll Ġrights Ġreserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠBSD - 3 - Clause Ċ Ġ* ĠFor Ġfull Ġlicense Ġtext , Ġsee Ġthe ĠLICENSE Ġfile Ġin Ġthe Ġrepo Ġroot Ġor Ġhttps :// opensource . org / licenses / BSD - 3 - Clause Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . sales force . barcode scanner plugin Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Path Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ Ċ class ĠBar code Scanner Focus Indicator View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġdef Style Res : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠView ( context , Ġattrs , Ġdef Style Attr , Ġdef Style Res ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġve il Color : ĠInt Ġ= Ġresources . getColor ( R . color . ve il ) ĊĠĠĠ Ġprivate Ġval Ġve il Paint Ġ= ĠPaint (). apply Ġ{ Ġcolor Ġ= Ġve il Color Ġ} ĊĠĠĠ Ġprivate Ġval Ġcorner Radius Ġ= ĊĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . focus _ box _ corner _ radius ). toFloat () Ġ+ ĊĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . focus _ box _ stroke _ width ). toFloat () ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġcanvas ?. apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġthis @ Barcode Scanner Focus Indicator View . width . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġthis @ Barcode Scanner Focus Indicator View . height . toFloat () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdraw Ġtop Ġleft Ġcorner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Path ( Path (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To ( left , Ġtop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( left , Ġtop Ġ+ Ġcorner Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To ( get Arch Bounds ( corner Radius , Ġcorner Radius , Ġcorner Radius ), Ġ 1 8 0 f , Ġ 9 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġve il Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdraw Ġtop Ġright Ġcorner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Path ( Path (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To ( right , Ġtop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( right Ġ- Ġcorner Radius , Ġtop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Arch Bounds ( right Ġ- Ġcorner Radius , Ġtop Ġ+ Ġcorner Radius , Ġcorner Radius ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 7 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġve il Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdraw Ġbottom Ġleft Ġcorner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Path ( Path (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To ( left , Ġbottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( left Ġ+ Ġcorner Radius , Ġbottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Arch Bounds ( left Ġ+ Ġcorner Radius , Ġbottom Ġ- Ġcorner Radius , Ġcorner Radius ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġve il Paint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdraw Ġbottom Ġright Ġcorner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Path ( Path (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To ( right , Ġbottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( right , Ġbottom Ġ- Ġcorner Radius ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarc To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Arch Bounds ( right Ġ- Ġcorner Radius , Ġbottom Ġ- Ġcorner Radius , Ġcorner Radius ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġve il Paint ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Arch Bounds ( center X : ĠFloat , Ġcenter Y : ĠFloat , Ġradius : ĠFloat ) Ġ= ĊĠĠĠĠĠĠĠ ĠRect F ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X Ġ- Ġradius , Ġcenter Y Ġ- Ġradius , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcenter X Ġ+ Ġradius , Ġcenter Y Ġ+ Ġradius ĊĠĠĠĠĠĠĠ Ġ) Ċ } Ċ