# include " rang.hpp "
using namespace std ;
using namespace rang ;
int main ()
{
cout << " Plain old text "
<< style:: bold << " Rang styled text!! "
<< style::reset << endl;
}
rang dépend uniquement de la bibliothèque standard C++, de l'en-tête système unistd.h
sous Unix et des en-têtes système windows.h
et io.h
sur les systèmes Windows. En d’autres termes, vous n’avez besoin d’aucune dépendance tierce.
rang est une bibliothèque unique en-tête uniquement. Placez rang.hpp
dans le dossier include directement dans l'arborescence des sources du projet ou dans un endroit accessible depuis votre projet.
Ou, si vous utilisez le gestionnaire de packages Conan, suivez ces étapes :
Ajoutez une référence à rang à la section require du fichier conanfile.txt
de votre projet :
[requires]
rang/3.1.0@rang/stable
Exécutez la commande d'installation de Conan :
conan install
Rang utilise des objets iostream - cout
/ clog
/ cerr
pour appliquer des attributs au texte de sortie. Étant donné que rang vise à prendre en charge à la fois les systèmes de type Windows et Unix, il prend en charge les détails spécifiques au système d'exploitation et essaie de fournir une interface uniforme. En raison d'incompatibilités entre les différentes versions du système d'exploitation, tous les types d'attributs ne sont pas pris en charge sur tous les systèmes. Rang essaiera donc d'ignorer ceux qui pourraient produire des déchets (au lieu de pousser des codes d'échappement ANSI aléatoires sur vos flux). La détection du tty est également gérée en interne, vous n'avez donc pas besoin de vérifier si l'utilisateur de l'application peut rediriger la sortie vers un fichier.
Besoin de support pour les terminaux non-ansi ? Découvrez Termdb qui prend en charge pratiquement tous les terminaux et leurs capacités.
Outre la définition des attributs de texte, vous pouvez également demander à Rang de remplacer son comportement par défaut via ces méthodes :
void rang::setControlMode (rang::control);
où rang::control
prend
control::Auto
- Détecte automatiquement si le terminal prend en charge la couleur ou non ( par défaut )control::Off
- Désactive complètement les couleurscontrol::Force
- Forcer les couleurs même si le terminal ne les prend pas en charge ou si la sortie est redirigée vers un non-terminal void rang::setWinTermMode (rang::winTerm);
où rang::winTerm
prend
winTerm::Auto
- Vérifie les fenêtres les plus récentes et sélectionne Ansi, sinon il revient à Native ( par défaut )winTerm::Native
- Cette méthode est prise en charge dans toutes les versions de Windows mais prend en charge moins d'attributswinTerm::Ansi
- Cette méthode est prise en charge dans les versions plus récentes de Windows et prend en charge une grande variété d'attributsLes attributs pris en charge avec leur compatibilité sont répertoriés ci-dessous -
Styles de texte :
Code | Linux/Win/Autres | Ancienne victoire |
---|---|---|
rang::style::bold | Oui | Oui |
rang::style::dim | Oui | Non |
rang::style::italic | Oui | Non |
rang::style::underline | Oui | Non |
rang::style::blink | Non | Non |
rang::style::rblink | Non | Non |
rang::style::reversed | Oui | Oui |
rang::style::conceal | peut être | Oui |
rang::style::crossed | Oui | Non |
Couleur du texte :
Code | Linux/Win/Autres | Ancienne victoire |
---|---|---|
rang::fg::black | Oui | Oui |
rang::fg::red | Oui | Oui |
rang::fg::green | Oui | Oui |
rang::fg::yellow | Oui | Oui |
rang::fg::blue | Oui | Oui |
rang::fg::magenta | Oui | Oui |
rang::fg::cyan | Oui | Oui |
rang::fg::gray | Oui | Oui |
Couleur de fond :
Code | Linux/Win/Autres | Ancienne victoire |
---|---|---|
rang::bg::black | Oui | Oui |
rang::bg::red | Oui | Oui |
rang::bg::green | Oui | Oui |
rang::bg::yellow | Oui | Oui |
rang::bg::blue | Oui | Oui |
rang::bg::magenta | Oui | Oui |
rang::bg::cyan | Oui | Oui |
rang::bg::gray | Oui | Oui |
Couleur vive du premier plan :
Code | Linux/Win/Autres | Ancienne victoire |
---|---|---|
rang::fgB::black | Oui | Oui |
rang::fgB::red | Oui | Oui |
rang::fgB::green | Oui | Oui |
rang::fgB::yellow | Oui | Oui |
rang::fgB::blue | Oui | Oui |
rang::fgB::magenta | Oui | Oui |
rang::fgB::cyan | Oui | Oui |
rang::fgB::gray | Oui | Oui |
Couleur de fond claire :
Code | Linux/Win/Autres | Ancienne victoire |
---|---|---|
rang::bgB::black | Oui | Oui |
rang::bgB::red | Oui | Oui |
rang::bgB::green | Oui | Oui |
rang::bgB::yellow | Oui | Oui |
rang::bgB::blue | Oui | Oui |
rang::bgB::magenta | Oui | Oui |
rang::bgB::cyan | Oui | Oui |
rang::bgB::gray | Oui | Oui |
Réinitialiser les styles/couleurs :
Code | Linux/Win/Autres | Ancienne victoire |
---|---|---|
rang::style::reset | Oui | Oui |
rang::fg::reset | Oui | Oui |
rang::bg::reset | Oui | Oui |
Vérifiez la valeur de votre variable d'environnement TERM
. Ensuite, ouvrez un ticket ici et assurez-vous de mentionner la valeur de TERM
ainsi que le nom de votre terminal.
cout
/ cerr
/ clog
rdbuf ? Rang n'interfère pas si vous essayez de rediriger cout
/ cerr
/ clog
vers un autre endroit et laisse la décision à l'utilisateur de la bibliothèque. Assurez-vous d'avoir lu cette conversation et consultez l'exemple de code ici.