package Ġcom . pr ong bang . scan view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Typed Value Ċ import Ġme . dm 7 . barcode scanner . core . Display Utils Ċ import Ġme . dm 7 . barcode scanner . core . View Finder View Ċ Ċ class ĠScanner Finder View Ġ: ĠView Finder View Ġ{ ĊĊ ĉ private Ġvar Ġm F ram ing Rect : ĠRect ? Ġ= Ġnull ĊĊ ĉ constructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ Ċĉ ĉ init () Ċ ĉ } ĊĊ ĉ constructor ( context : ĠContext , Ġattribute Set : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattribute Set ) Ġ{ Ċĉ ĉ init () Ċ ĉ } ĊĊ ĉ private Ġfun Ġinit () Ġ{ Ċĉ ĉ val Ġtext Pixel Size Ġ= ĠTyped Value . apply Dimension ( Ċĉĉĉ ĉ Typed Value . COMPLEX _ UNIT _ SP , Ċĉĉĉ ĉ TRA DE _ MARK _ TEXT _ SIZE _ SP . toFloat (), Ċĉĉĉ ĉ resources . display Metrics Ċĉ ĉ ) Ċĉ ĉ PA INT . apply Ġ{ Ċĉĉ ĉ color Ġ= ĠColor . WHITE Ċĉĉ ĉ is Anti Alias Ġ= Ġtrue Ċĉĉ ĉ text Size Ġ= Ġtext Pixel Size Ċĉ ĉ } Ċĉ ĉ set Square View Finder ( true ) Ċĉ ĉ set BorderColor ( Color . WHITE ) Ċĉ ĉ setBorder Corner Rounded ( true ) Ċĉ ĉ setBorder Corner Radius ( 4 ) Ċĉ ĉ setBorder Stroke Width ( 4 ) Ċĉ ĉ setBorder Line Length ( 6 0 ) Ċ ĉ } ĊĊ ĉ override Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ Ċĉ ĉ super . on Draw ( canvas ) Ċĉ ĉ draw Trade Mark ( canvas ) Ċ ĉ } ĊĊ ĉ private Ġfun Ġdraw Trade Mark ( canvas : ĠCanvas ) Ġ{ Ċĉ ĉ val Ġfram ing Rect Ġ= Ġfram ing Rect Ċĉ ĉ val Ġtrade Mark Top : ĠFloat Ċĉ ĉ val Ġtrade Mark Left : ĠFloat Ċĉ ĉ if Ġ( fr aming Rect Ġ!= Ġnull ) Ġ{ Ċĉĉ ĉ trade Mark Top Ġ= Ġfram ing Rect . bottom Ġ+ ĠP AINT . text Size Ġ+ Ġ 1 0 Ċĉĉ ĉ trade Mark Left Ġ= Ġfram ing Rect . left . toFloat () Ċĉ ĉ } Ġelse Ġ{ Ċĉĉ ĉ trade Mark Top Ġ= Ġ 1 0 f Ċĉĉ ĉ trade Mark Left Ġ= Ġcanvas . height Ġ- ĠP AINT . text Size Ġ- Ġ 1 0 Ċĉ ĉ } Ċĉ ĉ canvas . draw Text ( TRA DE _ MARK _ TEXT , Ġtrade Mark Left , Ġtrade Mark Top , ĠP AINT ) Ċ ĉ } ĊĊ ĉ override Ġfun Ġget F ram ing Rect (): ĠRect ? Ġ{ Ċĉ ĉ return Ġm F ram ing Rect Ċ ĉ } ĊĊ ĉ override Ġfun Ġupdate F ram ing Rect () Ġ{ Ċĉ ĉ val Ġview Resolution Ġ= ĠPoint ( width , Ġheight ) Ċĉ ĉ var Ġwidth : ĠInt Ċĉ ĉ var Ġheight : ĠInt Ċĉ ĉ val Ġorientation Ġ= ĠDisplay Utils . get Screen Orientation ( context ) ĊĊĉ ĉ if Ġ( m Square View Finder ) Ġ{ Ċĉĉ ĉ if Ġ( orientation Ġ!= ĠConfiguration . OR IENTATION _ POR TRA IT ) Ġ{ Ċĉĉĉ ĉ height Ġ= Ġget Height () Ġ- Ġ 5 0 Ċĉĉĉ ĉ width Ġ= Ġheight Ċĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉ ĉ width Ġ= Ġget Width () Ġ- Ġ 5 0 Ċĉĉĉ ĉ height Ġ= Ġwidth Ċĉĉ ĉ } Ċĉ ĉ } Ġelse Ġ{ Ċĉĉ ĉ if Ġ( orientation Ġ!= ĠConfiguration . OR IENTATION _ POR TRA IT ) Ġ{ Ċĉĉĉ ĉ height Ġ= Ġget Height () Ġ- Ġ 5 0 Ċĉĉĉ ĉ width Ġ= Ġ( 1 . 4 f Ġ* Ġheight ). toInt () Ċĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉ ĉ width Ġ= Ġget Width () Ġ- Ġ 5 0 Ċĉĉĉ ĉ height Ġ= Ġwidth Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ if Ġ( width Ġ> Ġget Width ()) Ġ{ Ċĉĉ ĉ width Ġ= Ġget Width () Ġ- Ġ 5 0 Ċĉ ĉ } ĊĊĉ ĉ if Ġ( height Ġ> Ġget Height ()) Ġ{ Ċĉĉ ĉ height Ġ= Ġget Height () Ġ- Ġ 5 0 Ċĉ ĉ } ĊĊĉ ĉ val Ġleft Offset Ġ= Ġ( view Resolution . x Ġ- Ġwidth ) Ġ/ Ġ 2 Ċĉ ĉ val Ġtop Offset Ġ= Ġ( view Resolution . y Ġ- Ġheight ) Ġ/ Ġ 2 Ċĉ ĉ mF ram ing Rect Ġ= ĠRect ( left Offset Ġ+ Ġ 0 , Ġtop Offset Ġ+ Ġ 0 , Ġleft Offset Ġ+ Ġwidth Ġ- Ġ 0 , Ċĉĉĉ ĉ top Offset Ġ+ Ġheight Ġ- Ġ 0 ) Ċ ĉ } ĊĊ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ private Ġconst Ġval ĠTR ADE _ MARK _ TEXT Ġ= Ġ"" Ċĉ ĉ private Ġconst Ġval ĠTR ADE _ MARK _ TEXT _ SIZE _ SP Ġ= Ġ 4 Ċĉ ĉ private Ġval ĠP AINT Ġ= ĠPaint () Ċ ĉ } Ċ }