
TermColor هي مكتبة C ++ رأس فقط لطباعة الرسائل الملونة إلى المحطة. مكتوبة فقط من أجل المتعة بمساعدة القوة. يستخدم TermColor تنسيق ألوان ANSI ، بحيث يمكنك استخدامه على كل نظام يستخدم مثل هذه المحطات (معظم أنظمة *nix ، بما في ذلك Linux و Mac OS).
ملحوظة
على Windows ، يتم استخدام Windows API بدلاً من رموز الهروب ولكن يتم تطبيق بعض القيود (لا يتم دعم كل شيء). لهذا السبب يوصى بإدخال وضع المعالجة الطرفية الظاهرية وتعيين MACRO TERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES لخداع TermColor لاستخدام رموز ألوان ANSI.
إنه مرخص بموجب رخصة BSD (3 نقطة). هذا يعني في الأساس: افعل ما تريد طالما أن حقوق الطبع والنشر يتجول.
أضف termcolor.hpp (احصل عليه من include/termcolor/termcolor.hpp ) إلى المشروع واستخدم معالجات الدفق من مساحة اسم termcolor .
يمكنك أيضًا استخدام VCPKG لتثبيت المكتبة:
$ vcpkg install termcolorأو إذا كنت على جهاز MacOS ، فيمكنك استخدام Homebrew لهذا الغرض:
$ brew install termcolorللحصول على معلومات محدثة حول الحزم الموجودة ، راجع الصورة التالية:
إنه سهل الاستخدام للغاية. الفكرة مبنية على معالجات تيار C ++. تطبيق «Hello World» يبدو هذا:
# include < iostream >
# include < termcolor/termcolor.hpp >
int main ( int /* argc */ , char ** /* argv */ )
{
std::cout << termcolor::red << " Hello, " ; // 16 colors
std::cout << termcolor::color< 100 > << " Colorful " ; // 256 colors
std::cout << termcolor::color< 211 , 54 , 130 > << " World! " ; // true colors
std::cout << std::endl;
return 0 ;
}يطبع التطبيق أعلاه سلسلة باستخدام ألوان مختلفة. هناك تحذير واحد رغم ذلك. يجب ألا تنسى إعادة ضبط الألوان ، وإلا سيتم تطبيقها على المطبوعات الأخرى أيضًا.
std::cout << termcolor::red << " Hello, Colorful World! " << std::endl;
std::cout << " I'm RED too! " << std::endl;يجب أن يبدو الإصدار الصحيح من الكود أعلاه هكذا:
std::cout << termcolor::red << " Hello, Colorful World! " << termcolor::reset << std::endl;
std::cout << termcolor::reset << " Here I'm! " << std::endl; بشكل افتراضي ، يتجاهل TermColor أي ألوان لتيارات غير TTY (على سبيل المثال std::stringstream ) ، وبالتالي المقتطف التالي
std::stringstream ss;
ss << termcolor::red << " unicorn " ;
std::cout << ss.str(); سوف طباعة «يونيكورن» باستخدام اللون الافتراضي ، وليس أحمر. من أجل تغيير هذا السلوك ، يمكن للمرء استخدام termcolor::colorize Manipulator الذي يفرض الألوان بغض النظر عن ما.
يتم تقسيم المتلاعبين إلى أربع مجموعات:
أيضا ، هناك مناورات ملونة ل 16 لونا ، 256 لون وألوان حقيقية.
ملحوظة
على الرغم من أن termcolor يدعم اللون الحقيقي ، إلا أنه مطلوب لمحاكي الطرفية الذي تستخدمه لتشغيل البرنامج لدعم اللون الحقيقي أيضًا. لذا يرجى التأكد من دعمها قبل تقديم مشكلة.
termcolor::greytermcolor::redtermcolor::greentermcolor::yellowtermcolor::bluetermcolor::magentatermcolor::cyantermcolor::whitetermcolor::bright_greytermcolor::bright_redtermcolor::bright_greentermcolor::bright_yellowtermcolor::bright_bluetermcolor::bright_magentatermcolor::bright_cyantermcolor::bright_whitetermcolor::color<256_COLOR_CODE>termcolor::color<RED, GREEN, BLUE>termcolor::on_greytermcolor::on_redtermcolor::on_greentermcolor::on_yellowtermcolor::on_bluetermcolor::on_magentatermcolor::on_cyantermcolor::on_whitetermcolor::on_bright_greytermcolor::on_bright_redtermcolor::on_bright_greentermcolor::on_bright_yellowtermcolor::on_bright_bluetermcolor::on_bright_magentatermcolor::on_bright_cyantermcolor::on_bright_whitetermcolor::on_color<256_COLOR_CODE>termcolor::on_color<RED, GREEN, BLUE> (لا يدعم Windows API هؤلاء المتلوبين باستثناء underline )
termcolor::boldtermcolor::darktermcolor::italictermcolor::underlinetermcolor::blinktermcolor::reversetermcolor::concealedtermcolor::crossed(لا يدعم Windows API هؤلاء المتلوبين)
termcolor::colorizetermcolor::nocolorize<windows.h> ، يمكن تلوث مساحة الاسم العالمية باستخدام وحدات الماكرو Min/Max. إذا كان هذا التأثير مرغوبًا ، فيرجى التفكير في استخدام #define NOMINMAX قبل #include <termcolor.hpp> .