# include " rang.hpp "
using namespace std ;
using namespace rang ;
int main ()
{
cout << " Plain old text "
<< style:: bold << " Rang styled text!! "
<< style::reset << endl;
}
rang depende apenas da biblioteca padrão C++, cabeçalho do sistema unistd.h
em unix e cabeçalhos do sistema windows.h
e io.h
em sistemas baseados em Windows. Em outras palavras, você não precisa de dependências de terceiros.
rang é uma biblioteca apenas de cabeçalho. Coloque rang.hpp
na pasta include diretamente na árvore de origem do projeto ou em algum lugar acessível a partir do seu projeto.
Ou, se você usar o gerenciador de pacotes conan, siga estas etapas:
Adicione uma referência a rang à seção requer do arquivo conanfile.txt
do seu projeto:
[requires]
rang/3.1.0@rang/stable
Execute o comando de instalação do conan:
conan install
Rang usa objetos iostream - cout
/ clog
/ cerr
para aplicar atributos ao texto de saída. Como o rang visa oferecer suporte a sistemas do tipo Windows e Unix, ele cuida dos detalhes específicos do sistema operacional e tenta fornecer uma interface uniforme. Devido a incompatibilidades entre diferentes versões de sistema operacional, nem todos os tipos de atributos são suportados em todos os sistemas, então rang tentará pular aqueles que podem produzir lixo (em vez de enviar códigos de escape ANSI aleatórios em seus streams). A detecção de tty também é tratada internamente, portanto você não precisa verificar se o usuário do aplicativo pode redirecionar a saída para um arquivo.
Precisa de suporte para terminais não Ansi? Confira o Termdb, que oferece suporte a praticamente todos os terminais e seus recursos.
Além de definir atributos de texto, você também pode solicitar que o rang substitua seu comportamento padrão por meio destes métodos -
void rang::setControlMode (rang::control);
onde rang::control
leva
control::Auto
- Detecta automaticamente se o terminal suporta cores ou não ( padrão )control::Off
- Desliga completamente as corescontrol::Force
- Força cores mesmo que o terminal não as suporte ou a saída seja redirecionada para não-terminal void rang::setWinTermMode (rang::winTerm);
onde rang::winTerm
leva
winTerm::Auto
- Verifica se há janelas mais recentes e escolhe Ansi, caso contrário volta para Native ( padrão )winTerm::Native
- Este método é compatível com todas as versões do Windows, mas suporta menos atributoswinTerm::Ansi
- Este método é compatível com versões mais recentes do Windows e oferece suporte a uma grande variedade de atributosOs atributos suportados com sua compatibilidade estão listados abaixo -
Estilos de texto :
Código | Linux/Win/Outros | Vitória antiga |
---|---|---|
rang::style::bold | sim | sim |
rang::style::dim | sim | não |
rang::style::italic | sim | não |
rang::style::underline | sim | não |
rang::style::blink | não | não |
rang::style::rblink | não | não |
rang::style::reversed | sim | sim |
rang::style::conceal | talvez | sim |
rang::style::crossed | sim | não |
Cor do texto :
Código | Linux/Win/Outros | Vitória antiga |
---|---|---|
rang::fg::black | sim | sim |
rang::fg::red | sim | sim |
rang::fg::green | sim | sim |
rang::fg::yellow | sim | sim |
rang::fg::blue | sim | sim |
rang::fg::magenta | sim | sim |
rang::fg::cyan | sim | sim |
rang::fg::gray | sim | sim |
Cor de fundo :
Código | Linux/Win/Outros | Vitória antiga |
---|---|---|
rang::bg::black | sim | sim |
rang::bg::red | sim | sim |
rang::bg::green | sim | sim |
rang::bg::yellow | sim | sim |
rang::bg::blue | sim | sim |
rang::bg::magenta | sim | sim |
rang::bg::cyan | sim | sim |
rang::bg::gray | sim | sim |
Cor de primeiro plano brilhante :
Código | Linux/Win/Outros | Vitória antiga |
---|---|---|
rang::fgB::black | sim | sim |
rang::fgB::red | sim | sim |
rang::fgB::green | sim | sim |
rang::fgB::yellow | sim | sim |
rang::fgB::blue | sim | sim |
rang::fgB::magenta | sim | sim |
rang::fgB::cyan | sim | sim |
rang::fgB::gray | sim | sim |
Cor de fundo brilhante :
Código | Linux/Win/Outros | Vitória antiga |
---|---|---|
rang::bgB::black | sim | sim |
rang::bgB::red | sim | sim |
rang::bgB::green | sim | sim |
rang::bgB::yellow | sim | sim |
rang::bgB::blue | sim | sim |
rang::bgB::magenta | sim | sim |
rang::bgB::cyan | sim | sim |
rang::bgB::gray | sim | sim |
Redefinir estilos/cores :
Código | Linux/Win/Outros | Vitória antiga |
---|---|---|
rang::style::reset | sim | sim |
rang::fg::reset | sim | sim |
rang::bg::reset | sim | sim |
Verifique o valor da sua variável env TERM
. Em seguida, abra um problema aqui e certifique-se de mencionar o valor de TERM
junto com o nome do seu terminal.
cout
/ cerr
/ clog
rdbuf? Rang não interfere se você tentar redirecionar cout
/ cerr
/ clog
para outro lugar e deixa a decisão para o usuário da biblioteca. Certifique-se de ter lido esta conversa e confira o código de exemplo aqui.