package Ġcom . st ef an os iano . power ful _ libraries . image view . blur . algorithms Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroidx . rend erscript .* Ċ import Ġcom . st ef an os iano . power ful _ libraries . image view . blur . Blur Options Ċ import Ġjava . lang . ref . Weak Reference ĊĊ Ċ /** Ċ Ġ* ĠClass Ġthat Ġperforms Ġthe Ġgaussian Ġblur Ġwith Ġ 3 x 3 Ġcoefficient Ġmatrix Ġusing Ġrenders cript . Ċ Ġ* ĠChanging Ġradius Ġwill Ġrepeat Ġthe Ġprocess Ġradius Ġtimes . Ċ Ġ*/ Ċ Ċ internal Ġabstract Ġclass ĠBase Conv olve R enders cript Blur Algorithm Ġ: ĠBl ur Algorithm Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġrun Script ( radius : ĠInt , Ġrs : ĠRender Script , Ġoriginal : ĠBitmap ): ĠAl location ĊĊĠĠĠ Ġprivate Ġvar Ġrenders cript : ĠWeak Reference < Render Script ?> ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġset R enders cript ( rend erscript : ĠRender Script ?): ĠBl ur Algorithm Ġ{ Ġthis . rend erscript Ġ= ĠWeak Reference ( rend erscript ); Ġreturn Ġthis Ġ} ĊĊĠĠĠ Ġ@ Throws ( R enders cript Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġblur ( original : ĠBitmap , Ġradius : ĠInt , Ġoptions : ĠBl ur Options ): ĠBitmap Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrs Ġ= Ġrenders cript ?. get () Ġ?: Ġthrow ĠR enders cript Exception (" R enders cript Ġis Ġnull !") ĊĊĠĠĠĠĠĠĠ Ġval Ġoutput : ĠAl location ĊĠĠĠĠĠĠĠ Ġtry Ġ{ Ġoutput Ġ= Ġrun Script ( radius , Ġrs , Ġoriginal ) Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠR enders cript Exception (" R enders cript Ġerror Ġwhile Ġblur ring ! Ġ\ n " Ġ+ Ġe . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġif Ġ(! options . is Static Blur ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( original . width , Ġoriginal . height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . copy To ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . destroy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( original . is Mutable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . copy To ( original ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . destroy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( original . width , Ġoriginal . height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . copy To ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . destroy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }