C++ Utilities  5.0.0
Useful C++ classes and routines such as argument parser, IO and conversion utilities
Enumerations | Functions | Variables
CppUtilities::EscapeCodes Namespace Reference

Encapsulates functions for formatted terminal output using ANSI escape codes. More...

Enumerations

enum  Color : char {
  Color::Black = '0', Color::Red, Color::Green, Color::Yellow,
  Color::Blue, Color::Purple, Color::Cyan, Color::White
}
 
enum  ColorContext : char { ColorContext::Foreground = '3', ColorContext::Background = '4' }
 
enum  TextAttribute : char {
  TextAttribute::Reset = '0', TextAttribute::Bold = '1', TextAttribute::Dim = '2', TextAttribute::Italic = '3',
  TextAttribute::Underscore = '4', TextAttribute::Blink = '5', TextAttribute::ReverseVideo = '7', TextAttribute::Concealed = '8',
  TextAttribute::Strikethrough = '9'
}
 
enum  Direction : char { Direction::Up = 'A', Direction::Down = 'B', Direction::Forward = 'C', Direction::Backward = 'D' }
 
enum  Phrases {
  Phrases::Error, Phrases::Warning, Phrases::End, Phrases::PlainMessage,
  Phrases::SuccessMessage, Phrases::SubMessage, Phrases::ErrorMessage, Phrases::WarningMessage,
  Phrases::EndFlush, Phrases::Info, Phrases::Override, Phrases::SubError,
  Phrases::SubWarning
}
 The Phrases enum contains standard phrases which can be printed to any std::ostream. More...
 

Functions

void setStyle (std::ostream &stream, TextAttribute displayAttribute=TextAttribute::Reset)
 
void setStyle (std::ostream &stream, Color color, ColorContext context=ColorContext::Foreground, TextAttribute displayAttribute=TextAttribute::Reset)
 
void setStyle (std::ostream &stream, Color foregroundColor, Color backgroundColor, TextAttribute displayAttribute=TextAttribute::Reset)
 
void resetStyle (std::ostream &stream)
 
void setCursor (std::ostream &stream, unsigned int row=0, unsigned int col=0)
 
void moveCursor (std::ostream &stream, unsigned int cells, Direction direction)
 
void saveCursor (std::ostream &stream)
 
void restoreCursor (std::ostream &stream)
 
void eraseDisplay (std::ostream &stream)
 
void eraseLine (std::ostream &stream)
 
std::ostream & operator<< (std::ostream &stream, TextAttribute displayAttribute)
 
constexpr auto color (Color foreground, Color background, TextAttribute displayAttribute=TextAttribute::Reset)
 
constexpr auto color (Color foreground, ColorContext context, TextAttribute displayAttribute=TextAttribute::Reset)
 
template<typename TupleType , Traits::EnableIfAny< std::is_same< TupleType, std::tuple< Color, Color, TextAttribute >>, std::is_same< TupleType, std::tuple< Color, ColorContext, TextAttribute >>> * = nullptr>
std::ostream & operator<< (std::ostream &stream, TupleType displayAttribute)
 
CPP_UTILITIES_EXPORT std::ostream & operator<< (std::ostream &stream, Phrases phrase)
 Prints the specified phrase. More...
 

Variables

CPP_UTILITIES_EXPORT bool enabled
 Controls whether the functions inside the EscapeCodes namespace actually make use of escape codes. More...
 

Detailed Description

Encapsulates functions for formatted terminal output using ANSI escape codes.

Enumeration Type Documentation

◆ Color

Enumerator
Black 
Red 
Green 
Yellow 
Blue 
Purple 
Cyan 
White 

Definition at line 15 of file ansiescapecodes.h.

◆ ColorContext

Enumerator
Foreground 
Background 

Definition at line 17 of file ansiescapecodes.h.

◆ Direction

Enumerator
Up 
Down 
Forward 
Backward 

Definition at line 31 of file ansiescapecodes.h.

◆ Phrases

The Phrases enum contains standard phrases which can be printed to any std::ostream.

Example: std::cerr << Phrases::Error << "Something bad happened." << Phrases::End

Enumerator
Error 

bold, red "Error: "

Warning 

bold, yellow "Warning: "

End 

resets the style

PlainMessage 

bold, 4 spaces " "

SuccessMessage 

bold, green "==> "

SubMessage 

bold, green " -> "

ErrorMessage 

bold, red "==> ERROR: "

WarningMessage 

bold, yellow "==> WARNING: "

EndFlush 

resets the style and flushes the stream

Info 

bold, blue "Info: "

Override 

erases the current line

SubError 

bold, red " -> ERROR: "

SubWarning 

bold, yellow " -> WARNING: "

