csi
provides easy to use methods that return special strings for controlling the terminal. For example, enable(style::bold)
and disable(style::bold)
return "\033[1m"
and "\033[21m"
which the terminal interprets as commands to enable and disable bold.
The enable
and disable
methods take style
values and return strings that enable or disable a style. style
is an enum class
of 5 styles: bold
, italics
, underline
, strikethrough
, and inverse
. inverse
inverts the text color and the background color as-if the text is highlighted.
#include <iostream>
#include "csi.hpp"
int main(){
/* Enable bold, print "Hello World!",
disable bold, then print a newline. */
std::cout << csi::enable(csi::style::bold)
<< "Hello World!"
<< csi::disable(csi::style::bold)
<< std::endl;
}
The foreground
and background
methods take color
values and return strings that set the text color or the background color. color
is an enum class
of 9 colors: none
, black
, red
, green
, yellow
, blue
, magenta
, cyan
, and white
. none
is the terminal's default color.
#include <iostream>
#include "csi.hpp"
int main(){
/* Set the text color to yellow, print "Hello World!",
set the text color to default, then print a new line */
std::cout << csi::foreground(csi::color::yellow)
<< "Hello World!"
<< csi::foreground()
<< std::endl;
/* Set the background color to blue, print "Hello World!",
* set the background color to default, then print a new line */
std::cout << csi::background(csi::color::blue)
<< "Hello World!"
<< csi::background()
<< std::endl;
}
There are 7 methods for moving the cursor: cursor_up
, cursor_down
, cursor_forward
, cursor_back
, cursor_next_line
, cursor_previous_line
, and cursor_position
. cursor_position
accepts two parameters: row
and column
, both 1 by default (top-left corner) while the other methods accept a single parameter, also 1 by default.
#include <iostream>
#include "csi.hpp"
int main(){
/* Set the cursor position to the second column of
the second row, print "Hello World!", then print
a new line. */
std:: cout << csi::cursor_position(2, 2)
<< "Hello World!"
<< std::endl;
}
The erase_display
and erase_line
methods accept erase_mode
values as parameters and return strings which erase lines or even the whole display. erase_mode
is an enum class
which defines three modes: to_end
, to_beginning
, and all
. to_end
erases from the cursor to the end of the line/display. to_beginning
erases from the cursor to the beginning of the line/display. all
erases the entire line/display. For both methods, erase_mode
is all
by default.
#include <iostream>
#include "csi.hpp"
int main(){
/* Erase the display, set the cursor position to
the top-left, print "Hello World!", then print
a new line */
std:: cout << csi::erase_display()
<< csi::cursor_position()
<< "Hello World!"
<< std::endl;
}