package Ġcom . t istory . deque . preview maker . kotlin . manager Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . util . Pair Ċ import Ġcom . t istory . deque . preview maker . kotlin . util . Ez Logger Ċ import Ġio . reactivex . Single Ċ import Ġjava . util . ArrayList Ċ Ċ object ĠBl ur Manager Ġ{ ĊĠĠĠ Ġval Ġblur Guide Paint Ġ= ĠPaint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . MAG ENT A ĊĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 8 0 ĊĠĠĠĠĠĠĠ Ġis D ither Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġstroke Join Ġ= ĠPaint . Join . ROUND ĊĠĠĠĠĠĠĠ Ġstroke Cap Ġ= ĠPaint . Cap . ROUND ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġblur Guide O val Rect F Ġ= ĠRect F () ĊĊĠĠĠ Ġvar Ġguide O val Rect F Left : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġvar Ġguide O val Rect F Top : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġvar Ġguide O val Rect FR ight : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġvar Ġguide O val Rect F Bottom : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġvar Ġguide O val Rect F Left Orig : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġvar Ġguide O val Rect F Top Orig : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġvar Ġguide O val Rect FR ight Orig : ĠFloat Ġ= Ġ 0 . 0 f ĊĠĠĠ Ġvar Ġguide O val Rect F Bottom Orig : ĠFloat Ġ= Ġ 0 . 0 f ĊĊĠĠĠ Ġvar Ġo val Rect F Left For Save : Double Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġo val Rect F Top For Save : Double Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġo val Rect FR ight For Save : Double Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġo val Rect F Bottom For Save : Double Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġreset Manager () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Manager () Ġ{ ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Left Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Top Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Left Orig Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Top Orig Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Orig Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Orig Ġ= Ġ 0 . 0 f ĊĠĠĠĠĠĠĠ Ġo val Rect F Left For Save Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġo val Rect F Top For Save Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġo val Rect FR ight For Save Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġo val Rect F Bottom For Save Ġ= Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Guide O val Rect F ( left : ĠFloat , Ġtop : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Guide O val Rect F Left Top ( left , Ġtop ) ĊĠĠĠĠĠĠĠ Ġset Guide O val Rect FR ight Bottom ( left , Ġtop ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Guide O val Rect F Left Top ( left : ĠFloat , Ġtop : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Left Ġ= Ġleft ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Top Ġ= Ġtop ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Left Orig Ġ= Ġleft ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Top Orig Ġ= Ġtop ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Guide O val Rect FR ight Bottom ( right : ĠFloat , Ġbottom : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblur Guide O val Rect F . set ( guide O val Rect F Left , Ġguide O val Rect F Top , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Ġ= Ġright ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Ġ= Ġbottom ĊĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Orig Ġ= Ġright ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Orig Ġ= Ġbottom ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġ@ return Ġë¶Ī ê°Ģ ëĬ¥ íķľ ĠíĥĢ ìĽĲ ( ì¢ Į íĳľ ê°Ģ ĠíķĺëĤĺ ëĿ¼ ëıĦ ĠìĿ Į ìĪĺ ) ìĿ¼ ë ķĮ Ġfalse ë°ĺ íĻĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcut O val ( changed Preview Width : ĠInt , Ġchanged Preview Height : ĠInt , Ġchanged Preview Pos Width : ĠInt , Ġchanged Preview Pos Height : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ë¶ Ī ê°Ģ ëĬ¥ íķľ ĠíĥĢ ìĽĲ ìĿĦ Ġë§Įëĵ¤ ë©´ Ġìķ ± ìĿ´ Ġí Ħ ° ì§ Ĳ ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= ĠMath . min ( guide O val Rect F Left . toInt (), Ġguide O val Rect FR ight . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġtop Ġ= ĠMath . min ( guide O val Rect F Top . toInt (), Ġguide O val Rect F Bottom . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= ĠMath . max ( guide O val Rect F Left . toInt (), Ġguide O val Rect FR ight . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= ĠMath . max ( guide O val Rect F Top . toInt (), Ġguide O val Rect F Bottom . toInt ()) ĊĠĠĠĠĠĠĠ Ġval Ġb _ right Ġ= Ġchanged Preview Pos Width Ġ+ Ġchanged Preview Width ĊĠĠĠĠĠĠĠ Ġval Ġb _ bottom Ġ= Ġchanged Preview Pos Height Ġ+ Ġchanged Preview Height Ġ// ë¹Ħ íĬ¸ ë§ µ ìĿĺ Ġì¢ Į íĳľ ĊĊĠĠĠĠĠĠĠ ĠE z Logger . d (" CUT ĠO VAL , ĠBIT MAP Ġ: Ġ$ changed Preview Pos Width , Ġ$ changed Preview Pos Height , Ġ$ b _ right , Ġ$ b _ bottom ") ĊĠĠĠĠĠĠĠ ĠE z Logger . d (" O VAL Ġ: Ġ$ left , Ġ$ top , Ġ$ right , Ġ$ bottom ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( left Ġ== Ġright Ġ|| Ġtop Ġ== Ġbottom ) Ġ{ Ġ// Ġ 4 . ĠíĥĢ ìĽĲ ìĿ´ ĠëĦ ĵ ìĿ´ ê°Ģ ĠìĹĨ ìĿĦ ë ķĮ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Left Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Top Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE z Logger . d (" CASE Ġ 4 ĠFALSE Ġ: Ġ$ left , Ġ$ top , Ġ$ right , Ġ$ bottom ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( changed Preview Pos Width Ġ<= Ġleft Ġ&& Ġchanged Preview Pos Height Ġ<= Ġtop Ġ&& Ġb _ right Ġ>= Ġright Ġ&& Ġb _ bottom Ġ>= Ġbottom ) Ġ{ Ġ// Ġ 1 . ĠíĥĢ ìĽĲ ìĿ´ Ġë¹Ħ íĬ¸ ë§ µ ĠëĤ ´ë ¶ Ģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Left Ġ= Ġleft . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Top Ġ= Ġtop . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Ġ= Ġright . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Ġ= Ġbottom . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE z Logger . d (" CASE Ġ 1 ĠTRUE Ġ: Ġ$ left , Ġ$ top , Ġ$ right , Ġ$ bottom ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( b _ right Ġ< Ġleft Ġ|| Ġchanged Preview Pos Width Ġ> Ġright Ġ|| Ġb _ bottom Ġ< Ġtop Ġ|| Ġchanged Preview Pos Height Ġ> Ġbottom ) Ġ{ Ġ// Ġ 2 . ĠíĥĢ ìĽĲ ìĿ´ Ġë¹Ħ íĬ¸ ë§ µ Ġë°Ķ ê¹ ¥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Left Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Top Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE z Logger . d (" CASE Ġ 2 ĠFALSE Ġ: Ġ$ left , Ġ$ top , Ġ$ right , Ġ$ bottom ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġ 3 . Ġê·¸ ĠìĻ ¸ Ġê² ¹ ì¹ ł Ġê²½ìļ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Left Ġ= ĠMath . max ( left , Ġchanged Preview Pos Width ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Top Ġ= ĠMath . max ( top , Ġchanged Preview Pos Height ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Ġ= ĠMath . min ( right , Ġb _ right ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Ġ= ĠMath . min ( bottom , Ġb _ bottom ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE z Logger . d (" CASE Ġ 3 ĠTRUE Ġ: Ġ$ guide O val Rect F Left , Ġ$ guide O val Rect F Top , Ġ$ guide O val Rect FR ight , Ġ$ guide O val Rect F Bottom ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠìŀĲ ë¥´ ê¸° ĠìłĦ ĠíĥĢ ìĽĲ ìĿĺ Ġì¢ Į íĳľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Guide O val Rect FO rig (): ĠArrayList < Float > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠArrayList < Float >() ĊĠĠĠĠĠĠĠ Ġval Ġleft Orig Ġ= ĠMath . min ( guide O val Rect F Left Orig , Ġguide O val Rect FR ight Orig ) ĊĠĠĠĠĠĠĠ Ġval Ġtop Orig Ġ= ĠMath . min ( guide O val Rect F Top Orig , Ġguide O val Rect F Bottom Orig ) ĊĠĠĠĠĠĠĠ Ġval Ġright Orig Ġ= ĠMath . max ( guide O val Rect F Left Orig , Ġguide O val Rect FR ight Orig ) ĊĠĠĠĠĠĠĠ Ġval Ġbottom Orig Ġ= ĠMath . max ( guide O val Rect F Top Orig , Ġguide O val Rect F Bottom Orig ) ĊĊĠĠĠĠĠĠĠ Ġguide O val Rect F Left Orig Ġ= Ġleft Orig ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Top Orig Ġ= Ġtop Orig ĊĠĠĠĠĠĠĠ Ġguide O val Rect FR ight Orig Ġ= Ġright Orig ĊĠĠĠĠĠĠĠ Ġguide O val Rect F Bottom Orig Ġ= Ġbottom Orig ĊĊĠĠĠĠĠĠĠ Ġresult . add ( guide O val Rect F Left Orig ) ĊĠĠĠĠĠĠĠ Ġresult . add ( guide O val Rect F Top Orig ) ĊĠĠĠĠĠĠĠ Ġresult . add ( guide O val Rect FR ight Orig ) ĊĠĠĠĠĠĠĠ Ġresult . add ( guide O val Rect F Bottom Orig ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġë¦¬ ìĤ¬ ìĿ´ ì§ ķ ëĲľ Ġë¹Ħ íĬ¸ ë§ µ ìĿĺ ĠíĥĢ ìĽĲ ìĹĲìĦľ ĠìĽĲ ëŀĺ Ġë¹Ħ íĬ¸ ë§ µ ìĿĺ ĠíĥĢ ìĽĲ ìĿĦ Ġê³Ħ ìĤ° íķ ´ë ĥ Ħ ĊĠĠĠĠ Ġ* Ġ@ return Ġpart Left , Ġpart Top , Ġpart Right , Ġpart Bottom , Ġo val Orig Left , Ġo val Orig Top , Ġo val Orig Right , Ġo val Orig Bottom ĊĠĠĠĠ Ġ* Ġìŀ ĺ ë¦ ° ĠìĤ¬ ê°ģ íĺķ ìĿĺ Ġì¢ Į ìĥģ Ġì¢ Į íĳľ , Ġìļ° íķĺ Ġì¢ Į íĳľ , Ġìŀ ĺë¦¬ ê¸° ĠìłĦ ĠíĥĢ ìĽĲ ìĿĺ ĠìĽĲ ë³¸ ĠìĤ¬ ìĿ´ ì¦ Ī ìĿĺ Ġì¢ Į ìĥģ Ġì¢ Į íĳľ , Ġìļ° íķĺ Ġì¢ Į íĳľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġresized Blur O val To Original Blur O val ( canvas Width : ĠInt , Ġcanvas Height : ĠInt ): Ġjava . util . ArrayList < Double > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= ĠMath . min ( guide O val Rect F Left , Ġguide O val Rect FR ight ) ĊĠĠĠĠĠĠĠ Ġval Ġtop Ġ= ĠMath . min ( guide O val Rect F Top , Ġguide O val Rect F Bottom ) ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= ĠMath . max ( guide O val Rect F Left , Ġguide O val Rect FR ight ) ĊĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= ĠMath . max ( guide O val Rect F Top , Ġguide O val Rect F Bottom ) ĊĊĠĠĠĠĠĠĠ Ġval Ġo val Left Ġ= ĠMath . min ( get Guide O val Rect FO rig ()[ 0 ], Ġget Guide O val Rect FO rig ()[ 2 ]) ĊĠĠĠĠĠĠĠ Ġval Ġo val Top Ġ= ĠMath . min ( get Guide O val Rect FO rig ()[ 1 ], Ġget Guide O val Rect FO rig ()[ 3 ]) ĊĠĠĠĠĠĠĠ Ġval Ġo val Right Ġ= ĠMath . max ( get Guide O val Rect FO rig ()[ 0 ], Ġget Guide O val Rect FO rig ()[ 2 ]) ĊĠĠĠĠĠĠĠ Ġval Ġo val Bottom Ġ= ĠMath . max ( get Guide O val Rect FO rig ()[ 1 ], Ġget Guide O val Rect FO rig ()[ 3 ]) ĊĊĠĠĠĠĠĠĠ ĠE z Logger . d (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ$ left ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ$ top ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġ$ right ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ$ bottom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo val Left Ġ= Ġ$ oval Left ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo val Top Ġ= Ġ$ oval Top ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo val Right Ġ= Ġ$ oval Right ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo val Bottom Ġ= Ġ$ oval Bottom ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġpb w Ġ= ĠPreview Bitmap Manager . selected Preview Bitmap ?. width Ġ Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġpb h Ġ= Ġ ĠPreview Bitmap Manager . selected Preview Bitmap ?. height Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġelements Ġ= ĠPreview Bitmap Manager . get Res ized Bitmap Elements ( pb w , Ġpb h , Ġcanvas Width , Ġcanvas Height ) ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġjava . util . ArrayList < Double >() ĊĊĠĠĠĠĠĠĠ Ġval Ġpw Pos Ġ= Ġelements [ 0 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġph Pos Ġ= Ġelements [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġpw Ġ= Ġelements [ 2 ]. toDouble () ĊĠĠĠĠĠĠĠ Ġval Ġph Ġ= Ġelements [ 3 ]. toDouble () ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Rate Ġ= Ġpb w Ġ/ Ġpw ĊĠĠĠĠĠĠĠ Ġval Ġheight Rate Ġ= Ġpb h Ġ/ Ġph ĊĊĠĠĠĠĠĠĠ Ġval Ġpart Left Ġ= Ġwidth Rate Ġ* Ġ( left Ġ- Ġpw Pos ) ĊĠĠĠĠĠĠĠ Ġval Ġpart Top Ġ= Ġheight Rate Ġ* Ġ( top Ġ- Ġph Pos ) ĊĠĠĠĠĠĠĠ Ġval Ġpart Right Ġ= Ġwidth Rate Ġ* Ġ( right Ġ- Ġpw Pos ) ĊĠĠĠĠĠĠĠ Ġval Ġpart Bottom Ġ= Ġheight Rate Ġ* Ġ( bottom Ġ- Ġph Pos ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpart O val Left Ġ= Ġwidth Rate Ġ* Ġ( oval Left Ġ- Ġpw Pos ) ĊĠĠĠĠĠĠĠ Ġval Ġpart O val Top Ġ= Ġheight Rate Ġ* Ġ( oval Top Ġ- Ġph Pos ) ĊĠĠĠĠĠĠĠ Ġval Ġpart O val Right Ġ= Ġwidth Rate Ġ* Ġ( oval Right Ġ- Ġpw Pos ) ĊĠĠĠĠĠĠĠ Ġval Ġpart O val Bottom Ġ= Ġheight Rate Ġ* Ġ( oval Bottom Ġ- Ġph Pos ) ĊĊĠĠĠĠĠĠĠ Ġresults . add ( part Left ) ĊĠĠĠĠĠĠĠ Ġresults . add ( part Top ) ĊĠĠĠĠĠĠĠ Ġresults . add ( part Right ) ĊĠĠĠĠĠĠĠ Ġresults . add ( part Bottom ) ĊĊĠĠĠĠĠĠĠ Ġresults . add ( part O val Left ) ĊĠĠĠĠĠĠĠ Ġresults . add ( part O val Top ) ĊĠĠĠĠĠĠĠ Ġresults . add ( part O val Right ) ĊĠĠĠĠĠĠĠ Ġresults . add ( part O val Bottom ) ĊĊĠĠĠĠĠĠĠ ĠE z Logger . d (" res ized Blur O val To Original Blur O val Ġresults Ġ: Ġ$ results ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Blur Orig Rect ( left : ĠDouble , Ġtop : ĠDouble , Ġright : ĠDouble , Ġbottom : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġo val Rect F Left For Save Ġ= Ġleft ĊĠĠĠĠĠĠĠ Ġo val Rect F Top For Save Ġ= Ġtop ĊĠĠĠĠĠĠĠ Ġo val Rect FR ight For Save Ġ= Ġright ĊĠĠĠĠĠĠĠ Ġo val Rect F Bottom For Save Ġ= Ġbottom ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdo Fast Blur ( sent Bitmap : ĠBitmap , Ġscale : ĠFloat , Ġradius : ĠInt ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( radius Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= ĠMath . round ( sent Bitmap . width Ġ* Ġscale ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= ĠMath . round ( sent Bitmap . height Ġ* Ġscale ) ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Scaled Bitmap ( sent Bitmap , Ġwidth , Ġheight , Ġfalse ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Mutable ) Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġit . copy ( it . config , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġbitmap . width ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġbitmap . height ĊĊĠĠĠĠĠĠĠ Ġval Ġpix Ġ= ĠInt Array ( w Ġ* Ġh ) ĊĠĠĠĠĠĠĠ ĠE z Logger . d ("$ w Ġ$ h Ġ${ pix . size }") ĊĠĠĠĠĠĠĠ Ġbitmap . get Pixels ( pix , Ġ 0 , Ġw , Ġ 0 , Ġ 0 , Ġw , Ġh ) ĊĊĠĠĠĠĠĠĠ Ġval Ġwm Ġ= Ġw Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġhm Ġ= Ġh Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġwh Ġ= Ġw Ġ* Ġh ĊĠĠĠĠĠĠĠ Ġval Ġdiv Ġ= Ġradius Ġ+ Ġradius Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠInt Array ( wh ) ĊĠĠĠĠĠĠĠ Ġval Ġg Ġ= ĠInt Array ( wh ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠInt Array ( wh ) ĊĠĠĠĠĠĠĠ Ġvar Ġr sum : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġg sum : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġb sum : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġx : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġy : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġi : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġp : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġy p : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġy i : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġy w : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġv min Ġ= ĠInt Array ( Math . max ( w , Ġh )) ĊĊĠĠĠĠĠĠĠ Ġvar Ġdiv sum Ġ= Ġdiv Ġ+ Ġ 1 Ġshr Ġ 1 ĊĠĠĠĠĠĠĠ Ġdiv sum Ġ*= Ġdiv sum ĊĠĠĠĠĠĠĠ Ġval Ġdv Ġ= ĠInt Array ( 2 5 6 Ġ* Ġdiv sum ) ĊĠĠĠĠĠĠĠ Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġ 2 5 6 Ġ* Ġdiv sum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdv [ i ] Ġ= Ġi Ġ/ Ġdiv sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġy i Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġy w Ġ= Ġy i ĊĊĠĠĠĠĠĠĠ Ġval Ġstack Ġ= ĠArray ( div ) Ġ{ ĠInt Array ( 3 ) Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġstack pointer : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġstack start : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġs ir : ĠInt Array ĊĠĠĠĠĠĠĠ Ġvar Ġr bs : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġr 1 Ġ= Ġradius Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġrout sum : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġg out sum : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġbout sum : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġr in sum : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġg in sum : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġbin sum : ĠInt ĊĊĠĠĠĠĠĠĠ Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( y Ġ< Ġh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb sum Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg sum Ġ= Ġb sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sum Ġ= Ġg sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbout sum Ġ= Ġr sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg out sum Ġ= Ġbout sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrout sum Ġ= Ġg out sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbin sum Ġ= Ġrout sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg in sum Ġ= Ġbin sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr in sum Ġ= Ġg in sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġ- radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ<= Ġradius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ= Ġpix [ yi Ġ+ ĠMath . min ( wm , ĠMath . max ( i , Ġ 0 ))] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir Ġ= Ġstack [ i Ġ+ Ġradius ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 0 ] Ġ= Ġp Ġand Ġ 0 xff 0 0 0 0 Ġshr Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 1 ] Ġ= Ġp Ġand Ġ 0 x 0 0 ff 0 0 Ġshr Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 2 ] Ġ= Ġp Ġand Ġ 0 x 0 0 0 0 ff ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr bs Ġ= Ġr 1 Ġ- ĠMath . abs ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sum Ġ+= Ġs ir [ 0 ] Ġ* Ġr bs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg sum Ġ+= Ġs ir [ 1 ] Ġ* Ġr bs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb sum Ġ+= Ġs ir [ 2 ] Ġ* Ġr bs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr in sum Ġ+= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg in sum Ġ+= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbin sum Ġ+= Ġs ir [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrout sum Ġ+= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg out sum Ġ+= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbout sum Ġ+= Ġs ir [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack pointer Ġ= Ġradius ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( x Ġ< Ġw ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr [ yi ] Ġ= Ġdv [ r sum ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg [ yi ] Ġ= Ġdv [ g sum ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb [ yi ] Ġ= Ġdv [ b sum ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sum Ġ-= Ġrout sum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg sum Ġ-= Ġg out sum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb sum Ġ-= Ġbout sum ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack start Ġ= Ġstack pointer Ġ- Ġradius Ġ+ Ġdiv ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir Ġ= Ġstack [ stack start Ġ% Ġdiv ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrout sum Ġ-= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg out sum Ġ-= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbout sum Ġ-= Ġs ir [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv min [ x ] Ġ= ĠMath . min ( x Ġ+ Ġradius Ġ+ Ġ 1 , Ġwm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ= Ġpix [ yw Ġ+ Ġv min [ x ]] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 0 ] Ġ= Ġp Ġand Ġ 0 xff 0 0 0 0 Ġshr Ġ 1 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 1 ] Ġ= Ġp Ġand Ġ 0 x 0 0 ff 0 0 Ġshr Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 2 ] Ġ= Ġp Ġand Ġ 0 x 0 0 0 0 ff ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr in sum Ġ+= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg in sum Ġ+= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbin sum Ġ+= Ġs ir [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sum Ġ+= Ġr in sum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg sum Ġ+= Ġg in sum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb sum Ġ+= Ġbin sum ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack pointer Ġ= Ġ( stack pointer Ġ+ Ġ 1 ) Ġ% Ġdiv ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir Ġ= Ġstack [ stack pointer Ġ% Ġdiv ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrout sum Ġ+= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg out sum Ġ+= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbout sum Ġ+= Ġs ir [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr in sum Ġ-= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg in sum Ġ-= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbin sum Ġ-= Ġs ir [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy i ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy w Ġ+= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( x Ġ< Ġw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb sum Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg sum Ġ= Ġb sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sum Ġ= Ġg sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbout sum Ġ= Ġr sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg out sum Ġ= Ġbout sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrout sum Ġ= Ġg out sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbin sum Ġ= Ġrout sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg in sum Ġ= Ġbin sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr in sum Ġ= Ġg in sum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy p Ġ= Ġ- radius Ġ* Ġw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġ- radius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ<= Ġradius ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy i Ġ= ĠMath . max ( 0 , Ġy p ) Ġ+ Ġx ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir Ġ= Ġstack [ i Ġ+ Ġradius ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 0 ] Ġ= Ġr [ yi ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 1 ] Ġ= Ġg [ yi ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 2 ] Ġ= Ġb [ yi ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr bs Ġ= Ġr 1 Ġ- ĠMath . abs ( i ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sum Ġ+= Ġr [ yi ] Ġ* Ġr bs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg sum Ġ+= Ġg [ yi ] Ġ* Ġr bs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb sum Ġ+= Ġb [ yi ] Ġ* Ġr bs ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr in sum Ġ+= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg in sum Ġ+= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbin sum Ġ+= Ġs ir [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrout sum Ġ+= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg out sum Ġ+= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbout sum Ġ+= Ġs ir [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ< Ġhm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy p Ġ+= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy i Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack pointer Ġ= Ġradius ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( y Ġ< Ġh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPre serve Ġalpha Ġchannel : Ġ( Ġ 0 xff 0 0 0 0 0 0 Ġ& Ġpix [ yi ] Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpix [ yi ] Ġ= Ġ- 0 x 1 0 0 0 0 0 0 Ġand Ġpix [ yi ] Ġor Ġ( dv [ r sum ] Ġshl Ġ 1 6 ) Ġor Ġ( dv [ g sum ] Ġshl Ġ 8 ) Ġor Ġdv [ b sum ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sum Ġ-= Ġrout sum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg sum Ġ-= Ġg out sum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb sum Ġ-= Ġbout sum ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack start Ġ= Ġstack pointer Ġ- Ġradius Ġ+ Ġdiv ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir Ġ= Ġstack [ stack start Ġ% Ġdiv ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrout sum Ġ-= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg out sum Ġ-= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbout sum Ġ-= Ġs ir [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv min [ y ] Ġ= ĠMath . min ( y Ġ+ Ġr 1 , Ġhm ) Ġ* Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ= Ġx Ġ+ Ġv min [ y ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 0 ] Ġ= Ġr [ p ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 1 ] Ġ= Ġg [ p ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir [ 2 ] Ġ= Ġb [ p ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr in sum Ġ+= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg in sum Ġ+= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbin sum Ġ+= Ġs ir [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sum Ġ+= Ġr in sum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg sum Ġ+= Ġg in sum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb sum Ġ+= Ġbin sum ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack pointer Ġ= Ġ( stack pointer Ġ+ Ġ 1 ) Ġ% Ġdiv ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ir Ġ= Ġstack [ stack pointer ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrout sum Ġ+= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg out sum Ġ+= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbout sum Ġ+= Ġs ir [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr in sum Ġ-= Ġs ir [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg in sum Ġ-= Ġs ir [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbin sum Ġ-= Ġs ir [ 2 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy i Ġ+= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠE z Logger . d ( w . toString () Ġ+ Ġ" Ġ" Ġ+ Ġh Ġ+ Ġ" Ġ" Ġ+ Ġpix . size ) ĊĠĠĠĠĠĠĠ Ġbitmap . set Pixels ( pix , Ġ 0 , Ġw , Ġ 0 , Ġ 0 , Ġw , Ġh ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠ Ġ} Ċ }