/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠPri y ank ĠV asa Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . pri y ank vas a . android . cam er av iew ex Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . graphics . Surface Texture Ċ import Ġandroid . support . transition . Transition Manager Ċ import Ġandroid . support . v 4 . math . Math Utils Ċ import Ġandroid . view . Surface Ċ import Ġandroid . view . Surface Holder Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . pri y ank vas a . android . cam er av iew ex . extension . convert Dp To Pixel F Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* ĠEn caps ulates Ġall Ġthe Ġoperations Ġrelated Ġto Ġcamera Ġpreview Ġin Ġa Ġbackward - compatible Ġmanner . Ċ Ġ*/ Ċ internal Ġabstract Ġclass ĠPreview Impl Ġ{ ĊĊĠĠĠ Ġvar Ġwidth : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar Ġheight : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinternal Ġabstract Ġval Ġsurface : ĠSurface ? ĊĊĠĠĠ Ġinternal Ġvar Ġsurface ChangeListener : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġvar Ġsurface Tap Listener : Ġ(( x : ĠFloat , Ġy : ĠFloat ) Ġ-> ĠBoolean )? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġvar Ġsurface Pin ch Listener : Ġ(( scale Factor : ĠFloat ) Ġ-> ĠBoolean )? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġabstract Ġval Ġview : ĠView ĊĊĠĠĠ Ġinternal Ġval Ġcontext : ĠContext Ġget () Ġ= Ġview . context ĊĊĠĠĠ Ġval Ġdisplay Size : ĠSize Ġby Ġlazy Ġ{ Ġview . resources . display Metrics . run Ġ{ ĠSize ( width Pixels , Ġheight Pixels ) Ġ} Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġoverlay View : ĠPreview Overlay View Ġby Ġlazy Ġ{ ĠPreview Overlay View ( view . context ) Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġsh utter View : ĠSh utter View Ġby Ġlazy Ġ{ ĠSh utter View ( view . context ) Ġ} ĊĊĠĠĠ Ġinternal Ġabstract Ġval Ġoutput Class : ĠClass < *> ĊĊĠĠĠ Ġinternal Ġabstract Ġval Ġis Ready : ĠBoolean ĊĊĠĠĠ Ġinternal Ġopen Ġval Ġsurface Holder : ĠSurface Holder ? Ġget () Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġopen Ġval Ġsurface Texture : ĠSurface Texture ? Ġget () Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġabstract Ġfun Ġset Display Orientation ( display Orientation : ĠInt ) ĊĊĠĠĠ Ġinternal Ġopen Ġfun Ġset BufferSize ( width : ĠInt , Ġheight : ĠInt ) Ġ{} ĊĊĠĠĠ Ġinternal Ġfun Ġset Size ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġthis . height Ġ= Ġheight ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġmark Touch Areas ( rect s : ĠArray < Rect >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ( view . parent Ġas ? ĠViewGroup )?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay View . rect s Ġ= Ġrect s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove View ( overlay View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( overlay View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġcalculate Touch Area Rect ( ĊĠĠĠĠĠĠĠ Ġsurface Width : ĠInt , ĊĠĠĠĠĠĠĠ Ġsurface Height : ĠInt , ĊĠĠĠĠĠĠĠ Ġcenter X : ĠFloat , ĊĠĠĠĠĠĠĠ Ġcenter Y : ĠFloat , ĊĠĠĠĠĠĠĠ Ġside Length In Dp : ĠFloat Ġ= Ġ 8 0 f ĊĠĠĠ Ġ): ĠRect Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġarea Size : ĠFloat Ġ= Ġcontext . convert Dp To Pixel F ( side Length In Dp ) ĊĊĠĠĠĠĠĠĠ Ġval Ġleft : ĠFloat Ġ= ĠMath Utils . clamp ( center X Ġ- Ġarea Size Ġ/ Ġ 2 , Ġ 0 f , Ġsurface Width Ġ- Ġarea Size ) ĊĠĠĠĠĠĠĠ Ġval Ġtop : ĠFloat Ġ= ĠMath Utils . clamp ( center Y Ġ- Ġarea Size Ġ/ Ġ 2 , Ġ 0 f , Ġsurface Height Ġ- Ġarea Size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrect F Ġ= ĠRect F ( left , Ġtop , Ġleft Ġ+ Ġarea Size , Ġtop Ġ+ Ġarea Size ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . left . round ToInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . top . round ToInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . right . round ToInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrect F . bottom . round ToInt () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġremove Overlay () Ġ{ ĊĠĠĠĠĠĠĠ Ġ( view . parent Ġas ? ĠViewGroup )?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove View ( overlay View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġmeasure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġsh utter View . measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠ Ġ} Ċ }