/*
** rush00.c
** Dibuja un rectangulo de x caracteres de ancho por y caracteres de alto.
**
** Esquinas: 'o'
** Lados horizontales: '-'
** Lados verticales: '|'
** Interior: espacios
*/

/* Prototipo de la funcion auxiliar que vive en ft_putchar.c. */
void	ft_putchar(char c);

/*
** Imprime una fila que es borde superior o inferior.
** Para x = 1 imprime solo "o" y para x = 2 imprime "oo".
*/
static void	print_horizontal_edge(int width)
{
	int	column;

	column = 0;
	while (column < width)
	{
		if (column == 0 || column == width - 1)
			ft_putchar('o');
		else
			ft_putchar('-');
		column++;
	}
	ft_putchar('\n');
}

/*
** Imprime una fila del medio: bordes '|' y espacios en el interior.
** Para x = 1 imprime solo "|" y para x = 2 imprime "||".
*/
static void	print_vertical_edge(int width)
{
	int	column;

	column = 0;
	while (column < width)
	{
		if (column == 0 || column == width - 1)
			ft_putchar('|');
		else
			ft_putchar(' ');
		column++;
	}
	ft_putchar('\n');
}

/*
** Funcion principal del ejercicio.
** Si x o y son cero o negativos no se dibuja nada, para no imprimir
** un rectangulo imposible ni entrar en un bucle infinito.
*/
void	rush(int x, int y)
{
	int	row;

	if (x <= 0 || y <= 0)
		return ;
	row = 0;
	while (row < y)
	{
		if (row == 0 || row == y - 1)
			print_horizontal_edge(x);
		else
			print_vertical_edge(x);
		row++;
	}
}
