// --------------------------------------------------------------------------------------------
// archivo  : xsconio.h
// archivo header de funciones en la pantalla
// --------------------------------------------------------------------------------------------

#ifndef __xsConio_H__
#define __xsConio_H__

// Incluyo la librería xsEasy
#include "xsEasyC.h"

// Se Incluyen librerias de c
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"
#include <stdbool.h>
#include "conio2.h"

// Constantes
#define COLOR_NEGRO  		BLACK  
#define COLOR_AZUL   		BLUE
#define COLOR_VERDE  		GREEN  
#define COLOR_CYAN   		CYAN  
#define COLOR_ROJO   		RED
#define COLOR_MORADO 		MAGENTA
#define COLOR_CAFE   		BROWN
#define COLOR_GRIS_CLARO  	LIGHTGRAY
#define COLOR_GRIS_OBSCURO 	DARKGRAY
#define COLOR_AZUL_CLARO  	LIGHTBLUE  
#define COLOR_VERDE_CLARO 	LIGHTGREEN  
#define COLOR_CYAN_CLARO  	LIGHTCYAN  
#define COLOR_ROJO_CLARO	LIGHTRED
#define COLOR_MORADO_CLARO 	LIGHTMAGENTA  
#define COLOR_AMARILLO 		YELLOW
#define COLOR_BLANCO 		WHITE 

#define CURSOR_OCULTO		0
#define CURSOR_NORMAL		20
#define CURSOR_SOLIDO 		100

// Tipos
DefineTipo Estructura char_info AREA_PANTALLA;

// Estructura para la fecha
DefineTipo Estructura
{
	// Información de la Pantalla
	SinSigno Caracter colCursor;
	SinSigno Caracter renCursor;
	SinSigno Corto    atributo;
	SinSigno Corto    atributoNormal;
	SinSigno Caracter columnas;
	SinSigno Caracter renglones;
}INFO_PANTALLA;


// Objetivo : Desplegar un Caracter en una posición en la pantalla
// Retorna  : Nada
Vacio pantallaColocarCaracter(Caracter caracter, // Caracter a desplegar
                              Entero   columna,  // Columna
			                  Entero   renglon); // Renglón

							  
// Objetivo : Colocar el cursor en una posición en la pantalla
// Retorna  : Nada
Vacio pantallaColocarCursor(Entero columna,  // Columna
                            Entero renglon); // Renglón
							

// Objetivo : pantalla el Color de Fondo
// Retorna  : Nada
Vacio pantallaColorFondo(Entero color);  // Color
						   

// Objetivo : pantalla el Color de Texto
// Retorna  : Nada
Vacio pantallaColorTexto(Entero color);  // Color


// Objetivo : Obtener la Columna donde está el cursor
// Retorna  : La columna donde está el cursor
Entero pantallaColumnaCursor();


// Objetivo : Copiar un Área de la Pantalla a otra posición
// Retorna  : Nada
Vacio pantallaCopiarArea(Entero         columna1, // El area está determinada por las esquinas 
				 	  	 Entero         renglon1, // de columna1, renglon1; y columna2, renglon2
				 		 Entero         columna2, 
						 Entero         renglon2,
						 Entero         colDestino,   // Columna donde se moverá
						 Entero         renDestino);  // Renglon donde se moverá
						 

// Objetivo : Eliminar una Linea en la Pantalla en la posición del Cursor
// Retorna  : Nada
Vacio pantallaEliminarLinea();


// Objetivo : Guardar en Memoria un área de la Pantalla
// Retorna  : Nada. En el parámetro buffer se almacena la informacion
Vacio pantallaGuardar(AREA_PANTALLA* buffer,   // Buffer donde se almacena el area de la pantalla
                      Entero         columna1, // El area está determinada por las esquinas 
					  Entero         renglon1, // de columna1, renglon1; y columna2, renglon2
					  Entero         columna2, 
					  Entero         renglon2);

// Objetivo : Imprimir Texto en una posición en la pantalla
// Retorna  : Nada
Vacio pantallaImprimirTexto(Caracter* texto, // Texto a desplegar
                            Entero columna,  // Columna
					        Entero renglon); // Renglón
					  
// Objetivo : Obtener información de la Pantalla
// Retorna  : Nada. En el parámetro; información de la pantalla
Vacio pantallaInformacion(INFO_PANTALLA* informacion);


// Objetivo : Insertar una Linea en blanco en la Pantalla en la posición del Cursor
// Retorna  : Nada
Vacio pantallaInsertarLinea();


// Objetivo : Limpiar la Pantalla
// Retorna  : Nada
Vacio pantallaLimpiar();


// Objetivo : Limpiar desde el Cursor hasta el final de la Linea
// Retorna  : Nada
Vacio pantallaLimpiarFinalLinea();


// Objetivo : Obtener la Posición del Cursor
// Retorna  : En los parámetros, la columna y el renglón
Vacio pantallaPosicionCursor(Entero* columna, Entero* renglon);


// Objetivo : Obtener el Renglón donde está el cursor
// Retorna  : El Renglón donde está el cursor
Entero pantallaRenglonCursor();


// Objetivo : Restaurar en la Pantalla un área almacenada previamente en un buffer
// Retorna  : Nada
Vacio pantallaRestaurar(AREA_PANTALLA* buffer,   // Buffer desde donde se restaura el la pantalla
                        Entero         columna1, // El area está determinada por las esquinas 
					  	Entero         renglon1, // de columna1, renglon1; y columna2, renglon2
						Entero         columna2, 
						Entero         renglon2);

						
// Objetivo : Establecer el Tipo de Cursor
// Retorna  : Nada
Vacio pantallaTipoCursor(Entero tipo);  // Color


#endif