% *** ---------------------------------------------------------------------------------------- *** %
% ***| Funcion que comprueba que el tamaño de la subimagen no excede el de la imagen         | *** %
% ***| original y, en caso negativo, delimitira la misma a las dimensiones originales        | *** %
% *** ---------------------------------------------------------------------------------------- *** %

function [ini_sub,fin_sub,sem_rel,pos_rel,margenes] = comprueba(dimensiones,ini,fin,margen,semilla,posicion,dist)

filas = dimensiones(1);
columnas = dimensiones(2);

if ini(1) - margen(1) < 1                       % sobrepasa por arriba
    ini_sub(1) = 1;
    if semilla(1) <= posicion(1)
        sem_rel(1) = semilla(1);
        pos_rel(1) = semilla(1) + dist(1);
        margen_arr = semilla(1) - 1;
    else
        pos_rel(1) = posicion(1);
        sem_rel(1) = posicion(1) + dist(1);
        margen_arr = posicion(1) - 1;
    end
else                                            % NO sobrepasa por arriba
    ini_sub(1) = ini(1) - margen(1);
    margen_arr = margen(1);
    if semilla(1) <= posicion(1)
        sem_rel(1) = 1 + margen(1);
        pos_rel(1) = sem_rel(1) + dist(1);
    else
        pos_rel(1) = 1 + margen(1);
        sem_rel(1) = pos_rel(1) + dist(1);
    end
end

if fin(1) + margen(1) > filas                   % sobrepasa por abajo
    fin_sub(1) = filas;
    if semilla(1) <= posicion(1)
        margen_aba = filas - posicion(1);
    else
        margen_aba = filas - semilla(1);
    end 
else                                            % NO sobrepasa por abajo
    fin_sub(1) = fin(1) + margen(1);
    margen_aba = margen(1);
end

if ini(2) - margen(2) < 1                       % sobrepasa por la izquierda
    ini_sub(2) = 1;
    if semilla(2) <= posicion(2)
        sem_rel(2) = semilla(2);
        pos_rel(2) = semilla(2) + dist(2);
        margen_izq = semilla(2) - 1;
    else
        pos_rel(2) = posicion(2);
        sem_rel(2) = posicion(2) + dist(2);
        margen_izq = posicion(2) - 1;
    end
else                                            % NO sobrepasa por la izquierda
    ini_sub(2) = ini(2) - margen(2);
    margen_izq = margen(2);
    if semilla(2) <= posicion(2)
        sem_rel(2) = 1 + margen(2);
        pos_rel(2) = sem_rel(2) + dist(2);
    else
        pos_rel(2) = 1 + margen(2);
        sem_rel(2) = pos_rel(2) + dist(2);
    end
end

if fin(2) + margen(2) > columnas                % sobrepasa por la derecha
    fin_sub(2) = columnas;
    if semilla(2) <= posicion(2)
        margen_der = columnas - posicion(2);
    else
        margen_der = columnas - semilla(2);
    end
else                                            % NO sobrepasa por la derecha
    fin_sub(2) = fin(2) + margen(2);
    margen_der = margen(2);
end

% Vector con los distintos margenes de la subimagen
margenes = [margen_arr,margen_aba,margen_izq,margen_der];


