/***************************************************************************/
/* VT100.h - descriptors of VT100 codes                                    */
/***************************************************************************/

#ifndef _VT100_H_
#define _VT100_H_

//Print modes
#define VT100_RESET        "\e[0m"
#define VT100_BRIGHT       "\e[1m"
#define VT100_DIM          "\e[2m"
#define VT100_UNDERLINE    "\e[4m"
#define VT100_BLINK        "\e[5m"
#define VT100_REVERSE      "\e[7m"
#define VT100_HIDDEN       "\e[8m"

//Print text colors
#define VT100_FORE_BLACK   "\e[30m"
#define VT100_FORE_RED     "\e[31m"
#define VT100_FORE_GREEN   "\e[32m"
#define VT100_FORE_YELLOW  "\e[33m"
#define VT100_FORE_BLUE    "\e[34m"
#define VT100_FORE_MAGENTA "\e[35m"
#define VT100_FORE_CYAN    "\e[36m"
#define VT100_FORE_WHITE   "\e[37m"

//Print background colors
#define VT100_BACK_BLACK   "\e[40m"
#define VT100_BACK_RED     "\e[41m"
#define VT100_BACK_GREEN   "\e[42m"
#define VT100_BACK_YELLOW  "\e[43m"
#define VT100_BACK_BLUE    "\e[44m"
#define VT100_BACK_MAGENTA "\e[45m"
#define VT100_BACK_CYAN    "\e[46m"
#define VT100_BACK_WHITE   "\e[47m"

//cursor move commands
//NOTE: you can send the cursor to x,y with "\e[x;yH"
#define VT100_HOME         "\e[H"

//NOTE: you can move up n lines with "\e[nA"
#define VT100_UP           "\e[A"

//NOTE: you can move down n lines with "\e[nB"
#define VT100_DOWN         "\e[B"

//NOTE: you can move forward n chars with "\e[nC"
#define VT100_FORWARD      "\e[C"

//erase commands
#define VT100_ERASE_LINE_AFTER_CURSOR "\e[K"
#define VT100_ERASE_LINE_TO_CURSOR    "\e[1K"
#define VT100_ERASE_LINE              "\e[2K"
#define VT100_ERASE_BELOW_LINE        "\e[J"
#define VT100_ERASE_ABOVE_LINE        "\e[1J"
#define VT100_CLEAR_SCREEN            "\e[2J"

#endif
