/* Niektóre sekwencje specjalne ANSI
Rozszerzają one możliwości terminali. Niestety, nie wszystkie terminale
stosują się do wszystkich tych kodów. Np. w terminalu OnlineGDB nie działa
przekreślenie, a w terminalu Repl.it nie działa inwersja.
*/
#include <iostream>
using namespace std;
int main()
{
cout << "Normal "
<< "\033[1m Bold \033[m"
<< "\033[2m Faint \033[m"
<< "\033[3m Italic \033[m"
<< "\033[4m Underline \033[m"
<< "\033[7m Inverse \033[m"
<< "\033[9m Strikethrough \033[m"
<< "\n\n";
cout << "\033[30m Black "
<< "\033[31m Red "
<< "\033[32m Green "
<< "\033[33m Yellow "
<< "\033[34m Blue "
<< "\033[35m Magenta "
<< "\033[36m Cyan "
<< "\033[37m White \033[m"
<< "\n\n";
cout << "\033[40m Black "
<< "\033[41m Red "
<< "\033[42m Green "
<< "\033[43m Yellow "
<< "\033[44m Blue "
<< "\033[45m Magenta "
<< "\033[46m Cyan "
<< "\033[47m White \033[m";
cout << "\n\n";
cout << "\033[30m\033[46m Black on Cyan \033[0m" << endl << endl;
for (int i = 10000; i < 40000; i++)
cout << i << "\r" ; // \r Return to line's beginning
cout << "\n\n\n\n\n\n\n";
for (int i = 0; i <= 5; i++)
cout << "\x1B[A" << i ; // Move 1 line up
cout << "\n\n\n\n\n\n";
return 0;
}