/* ---------------------------------------------------------- */ /* | Nombre: stermp.h ( Simple Terminal Play) | */ /* | Autor: Gaspar Fernández (blakeyes@totaki.com) | */ /* | Fecha: 05 Enero 2009 | */ /* | Web: http://www.totaki.com/poesiabinaria/ | */ /* ---------------------------------------------------------- */ /* | Descripción: | */ /* | Manejo de colores y posicionamiento de texto en un | */ /* | terminal para nostálgicos de conio.h | */ /* ---------------------------------------------------------- */ /* Este código se distribuye libremente, tal cual, sin garantías. */ /* Pero si utilizas este código, y lo distribuyes, me gustaría que */ /* citaras la fuente, y ya de paso, un enlace al blog no vendría mal :) */ #include #include /* Colores */ #define BLACK 0 #define BLUE 1 #define GREEN 2 #define CYAN 3 #define RED 4 #define MAGENTA 5 #define BROWN 6 #define LIGHTGRAY 7 #define DARKGRAY 8 #define LIGHTBLUE 9 #define LIGHTGREEN 10 #define LIGHTCYAN 11 #define LIGHTRED 12 #define LIGHTMAGENTA 13 #define YELLOW 14 #define WHITE 15 /* Atributos especiales */ #define UNDERLINE 64 #define BLINK 128 /* Posibles atributos para las letras */ #define UNDERLINE_ATTR 4 #define BLINK_ATTR 5 #define BRILLO_ATTR 1 /* El brillo empieza en el noveno color */ #define BRILLO_MIN 9 /* El color marrón se corresponde con el amarillo sin brillo. */ /* Lightgray se corresponde con el blanco sin brillo */ /* Darkgray corresponde con el color por defecto del terminal */ /* Código de salida */ #define EXIT_CODE 1 typedef struct { int x, y; } coord_t; void clrscr(); /* Borrar la pantalla */ void gotoxy(int x, int y); /* Nos movemos en el terminal */ void restore_color(); /* Restaura los colores */ void restore_terminal(); /* Restaura el terminal */ int screenheight(); /* Alto de la pantalla */ int screenwidth(); /* Ancho de la pantalla */ void termnoecho(int canon); /* Elimina el echo de teclado */ void textbackground(int color); /* Especifica el color de fondo */ void textcolor(int color); /* Especifica el color de primer plano */ coord_t wherexy(int abs); /* Devuelve la posición actual en pantalla. */ /* si abs==1 devolverá el ancho y alto de la pantalla */ int wherex(); /* Devuelve la posición X del cursor */ int wherey(); /* Devuelve la posición Y del cursor */ int getch(); /* Simula getch() - Pide un carácter (sin INTRO) y sin echo */ int getche(); /* Simula getche()- Pide un carácter (sin INTRO) y con echo */ int kbhit(); /* Devuelve si se ha pulsado una tecla o no (no detiene ejecución) */ int kbhit2(); /* Si se ha pulsado una tecla, devuelve su código (no detiene ejecución) */ int __kbhit(); /* Igual que kbhit2() pero sin alterar la terminal (Para hacer kbhit_pre() y ejecutar muchas vecer. */ void kbhit_pre(); /* Prepara el sistema para kbhit */ void save_term_info(); /* Salva información de terminal en variables temporales */ void term_defaults(); /* Restaura valores por defecto de la terminal */ void restore_term(struct termios *tty, int *stdinflags); /* Restaura valores en flags de terminal */ void error(char *err); /* Pasa error por stderr y cierra el programa */