package Ġcom . can hub . crop per Ċ Ċ import Ġandroid . graphics . Rect F Ċ import Ġcom . can hub . crop per . Crop ImageView . Crop Shape . O VAL Ċ import Ġcom . can hub . crop per . Crop ImageView . Crop Shape . RECT ANGLE Ċ import Ġcom . can hub . crop per . Crop ImageView . Crop Shape . RECT ANGLE _ HORIZONTAL _ ONLY Ċ import Ġcom . can hub . crop per . Crop ImageView . Crop Shape . RECT ANGLE _ VERTICAL _ ONLY Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . max Ċ Ċ /** ĠHandler Ġfrom Ġcrop Ġwindow Ġstuff , Ġmoving Ġand Ġknowing Ġposition . Ġ*/ Ċ class ĠC rop Window Handler Ġ{ ĊĊĠĠĠ Ġ// Ġregion : ĠFields Ġand ĠConstants ĊĠĠĠ Ġ/** ĠThe Ġ 4 Ġedges Ġof Ġthe Ġcrop Ġwindow Ġdefining Ġits Ġcoordinates Ġand Ġsize Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Edges Ġ= ĠRect F () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRectangle Ġused Ġto Ġreturn Ġthe Ġedges Ġrectangle Ġwithout Ġability Ġto Ġchange Ġit Ġand Ġwithout Ġcreating ĊĠĠĠĠ Ġ* Ġnew Ġall Ġthe Ġtime . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Get Edges Ġ= ĠRect F () ĊĊĠĠĠ Ġ/** ĠMinimum Ġwidth Ġin Ġpixels Ġthat Ġthe Ġcrop Ġwindow Ġcan Ġget . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Min Crop Window Width Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĠMinimum Ġheight Ġin Ġpixels Ġthat Ġthe Ġcrop Ġwindow Ġcan Ġget . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Min Crop Window Height Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĠMaximum Ġwidth Ġin Ġpixels Ġthat Ġthe Ġcrop Ġwindow Ġcan ĠCURRENT LY Ġget . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Max Crop Window Width Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĠMaximum Ġheight Ġin Ġpixels Ġthat Ġthe Ġcrop Ġwindow Ġcan ĠCURRENT LY Ġget . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Max Crop Window Height Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMinimum Ġwidth Ġin Ġpixels Ġthat Ġthe Ġresult Ġof Ġcro pping Ġan Ġimage Ġcan Ġget , Ġaffects Ġcrop Ġwindow Ġwidth ĊĠĠĠĠ Ġ* Ġadjusted Ġby Ġwidth Ġscale Ġfactor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Min Crop Result Width Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMinimum Ġheight Ġin Ġpixels Ġthat Ġthe Ġresult Ġof Ġcro pping Ġan Ġimage Ġcan Ġget , Ġaffects Ġcrop Ġwindow ĊĠĠĠĠ Ġ* Ġheight Ġadjusted Ġby Ġheight Ġscale Ġfactor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Min Crop Result Height Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMaximum Ġwidth Ġin Ġpixels Ġthat Ġthe Ġresult Ġof Ġcro pping Ġan Ġimage Ġcan Ġget , Ġaffects Ġcrop Ġwindow Ġwidth ĊĠĠĠĠ Ġ* Ġadjusted Ġby Ġwidth Ġscale Ġfactor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Max Crop Result Width Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMaximum Ġheight Ġin Ġpixels Ġthat Ġthe Ġresult Ġof Ġcro pping Ġan Ġimage Ġcan Ġget , Ġaffects Ġcrop Ġwindow ĊĠĠĠĠ Ġ* Ġheight Ġadjusted Ġby Ġheight Ġscale Ġfactor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Max Crop Result Height Ġ= Ġ 0 f ĊĊĠĠĠ Ġ/** ĠThe Ġwidth Ġscale Ġfactor Ġof Ġshown Ġimage Ġand Ġactual Ġimage Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Scale Factor Width Ġ= Ġ 1 f ĊĊĠĠĠ Ġ/** ĠThe Ġheight Ġscale Ġfactor Ġof Ġshown Ġimage Ġand Ġactual Ġimage Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Scale Factor Height Ġ= Ġ 1 f ĊĠĠĠ Ġ// Ġend region ĊĠĠĠ Ġ/** ĠGet Ġthe Ġleft / top / right / bottom Ġcoordinates Ġof Ġthe Ġcrop Ġwindow . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġget Rect (): ĠRect F Ġ{ ĊĠĠĠĠĠĠĠ Ġm Get Edges . set ( m Edges ) ĊĠĠĠĠĠĠĠ Ġreturn Ġm Get Edges ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMinimum Ġwidth Ġin Ġpixels Ġthat Ġthe Ġcrop Ġwindow Ġcan Ġget . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġget Min Crop Width () Ġ= ĊĠĠĠĠĠĠĠ Ġm Min Crop Window Width . coerce At Least ( m Min Crop Result Width Ġ/ Ġm Scale Factor Width ) ĊĊĠĠĠ Ġ/** ĠMinimum Ġheight Ġin Ġpixels Ġthat Ġthe Ġcrop Ġwindow Ġcan Ġget . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġget Min Crop Height () Ġ= ĊĠĠĠĠĠĠĠ Ġm Min Crop Window Height . coerce At Least ( m Min Crop Result Height Ġ/ Ġm Scale Factor Height ) ĊĊĠĠĠ Ġ/** ĠMaximum Ġwidth Ġin Ġpixels Ġthat Ġthe Ġcrop Ġwindow Ġcan Ġget . Ġ Ġ*/ ĊĠĠĠ Ġfun ĠgetMax Crop Width () Ġ= ĊĠĠĠĠĠĠĠ Ġm Max Crop Window Width . coerce At Most ( m Max Crop Result Width Ġ/ Ġm Scale Factor Width ) ĊĊĠĠĠ Ġ/** ĠMaximum Ġheight Ġin Ġpixels Ġthat Ġthe Ġcrop Ġwindow Ġcan Ġget . Ġ Ġ*/ ĊĠĠĠ Ġfun ĠgetMax Crop Height () Ġ= ĊĠĠĠĠĠĠĠ Ġm Max Crop Window Height . coerce At Most ( m Max Crop Result Height Ġ/ Ġm Scale Factor Height ) ĊĊĠĠĠ Ġ/** Ġget Ġthe Ġscale Ġfactor Ġ( on Ġwidth ) Ġof Ġthe Ġshown Ġimage Ġto Ġoriginal Ġimage . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġget Scale Factor Width () Ġ= Ġm Scale Factor Width ĊĊĠĠĠ Ġ/** Ġget Ġthe Ġscale Ġfactor Ġ( on Ġheight ) Ġof Ġthe Ġshown Ġimage Ġto Ġoriginal Ġimage . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġget Scale Factor Height () Ġ= Ġm Scale Factor Height ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġmin Ġsize Ġthe Ġresulting Ġcro pping Ġimage Ġis Ġallowed Ġto Ġbe , Ġaffects Ġthe Ġcro pping Ġwindow Ġlimits ĊĠĠĠĠ Ġ* Ġ( in Ġpixels ). < br ></ br > ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Min Crop Result Size ( min Crop Result Width : ĠInt , Ġmin Crop Result Height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Min Crop Result Width Ġ= Ġmin Crop Result Width . toFloat () ĊĠĠĠĠĠĠĠ Ġm Min Crop Result Height Ġ= Ġmin Crop Result Height . toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġmax Ġsize Ġthe Ġresulting Ġcro pping Ġimage Ġis Ġallowed Ġto Ġbe , Ġaffects Ġthe Ġcro pping Ġwindow Ġlimits ĊĠĠĠĠ Ġ* Ġ( in Ġpixels ). < br ></ br > ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Max Crop Result Size ( max Crop Result Width : ĠInt , Ġmax Crop Result Height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Max Crop Result Width Ġ= Ġmax Crop Result Width . toFloat () ĊĠĠĠĠĠĠĠ Ġm Max Crop Result Height Ġ= Ġmax Crop Result Height . toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġset Ġthe Ġmax Ġwidth / height Ġand Ġscale Ġfactor Ġof Ġthe Ġshown Ġimage Ġto Ġoriginal Ġimage Ġto Ġscale Ġthe ĊĠĠĠĠ Ġ* Ġlimits Ġappropriately . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Crop Window Limits ( ĊĠĠĠĠĠĠĠ ĠmaxWidth : ĠFloat , ĊĠĠĠĠĠĠĠ ĠmaxHeight : ĠFloat , ĊĠĠĠĠĠĠĠ Ġscale Factor Width : ĠFloat , ĊĠĠĠĠĠĠĠ Ġscale Factor Height : ĠFloat , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Max Crop Window Width Ġ= ĠmaxWidth ĊĠĠĠĠĠĠĠ Ġm Max Crop Window Height Ġ= ĠmaxHeight ĊĠĠĠĠĠĠĠ Ġm Scale Factor Width Ġ= Ġscale Factor Width ĊĠĠĠĠĠĠĠ Ġm Scale Factor Height Ġ= Ġscale Factor Height ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSet Ġthe Ġvariables Ġto Ġbe Ġused Ġduring Ġcrop Ġwindow Ġhandling . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġset Initial Attribute Values ( options : ĠC rop Image Options ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Min Crop Window Width Ġ= Ġoptions . min Crop Window Width . toFloat () ĊĠĠĠĠĠĠĠ Ġm Min Crop Window Height Ġ= Ġoptions . min Crop Window Height . toFloat () ĊĠĠĠĠĠĠĠ Ġm Min Crop Result Width Ġ= Ġoptions . min Crop Result Width . toFloat () ĊĠĠĠĠĠĠĠ Ġm Min Crop Result Height Ġ= Ġoptions . min Crop Result Height . toFloat () ĊĠĠĠĠĠĠĠ Ġm Max Crop Result Width Ġ= Ġoptions . max Crop Result Width . toFloat () ĊĠĠĠĠĠĠĠ Ġm Max Crop Result Height Ġ= Ġoptions . max Crop Result Height . toFloat () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSet Ġthe Ġleft / top / right / bottom Ġcoordinates Ġof Ġthe Ġcrop Ġwindow . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġset Rect ( rect : ĠRect F ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Edges . set ( rect ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndicates Ġwhether Ġthe Ġcrop Ġwindow Ġis Ġsmall Ġenough Ġthat Ġthe Ġguidelines Ġshould Ġbe Ġshown . ĠPublic ĊĠĠĠĠ Ġ* Ġbecause Ġthis Ġfunction Ġis Ġalso Ġused Ġto Ġdetermine Ġif Ġthe Ġcenter Ġhandle Ġshould Ġbe Ġfocused . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġboolean ĠWhether Ġthe Ġguidelines Ġshould Ġbe Ġshown Ġor Ġnot ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Guide lines () Ġ= Ġ!( m Edges . width () Ġ< Ġ 1 0 0 Ġ|| Ġm Edges . height () Ġ< Ġ 1 0 0 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġwhich , Ġif Ġany , Ġof Ġthe Ġhandles Ġare Ġpressed Ġgiven Ġthe Ġtouch Ġcoordinates , Ġthe Ġbounding ĊĠĠĠĠ Ġ* Ġbox , Ġthe Ġtouch Ġradius , Ġthe Ġcrop Ġshape Ġand Ġwhether Ġmovement Ġof Ġthe Ġcrop Ġwindow Ġis Ġenabled . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Radius Ġthe Ġtarget Ġradius Ġin Ġpixels ĊĠĠĠĠ Ġ* Ġ@ param Ġcrop Shape Ġthe Ġshape Ġof Ġthe Ġcrop Ġwindow ĊĠĠĠĠ Ġ* Ġ@ param Ġis Center Move Enabled Ġwhether Ġmovement Ġof Ġthe Ġcrop Ġwindow Ġby Ġdragging Ġcenter Ġis Ġenabled ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠHandle Ġthat Ġwas Ġpressed ; Ġnull Ġif Ġno ĠHandle Ġwas Ġpressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Move Handler ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtarget Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġcrop Shape : ĠC rop ImageView . Crop Shape , ĊĠĠĠĠĠĠĠ Ġis Center Move Enabled : ĠBoolean ĊĠĠĠ Ġ): ĠC rop Window Move Handler ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype : ĠC rop Window Move Handler . Type ? Ġ= Ġwhen Ġ( crop Shape ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRE CT ANGLE Ġ-> Ġget Rectangle Pressed Move Type ( x , Ġy , Ġtarget Radius , Ġis Center Move Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO VAL Ġ-> Ġget O val Pressed Move Type ( x , Ġy , Ġis Center Move Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRE CT ANGLE _ VERTICAL _ ONLY Ġ-> Ġget Rectangle Vertical Only Pressed Move Type ( x , Ġy , Ġtarget Radius , Ġis Center Move Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRE CT ANGLE _ HORIZONTAL _ ONLY Ġ-> Ġget Rectangle Horizontal Only Pressed Move Type ( x , Ġy , Ġtarget Radius , Ġis Center Move Enabled ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( type Ġ!= Ġnull ) ĠC rop Window Move Handler ( type , Ġthis , Ġx , Ġy ) Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġregion : ĠPrivate Ġmethods ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġwhich , Ġif Ġany , Ġof Ġthe Ġhandles Ġare Ġpressed Ġgiven Ġthe Ġtouch Ġcoordinates , Ġthe Ġbounding ĊĠĠĠĠ Ġ* Ġbox , Ġand Ġthe Ġtouch Ġradius . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Radius Ġthe Ġtarget Ġradius Ġin Ġpixels ĊĠĠĠĠ Ġ* Ġ@ param Ġis Center Move Enabled Ġwhether Ġmovement Ġof Ġthe Ġcrop Ġwindow Ġby Ġdragging Ġcenter Ġis Ġenabled ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠHandle Ġthat Ġwas Ġpressed ; Ġnull Ġif Ġno ĠHandle Ġwas Ġpressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Rectangle Pressed Move Type ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtarget Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġis Center Move Enabled : ĠBoolean ĊĠĠĠ Ġ): ĠC rop Window Move Handler . Type ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġcorner - handles Ġtake Ġprecedence , Ġthen Ġside - handles , Ġthen Ġcenter . ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Corner Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . top , Ġtarget Radius ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . TOP _ LEFT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Corner Target Zone ( x , Ġy , Ġm Edges . right , Ġm Edges . top , Ġtarget Radius ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . TOP _ RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Corner Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . bottom , Ġtarget Radius ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . BOTTOM _ LEFT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Corner Target Zone ( x , Ġy , Ġm Edges . right , Ġm Edges . bottom , Ġtarget Radius ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . BOTTOM _ RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Center Move Enabled Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Center Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . top , Ġm Edges . right , Ġm Edges . bottom ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus Center () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Horizontal Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . right , Ġm Edges . top , Ġtarget Radius ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Horizontal Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . right , Ġm Edges . bottom , Ġtarget Radius ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Vertical Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . top , Ġm Edges . bottom , Ġtarget Radius ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Vertical Target Zone ( x , Ġy , Ġm Edges . right , Ġm Edges . top , Ġm Edges . bottom , Ġtarget Radius ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Center Move Enabled Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Center Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . top , Ġm Edges . right , Ġm Edges . bottom ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! focus Center () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġwhich , Ġif Ġany , Ġof Ġthe Ġhandles Ġare Ġpressed Ġgiven Ġthe Ġtouch Ġcoordinates , Ġthe Ġbounding ĊĠĠĠĠ Ġ* Ġbox / oval , Ġand Ġthe Ġtouch Ġradius . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġis Center Move Enabled Ġwhether Ġmovement Ġof Ġthe Ġcrop Ġwindow Ġby Ġdragging Ġcenter Ġis Ġenabled ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠHandle Ġthat Ġwas Ġpressed ; Ġnull Ġif Ġno ĠHandle Ġwas Ġpressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget O val Pressed Move Type ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġis Center Move Enabled : ĠBoolean ĊĠĠĠ Ġ): ĠC rop Window Move Handler . Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUse Ġa Ġ 6 x 6 Ġgrid Ġsystem Ġdivided Ġinto Ġ 9 Ġ" handles ", Ġwith Ġthe Ġcenter Ġthe Ġbiggest Ġregion . ĠWhile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġis Ġnot Ġperfect , Ġit 's Ġa Ġgood Ġquick - to - ship Ġapproach . ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTL ĠT ĠT ĠT ĠT ĠTR ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ĠC ĠC ĠC ĠC ĠR ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ĠC ĠC ĠC ĠC ĠR ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ĠC ĠC ĠC ĠC ĠR ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠL ĠC ĠC ĠC ĠC ĠR ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBL ĠB ĠB ĠB ĠB ĠBR ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġval Ġcell Length Ġ= Ġm Edges . width () Ġ/ Ġ 6 ĊĠĠĠĠĠĠĠ Ġval Ġleft Center Ġ= Ġm Edges . left Ġ+ Ġcell Length ĊĠĠĠĠĠĠĠ Ġval Ġright Center Ġ= Ġm Edges . left Ġ+ Ġ 5 Ġ* Ġcell Length ĊĠĠĠĠĠĠĠ Ġval Ġcell Height Ġ= Ġm Edges . height () Ġ/ Ġ 6 ĊĠĠĠĠĠĠĠ Ġval Ġtop Center Ġ= Ġm Edges . top Ġ+ Ġcell Height ĊĠĠĠĠĠĠĠ Ġval Ġbottom Center Ġ= Ġm Edges . top Ġ+ Ġ 5 Ġ* Ġcell Height ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ< Ġleft Center Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ< Ġtop Center Ġ-> ĠC rop Window Move Handler . Type . TOP _ LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ< Ġbottom Center Ġ-> ĠC rop Window Move Handler . Type . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠC rop Window Move Handler . Type . BOTTOM _ LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ< Ġright Center Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ< Ġtop Center Ġ-> ĠC rop Window Move Handler . Type . TOP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ< Ġbottom Center Ġ-> Ġif Ġ( is Center Move Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠC rop Window Move Handler . Type . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ< Ġtop Center Ġ-> ĠC rop Window Move Handler . Type . TOP _ RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ< Ġbottom Center Ġ-> ĠC rop Window Move Handler . Type . RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠC rop Window Move Handler . Type . BOTTOM _ RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġwhich , Ġif Ġany , Ġof Ġthe Ġhandles Ġare Ġpressed Ġgiven Ġthe Ġtouch Ġcoordinates , Ġthe Ġbounding ĊĠĠĠĠ Ġ* Ġbox , Ġand Ġthe Ġtouch Ġradius . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Radius Ġthe Ġtarget Ġradius Ġin Ġpixels ĊĠĠĠĠ Ġ* Ġ@ param Ġis Center Move Enabled Ġwhether Ġmovement Ġof Ġthe Ġcrop Ġwindow Ġby Ġdragging Ġcenter Ġis Ġenabled ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠHandle Ġthat Ġwas Ġpressed ; Ġnull Ġif Ġno ĠHandle Ġwas Ġpressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Rectangle Vertical Only Pressed Move Type ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtarget Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġis Center Move Enabled : ĠBoolean ĊĠĠĠ Ġ): ĠC rop Window Move Handler . Type ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġtop Ġand Ġbottom Ġhandles Ġtake Ġprecedence , Ġthen Ġcenter . ĊĠĠĠĠĠĠĠ Ġ// ĠNote Ġalso Ġthat Ġwe Ġignore Ġthe Ġfocus Center () Ġfunction Ġ- Ġif Ġthe Ġuser Ġwants Ġto Ġdrag Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġwindow Ġthey Ġcan Ġdrag Ġfrom Ġthe Ġleft Ġand Ġright Ġsides . ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistance ( x , Ġy , Ġm Edges . center X (), Ġm Edges . top ) Ġ<= Ġtarget Radius Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistance ( x , Ġy , Ġm Edges . center X (), Ġm Edges . bottom ) Ġ<= Ġtarget Radius Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Center Move Enabled Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Center Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . top , Ġm Edges . right , Ġm Edges . bottom ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġwhich , Ġif Ġany , Ġof Ġthe Ġhandles Ġare Ġpressed Ġgiven Ġthe Ġtouch Ġcoordinates , Ġthe Ġbounding ĊĠĠĠĠ Ġ* Ġbox , Ġand Ġthe Ġtouch Ġradius . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Radius Ġthe Ġtarget Ġradius Ġin Ġpixels ĊĠĠĠĠ Ġ* Ġ@ param Ġis Center Move Enabled Ġwhether Ġmovement Ġof Ġthe Ġcrop Ġwindow Ġby Ġdragging Ġcenter Ġis Ġenabled ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠHandle Ġthat Ġwas Ġpressed ; Ġnull Ġif Ġno ĠHandle Ġwas Ġpressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Rectangle Horizontal Only Pressed Move Type ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtarget Radius : ĠFloat , ĊĠĠĠĠĠĠĠ Ġis Center Move Enabled : ĠBoolean ĊĠĠĠ Ġ): ĠC rop Window Move Handler . Type ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠNote : Ġleft Ġand Ġright Ġhandles Ġtake Ġprecedence , Ġthen Ġcenter . ĊĠĠĠĠĠĠĠ Ġ// ĠNote Ġalso Ġthat Ġwe Ġignore Ġthe Ġfocus Center () Ġfunction Ġ- Ġif Ġthe Ġuser Ġwants Ġto Ġdrag Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġwindow Ġthey Ġcan Ġdrag Ġfrom Ġthe Ġtop Ġand Ġbottom Ġsides . ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistance ( x , Ġy , Ġm Edges . left , Ġm Edges . center Y ()) Ġ<= Ġtarget Radius Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistance ( x , Ġy , Ġm Edges . right , Ġm Edges . center Y ()) Ġ<= Ġtarget Radius Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Center Move Enabled Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisIn Center Target Zone ( x , Ġy , Ġm Edges . left , Ġm Edges . top , Ġm Edges . right , Ġm Edges . bottom ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Window Move Handler . Type . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġspecified Ġcoordinate Ġis Ġin Ġthe Ġtarget Ġtouch Ġzone Ġfor Ġa Ġcorner Ġhandle . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġhandle X Ġthe Ġx - coordinate Ġof Ġthe Ġcorner Ġhandle ĊĠĠĠĠ Ġ* Ġ@ param Ġhandle Y Ġthe Ġy - coordinate Ġof Ġthe Ġcorner Ġhandle ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Radius Ġthe Ġtarget Ġradius Ġin Ġpixels ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġtouch Ġpoint Ġis Ġin Ġthe Ġtarget Ġtouch Ġzone ; Ġfalse Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠisIn Corner Target Zone ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġhandle X : ĠFloat , ĊĠĠĠĠĠĠĠ Ġhandle Y : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtarget Radius : ĠFloat , ĊĠĠĠ Ġ) Ġ= Ġdistance ( x , Ġy , Ġhandle X , Ġhandle Y ) Ġ<= Ġtarget Radius ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġdistance Ġbetween Ġtwo Ġpoints Ġin Ġthe Ġmaximum Ġnorm . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx 1 Ġthe Ġx - coordinate Ġof Ġthe Ġfirst Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy 1 Ġthe Ġy - coordinate Ġof Ġthe Ġfirst Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġx 2 Ġthe Ġx - coordinate Ġof Ġthe Ġsecond Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy 2 Ġthe Ġy - coordinate Ġof Ġthe Ġsecond Ġpoint ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġdistance Ġbetween Ġthese Ġpoints ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdistance ( ĊĠĠĠĠĠĠĠ Ġx 1 : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy 1 : ĠFloat , ĊĠĠĠĠĠĠĠ Ġx 2 : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy 2 : ĠFloat ĊĠĠĠ Ġ) Ġ= Ġmax ( abs ( x 1 Ġ- Ġx 2 ), Ġabs ( y 1 Ġ- Ġy 2 )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġspecified Ġcoordinate Ġis Ġin Ġthe Ġtarget Ġtouch Ġzone Ġfor Ġa Ġhorizontal Ġbar Ġhandle . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġhandle X Start Ġthe Ġleft Ġx - coordinate Ġof Ġthe Ġhorizontal Ġbar Ġhandle ĊĠĠĠĠ Ġ* Ġ@ param Ġhandle X End Ġthe Ġright Ġx - coordinate Ġof Ġthe Ġhorizontal Ġbar Ġhandle ĊĠĠĠĠ Ġ* Ġ@ param Ġhandle Y Ġthe Ġy - coordinate Ġof Ġthe Ġhorizontal Ġbar Ġhandle ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Radius Ġthe Ġtarget Ġradius Ġin Ġpixels ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġtouch Ġpoint Ġis Ġin Ġthe Ġtarget Ġtouch Ġzone ; Ġfalse Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠisIn Horizontal Target Zone ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġhandle X Start : ĠFloat , ĊĠĠĠĠĠĠĠ Ġhandle X End : ĠFloat , ĊĠĠĠĠĠĠĠ Ġhandle Y : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtarget Radius : ĠFloat , ĊĠĠĠ Ġ) Ġ= Ġx Ġ> Ġhandle X Start Ġ&& Ġx Ġ< Ġhandle X End Ġ&& Ġabs ( y Ġ- Ġhandle Y ) Ġ<= Ġtarget Radius ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġspecified Ġcoordinate Ġis Ġin Ġthe Ġtarget Ġtouch Ġzone Ġfor Ġa Ġvertical Ġbar Ġhandle . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġhandle X Ġthe Ġx - coordinate Ġof Ġthe Ġvertical Ġbar Ġhandle ĊĠĠĠĠ Ġ* Ġ@ param Ġhandle Y Start Ġthe Ġtop Ġy - coordinate Ġof Ġthe Ġvertical Ġbar Ġhandle ĊĠĠĠĠ Ġ* Ġ@ param Ġhandle Y End Ġthe Ġbottom Ġy - coordinate Ġof Ġthe Ġvertical Ġbar Ġhandle ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Radius Ġthe Ġtarget Ġradius Ġin Ġpixels ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġtouch Ġpoint Ġis Ġin Ġthe Ġtarget Ġtouch Ġzone ; Ġfalse Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠisIn Vertical Target Zone ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġhandle X : ĠFloat , ĊĠĠĠĠĠĠĠ Ġhandle Y Start : ĠFloat , ĊĠĠĠĠĠĠĠ Ġhandle Y End : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtarget Radius : ĠFloat , ĊĠĠĠ Ġ) Ġ= Ġabs ( x Ġ- Ġhandle X ) Ġ<= Ġtarget Radius Ġ&& Ġy Ġ> Ġhandle Y Start Ġ&& Ġy Ġ< Ġhandle Y End ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġspecified Ġcoordinate Ġfalls Ġanywhere Ġinside Ġthe Ġgiven Ġbounds . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx Ġthe Ġx - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġy Ġthe Ġy - coordinate Ġof Ġthe Ġtouch Ġpoint ĊĠĠĠĠ Ġ* Ġ@ param Ġleft Ġthe Ġx - coordinate Ġof Ġthe Ġleft Ġbound ĊĠĠĠĠ Ġ* Ġ@ param Ġtop Ġthe Ġy - coordinate Ġof Ġthe Ġtop Ġbound ĊĠĠĠĠ Ġ* Ġ@ param Ġright Ġthe Ġx - coordinate Ġof Ġthe Ġright Ġbound ĊĠĠĠĠ Ġ* Ġ@ param Ġbottom Ġthe Ġy - coordinate Ġof Ġthe Ġbottom Ġbound ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġtouch Ġpoint Ġis Ġinside Ġthe Ġbounding Ġrectangle ; Ġfalse Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠisIn Center Target Zone ( ĊĠĠĠĠĠĠĠ Ġx : ĠFloat , ĊĠĠĠĠĠĠĠ Ġy : ĠFloat , ĊĠĠĠĠĠĠĠ Ġleft : ĠFloat , ĊĠĠĠĠĠĠĠ Ġtop : ĠFloat , ĊĠĠĠĠĠĠĠ Ġright : ĠFloat , ĊĠĠĠĠĠĠĠ Ġbottom : ĠFloat , ĊĠĠĠ Ġ) Ġ= Ġx Ġ> Ġleft Ġ&& Ġx Ġ< Ġright Ġ&& Ġy Ġ> Ġtop Ġ&& Ġy Ġ< Ġbottom ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġif Ġthe Ġcrop per Ġshould Ġfocus Ġon Ġthe Ġcenter Ġhandle Ġor Ġthe Ġside Ġhandles . ĠIf Ġit Ġis Ġa ĊĠĠĠĠ Ġ* Ġsmall Ġimage , Ġfocus Ġon Ġthe Ġcenter Ġhandle Ġso Ġthe Ġuser Ġcan Ġmove Ġit . ĠIf Ġit Ġis Ġa Ġlarge Ġimage , Ġfocus ĊĠĠĠĠ Ġ* Ġon Ġthe Ġside Ġhandles Ġso Ġuser Ġcan Ġgrab Ġthem . ĠCorre spon ds Ġto Ġthe Ġappearance Ġof Ġthe ĊĠĠĠĠ Ġ* ĠRule Of Th ir ds Guide lines . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġit Ġis Ġsmall Ġenough Ġsuch Ġthat Ġit Ġshould Ġfocus Ġon Ġthe Ġcenter ; Ġless Ġthan ĊĠĠĠĠ Ġ* Ġshow _ guidelines Ġlimit ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfocus Center () Ġ= Ġ! show Guide lines () ĊĠĠĠ Ġ// Ġend region Ċ } Ċ