package Ġcom . mts ah ak is . barcode . lib Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġcom . google . ml kit . vision . barcode . Barcode ĊĊ Ċ class ĠBar code Overlay Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ- 1 Ċ ) Ġ: ĠView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpaint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġbar codes Ġ= ĠlistOf < Barcode >() ĊĠĠĠ Ġprivate Ġvar Ġscale Factor X Ġ= Ġ 1 . 0 f ĊĠĠĠ Ġprivate Ġvar Ġscale Factor Y Ġ= Ġ 1 . 0 f ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġcanvas . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( barcode Ġin Ġbar codes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbarcode . bounding Box ?. let Ġ{ Ġbounding Box Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġtranslate Rect ( bounding Box ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcx Ġ= Ġrect . left Ġ+ Ġ( rect . right Ġ- Ġrect . left ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcy Ġ= Ġrect . top Ġ+ Ġ( rect . bottom Ġ- Ġrect . top ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġ 1 6 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Circle ( cx , Ġcy , Ġradius , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( scan Result : ĠScan Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Por trait Mode ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor Y Ġ= Ġheight . toFloat () Ġ/ Ġscan Result . image Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor X Ġ= Ġwidth . toFloat () Ġ/ Ġscan Result . image Height ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor Y Ġ= Ġheight . toFloat () Ġ/ Ġscan Result . image Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Factor X Ġ= Ġwidth . toFloat () Ġ/ Ġscan Result . image Width ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbar codes Ġ= Ġscan Result . bar codes ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Por trait Mode (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġorientation : ĠInt Ġ= Ġresources . configuration . orientation ĊĠĠĠĠĠĠĠ Ġreturn Ġorientation Ġ== ĠConfiguration . OR IENTATION _ POR TRA IT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠtranslateX ( x : ĠFloat ): ĠFloat Ġ= Ġx Ġ* Ġscale Factor X ĊĠĠĠ Ġprivate Ġfun ĠtranslateY ( y : ĠFloat ): ĠFloat Ġ= Ġy Ġ* Ġscale Factor Y ĊĊĠĠĠ Ġprivate Ġfun Ġtranslate Rect ( rect : ĠRect ) Ġ= ĠRect F ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtranslateX ( rect . left . toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtranslateY ( rect . top . toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtranslateX ( rect . right . toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtranslateY ( rect . bottom . toFloat ()) ĊĠĠĠ Ġ) Ċ } Ċ