Definition at line 136 of file ansiescapecodes.h.

◆ TextAttribute

Enumerator
Reset 
Bold 
Dim 
Italic 
Underscore 
Blink 
ReverseVideo 
Concealed 
Strikethrough 

Definition at line 19 of file ansiescapecodes.h.

Function Documentation

◆ color() [1/2]

constexpr auto CppUtilities::EscapeCodes::color ( Color  foreground,
Color  background,
TextAttribute  displayAttribute = TextAttribute::Reset 
)
constexpr

Definition at line 112 of file ansiescapecodes.h.

◆ color() [2/2]

constexpr auto CppUtilities::EscapeCodes::color ( Color  foreground,
ColorContext  context,
TextAttribute  displayAttribute = TextAttribute::Reset 
)
constexpr

Definition at line 117 of file ansiescapecodes.h.

◆ eraseDisplay()

void CppUtilities::EscapeCodes::eraseDisplay ( std::ostream &  stream)
inline

Definition at line 92 of file ansiescapecodes.h.

◆ eraseLine()

void CppUtilities::EscapeCodes::eraseLine ( std::ostream &  stream)
inline

Definition at line 99 of file ansiescapecodes.h.

◆ moveCursor()

void CppUtilities::EscapeCodes::moveCursor ( std::ostream &  stream,
unsigned int  cells,
Direction  direction 
)
inline

Definition at line 71 of file ansiescapecodes.h.

◆ operator<<() [1/3]

std::ostream & CppUtilities::EscapeCodes::operator<< ( std::ostream &  stream,
Phrases  phrase 
)

Prints the specified phrase.

Definition at line 33 of file ansiescapecodes.cpp.

◆ operator<<() [2/3]

std::ostream& CppUtilities::EscapeCodes::operator<< ( std::ostream &  stream,
TextAttribute  displayAttribute 
)
inline

Definition at line 106 of file ansiescapecodes.h.

◆ operator<<() [3/3]

template<typename TupleType , Traits::EnableIfAny< std::is_same< TupleType, std::tuple< Color, Color, TextAttribute >>, std::is_same< TupleType, std::tuple< Color, ColorContext, TextAttribute >>> * = nullptr>
std::ostream& CppUtilities::EscapeCodes::operator<< ( std::ostream &  stream,
TupleType  displayAttribute 
)
inline

Definition at line 125 of file ansiescapecodes.h.

◆ resetStyle()

void CppUtilities::EscapeCodes::resetStyle ( std::ostream &  stream)
inline

Definition at line 57 of file ansiescapecodes.h.

◆ restoreCursor()

void CppUtilities::EscapeCodes::restoreCursor ( std::ostream &  stream)
inline

Definition at line 85 of file ansiescapecodes.h.

◆ saveCursor()

void CppUtilities::EscapeCodes::saveCursor ( std::ostream &  stream)
inline

Definition at line 78 of file ansiescapecodes.h.

◆ setCursor()

void CppUtilities::EscapeCodes::setCursor ( std::ostream &  stream,
unsigned int  row = 0,
unsigned int  col = 0 
)
inline

Definition at line 64 of file ansiescapecodes.h.

◆ setStyle() [1/3]

void CppUtilities::EscapeCodes::setStyle ( std::ostream &  stream,
Color  color,
ColorContext  context = ColorContext::Foreground,
TextAttribute  displayAttribute = TextAttribute::Reset 
)
inline

Definition at line 40 of file ansiescapecodes.h.

◆ setStyle() [2/3]

void CppUtilities::EscapeCodes::setStyle ( std::ostream &  stream,
Color  foregroundColor,
Color  backgroundColor,
TextAttribute  displayAttribute = TextAttribute::Reset 
)
inline

Definition at line 48 of file ansiescapecodes.h.

◆ setStyle() [3/3]

void CppUtilities::EscapeCodes::setStyle ( std::ostream &  stream,
TextAttribute  displayAttribute = TextAttribute::Reset 
)
inline

Definition at line 33 of file ansiescapecodes.h.

Variable Documentation

◆ enabled

bool CppUtilities::EscapeCodes::enabled
Initial value:
=
false

Controls whether the functions inside the EscapeCodes namespace actually make use of escape codes.

This allows to disable use of escape codes when not appropriate.

The default value can be configured at build time by setting the CMake variable ENABLE_ESCAPE_CODES_BY_DEFAULT. The "default for the default" is true. However, the default is overridden with the value of the environment variable ENABLE_ESCAPE_CODES when instantiating an ApplicationUtilities::NoColorArgument (if ENABLE_ESCAPE_CODES is present).

See also
ApplicationUtilities::NoColorArgument

Definition at line 22 of file ansiescapecodes.cpp.