private int get_nearby_edge(RegionData r, int x, int y, boolean checkh, boolean checkv)
    {
        if( checkh && r.values[1] <= y && r.values[3] >= y) {
            if( Math.abs( r.values[0] - x) < HANDLE) return 0;
            if( Math.abs( r.values[2] - x) < HANDLE) return 2;
        }

        if(checkv & r.values[0] <= x && r.values[2] >= x) {
            if( Math.abs( r.values[1] - y) < HANDLE) return 1;
            if( Math.abs( r.values[3] - y) < HANDLE) return 3;
        }

        return -1;
    }